From 5a07eb35dbbb9ef14afb85b2f3bb6e4fcc62dc6c Mon Sep 17 00:00:00 2001 From: MusikAnimal Date: Fri, 12 Jan 2024 22:21:12 -0500 Subject: [PATCH] CodeMirror 6: localize search dialog As of this patch, these should be the only messages used by us that live in the CodeMirror library. More may be added later as new features are added. We load all translations as a default CodeMirror extension given the small cost and importance of localization. German translations from the CodeMirror docs: https://codemirror.net/examples/translate/ Also add a note in the README about the search dialog. Bug: T317243 Change-Id: Iba40bcaf197ed48166ce4cdcc4f48177fc8d07f3 --- README.md | 3 +++ extension.json | 17 ++++++++++++++++- i18n/de.json | 9 +++++++++ i18n/en.json | 10 ++++++++++ i18n/qqq.json | 10 ++++++++++ resources/dist/main.js | 2 +- resources/dist/main.js.map.json | 2 +- src/codemirror.js | 26 +++++++++++++++++++++++++- 8 files changed, 75 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 637602bd..5955eac5 100644 --- a/README.md +++ b/README.md @@ -58,3 +58,6 @@ Some may be removed pending user feedback: Use `.cm-mw-template-ground.cm-html-entity` instead. * Line-level styling for ``, `
`, and any tag without an associated
   TagMode has been removed.
+* The browser's native search functionality (ala Ctrl+F) has been replaced with
+  search functionality built into CodeMirror. This is necessary to maintain
+  performance (see [T303664](https://phabricator.wikimedia.org/T303664)).
diff --git a/extension.json b/extension.json
index f135e9fc..967c6c95 100644
--- a/extension.json
+++ b/extension.json
@@ -176,7 +176,8 @@
 				"web2017-polyfills",
 				"mediawiki.api",
 				"mediawiki.user",
-				"user.options"
+				"user.options",
+				"ext.CodeMirror.v6.messages"
 			],
 			"packageFiles": [
 				"dist/main.js"
@@ -189,6 +190,20 @@
 			"messages": [
 				"codemirror-toggle-label"
 			]
+		},
+		"ext.CodeMirror.v6.messages": {
+			"messages": [
+				"codemirror-find",
+				"codemirror-next",
+				"codemirror-previous",
+				"codemirror-all",
+				"codemirror-match-case",
+				"codemirror-regexp",
+				"codemirror-by-word",
+				"codemirror-replace",
+				"codemirror-replace-placeholder",
+				"codemirror-replace-all"
+			]
 		}
 	},
 	"ResourceFileModulePaths": {
diff --git a/i18n/de.json b/i18n/de.json
index f3570b3d..39205ca9 100644
--- a/i18n/de.json
+++ b/i18n/de.json
@@ -10,5 +10,14 @@
 	"codemirror-toggle-label": "Syntaxhervorhebung",
 	"codemirror-prefs-colorblind": "Farbenfehlsichtigenfreundliches Schema für die Syntaxhervorhebung bei der Bearbeitung von Wikitext einschalten",
 	"codemirror-prefs-colorblind-help": "Wenn du ein Helferlein zur Syntaxhervorhebung verwendest, wird diese Einstellung nicht funktionieren.",
+	"codemirror-find": "Suchen",
+	"codemirror-next": "nächste",
+	"codemirror-previous": "vorherige",
+	"codemirror-all": "alle",
+	"codemirror-match-case": "groß/klein beachten",
+	"codemirror-by-word": "ganze Wörter",
+	"codemirror-replace": "ersetzen",
+	"codemirror-replace-placeholder": "Ersetzen",
+	"codemirror-replace-all": "alle ersetzen",
 	"prefs-accessibility": "Barrierefreiheit"
 }
diff --git a/i18n/en.json b/i18n/en.json
index cbed392e..f7707e09 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -8,5 +8,15 @@
 	"codemirror-toggle-label": "Syntax highlighting",
 	"codemirror-prefs-colorblind": "Enable colorblind-friendly scheme for syntax highlighting when editing wikitext",
 	"codemirror-prefs-colorblind-help": "If you use a gadget for syntax highlighting, this preference will not work.",
+	"codemirror-find": "Find",
+	"codemirror-next": "next",
+	"codemirror-previous": "previous",
+	"codemirror-all": "all",
+	"codemirror-match-case": "match case",
+	"codemirror-regexp": "regexp",
+	"codemirror-by-word": "by word",
+	"codemirror-replace": "replace",
+	"codemirror-replace-placeholder": "Replace",
+	"codemirror-replace-all": "replace all",
 	"prefs-accessibility": "Accessibility"
 }
diff --git a/i18n/qqq.json b/i18n/qqq.json
index dd446975..3135e3ef 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -12,5 +12,15 @@
 	"codemirror-toggle-label": "Title tooltip for button to toggle CodeMirror in the editing toolbar.",
 	"codemirror-prefs-colorblind": "Used in user preferences as label for enabling the colorblind-friendly option.",
 	"codemirror-prefs-colorblind-help": "Used in user preferences as remark on the colorblind-friendly option.",
+	"codemirror-find": "Placeholder text for the input in the CodeMirror search dialog.",
+	"codemirror-next": "Label for the 'Next' button in the CodeMirror search dialog.",
+	"codemirror-previous": "Label for the 'Previous' button in the CodeMirror search dialog.",
+	"codemirror-all": "Label for the 'All' button in the CodeMirror search dialog.",
+	"codemirror-match-case": "Label for the 'match case' option in the CodeMirror search dialog.",
+	"codemirror-regexp": "Label for the 'regexp' button in the CodeMirror search dialog. This enables the user to search using regular expressions.",
+	"codemirror-by-word": "Label for the 'by word' button in the CodeMirror search dialog.",
+	"codemirror-replace": "Label for the 'replace' button in the CodeMirror search dialog.",
+	"codemirror-replace-placeholder": "Placeholder text for the 'Replace' input in the CodeMirror search dialog.",
+	"codemirror-replace-all": "Label for the 'replace all' button in the CodeMirror search dialog.",
 	"prefs-accessibility": "Section heading in the user prefences for accessibility topics."
 }
diff --git a/resources/dist/main.js b/resources/dist/main.js
index 6153f1b9..b826dd93 100644
--- a/resources/dist/main.js
+++ b/resources/dist/main.js
@@ -1,2 +1,2 @@
-(()=>{"use strict";class t{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,n){let s=[];return this.decompose(0,t,s,2),n.length&&n.decompose(0,n.length,s,3),this.decompose(e,this.length,s,1),i.from(s,this.length-(e-t)+n.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){let n=[];return this.decompose(t,e,n,0),i.from(n,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new r(this),s=new r(t);for(let t=e,r=e;;){if(n.next(t),s.next(t),t=0,n.lineBreak!=s.lineBreak||n.done!=s.done||n.value!=s.value)return!1;if(r+=n.value.length,n.done||r>=i)return!0}}iter(t=1){return new r(this,t)}iterRange(t,e=this.length){return new o(this,t,e)}iterLines(t,e){let i;if(null==t)i=this.iter();else{null==e&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new l(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(n){if(0==n.length)throw new RangeError("A document must have at least one line");return 1!=n.length||n[0]?n.length<=32?new e(n):i.from(e.split(n,[])):t.empty}}class e extends t{constructor(t,e=function(t){let e=-1;for(let i of t)e+=i.length+1;return e}(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let s=0;;s++){let r=this.text[s],o=n+r.length;if((e?i:o)>=t)return new a(n,o,i,r);n=o+1,i++}}decompose(t,i,r,o){let l=t<=0&&i>=this.length?this:new e(s(this.text,t,i),Math.min(i,this.length)-Math.max(0,t));if(1&o){let t=r.pop(),i=n(l.text,t.text.slice(),0,l.length);if(i.length<=32)r.push(new e(i,t.length+l.length));else{let t=i.length>>1;r.push(new e(i.slice(0,t)),new e(i.slice(t)))}}else r.push(l)}replace(t,r,o){if(!(o instanceof e))return super.replace(t,r,o);let l=n(this.text,n(o.text,s(this.text,0,t)),r),a=this.length+o.length-(r-t);return l.length<=32?new e(l,a):i.from(e.split(l,[]),a)}sliceString(t,e=this.length,i="\n"){let n="";for(let s=0,r=0;s<=e&&rt&&r&&(n+=i),ts&&(n+=o.slice(Math.max(0,t-s),e-s)),s=l+1}return n}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,i){let n=[],s=-1;for(let r of t)n.push(r),s+=r.length+1,32==n.length&&(i.push(new e(n,s)),n=[],s=-1);return s>-1&&i.push(new e(n,s)),i}}class i extends t{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let e of t)this.lines+=e.lines}lineInner(t,e,i,n){for(let s=0;;s++){let r=this.children[s],o=n+r.length,l=i+r.lines-1;if((e?l:o)>=t)return r.lineInner(t,e,i,n);n=o+1,i=l+1}}decompose(t,e,i,n){for(let s=0,r=0;r<=e&&s=r){let s=n&((r<=t?1:0)|(l>=e?2:0));r>=t&&l<=e&&!s?i.push(o):o.decompose(t-r,e-r,i,s)}r=l+1}}replace(t,e,n){if(n.lines=r&&e<=l){let a=o.replace(t-r,e-r,n),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let r=this.children.slice();return r[s]=a,new i(r,this.length-(e-t)+n.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,n)}sliceString(t,e=this.length,i="\n"){let n="";for(let s=0,r=0;st&&s&&(n+=i),tr&&(n+=o.sliceString(t-r,e-r,i)),r=l+1}return n}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof i))return 0;let n=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return n;let i=this.children[s],a=t.children[r];if(i!=a)return n+i.scanIdentical(a,e);n+=i.length+1}}static from(t,n=t.reduce(((t,e)=>t+e.length+1),-1)){let s=0;for(let e of t)s+=e.lines;if(s<32){let i=[];for(let e of t)e.flatten(i);return new e(i,n)}let r=Math.max(32,s>>5),o=r<<1,l=r>>1,a=[],h=0,c=-1,u=[];function f(t){let n;if(t.lines>o&&t instanceof i)for(let e of t.children)f(e);else t.lines>l&&(h>l||!h)?(d(),a.push(t)):t instanceof e&&h&&(n=u[u.length-1])instanceof e&&t.lines+n.lines<=32?(h+=t.lines,c+=t.length+1,u[u.length-1]=new e(n.text.concat(t.text),n.length+1+t.length)):(h+t.lines>r&&d(),h+=t.lines,c+=t.length+1,u.push(t))}function d(){0!=h&&(a.push(1==u.length?u[0]:i.from(u,c)),c=-1,h=u.length=0)}for(let e of t)f(e);return d(),1==a.length?a[0]:new i(a,n)}}function n(t,e,i=0,n=1e9){for(let s=0,r=0,o=!0;r=i&&(a>n&&(l=l.slice(0,n-s)),s0?1:(t instanceof e?t.text.length:t.children.length)<<1]}nextInner(t,i){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,s=this.nodes[n],r=this.offsets[n],o=r>>1,l=s instanceof e?s.text.length:s.children.length;if(o==(i>0?l:0)){if(0==n)return this.done=!0,this.value="",this;i>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&r)==(i>0?0:1)){if(this.offsets[n]+=i,0==t)return this.lineBreak=!0,this.value="\n",this;t--}else if(s instanceof e){let e=s.text[o+(i<0?-1:0)];if(this.offsets[n]+=i,e.length>Math.max(0,t))return this.value=0==t?e:i>0?e.slice(t):e.slice(0,e.length-t),this;t-=e.length}else{let r=s.children[o+(i<0?-1:0)];t>r.length?(t-=r.length,this.offsets[n]+=i):(i<0&&this.offsets[n]--,this.nodes.push(r),this.offsets.push(i>0?1:(r instanceof e?r.text.length:r.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}}class o{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new r(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:n}=this.cursor.next(t);return this.pos+=(n.length+t)*e,this.value=n.length<=i?n:e<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&""!=this.value}}class l{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}}"undefined"!=typeof Symbol&&(t.prototype[Symbol.iterator]=function(){return this.iter()},r.prototype[Symbol.iterator]=o.prototype[Symbol.iterator]=l.prototype[Symbol.iterator]=function(){return this});class a{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n}get length(){return this.to-this.from}}let h="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((t=>t?parseInt(t,36):1));for(let t=1;tt)return h[e-1]<=t;return!1}function u(t){return t>=127462&&t<=127487}const f=8205;function d(t,e,i=!0,n=!0){return(i?p:g)(t,e,n)}function p(t,e,i){if(e==t.length)return e;e&&m(t.charCodeAt(e))&&w(t.charCodeAt(e-1))&&e--;let n=y(t,e);for(e+=k(n);e=0&&u(y(t,n));)i++,n-=2;if(i%2==0)break;e+=2}}}return e}function g(t,e,i){for(;e>0;){let n=p(t,e-2,i);if(n=56320&&t<57344}function w(t){return t>=55296&&t<56320}function y(t,e){let i=t.charCodeAt(e);if(!w(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return m(n)?n-56320+(i-55296<<10)+65536:i}function v(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}function k(t){return t<65536?1:2}const b=/\r\n?|\n/;var x=function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t}(x||(x={}));class S{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return s+(t-n);s+=o}else{if(i!=x.Simple&&a>=t&&(i==x.TrackDel&&nt||i==x.TrackBefore&&nt))return null;if(a>t||a==t&&e<0&&!o)return t==n||e<0?s:s+l;s+=l}n=a}if(t>n)throw new RangeError(`Position ${t} is out of range for changeset of length ${n}`);return s}touchesRange(t,e=t){for(let i=0,n=0;i=0&&n<=e&&s>=t)return!(ne)||"cover";n=s}return!1}toString(){let t="";for(let e=0;e=0?":"+n:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some((t=>"number"!=typeof t)))throw new RangeError("Invalid JSON representation of ChangeDesc");return new S(t)}static create(t){return new S(t)}}class A extends S{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return C(this,((e,i,n,s,r)=>t=t.replace(n,n+(i-e),r)),!1),t}mapDesc(t,e=!1){return O(this,t,e,!0)}invert(e){let i=this.sections.slice(),n=[];for(let s=0,r=0;s=0){i[s]=l,i[s+1]=o;let a=s>>1;for(;n.length0&&T(i,e,s.text),s.forward(t),o+=t}let a=t[r++];for(;o>1].toJSON()))}return t}static of(e,i,n){let s=[],r=[],o=0,l=null;function a(t=!1){if(!t&&!s.length)return;ol||e<0||l>i)throw new RangeError(`Invalid change range ${e} to ${l} (in doc of length ${i})`);let u=c?"string"==typeof c?t.of(c.split(n||b)):c:t.empty,f=u.length;if(e==l&&0==f)return;eo&&M(s,e-o,-1),M(s,l-e,f),T(r,s,u),o=l}}(e),a(!l),l}static empty(t){return new A(t?[t,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let i=[],n=[];for(let s=0;se&&"string"!=typeof t)))throw new RangeError("Invalid JSON representation of ChangeSet");if(1==r.length)i.push(r[0],0);else{for(;n.length=0&&i<=0&&i==t[s+1]?t[s]+=e:0==e&&0==t[s]?t[s+1]+=i:n?(t[s]+=e,t[s+1]+=i):t.push(e,i)}function T(e,i,n){if(0==n.length)return;let s=i.length-2>>1;if(s>1])),!(n||l==e.sections.length||e.sections[l+1]<0);)a=e.sections[l++],h=e.sections[l++];i(r,c,o,u,f),r=c,o=u}}}function O(t,e,i,n=!1){let s=[],r=n?[]:null,o=new E(t),l=new E(e);for(let t=-1;;)if(-1==o.ins&&-1==l.ins){let t=Math.min(o.len,l.len);M(s,t,-1),o.forward(t),l.forward(t)}else if(l.ins>=0&&(o.ins<0||t==o.i||0==o.off&&(l.len=0&&t=0)){if(o.done&&l.done)return r?A.createSet(s,r):S.create(s);throw new Error("Mismatched change set lengths")}{let e=0,i=o.len;for(;i;)if(-1==l.ins){let t=Math.min(i,l.len);e+=t,i-=t,l.forward(t)}else{if(!(0==l.ins&&l.lene||o.ins>=0&&o.len>e)&&(t||n.length>i),r.forward2(e),o.forward(e)}}else M(n,0,o.ins,t),s&&T(s,n,o.text),o.next()}}class E{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return i>=e.length?t.empty:e[i]}textBit(e){let{inserted:i}=this.set,n=this.i-2>>1;return n>=i.length&&!e?t.empty:i[n].slice(this.off,null==e?void 0:this.off+e)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){-1==this.ins?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}}class L{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return 16&this.flags?this.to:this.from}get head(){return 16&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 4&this.flags?-1:8&this.flags?1:0}get bidiLevel(){let t=3&this.flags;return 3==t?null:t}get goalColumn(){let t=this.flags>>5;return 33554431==t?void 0:t}map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),n=t.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new L(i,n,this.flags)}extend(t,e=t){if(t<=this.anchor&&e>=this.anchor)return B.range(t,e);let i=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return B.range(this.anchor,i)}eq(t){return this.anchor==t.anchor&&this.head==t.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||"number"!=typeof t.anchor||"number"!=typeof t.head)throw new RangeError("Invalid JSON representation for SelectionRange");return B.range(t.anchor,t.head)}static create(t,e,i){return new L(t,e,i)}}class B{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:B.create(this.ranges.map((i=>i.map(t,e))),this.mainIndex)}eq(t){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let e=0;et.toJSON())),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||"number"!=typeof t.main||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new B(t.ranges.map((t=>L.fromJSON(t))),t.main)}static single(t,e=t){return new B([B.range(t,e)],0)}static create(t,e=0){if(0==t.length)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;nt?4:0)|s)}static normalized(t,e=0){let i=t[e];t.sort(((t,e)=>t.from-e.from)),e=t.indexOf(i);for(let i=1;in.head?B.range(o,r):B.range(r,o))}}return new B(t,e)}}function P(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let N=0;class R{constructor(t,e,i,n,s){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=n,this.id=N++,this.default=t([]),this.extensions="function"==typeof s?s(this):s}static define(t={}){return new R(t.combine||(t=>t),t.compareInput||((t,e)=>t===e),t.compare||(t.combine?(t,e)=>t===e:I),!!t.static,t.enables)}of(t){return new H([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new H(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new H(t,this,2,e)}from(t,e){return e||(e=t=>t),this.compute([t],(i=>e(i.field(t))))}}function I(t,e){return t==e||t.length==e.length&&t.every(((t,i)=>t===e[i]))}class H{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this.value=n,this.id=N++}dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,s=this.id,r=t[s]>>1,o=2==this.type,l=!1,a=!1,h=[];for(let i of this.dependencies)"doc"==i?l=!0:"selection"==i?a=!0:0==(1&(null!==(e=t[i.id])&&void 0!==e?e:1))&&h.push(t[i.id]);return{create:t=>(t.values[r]=i(t),1),update(t,e){if(l&&e.docChanged||a&&(e.docChanged||e.selection)||W(t,h)){let e=i(t);if(o?!z(e,t.values[r],n):!n(e,t.values[r]))return t.values[r]=e,1}return 0},reconfigure:(t,e)=>{let l,a=e.config.address[s];if(null!=a){let s=X(e,a);if(this.dependencies.every((i=>i instanceof R?e.facet(i)===t.facet(i):!(i instanceof _)||e.field(i,!1)==t.field(i,!1)))||(o?z(l=i(t),s,n):n(l=i(t),s)))return t.values[r]=s,0}else l=i(t);return t.values[r]=l,1}}}}function z(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[e.id])),s=i.map((t=>t.type)),r=n.filter((t=>!(1&t))),o=t[e.id]>>1;function l(t){let i=[];for(let e=0;et===e),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(F).find((t=>t.field==this));return((null==e?void 0:e.create)||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:t=>(t.values[e]=this.create(t),1),update:(t,i)=>{let n=t.values[e],s=this.updateF(n,i);return this.compareF(n,s)?0:(t.values[e]=s,1)},reconfigure:(t,i)=>null!=i.config.address[this.id]?(t.values[e]=i.field(this),0):(t.values[e]=this.create(t),1)}}init(t){return[this,F.of({field:this,create:t})]}get extension(){return this}}function q(t){return e=>new K(e,t)}const j={highest:q(0),high:q(1),default:q(2),low:q(3),lowest:q(4)};class K{constructor(t,e){this.inner=t,this.prec=e}}class G{of(t){return new U(this,t)}reconfigure(t){return G.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}}class U{constructor(t,e){this.compartment=t,this.inner=e}}class J{constructor(t,e,i,n,s,r){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=n,this.staticValues=s,this.facets=r,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let n=[],s=Object.create(null),r=new Map;for(let i of function(t,e,i){let n=[[],[],[],[],[]],s=new Map;return function t(r,o){let l=s.get(r);if(null!=l){if(l<=o)return;let t=n[l].indexOf(r);t>-1&&n[l].splice(t,1),r instanceof U&&i.delete(r.compartment)}if(s.set(r,o),Array.isArray(r))for(let e of r)t(e,o);else if(r instanceof U){if(i.has(r.compartment))throw new RangeError("Duplicate use of compartment in extensions");let n=e.get(r.compartment)||r.inner;i.set(r.compartment,n),t(n,o)}else if(r instanceof K)t(r.inner,r.prec);else if(r instanceof _)n[o].push(r),r.provides&&t(r.provides,o);else if(r instanceof H)n[o].push(r),r.facet.extensions&&t(r.facet.extensions,2);else{let e=r.extension;if(!e)throw new Error(`Unrecognized extension value in extension set (${r}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);t(e,o)}}(t,2),n.reduce(((t,e)=>t.concat(e)))}(t,e,r))i instanceof _?n.push(i):(s[i.facet.id]||(s[i.facet.id]=[])).push(i);let o=Object.create(null),l=[],a=[];for(let t of n)o[t.id]=a.length<<1,a.push((e=>t.slot(e)));let h=null==i?void 0:i.config.facets;for(let t in s){let e=s[t],n=e[0].facet,r=h&&h[t]||[];if(e.every((t=>0==t.type)))if(o[n.id]=l.length<<1|1,I(r,e))l.push(i.facet(n));else{let t=n.combine(e.map((t=>t.value)));l.push(i&&n.compare(t,i.facet(n))?i.facet(n):t)}else{for(let t of e)0==t.type?(o[t.id]=l.length<<1|1,l.push(t.value)):(o[t.id]=a.length<<1,a.push((e=>t.dynamicSlot(e))));o[n.id]=a.length<<1,a.push((t=>V(t,n,e)))}}let c=a.map((t=>t(o)));return new J(t,r,c,o,l,s)}}function Y(t,e){if(1&e)return 2;let i=e>>1,n=t.status[i];if(4==n)throw new Error("Cyclic dependency between fields and/or facets");if(2&n)return n;t.status[i]=4;let s=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|s}function X(t,e){return 1&e?t.config.staticValues[e>>1]:t.values[e>>1]}const Q=R.define(),Z=R.define({combine:t=>t.some((t=>t)),static:!0}),tt=R.define({combine:t=>t.length?t[0]:void 0,static:!0}),et=R.define(),it=R.define(),nt=R.define(),st=R.define({combine:t=>!!t.length&&t[0]});class rt{constructor(t,e){this.type=t,this.value=e}static define(){return new ot}}class ot{of(t){return new rt(this,t)}}class lt{constructor(t){this.map=t}of(t){return new at(this,t)}}class at{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return void 0===e?void 0:e==this.value?this:new at(this.type,e)}is(t){return this.type==t}static define(t={}){return new lt(t.map||(t=>t))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){let t=n.map(e);t&&i.push(t)}return i}}at.reconfigure=at.define(),at.appendConfig=at.define();class ht{constructor(t,e,i,n,s,r){this.startState=t,this.changes=e,this.selection=i,this.effects=n,this.annotations=s,this.scrollIntoView=r,this._doc=null,this._state=null,i&&P(i,e.newLength),s.some((t=>t.type==ht.time))||(this.annotations=s.concat(ht.time.of(Date.now())))}static create(t,e,i,n,s,r){return new ht(t,e,i,n,s,r)}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(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(ht.userEvent);return!(!e||!(e==t||e.length>t.length&&e.slice(0,t.length)==t&&"."==e[t.length]))}}function ct(t,e){let i=[];for(let n=0,s=0;;){let r,o;if(n=t[n]))r=t[n++],o=t[n++];else{if(!(s=0;s--){let r=i[s](t);r&&Object.keys(r).length&&(n=ut(n,ft(e,r,t.changes.newLength),!0))}return n==t?t:ht.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}(i?function(t){let e=t.startState,i=!0;for(let n of e.facet(et)){let e=n(t);if(!1===e){i=!1;break}Array.isArray(e)&&(i=!0===i?e:ct(i,e))}if(!0!==i){let n,s;if(!1===i)s=t.changes.invertedDesc,n=A.empty(e.doc.length);else{let e=t.changes.filter(i);n=e.changes,s=e.filtered.mapDesc(e.changes).invertedDesc}t=ht.create(e,n,t.selection&&t.selection.map(s),at.mapEffects(t.effects,s),t.annotations,t.scrollIntoView)}let n=e.facet(it);for(let i=n.length-1;i>=0;i--){let s=n[i](t);t=s instanceof ht?s:Array.isArray(s)&&1==s.length&&s[0]instanceof ht?s[0]:dt(e,gt(s),!1)}return t}(s):s)}ht.time=rt.define(),ht.userEvent=rt.define(),ht.addToHistory=rt.define(),ht.remote=rt.define();const pt=[];function gt(t){return null==t?pt:Array.isArray(t)?t:[t]}var mt=function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t}(mt||(mt={}));const wt=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let yt;try{yt=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(t){}class vt{constructor(t,e,i,n,s,r){this.config=t,this.doc=e,this.selection=i,this.values=n,this.status=t.statusTemplate.slice(),this.computeSlot=s,r&&(r._state=this);for(let t=0;ts.set(e,t))),i=null),s.set(e.value.compartment,e.value.extension)):e.is(at.reconfigure)?(i=null,n=e.value):e.is(at.appendConfig)&&(i=null,n=gt(n).concat(e.value));i?e=t.startState.values.slice():(i=J.resolve(n,s,this),e=new vt(i,this.doc,this.selection,i.dynamicSlots.map((()=>null)),((t,e)=>e.reconfigure(t,this)),null).values),new vt(i,t.newDoc,t.newSelection,e,((e,i)=>i.update(e,t)),t)}replaceSelection(t){return"string"==typeof t&&(t=this.toText(t)),this.changeByRange((e=>({changes:{from:e.from,to:e.to,insert:t},range:B.cursor(e.from+t.length)})))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(i.changes),s=[i.range],r=gt(i.effects);for(let i=1;is.spec.fromJSON(r,t))))}return vt.create({doc:t.doc,selection:B.fromJSON(t.selection),extensions:e.extensions?n.concat([e.extensions]):n})}static create(e={}){let i=J.resolve(e.extensions||[],new Map),n=e.doc instanceof t?e.doc:t.of((e.doc||"").split(i.staticFacet(vt.lineSeparator)||b)),s=e.selection?e.selection instanceof B?e.selection:B.single(e.selection.anchor,e.selection.head):B.single(0);return P(s,n.length),i.staticFacet(Z)||(s=s.asSingle()),new vt(i,n,s,i.dynamicSlots.map((()=>null)),((t,e)=>e.create(t)),null)}get tabSize(){return this.facet(vt.tabSize)}get lineBreak(){return this.facet(vt.lineSeparator)||"\n"}get readOnly(){return this.facet(st)}phrase(t,...e){for(let e of this.facet(vt.phrases))if(Object.prototype.hasOwnProperty.call(e,t)){t=e[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,((t,i)=>{if("$"==i)return"$";let n=+(i||1);return!n||n>e.length?t:e[n-1]}))),t}languageDataAt(t,e,i=-1){let n=[];for(let s of this.facet(Q))for(let r of s(this,e,i))Object.prototype.hasOwnProperty.call(r,t)&&n.push(r[t]);return n}charCategorizer(t){return e=this.languageDataAt("wordChars",t).join(""),t=>{if(!/\S/.test(t))return mt.Space;if(function(t){if(yt)return yt.test(t);for(let e=0;e"€"&&(i.toUpperCase()!=i.toLowerCase()||wt.test(i)))return!0}return!1}(t))return mt.Word;for(let i=0;i-1)return mt.Word;return mt.Other};var e}wordAt(t){let{text:e,from:i,length:n}=this.doc.lineAt(t),s=this.charCategorizer(t),r=t-i,o=t-i;for(;r>0;){let t=d(e,r,!1);if(s(e.slice(t,r))!=mt.Word)break;r=t}for(;ot.length?t[0]:4}),vt.lineSeparator=tt,vt.readOnly=st,vt.phrases=R.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every((i=>t[i]==e[i]))}}),vt.languageData=Q,vt.changeFilter=et,vt.transactionFilter=it,vt.transactionExtender=nt,G.reconfigure=at.define();class bt{eq(t){return this==t}range(t,e=t){return xt.create(t,e,this)}}bt.prototype.startSide=bt.prototype.endSide=0,bt.prototype.point=!1,bt.prototype.mapMode=x.TrackDel;class xt{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new xt(t,e,i)}}function St(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class At{constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,n=0){let s=i?this.to:this.from;for(let r=n,o=s.length;;){if(r==o)return r;let n=r+o>>1,l=s[n]-t||(i?this.value[n].endSide:this.value[n].startSide)-e;if(n==r)return l>=0?r:o;l>=0?o=n:r=n+1}}between(t,e,i,n){for(let s=this.findIndex(e,-1e9,!0),r=this.findIndex(i,1e9,!1,s);sh||a==h&&c.startSide>0&&c.endSide<=0)continue;(h-a||c.endSide-c.startSide)<0||(r<0&&(r=a),c.point&&(o=Math.max(o,h-a)),i.push(c),n.push(a-r),s.push(h-r))}return{mapped:i.length?new At(n,s,i,o):null,pos:r}}}class Mt{constructor(t,e,i,n){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=n}static create(t,e,i,n){return new Mt(t,e,i,n)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:n=0,filterTo:s=this.length}=t,r=t.filter;if(0==e.length&&!r)return this;if(i&&(e=e.slice().sort(St)),this.isEmpty)return e.length?Mt.of(e):this;let o=new Ot(this,null,-1).goto(0),l=0,a=[],h=new Tt;for(;o.value||l=0){let t=e[l++];h.addInner(t.from,t.to,t.value)||a.push(t)}else 1==o.rangeIndex&&o.chunkIndexthis.chunkEnd(o.chunkIndex)||so.to||s=s&&t<=s+r.length&&!1===r.between(s,t-s,e-s,i))return}this.nextLayer.between(t,e,i)}}iter(t=0){return Dt.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return Dt.from(t).goto(e)}static compare(t,e,i,n,s=-1){let r=t.filter((t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=s)),o=e.filter((t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=s)),l=Ct(r,o,i),a=new Lt(r,l,s),h=new Lt(o,l,s);i.iterGaps(((t,e,i)=>Bt(a,t,h,e,i,n))),i.empty&&0==i.length&&Bt(a,0,h,0,0,n)}static eq(t,e,i=0,n){null==n&&(n=999999999);let s=t.filter((t=>!t.isEmpty&&e.indexOf(t)<0)),r=e.filter((e=>!e.isEmpty&&t.indexOf(e)<0));if(s.length!=r.length)return!1;if(!s.length)return!0;let o=Ct(s,r),l=new Lt(s,o,0).goto(i),a=new Lt(r,o,0).goto(i);for(;;){if(l.to!=a.to||!Pt(l.active,a.active)||l.point&&(!a.point||!l.point.eq(a.point)))return!1;if(l.to>n)return!0;l.next(),a.next()}}static spans(t,e,i,n,s=-1){let r=new Lt(t,null,s).goto(e),o=e,l=r.openStart;for(;;){let t=Math.min(r.to,i);if(r.point){let i=r.activeForPoint(r.to),s=r.pointFromo&&(n.span(o,t,r.active,l),l=r.openEnd(t));if(r.to>i)return l+(r.point&&r.to>i?1:0);o=r.to,r.next()}}static of(t,e=!1){let i=new Tt;for(let n of t instanceof xt?[t]:e?function(t){if(t.length>1)for(let e=t[0],i=1;i0)return t.slice().sort(St);e=n}return t}(t):t)i.add(n.from,n.to,n.value);return i.finish()}}Mt.empty=new Mt([],[],null,-1),Mt.empty.nextLayer=Mt.empty;class Tt{finishChunk(t){this.chunks.push(new At(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,t&&(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(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new Tt)).add(t,e,i)}addInner(t,e,i){let n=t-this.lastTo||i.startSide-this.last.endSide;if(n<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return!(n<0||(250==this.from.length&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),0))}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(Mt.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),0==this.chunks.length)return t;let e=Mt.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}}function Ct(t,e,i){let n=new Map;for(let e of t)for(let t=0;t=this.minPoint)break}}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&n.push(new Ot(r,e,i,s));return 1==n.length?n[0]:new Dt(n)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let t=this.heap.length>>1;t>=0;t--)Et(this.heap,t);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let t=this.heap.length>>1;t>=0;t--)Et(this.heap,t);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(0==this.heap.length)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Et(this.heap,0)}}}function Et(t,e){for(let i=t[e];;){let n=1+(e<<1);if(n>=t.length)break;let s=t[n];if(n+1=0&&(s=t[n+1],n++),i.compare(s)<0)break;t[n]=i,t[e]=s,e=n}}class Lt{constructor(t,e,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=Dt.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Nt(this.active,t),Nt(this.activeTo,t),Nt(this.activeRank,t),this.minActive=It(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:n,rank:s}=this.cursor;for(;e-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>t){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),i&&Nt(i,n)}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}{let t=this.cursor.value;if(t.point){if(!(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[e]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}}function Bt(t,e,i,n,s,r){t.goto(e),i.goto(n);let o=n+s,l=n,a=n-e;for(;;){let e=t.to+a-i.to||t.endSide-i.endSide,n=e<0?t.to+a:i.to,s=Math.min(n,o);if(t.point||i.point?t.point&&i.point&&(t.point==i.point||t.point.eq(i.point))&&Pt(t.activeForPoint(t.to),i.activeForPoint(i.to))||r.comparePoint(l,s,t.point,i.point):s>l&&!Pt(t.active,i.active)&&r.compareRange(l,s,t.active,i.active),n>o)break;l=n,e<=0&&t.next(),e>=0&&i.next()}}function Pt(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;i--)t[i+1]=t[i];t[e]=i}function It(t,e){let i=-1,n=1e9;for(let s=0;st.map((t=>e.replace(/&/,t))))).reduce(((t,e)=>t.concat(e))),o,r);else if(o&&"object"==typeof o){if(!a)throw new RangeError("The value of a property ("+i+") should be a primitive value.");s(n(i),o,l,h)}else null!=o&&l.push(i.replace(/_.*/,"").replace(/[A-Z]/g,(t=>"-"+t.toLowerCase()))+": "+o+";")}(l.length||h)&&r.push((!i||a||o?t:t.map(i)).join(", ")+" {"+l.join(" ")+"}")}for(let e in t)s(n(e),t[e],this.rules)}getRules(){return this.rules.join("\n")}static newName(){let t=Vt[zt]||1;return Vt[zt]=t+1,"ͼ"+t.toString(36)}static mount(t,e,i){let n=t[Wt],s=i&&i.nonce;n?s&&n.setNonce(s):n=new qt(t,s),n.mount(Array.isArray(e)?e:[e])}}let _t=new Map;class qt{constructor(t,e){let i=t.ownerDocument||t,n=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&n.CSSStyleSheet){let e=_t.get(i);if(e)return t.adoptedStyleSheets=[e.sheet,...t.adoptedStyleSheets],t[Wt]=e;this.sheet=new n.CSSStyleSheet,t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets],_t.set(i,this)}else{this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);let n=t.head||t;n.insertBefore(this.styleTag,n.firstChild)}this.modules=[],t[Wt]=this}mount(t){let e=this.sheet,i=0,n=0;for(let s=0;s-1&&(this.modules.splice(o,1),n--,o=-1),-1==o){if(this.modules.splice(n++,0,r),e)for(let t=0;t",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Kt="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),Gt="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),Ut=0;Ut<10;Ut++)jt[48+Ut]=jt[96+Ut]=String(Ut);for(Ut=1;Ut<=24;Ut++)jt[Ut+111]="F"+Ut;for(Ut=65;Ut<=90;Ut++)jt[Ut]=String.fromCharCode(Ut+32),$t[Ut]=String.fromCharCode(Ut);for(var Jt in jt)$t.hasOwnProperty(Jt)||($t[Jt]=jt[Jt]);function Yt(t){let e;return e=11==t.nodeType?t.getSelection?t:t.ownerDocument:t,e.getSelection()}function Xt(t,e){return!!e&&(t==e||t.contains(1!=e.nodeType?e.parentNode:e))}function Qt(t,e){if(!e.anchorNode)return!1;try{return Xt(t,e.anchorNode)}catch(t){return!1}}function Zt(t){return 3==t.nodeType?ce(t,0,t.nodeValue.length).getClientRects():1==t.nodeType?t.getClientRects():[]}function te(t,e,i,n){return!!i&&(ie(t,e,i,n,-1)||ie(t,e,i,n,1))}function ee(t){for(var e=0;;e++)if(!(t=t.previousSibling))return e}function ie(t,e,i,n,s){for(;;){if(t==i&&e==n)return!0;if(e==(s<0?0:ne(t))){if("DIV"==t.nodeName)return!1;let i=t.parentNode;if(!i||1!=i.nodeType)return!1;e=ee(t)+(s<0?0:1),t=i}else{if(1!=t.nodeType)return!1;if(1==(t=t.childNodes[e+(s<0?-1:0)]).nodeType&&"false"==t.contentEditable)return!1;e=s<0?ne(t):0}}}function ne(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}function se(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function re(t){return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}class oe{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?ne(e):0),i,Math.min(t.focusOffset,i?ne(i):0))}set(t,e,i,n){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=n}}let le,ae=null;function he(t){if(t.setActive)return t.setActive();if(ae)return t.focus(ae);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(null==ae?{get preventScroll(){return ae={preventScroll:!0},!0}}:void 0),!ae){ae=!1;for(let t=0;tMath.max(1,t.scrollHeight-t.clientHeight-4)}class pe{constructor(t,e,i=!0){this.node=t,this.offset=e,this.precise=i}static before(t,e){return new pe(t.parentNode,ee(t),e)}static after(t,e){return new pe(t.parentNode,ee(t)+1,e)}}const ge=[];class me{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(t){let e=this.posAtStart;for(let i of this.children){if(i==t)return e;e+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}sync(t,e){if(2&this.flags){let i,n=this.dom,s=null;for(let r of this.children){if(7&r.flags){if(!r.dom&&(i=s?s.nextSibling:n.firstChild)){let t=me.get(i);(!t||!t.parent&&t.canReuseDOM(r))&&r.reuseDOM(i)}r.sync(t,e),r.flags&=-8}if(i=s?s.nextSibling:n.firstChild,e&&!e.written&&e.node==n&&i!=r.dom&&(e.written=!0),r.dom.parentNode==n)for(;i&&i!=r.dom;)i=we(i);else n.insertBefore(r.dom,i);s=r.dom}for(i=s?s.nextSibling:n.firstChild,i&&e&&e.node==n&&(e.written=!0);i;)i=we(i)}else if(1&this.flags)for(let i of this.children)7&i.flags&&(i.sync(t,e),i.flags&=-8)}reuseDOM(t){}localPosFromDOM(t,e){let i;if(t==this.dom)i=this.dom.childNodes[e];else{let n=0==ne(t)?0:0==e?-1:1;for(;;){let e=t.parentNode;if(e==this.dom)break;0==n&&e.firstChild!=e.lastChild&&(n=t==e.firstChild?-1:1),t=e}i=n<0?t:t.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!me.get(i);)i=i.nextSibling;if(!i)return this.length;for(let t=0,e=0;;t++){let n=this.children[t];if(n.dom==i)return e;e+=n.length+n.breakAfter}}domBoundsAround(t,e,i=0){let n=-1,s=-1,r=-1,o=-1;for(let l=0,a=i,h=i;le)return i.domBoundsAround(t,e,a);if(c>=t&&-1==n&&(n=l,s=a),a>e&&i.dom.parentNode==this.dom){r=l,o=h;break}h=c,a=c+i.breakAfter}return{from:s,to:o<0?i+this.length:o,startDOM:(n?this.children[n-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:r=0?this.children[r].dom:null}}markDirty(t=!1){this.flags|=2,this.markParentsDirty(t)}markParentsDirty(t){for(let e=this.parent;e;e=e.parent){if(t&&(e.flags|=2),1&e.flags)return;e.flags|=1,t=!1}}setParent(t){this.parent!=t&&(this.parent=t,7&this.flags&&this.markParentsDirty(!0))}setDOM(t){this.dom!=t&&(this.dom&&(this.dom.cmView=null),this.dom=t,t.cmView=this)}get rootView(){for(let t=this;;){let e=t.parent;if(!e)return t;t=e}}replaceChildren(t,e,i=ge){this.markDirty();for(let i=t;ithis.pos||t==this.pos&&(e>0||0==this.i||this.children[this.i-1].breakAfter))return this.off=t-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function ve(t,e,i,n,s,r,o,l,a){let{children:h}=t,c=h.length?h[e]:null,u=r.length?r[r.length-1]:null,f=u?u.breakAfter:o;if(!(e==n&&c&&!o&&!f&&r.length<2&&c.merge(i,s,r.length?u:null,0==i,l,a))){if(n0&&(!o&&r.length&&c.merge(i,c.length,r[0],!1,l,0)?c.breakAfter=r.shift().breakAfter:(i2);var Be={mac:Le||/Mac/.test(be.platform),windows:/Win/.test(be.platform),linux:/Linux|X11/.test(be.platform),ie:Te,ie_version:Ae?xe.documentMode||6:Me?+Me[1]:Se?+Se[1]:0,gecko:Ce,gecko_version:Ce?+(/Firefox\/(\d+)/.exec(be.userAgent)||[0,0])[1]:0,chrome:!!Oe,chrome_version:Oe?+Oe[1]:0,ios:Le,android:/Android\b/.test(be.userAgent),webkit:De,safari:Ee,webkit_version:De?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=xe.documentElement.style.tabSize?"tab-size":"-moz-tab-size"};class Pe extends me{constructor(t){super(),this.text=t}get length(){return this.text.length}createDOM(t){this.setDOM(t||document.createTextNode(this.text))}sync(t,e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(t){3==t.nodeType&&this.createDOM(t)}merge(t,e,i){return!(8&this.flags||i&&(!(i instanceof Pe)||this.length-(e-t)+i.length>256||8&i.flags)||(this.text=this.text.slice(0,t)+(i?i.text:"")+this.text.slice(e),this.markDirty(),0))}split(t){let e=new Pe(this.text.slice(t));return this.text=this.text.slice(0,t),this.markDirty(),e.flags|=8&this.flags,e}localPosFromDOM(t,e){return t==this.dom?e:e?this.text.length:0}domAtPos(t){return new pe(this.dom,t)}domBoundsAround(t,e,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(t,e){return function(t,e,i){let n=t.nodeValue.length;e>n&&(e=n);let s=e,r=e,o=0;0==e&&i<0||e==n&&i>=0?Be.chrome||Be.gecko||(e?(s--,o=1):r=0)?0:l.length-1];return Be.safari&&!o&&0==a.width&&(a=Array.prototype.find.call(l,(t=>t.width))||a),o?se(a,o<0):a||null}(this.dom,t,e)}}class Ne extends me{constructor(t,e=[],i=0){super(),this.mark=t,this.children=e,this.length=i;for(let t of e)t.setParent(this)}setAttrs(t){if(fe(t),this.mark.class&&(t.className=this.mark.class),this.mark.attrs)for(let e in this.mark.attrs)t.setAttribute(e,this.mark.attrs[e]);return t}canReuseDOM(t){return super.canReuseDOM(t)&&!(8&(this.flags|t.flags))}reuseDOM(t){t.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(t),this.flags|=6)}sync(t,e){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(t,e)}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof Ne&&i.mark.eq(this.mark))||t&&s<=0||et&&e.push(i=t&&(n=s),i=o,s++}let r=this.length-t;return this.length=t,n>-1&&(this.children.length=n,this.markDirty()),new Ne(this.mark,e,r)}domAtPos(t){return He(this,t)}coordsAt(t,e){return We(this,t,e)}}class Re extends me{static create(t,e,i){return new Re(t,e,i)}constructor(t,e,i){super(),this.widget=t,this.length=e,this.side=i,this.prevWidget=null}split(t){let e=Re.create(this.widget,this.length-t,this.side);return this.length-=t,e}sync(t){this.dom&&this.widget.updateDOM(this.dom,t)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(t)),this.dom.contentEditable="false")}getSide(){return this.side}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof Re&&this.widget.compare(i.widget))||t>0&&s<=0||e0)?pe.before(this.dom):pe.after(this.dom,t==this.length)}domBoundsAround(){return null}coordsAt(t,e){let i=this.widget.coordsAt(this.dom,t,e);if(i)return i;let n=this.dom.getClientRects(),s=null;if(!n.length)return null;let r=this.side?this.side<0:t>0;for(let e=r?n.length-1:0;s=n[e],!(t>0?0==e:e==n.length-1||s.top0?pe.before(this.dom):pe.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(t){return this.dom.getBoundingClientRect()}get overrideDOMText(){return t.empty}get isHidden(){return!0}}function He(t,e){let i=t.dom,{children:n}=t,s=0;for(let t=0;st&&e0;t--){let e=n[t-1];if(e.dom.parentNode==i)return e.domAtPos(e.length)}for(let t=s;t0&&e instanceof Ne&&s.length&&(n=s[s.length-1])instanceof Ne&&n.mark.eq(e.mark)?ze(n,e.children[0],i-1):(s.push(e),e.setParent(t)),t.length+=e.length}function We(t,e,i){let n=null,s=-1,r=null,o=-1;!function t(e,l){for(let a=0,h=0;a=l&&(c.children.length?t(c,l-h):(!r||r.isHidden&&i>0)&&(u>l||h==u&&c.getSide()>0)?(r=c,o=l-h):(h-1?1:0)!=s.length-(i&&s.indexOf(i)>-1?1:0))return!1;for(let r of n)if(r!=i&&(-1==s.indexOf(r)||t[r]!==e[r]))return!1;return!0}function qe(t,e,i){let n=!1;if(e)for(let s in e)i&&s in i||(n=!0,"style"==s?t.style.cssText="":t.removeAttribute(s));if(i)for(let s in i)e&&e[s]==i[s]||(n=!0,"style"==s?t.style.cssText=i[s]:t.setAttribute(s,i[s]));return n}function je(t){let e=Object.create(null);for(let i=0;i0?3e8:-4e8:e>0?1e8:-1e8,new Ye(t,e,e,i,t.widget||null,!1)}static replace(t){let e,i,n=!!t.block;if(t.isBlockGap)e=-5e8,i=4e8;else{let{start:s,end:r}=Xe(t,n);e=(s?n?-3e8:-1:5e8)-1,i=1+(r?n?2e8:1:-6e8)}return new Ye(t,e,i,n,t.widget||null,!0)}static line(t){return new Je(t)}static set(t,e=!1){return Mt.of(t,e)}hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1}}Ge.none=Mt.empty;class Ue extends Ge{constructor(t){let{start:e,end:i}=Xe(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.class=t.class||"",this.attrs=t.attributes||null}eq(t){var e,i;return this==t||t instanceof Ue&&this.tagName==t.tagName&&(this.class||(null===(e=this.attrs)||void 0===e?void 0:e.class))==(t.class||(null===(i=t.attrs)||void 0===i?void 0:i.class))&&_e(this.attrs,t.attrs,"class")}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}}Ue.prototype.point=!1;class Je extends Ge{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof Je&&this.spec.class==t.spec.class&&_e(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}}Je.prototype.mapMode=x.TrackBefore,Je.prototype.point=!0;class Ye extends Ge{constructor(t,e,i,n,s,r){super(e,i,s,t),this.block=n,this.isReplace=r,this.mapMode=n?e<=0?x.TrackBefore:x.TrackAfter:x.TrackDel}get type(){return this.startSide=5||this.widget.lineBreaks>0)}eq(t){return t instanceof Ye&&((e=this.widget)==(i=t.widget)||!!(e&&i&&e.compare(i)))&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide;var e,i}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}}function Xe(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return null==i&&(i=t.inclusive),null==n&&(n=t.inclusive),{start:null!=i?i:e,end:null!=n?n:e}}function Qe(t,e,i,n=0){let s=i.length-1;s>=0&&i[s]+n>=t?i[s]=Math.max(i[s],e):i.push(t,e)}Ye.prototype.point=!0;class Ze extends me{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(t,e,i,n,s,r){if(i){if(!(i instanceof Ze))return!1;this.dom||i.transferDOM(this)}return n&&this.setDeco(i?i.attrs:null),ke(this,t,e,i?i.children:[],s,r),!0}split(t){let e=new Ze;if(e.breakAfter=this.breakAfter,0==this.length)return e;let{i,off:n}=this.childPos(t);n&&(e.append(this.children[i].split(n),0),this.children[i].merge(n,this.children[i].length,null,!1,0,0),i++);for(let t=i;t0&&0==this.children[i-1].length;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=t,e}transferDOM(t){this.dom&&(this.markDirty(),t.setDOM(this.dom),t.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(t){_e(this.attrs,t)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=t)}append(t,e){ze(this,t,e)}addLineDeco(t){let e=t.spec.attributes,i=t.spec.class;e&&(this.attrs=Ve(e,this.attrs||{})),i&&(this.attrs=Ve({class:i},this.attrs||{}))}domAtPos(t){return He(this,t)}reuseDOM(t){"DIV"==t.nodeName&&(this.setDOM(t),this.flags|=6)}sync(t,e){var i;this.dom?4&this.flags&&(fe(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&&(qe(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(t,e);let n=this.dom.lastChild;for(;n&&me.get(n)instanceof Ne;)n=n.lastChild;if(!(n&&this.length&&("BR"==n.nodeName||0!=(null===(i=me.get(n))||void 0===i?void 0:i.isEditable)||Be.ios&&this.children.some((t=>t instanceof Pe))))){let t=document.createElement("BR");t.cmIgnore=!0,this.dom.appendChild(t)}}measureTextSize(){if(0==this.children.length||this.length>20)return null;let t,e=0;for(let i of this.children){if(!(i instanceof Pe)||/[^ -~]/.test(i.text))return null;let n=Zt(i.dom);if(1!=n.length)return null;e+=n[0].width,t=n[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(t,e){let i=We(this,t,e);if(!this.children.length&&i&&this.parent){let{heightOracle:t}=this.parent.view.viewState,e=i.bottom-i.top;if(Math.abs(e-t.lineHeight)<2&&t.textHeight=e){if(s instanceof Ze)return s;if(r>e)break}n=r+s.breakAfter}return null}}class ti extends me{constructor(t,e,i){super(),this.widget=t,this.length=e,this.type=i,this.breakAfter=0,this.prevWidget=null}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof ti&&this.widget.compare(i.widget))||t>0&&s<=0||e0;){if(this.textOff==this.text.length){let{value:e,lineBreak:i,done:n}=this.cursor.next(this.skip);if(this.skip=0,n)throw new Error("Ran out of text content when drawing inline views");if(i){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,t--;continue}this.text=e,this.textOff=0}let n=Math.min(this.text.length-this.textOff,t,512);this.flushBuffer(e.slice(e.length-i)),this.getLine().append(ii(new Pe(this.text.slice(this.textOff,this.textOff+n)),e),i),this.atCursorPos=!0,this.textOff+=n,t-=n,i=0}}span(t,e,i,n){this.buildText(e-t,i,n),this.pos=e,this.openStart<0&&(this.openStart=n)}point(t,e,i,n,s,r){if(this.disallowBlockEffectsFor[r]&&i instanceof Ye){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(e>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let o=e-t;if(i instanceof Ye)if(i.block){let{type:t}=i;t!=Ke.WidgetAfter||this.posCovered()||this.getLine(),this.addBlockWidget(new ti(i.widget||new ni("div"),o,t))}else{let r=Re.create(i.widget||new ni("span"),o,o?0:i.startSide),l=this.atCursorPos&&!r.isEditable&&s<=n.length&&(t0),a=!r.isEditable&&(tn.length||i.startSide<=0),h=this.getLine();2!=this.pendingBuffer||l||r.isEditable||(this.pendingBuffer=0),this.flushBuffer(n),l&&(h.append(ii(new Ie(1),n),s),s=n.length+Math.max(0,s-n.length)),h.append(ii(r,n),s),this.atCursorPos=a,this.pendingBuffer=a?tn.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=n.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);o&&(this.textOff+o<=this.text.length?this.textOff+=o:(this.skip+=o-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=e),this.openStart<0&&(this.openStart=s)}static build(t,e,i,n,s){let r=new ei(t,e,i,s);return r.openEnd=Mt.spans(n,e,i,r),r.openStart<0&&(r.openStart=r.openEnd),r.finish(r.openEnd),r}}function ii(t,e){for(let i of e)t=new Ne(i,[t],t.length);return t}class ni extends $e{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}const si=R.define(),ri=R.define(),oi=R.define(),li=R.define(),ai=R.define(),hi=R.define(),ci=R.define(),ui=R.define({combine:t=>t.some((t=>t))}),fi=R.define({combine:t=>t.some((t=>t))});class di{constructor(t,e="nearest",i="nearest",n=5,s=5){this.range=t,this.y=e,this.x=i,this.yMargin=n,this.xMargin=s}map(t){return t.empty?this:new di(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin)}}const pi=at.define({map:(t,e)=>t.map(e)});function gi(t,e,i){let n=t.facet(li);n.length?n[0](e):window.onerror?window.onerror(String(e),i,void 0,void 0,e):i?console.error(i+":",e):console.error(e)}const mi=R.define({combine:t=>!t.length||t[0]});let wi=0;const yi=R.define();class vi{constructor(t,e,i,n){this.id=t,this.create=e,this.domEventHandlers=i,this.extension=n(this)}static define(t,e){const{eventHandlers:i,provide:n,decorations:s}=e||{};return new vi(wi++,t,i,(t=>{let e=[yi.of(t)];return s&&e.push(Si.of((e=>{let i=e.plugin(t);return i?s(i):Ge.none}))),n&&e.push(n(t)),e}))}static fromClass(t,e){return vi.define((e=>new t(e)),e)}}class ki{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}update(t){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(e){if(gi(t.state,e,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(t){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(t)}catch(e){gi(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(null===(e=this.value)||void 0===e?void 0:e.destroy)try{this.value.destroy()}catch(e){gi(t.state,e,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const bi=R.define(),xi=R.define(),Si=R.define(),Ai=R.define(),Mi=R.define();function Ti(t,e,i){let n=t.state.facet(Mi);if(!n.length)return n;let s=n.map((e=>e instanceof Function?e(t):e)),r=[];return Mt.spans(s,e,i,{point(){},span(t,e,i,n){let s=r;for(let r=i.length-1;r>=0;r--,n--){let o,l=i[r].spec.bidiIsolate;if(null!=l)if(n>0&&s.length&&(o=s[s.length-1]).to==t&&o.direction==l)o.to=e,s=o.inner;else{let i={from:t,to:e,direction:l,inner:[]};s.push(i),s=i.inner}}}}),r}const Ci=R.define();function Oi(t){let e=0,i=0,n=0,s=0;for(let r of t.state.facet(Ci)){let o=r(t);o&&(null!=o.left&&(e=Math.max(e,o.left)),null!=o.right&&(i=Math.max(i,o.right)),null!=o.top&&(n=Math.max(n,o.top)),null!=o.bottom&&(s=Math.max(s,o.bottom)))}return{left:e,right:i,top:n,bottom:s}}const Di=R.define();class Ei{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n}join(t){return new Ei(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fromA>i.toA)){if(n.toAh)break;s+=2}if(!l)return i;new Ei(l.fromA,l.toA,l.fromB,l.toB).addToSet(i),r=l.toA,o=l.toB}}}class Li{constructor(t,e,i){this.view=t,this.state=e,this.transactions=i,this.flags=0,this.startState=t.state,this.changes=A.empty(this.startState.doc.length);for(let t of i)this.changes=this.changes.compose(t.changes);let n=[];this.changes.iterChangedRanges(((t,e,i,s)=>n.push(new Ei(t,e,i,s)))),this.changedRanges=n}static create(t,e,i){return new Li(t,e,i)}get viewportChanged(){return(4&this.flags)>0}get heightChanged(){return(2&this.flags)>0}get geometryChanged(){return this.docChanged||(10&this.flags)>0}get focusChanged(){return(1&this.flags)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some((t=>t.selection))}get empty(){return 0==this.flags&&0==this.transactions.length}}var Bi=function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t}(Bi||(Bi={}));const Pi=Bi.LTR,Ni=Bi.RTL;function Ri(t){let e=[];for(let i=0;i=e){if(o.level==i)return r;(s<0||(0!=n?n<0?o.frome:t[s].level>o.level))&&(s=r)}}if(s<0)throw new RangeError("Index out of range");return s}}function _i(t,e){if(t.length!=e.length)return!1;for(let i=0;ia&&o.push(new Fi(a,p.from,f)),$i(t,p.direction==Pi!=!(f%2)?n+1:n,s,p.inner,p.from,p.to,o),a=p.to),d=p.to}else{if(d==i||(e?qi[d]!=l:qi[d]==l))break;d++}u?ji(t,a,d,n+1,s,u,o):ae;){let i=!0,c=!1;if(!h||a>r[h-1].to){let t=qi[a-1];t!=l&&(i=!1,c=16==t)}let u=i||1!=l?null:[],f=i?n:n+1,d=a;t:for(;;)if(h&&d==r[h-1].to){if(c)break t;let p=r[--h];if(!i)for(let t=p.from,i=h;;){if(t==e)break t;if(!i||r[i-1].to!=t){if(qi[t-1]==l)break t;break}t=r[--i].from}u?u.push(p):(p.to=0;t-=3)if(Wi[t+1]==-i){let e=Wi[t+2],i=2&e?s:4&e?1&e?r:s:0;i&&(qi[o]=qi[Wi[t]]=i),l=t;break}}else{if(189==Wi.length)break;Wi[l++]=o,Wi[l++]=e,Wi[l++]=a}else if(2==(n=qi[o])||1==n){let t=n==s;a=t?0:1;for(let e=l-3;e>=0;e-=3){let i=Wi[e+2];if(2&i)break;if(t)Wi[e+2]|=2;else{if(4&i)break;Wi[e+2]|=4}}}}}(t,s,r,n,l),function(t,e,i,n){for(let s=0,r=n;s<=i.length;s++){let o=s?i[s-1].to:t,l=sa;)e==r&&(e=i[--n].from,r=n?i[n-1].to:t),qi[--e]=c;a=o}else r=o,a++}}}(s,r,n,l),ji(t,s,r,e,i,n,o)}function Ki(t){return[new Fi(0,t,0)]}let Gi="";function Ui(t,e,i,n,s){var r;let o=n.head-t.from,l=-1;if(0==o){if(!s||!t.length)return null;e[0].level!=i&&(o=e[0].side(!1,i),l=0)}else if(o==t.length){if(s)return null;let t=e[e.length-1];t.level!=i&&(o=t.side(!0,i),l=e.length-1)}l<0&&(l=Fi.find(e,o,null!==(r=n.bidiLevel)&&void 0!==r?r:-1,n.assoc));let a=e[l];o==a.side(s,i)&&(a=e[l+=s?1:-1],o=a.side(!s,i));let h=s==(a.dir==i),c=d(t.text,o,h);if(Gi=t.text.slice(Math.min(o,c),Math.max(o,c)),c!=a.side(s,i))return B.cursor(c+t.from,h?-1:1,a.level);let u=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return u||a.level==i?u&&u.level0&&i.length&&(i.every((({fromA:t,toA:e})=>ethis.minWidthTo))?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let n=-1;this.view.inputState.composing>=0&&((null===(e=this.domChanged)||void 0===e?void 0:e.newSel)?n=this.domChanged.newSel.head:function(t,e){let i=!1;return e&&t.iterChangedRanges(((t,n)=>{te.from&&(i=!0)})),i}(t.changes,this.hasComposition)||t.selectionSet||(n=t.state.selection.main.head));let s=n>-1?function(t,e,i){let n=Xi(t,i);if(!n)return null;let{node:s,from:r,to:o}=n,l=s.nodeValue;if(/[\n\r]/.test(l))return null;if(t.state.doc.sliceString(n.from,n.to)!=l)return null;let a=e.invertedDesc,h=new Ei(a.mapPos(r),a.mapPos(o),r,o),c=[];for(let e=s.parentNode;;e=e.parentNode){let i=me.get(e);if(i instanceof Ne)c.push({node:e,deco:i.mark});else{if(i instanceof Ze||"DIV"==e.nodeName&&e.parentNode==t.contentDOM)return{range:h,text:s,marks:c,line:e};if(e==t.contentDOM)return null;c.push({node:e,deco:new Ue({inclusive:!0,attributes:je(e),tagName:e.tagName.toLowerCase()})})}}}(this.view,t.changes,n):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:e,to:n}=this.hasComposition;i=new Ei(e,n,t.changes.mapPos(e,-1),t.changes.mapPos(n,1)).addToSet(i.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(Be.ie||Be.chrome)&&!s&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let r=function(t,e,i){let n=new Zi;return Mt.compare(t,e,i,n),n.changes}(this.decorations,this.updateDeco(),t.changes);return i=Ei.extendWithRanges(i,r),!!(7&this.flags||0!=i.length)&&(this.updateInner(i,t.startState.doc.length,s),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(t,e,i);let{observer:n}=this.view;n.ignore((()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let t=Be.chrome||Be.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,t),this.flags&=-8,t&&(t.written||n.selectionRange.focusNode!=t.node)&&(this.forceSelection=!0),this.dom.style.height=""})),this.markedForComposition.forEach((t=>t.flags&=-9));let s=[];if(this.view.viewport.from||this.view.viewport.to=0?n[t]:null;if(!e)break;let r,o,l,a,{fromA:h,toA:c,fromB:u,toB:f}=e;if(i&&i.range.fromBu){let t=ei.build(this.view.state.doc,u,i.range.fromB,this.decorations,this.dynamicDecorationMap),e=ei.build(this.view.state.doc,i.range.toB,f,this.decorations,this.dynamicDecorationMap);o=t.breakAtStart,l=t.openStart,a=e.openEnd;let n=this.compositionView(i);e.breakAtStart?n.breakAfter=1:e.content.length&&n.merge(n.length,n.length,e.content[0],!1,e.openStart,0)&&(n.breakAfter=e.content[0].breakAfter,e.content.shift()),t.content.length&&n.merge(0,0,t.content[t.content.length-1],!0,0,t.openEnd)&&t.content.pop(),r=t.content.concat(n).concat(e.content)}else({content:r,breakAtStart:o,openStart:l,openEnd:a}=ei.build(this.view.state.doc,u,f,this.decorations,this.dynamicDecorationMap));let{i:d,off:p}=s.findPos(c,1),{i:g,off:m}=s.findPos(h,-1);ve(this,g,m,d,p,r,o,l,a)}i&&this.fixCompositionDOM(i)}compositionView(t){let e=new Pe(t.text.nodeValue);e.flags|=8;for(let{deco:i}of t.marks)e=new Ne(i,[e],e.length);let i=new Ze;return i.append(e,0),i}fixCompositionDOM(t){let e=(t,e)=>{e.flags|=8|(e.children.some((t=>7&t.flags))?1:0),this.markedForComposition.add(e);let i=me.get(t);i&&i!=e&&(i.dom=null),e.setDOM(t)},i=this.childPos(t.range.fromB,1),n=this.children[i.i];e(t.line,n);for(let s=t.marks.length-1;s>=-1;s--)i=n.childPos(i.off,1),n=n.children[i.i],e(s>=0?t.marks[s].node:t.text,n)}updateSelection(t=!1,e=!1){!t&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let i=this.view.root.activeElement,n=i==this.dom,s=!n&&Qt(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(n||e||s))return;let r=this.forceSelection;this.forceSelection=!1;let o=this.view.state.selection.main,l=this.moveToLine(this.domAtPos(o.anchor)),a=o.empty?l:this.moveToLine(this.domAtPos(o.head));if(Be.gecko&&o.empty&&!this.hasComposition&&1==(h=l).node.nodeType&&h.node.firstChild&&(0==h.offset||"false"==h.node.childNodes[h.offset-1].contentEditable)&&(h.offset==h.node.childNodes.length||"false"==h.node.childNodes[h.offset].contentEditable)){let t=document.createTextNode("");this.view.observer.ignore((()=>l.node.insertBefore(t,l.node.childNodes[l.offset]||null))),l=a=new pe(t,0),r=!0}var h;let c=this.view.observer.selectionRange;!r&&c.focusNode&&te(l.node,l.offset,c.anchorNode,c.anchorOffset)&&te(a.node,a.offset,c.focusNode,c.focusOffset)||(this.view.observer.ignore((()=>{Be.android&&Be.chrome&&this.dom.contains(c.focusNode)&&function(t,e){for(let i=t;i&&i!=e;i=i.assignedSlot||i.parentNode)if(1==i.nodeType&&"false"==i.contentEditable)return!0;return!1}(c.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let t=Yt(this.view.root);if(t)if(o.empty){if(Be.gecko){let t=(e=l.node,n=l.offset,1!=e.nodeType?0:(n&&"false"==e.childNodes[n-1].contentEditable?1:0)|(no.head&&([l,a]=[a,l]),e.setEnd(a.node,a.offset),e.setStart(l.node,l.offset),t.removeAllRanges(),t.addRange(e)}var e,n;s&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())})),this.view.observer.setSelectionRange(l,a)),this.impreciseAnchor=l.precise?null:new pe(c.anchorNode,c.anchorOffset),this.impreciseHead=a.precise?null:new pe(c.focusNode,c.focusOffset)}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=Yt(t.root),{anchorNode:n,anchorOffset:s}=t.observer.selectionRange;if(!(i&&e.empty&&e.assoc&&i.modify))return;let r=Ze.find(this,e.head);if(!r)return;let o=r.posAtStart;if(e.head==o||e.head==o+r.length)return;let l=this.coordsAt(e.head,-1),a=this.coordsAt(e.head,1);if(!l||!a||l.bottom>a.top)return;let h=this.domAtPos(e.head+e.assoc);i.collapse(h.node,h.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(n,s)}moveToLine(t){let e,i=this.dom;if(t.node!=i)return t;for(let n=t.offset;!e&&n=0;n--){let t=me.get(i.childNodes[n]);t instanceof Ze&&(e=t.domAtPos(t.length))}return e?new pe(e.node,e.offset,!0):t}nearest(t){for(let e=t;e;){let t=me.get(e);if(t&&t.rootView==this)return t;e=e.parentNode}return null}posFromDOM(t,e){let i=this.nearest(t);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(t,e)+i.posAtStart}domAtPos(t){let{i:e,off:i}=this.childCursor().findPos(t,-1);for(;er||t==r&&s.type!=Ke.WidgetBefore&&s.type!=Ke.WidgetAfter&&(!n||2==e||this.children[n-1].breakAfter||this.children[n-1].type==Ke.WidgetBefore&&e>-2))return s.coordsAt(t-r,e);i=r}}coordsForChar(t){let{i:e,off:i}=this.childPos(t,1),n=this.children[e];if(!(n instanceof Ze))return null;for(;n.children.length;){let{i:t,off:e}=n.childPos(i,1);for(;;t++){if(t==n.children.length)return null;if((n=n.children[t]).length)break}i=e}if(!(n instanceof Pe))return null;let s=d(n.text,i);if(s==i)return null;let r=ce(n.dom,i,s).getClientRects();return!r.length||r[0].top>=r[0].bottom?null:r[0]}measureVisibleLineHeights(t){let e=[],{from:i,to:n}=t,s=this.view.contentDOM.clientWidth,r=s>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,l=this.view.textDirection==Bi.LTR;for(let t=0,a=0;an)break;if(t>=i){let i=h.dom.getBoundingClientRect();if(e.push(i.height),r){let e=h.dom.lastChild,n=e?Zt(e):[];if(n.length){let e=n[n.length-1],r=l?e.right-i.left:i.right-e.left;r>o&&(o=r,this.minWidth=s,this.minWidthFrom=t,this.minWidthTo=c)}}}t=c+h.breakAfter}return e}textDirectionAt(t){let{i:e}=this.childPos(t,1);return"rtl"==getComputedStyle(this.children[e].dom).direction?Bi.RTL:Bi.LTR}measureTextSize(){for(let t of this.children)if(t instanceof Ze){let e=t.measureTextSize();if(e)return e}let t,e,i,n=document.createElement("div");return n.className="cm-line",n.style.width="99999px",n.style.position="absolute",n.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore((()=>{this.dom.appendChild(n);let s=Zt(n.firstChild)[0];t=n.getBoundingClientRect().height,e=s?s.width/27:7,i=s?s.height:t,n.remove()})),{lineHeight:t,charWidth:e,textHeight:i}}childCursor(t=this.length){let e=this.children.length;return e&&(t-=this.children[--e].length),new ye(this.children,t,e)}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,n=0;;n++){let s=n==e.viewports.length?null:e.viewports[n],r=s?s.from-1:this.length;if(r>i){let n=(e.lineBlockAt(r).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(Ge.replace({widget:new Yi(n),block:!0,inclusive:!0,isBlockGap:!0}).range(i,r))}if(!s)break;i=s.to+1}return Ge.set(t)}updateDeco(){let t=this.view.state.facet(Si).map(((t,e)=>(this.dynamicDecorationMap[e]="function"==typeof t)?t(this.view):t));for(let e=t.length;ei.anchor?-1:1);if(!n)return;!i.empty&&(e=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,e.left),top:Math.min(n.top,e.top),right:Math.max(n.right,e.right),bottom:Math.max(n.bottom,e.bottom)});let s=Oi(this.view),r={left:n.left-s.left,top:n.top-s.top,right:n.right+s.right,bottom:n.bottom+s.bottom};!function(t,e,i,n,s,r,o,l){let a=t.ownerDocument,h=a.defaultView||window;for(let c=t,u=!1;c&&!u;)if(1==c.nodeType){let t,f=c==a.body,d=1,p=1;if(f)t=re(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(u=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let e=c.getBoundingClientRect();d=e.width/c.offsetWidth,p=e.height/c.offsetHeight,t={left:e.left,right:e.left+c.clientWidth*d,top:e.top,bottom:e.top+c.clientHeight*p}}let g=0,m=0;if("nearest"==s)e.top0&&e.bottom>t.bottom+m&&(m=e.bottom-t.bottom+m+o)):e.bottom>t.bottom&&(m=e.bottom-t.bottom+o,i<0&&e.top-m0&&e.right>t.right+g&&(g=e.right-t.right+g+r)):e.right>t.right&&(g=e.right-t.right+r,i<0&&e.left0))break;i=i.childNodes[n-1],n=ne(i)}if(i>=0)for(let n=t,s=e;;){if(3==n.nodeType)return{node:n,offset:s};if(!(1==n.nodeType&&s=0))break;n=n.childNodes[s],s=0}return null}let Zi=class{constructor(){this.changes=[]}compareRange(t,e){Qe(t,e,this.changes)}comparePoint(t,e){Qe(t,e,this.changes)}};function tn(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function en(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function nn(t,e){return t.tope.top+1}function sn(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function on(t,e,i){let n,s,r,o,l,a,h,c,u=!1;for(let f=t.firstChild;f;f=f.nextSibling){let t=Zt(f);for(let d=0;dm||o==m&&r>g){n=f,s=p,r=g,o=m;let l=m?i0?d0)}0==g?i>p.bottom&&(!h||h.bottomp.top)&&(a=f,c=p):h&&nn(h,p)?h=rn(h,p.bottom):c&&nn(c,p)&&(c=sn(c,p.top))}}if(h&&h.bottom>=i?(n=l,s=h):c&&c.top<=i&&(n=a,s=c),!n)return{node:t,offset:0};let f=Math.max(s.left,Math.min(s.right,e));return 3==n.nodeType?ln(n,f,i):u&&"false"!=n.contentEditable?on(n,f,i):{node:t,offset:Array.prototype.indexOf.call(t.childNodes,n)+(e>=(s.left+s.right)/2?1:0)}}function ln(t,e,i){let n=t.nodeValue.length,s=-1,r=1e9,o=0;for(let l=0;li?h.top-i:i-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&c=(h.left+h.right)/2,n=i;if((Be.chrome||Be.gecko)&&ce(t,l).getBoundingClientRect().left==h.right&&(n=!i),c<=0)return{node:t,offset:l+(n?1:0)};s=l+(n?1:0),r=c}}}return{node:t,offset:s>-1?s:o>0?t.nodeValue.length:0}}function an(t,e,i,n=-1){var s,r;let o,l=t.contentDOM.getBoundingClientRect(),a=l.top+t.viewState.paddingTop,{docHeight:h}=t.viewState,{x:c,y:u}=e,f=u-a;if(f<0)return 0;if(f>h)return t.state.doc.length;for(let e=t.viewState.heightOracle.textHeight/2,s=!1;o=t.elementAtHeight(f),o.type!=Ke.Text;)for(;f=n>0?o.bottom+e:o.top-e,!(f>=0&&f<=h);){if(s)return i?null:0;s=!0,n=-n}u=a+f;let d=o.from;if(dt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:i?null:hn(t,l,o,c,u);let p=t.dom.ownerDocument,g=t.root.elementFromPoint?t.root:p,m=g.elementFromPoint(c,u);m&&!t.contentDOM.contains(m)&&(m=null),m||(c=Math.max(l.left+1,Math.min(l.right-1,c)),m=g.elementFromPoint(c,u),m&&!t.contentDOM.contains(m)&&(m=null));let w,y=-1;if(m&&0!=(null===(s=t.docView.nearest(m))||void 0===s?void 0:s.isEditable))if(p.caretPositionFromPoint){let t=p.caretPositionFromPoint(c,u);t&&({offsetNode:w,offset:y}=t)}else if(p.caretRangeFromPoint){let e=p.caretRangeFromPoint(c,u);e&&(({startContainer:w,startOffset:y}=e),(!t.contentDOM.contains(w)||Be.safari&&function(t,e,i){let n;if(3!=t.nodeType||e!=(n=t.nodeValue.length))return!1;for(let e=t.nextSibling;e;e=e.nextSibling)if(1!=e.nodeType||"BR"!=e.nodeName)return!1;return ce(t,n-1,n).getBoundingClientRect().left>i}(w,y,c)||Be.chrome&&function(t,e,i){if(0!=e)return!1;for(let e=t;;){let t=e.parentNode;if(!t||1!=t.nodeType||t.firstChild!=e)return!1;if(t.classList.contains("cm-line"))break;e=t}return i-(1==t.nodeType?t.getBoundingClientRect():ce(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect()).left>5}(w,y,c))&&(w=void 0))}if(!w||!t.docView.dom.contains(w)){let e=Ze.find(t.docView,d);if(!e)return f>o.top+o.height/2?o.to:o.from;({node:w,offset:y}=on(e.dom,c,u))}let v=t.docView.nearest(w);if(!v)return null;if(v.isWidget&&1==(null===(r=v.dom)||void 0===r?void 0:r.nodeType)){let t=v.dom.getBoundingClientRect();return e.y1.5*t.defaultLineHeight){let e=t.viewState.heightOracle.textHeight;r+=Math.floor((s-i.top-.5*(t.defaultLineHeight-e))/e)*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+function(t,e,i,n){for(let n=0,s=0;;){if(s>=e)return n;if(n==t.length)break;s+=9==t.charCodeAt(n)?i-s%i:1,n=d(t,n)}return t.length}(o,r,t.state.tabSize)}function cn(t,e,i,n){let s=t.state.doc.lineAt(e.head),r=t.bidiSpans(s),o=t.textDirectionAt(s.from);for(let l=e,a=null;;){let e=Ui(s,r,o,l,i),h=Gi;if(!e){if(s.number==(i?t.state.doc.lines:1))return l;h="\n",s=t.state.doc.line(s.number+(i?1:-1)),r=t.bidiSpans(s),e=B.cursor(i?s.from:s.to)}if(a){if(!a(h))return l}else{if(!n)return e;a=n(h)}l=e}}function un(t,e,i){for(;;){let n=0;for(let s of t)s.between(e-1,e+1,((t,s,r)=>{if(e>t&&ee(t))),i.from,e.head>i.from?-1:1);return n==i.from?i:B.cursor(n,n{this.ignoreDuringComposition(i)||"keydown"==i.type&&this.keydown(t,i)||(this.mustFlushObserver(i)&&t.observer.forceFlush(),this.runCustomHandlers(i.type,t,i)?i.preventDefault():e(t,i))};for(let i in kn){let n=kn[i];t.contentDOM.addEventListener(i,(i=>{vn(t,i)&&e(n,i)}),bn[i]),this.registeredEvents.push(i)}t.scrollDOM.addEventListener("mousedown",(i=>{if(i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&(e(kn.mousedown,i),!i.defaultPrevented&&2==i.button)){let e=t.contentDOM.style.minHeight;t.contentDOM.style.minHeight="100%",setTimeout((()=>t.contentDOM.style.minHeight=e),200)}})),t.scrollDOM.addEventListener("drop",(i=>{i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&e(kn.drop,i)})),Be.chrome&&102==Be.chrome_version&&t.scrollDOM.addEventListener("wheel",(()=>{this.chromeScrollHack<0?t.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout((()=>{this.chromeScrollHack=-1,t.contentDOM.style.pointerEvents=""}),100)}),{passive:!0}),this.notifiedFocused=t.hasFocus,Be.safari&&t.contentDOM.addEventListener("input",(()=>null)),Be.gecko&&function(t){Wn.has(t)||(Wn.add(t),t.addEventListener("copy",(()=>{})),t.addEventListener("cut",(()=>{})))}(t.contentDOM.ownerDocument)}ensureHandlers(t,e){var i;let n;this.customHandlers=[];for(let s of e)if(n=null===(i=s.update(t).spec)||void 0===i?void 0:i.domEventHandlers){this.customHandlers.push({plugin:s.value,handlers:n});for(let e in n)this.registeredEvents.indexOf(e)<0&&"scroll"!=e&&(this.registeredEvents.push(e),t.contentDOM.addEventListener(e,(i=>{vn(t,i)&&this.runCustomHandlers(e,t,i)&&i.preventDefault()})))}}runCustomHandlers(t,e,i){for(let n of this.customHandlers){let s=n.handlers[t];if(s)try{if(s.call(n.plugin,i,e)||i.defaultPrevented)return!0}catch(t){gi(e.state,t)}}return!1}runScrollHandlers(t,e){this.lastScrollTop=t.scrollDOM.scrollTop,this.lastScrollLeft=t.scrollDOM.scrollLeft;for(let i of this.customHandlers){let n=i.handlers.scroll;if(n)try{n.call(i.plugin,e,t)}catch(e){gi(t.state,e)}}}keydown(t,e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),9==e.keyCode&&Date.now()t.keyCode==e.keyCode)))&&!e.ctrlKey||gn.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)||(this.pendingIOSKey=i||e,setTimeout((()=>this.flushIOSKey(t)),250),0))}flushIOSKey(t){let e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey=void 0,ue(t.contentDOM,e.key,e.keyCode))}ignoreDuringComposition(t){return!!/^key/.test(t.type)&&(this.composing>0||!!(Be.safari&&!Be.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&(this.compositionPendingKey=!1,!0))}mustFlushObserver(t){return"keydown"==t.type&&229!=t.keyCode}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.mouseSelection&&this.mouseSelection.update(t),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const pn=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],gn="dthko",mn=[16,17,18,20,91,92,224,225];function wn(t){return.7*Math.max(0,t)+8}class yn{constructor(t,e,i,n){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParent=function(t){let e=t.ownerDocument;for(let i=t.parentNode;i&&i!=e.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}(t.contentDOM),this.atoms=t.state.facet(Ai).map((e=>e(t)));let s=t.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(vt.allowMultipleSelections)&&function(t,e){let i=t.state.facet(si);return i.length?i[0](e):Be.mac?e.metaKey:e.ctrlKey}(t,e),this.dragging=!(!function(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=Yt(t.root);if(!n||0==n.rangeCount)return!0;let s=n.getRangeAt(0).getClientRects();for(let t=0;t=e.clientX&&i.top<=e.clientY&&i.bottom>=e.clientY)return!0}return!1}(t,e)||1!=Pn(e))&&null}start(t){!1===this.dragging&&(t.preventDefault(),this.select(t))}move(t){var e,i,n;if(0==t.buttons)return this.destroy();if(this.dragging||null==this.dragging&&(i=this.startEvent,n=t,Math.max(Math.abs(i.clientX-n.clientX),Math.abs(i.clientY-n.clientY))<10))return;this.select(this.lastEvent=t);let s=0,r=0,o=(null===(e=this.scrollParent)||void 0===e?void 0:e.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},l=Oi(this.view);t.clientX-l.left<=o.left+6?s=-wn(o.left-t.clientX):t.clientX+l.right>=o.right-6&&(s=wn(t.clientX-o.right)),t.clientY-l.top<=o.top+6?r=-wn(o.top-t.clientY):t.clientY+l.bottom>=o.bottom-6&&(r=wn(t.clientY-o.bottom)),this.setScrollSpeed(s,r)}up(t){null==this.dragging&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval((()=>this.scroll()),50)):this.scrolling>-1&&(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(t){let e=null;for(let i=0;ithis.select(this.lastEvent)),20)}}function vn(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i,n=e.target;n!=t.contentDOM;n=n.parentNode)if(!n||11==n.nodeType||(i=me.get(n))&&i.ignoreEvent(e))return!1;return!0}const kn=Object.create(null),bn=Object.create(null),xn=Be.ie&&Be.ie_version<15||Be.ios&&Be.webkit_version<604;function Sn(t,e){let i,{state:n}=t,s=1,r=n.toText(e),o=r.lines==n.selection.ranges.length;if(null!=Rn&&n.selection.ranges.every((t=>t.empty))&&Rn==r.toString()){let t=-1;i=n.changeByRange((i=>{let l=n.doc.lineAt(i.from);if(l.from==t)return{range:i};t=l.from;let a=n.toText((o?r.line(s++).text:e)+n.lineBreak);return{changes:{from:l.from,insert:a},range:B.cursor(i.from+a.length)}}))}else i=o?n.changeByRange((t=>{let e=r.line(s++);return{changes:{from:t.from,to:t.to,insert:e.text},range:B.cursor(t.from+e.length)}})):n.replaceSelection(r);t.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}function An(t,e,i,n){if(1==n)return B.cursor(e,i);if(2==n)return function(t,e,i=1){let n=t.charCategorizer(e),s=t.doc.lineAt(e),r=e-s.from;if(0==s.length)return B.cursor(e);0==r?i=1:r==s.length&&(i=-1);let o=r,l=r;i<0?o=d(s.text,r,!1):l=d(s.text,r);let a=n(s.text.slice(o,l));for(;o>0;){let t=d(s.text,o,!1);if(n(s.text.slice(t,o))!=a)break;o=t}for(;l{t.inputState.setSelectionOrigin("select"),27==e.keyCode&&(t.inputState.lastEscPress=Date.now())},kn.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")},kn.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")},bn.touchstart=bn.touchmove={passive:!0},kn.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return;let i=null;for(let n of t.state.facet(oi))if(i=n(t,e),i)break;if(i||0!=e.button||(i=function(t,e){let i=On(t,e),n=Pn(e),s=t.state.selection;return{update(t){t.docChanged&&(i.pos=t.changes.mapPos(i.pos),s=s.map(t.changes))},get(e,r,o){let l,a=On(t,e),h=An(t,a.pos,a.bias,n);if(i.pos!=a.pos&&!r){let e=An(t,i.pos,i.bias,n),s=Math.min(e.from,h.from),r=Math.max(e.to,h.to);h=s1&&(l=function(t,e){for(let i=0;i=e)return B.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}(s,a.pos))?l:o?s.addRange(h):B.create([h])}}}(t,e)),i){let n=!t.hasFocus;t.inputState.startMouseSelection(new yn(t,e,i,n)),n&&t.observer.ignore((()=>he(t.contentDOM))),t.inputState.mouseSelection&&t.inputState.mouseSelection.start(e)}};let Mn=(t,e)=>t>=e.top&&t<=e.bottom,Tn=(t,e,i)=>Mn(e,i)&&t>=i.left&&t<=i.right;function Cn(t,e,i,n){let s=Ze.find(t.docView,e);if(!s)return 1;let r=e-s.posAtStart;if(0==r)return 1;if(r==s.length)return-1;let o=s.coordsAt(r,-1);if(o&&Tn(i,n,o))return-1;let l=s.coordsAt(r,1);return l&&Tn(i,n,l)?1:o&&Mn(n,o)?-1:1}function On(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:i,bias:Cn(t,i,e.clientX,e.clientY)}}const Dn=Be.ie&&Be.ie_version<=11;let En=null,Ln=0,Bn=0;function Pn(t){if(!Dn)return t.detail;let e=En,i=Bn;return En=t,Bn=Date.now(),Ln=!e||i>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(Ln+1)%3:1}function Nn(t,e,i,n){if(!i)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:r}=t.inputState,o=n&&r&&r.dragging&&function(t,e){let i=t.state.facet(ri);return i.length?i[0](e):Be.mac?!e.altKey:!e.ctrlKey}(t,e)?{from:r.dragging.from,to:r.dragging.to}:null,l={from:s,insert:i},a=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"})}kn.dragstart=(t,e)=>{let{selection:{main:i}}=t.state,{mouseSelection:n}=t.inputState;n&&(n.dragging=i),e.dataTransfer&&(e.dataTransfer.setData("Text",t.state.sliceDoc(i.from,i.to)),e.dataTransfer.effectAllowed="copyMove")},kn.drop=(t,e)=>{if(!e.dataTransfer)return;if(t.state.readOnly)return e.preventDefault();let i=e.dataTransfer.files;if(i&&i.length){e.preventDefault();let n=Array(i.length),s=0,r=()=>{++s==i.length&&Nn(t,e,n.filter((t=>null!=t)).join(t.state.lineBreak),!1)};for(let t=0;t{/[\x00-\x08\x0e-\x1f]{2}/.test(e.result)||(n[t]=e.result),r()},e.readAsText(i[t])}}else Nn(t,e,e.dataTransfer.getData("Text"),!0)},kn.paste=(t,e)=>{if(t.state.readOnly)return e.preventDefault();t.observer.flush();let i=xn?null:e.clipboardData;i?(Sn(t,i.getData("text/plain")||i.getData("text/uri-text")),e.preventDefault()):function(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout((()=>{t.focus(),i.remove(),Sn(t,i.value)}),50)}(t)};let Rn=null;kn.copy=kn.cut=(t,e)=>{let{text:i,ranges:n,linewise:s}=function(t){let e=[],i=[],n=!1;for(let n of t.selection.ranges)n.empty||(e.push(t.sliceDoc(n.from,n.to)),i.push(n));if(!e.length){let s=-1;for(let{from:n}of t.selection.ranges){let r=t.doc.lineAt(n);r.number>s&&(e.push(r.text),i.push({from:r.from,to:Math.min(t.doc.length,r.to+1)})),s=r.number}n=!0}return{text:e.join(t.lineBreak),ranges:i,linewise:n}}(t.state);if(!i&&!s)return;Rn=s?i:null;let r=xn?null:e.clipboardData;r?(e.preventDefault(),r.clearData(),r.setData("text/plain",i)):function(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout((()=>{n.remove(),t.focus()}),50)}(t,i),"cut"!=e.type||t.state.readOnly||t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"})};const In=rt.define();function Hn(t,e){let i=[];for(let n of t.facet(ci)){let s=n(t,e);s&&i.push(s)}return i?t.update({effects:i,annotations:In.of(!0)}):null}function zn(t){setTimeout((()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=Hn(t.state,e);i?t.dispatch(i):t.update([])}}),10)}kn.focus=t=>{t.inputState.lastFocusTime=Date.now(),t.scrollDOM.scrollTop||!t.inputState.lastScrollTop&&!t.inputState.lastScrollLeft||(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),zn(t)},kn.blur=t=>{t.observer.clearSelectionRange(),zn(t)},kn.compositionstart=kn.compositionupdate=t=>{null==t.inputState.compositionFirstChange&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0)},kn.compositionend=t=>{t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,Be.chrome&&Be.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then((()=>t.observer.flush())):setTimeout((()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])}),50)},kn.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()},kn.beforeinput=(t,e)=>{var i;let n;if(Be.chrome&&Be.android&&(n=pn.find((t=>t.inputType==e.inputType)))&&(t.observer.delayAndroidKey(n.key,n.keyCode),"Backspace"==n.key||"Delete"==n.key)){let e=(null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0;setTimeout((()=>{var i;((null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0)>e+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())}),100)}};const Wn=new Set,Vn=["pre-wrap","normal","pre-line","break-spaces"];class Fn{constructor(e){this.lineWrapping=e,this.doc=t.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Vn.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,l=Math.round(e)!=Math.round(this.lineHeight)||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=e,this.charWidth=i,this.textHeight=n,this.lineLength=s,l){this.heightSamples={};for(let t=0;t0}set outdated(t){this.flags=(t?2:0)|-3&this.flags}setHeight(t,e){this.height!=e&&(Math.abs(this.height-e)>$n&&(t.heightChanged=!0),this.height=e)}replace(t,e,i){return Kn.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,n){let s=this,r=i.doc;for(let o=n.length-1;o>=0;o--){let{fromA:l,toA:a,fromB:h,toB:c}=n[o],u=s.lineAt(l,jn.ByPosNoHeight,i.setDoc(e),0,0),f=u.to>=a?u:s.lineAt(a,jn.ByPosNoHeight,i,0,0);for(c+=f.to-a,a=f.to;o>0&&u.from<=n[o-1].toA;)l=n[o-1].fromA,h=n[o-1].fromB,o--,l2*s){let s=t[e-1];s.break?t.splice(--e,1,s.left,null,s.right):t.splice(--e,1,s.left,s.right),i+=1+s.break,n-=s.size}else{if(!(s>2*n))break;{let e=t[i];e.break?t.splice(i,1,e.left,null,e.right):t.splice(i,1,e.left,e.right),i+=2+e.break,s-=e.size}}else if(n=s&&r(this.blockAt(0,i,n,s))}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setHeight(t,n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Un extends Gn{constructor(t,e){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(t,e,i,n){return new qn(n,this.length,i,this.height,this.breaks)}replace(t,e,i){let n=i[0];return 1==i.length&&(n instanceof Un||n instanceof Jn&&4&n.flags)&&Math.abs(this.length-n.length)<10?(n instanceof Jn?n=new Un(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):Kn.of(i)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setHeight(t,n.heights[n.index++]):(i||this.outdated)&&this.setHeight(t,Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Jn extends Kn{constructor(t){super(t,0)}heightMetrics(t,e){let i,n=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-n+1,o=0;if(t.lineWrapping){let e=Math.min(this.height,t.lineHeight*r);i=e/r,this.length>r+1&&(o=(this.height-e)/(this.length-r-1))}else i=this.height/r;return{firstLine:n,lastLine:s,perLine:i,perChar:o}}blockAt(t,e,i,n){let{firstLine:s,lastLine:r,perLine:o,perChar:l}=this.heightMetrics(e,n);if(e.lineWrapping){let s=n+Math.round(Math.max(0,Math.min(1,(t-i)/this.height))*this.length),r=e.doc.lineAt(s),a=o+r.length*l,h=Math.max(i,t-a/2);return new qn(r.from,r.length,h,a,0)}{let n=Math.max(0,Math.min(r-s,Math.floor((t-i)/o))),{from:l,length:a}=e.doc.line(s+n);return new qn(l,a,i+o*n,o,0)}}lineAt(t,e,i,n,s){if(e==jn.ByHeight)return this.blockAt(t,i,n,s);if(e==jn.ByPosNoHeight){let{from:e,to:n}=i.doc.lineAt(t);return new qn(e,n-e,0,0,0)}let{firstLine:r,perLine:o,perChar:l}=this.heightMetrics(i,s),a=i.doc.lineAt(t),h=o+a.length*l,c=a.number-r,u=n+o*c+l*(a.from-s-c);return new qn(a.from,a.length,Math.max(n,Math.min(u,n+this.height-h)),h,0)}forEachLine(t,e,i,n,s,r){t=Math.max(t,s),e=Math.min(e,s+this.length);let{firstLine:o,perLine:l,perChar:a}=this.heightMetrics(i,s);for(let h=t,c=n;h<=e;){let e=i.doc.lineAt(h);if(h==t){let i=e.number-o;c+=l*i+a*(t-s-i)}let n=l+a*e.length;r(new qn(e.from,e.length,c,n,0)),c+=n,h=e.to+1}}replace(t,e,i){let n=this.length-e;if(n>0){let t=i[i.length-1];t instanceof Jn?i[i.length-1]=new Jn(t.length+n):i.push(null,new Jn(n-1))}if(t>0){let e=i[0];e instanceof Jn?i[0]=new Jn(t+e.length):i.unshift(new Jn(t-1),null)}return Kn.of(i)}decomposeLeft(t,e){e.push(new Jn(t-1),null)}decomposeRight(t,e){e.push(null,new Jn(this.length-t-1))}updateHeight(t,e=0,i=!1,n){let s=e+this.length;if(n&&n.from<=e+this.length&&n.more){let i=[],r=Math.max(e,n.from),o=-1;for(n.from>e&&i.push(new Jn(n.from-e-1).updateHeight(t,e));r<=s&&n.more;){let e=t.doc.lineAt(r).length;i.length&&i.push(null);let s=n.heights[n.index++];-1==o?o=s:Math.abs(s-o)>=$n&&(o=-2);let l=new Un(e,s);l.outdated=!1,i.push(l),r+=e+1}r<=s&&i.push(null,new Jn(s-r).updateHeight(t,r));let l=Kn.of(i);return(o<0||Math.abs(l.height-this.height)>=$n||Math.abs(o-this.heightMetrics(t,e).perLine)>=$n)&&(t.heightChanged=!0),l}return(i||this.outdated)&&(this.setHeight(t,t.heightForGap(e,e+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}}class Yn extends Kn{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return 1&this.flags}blockAt(t,e,i,n){let s=i+this.left.height;return to))return a;let h=e==jn.ByPosNoHeight?jn.ByPosNoHeight:jn.ByPos;return l?a.join(this.right.lineAt(o,h,i,r,o)):this.left.lineAt(o,h,i,n,s).join(a)}forEachLine(t,e,i,n,s,r){let o=n+this.left.height,l=s+this.left.length+this.break;if(this.break)t=l&&this.right.forEachLine(t,e,i,o,l,r);else{let a=this.lineAt(l,jn.ByPos,i,n,s);t=t&&a.from<=e&&r(a),e>a.to&&this.right.forEachLine(a.to+1,e,i,o,l,r)}}replace(t,e,i){let n=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-n,e-n,i));let s=[];t>0&&this.decomposeLeft(t,s);let r=s.length;for(let t of i)s.push(t);if(t>0&&Xn(s,r-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,n=i+this.break;if(t>=n)return this.right.decomposeRight(t-n,e);t2*e.size||e.size>2*t.size?Kn.of(this.break?[t,null,e]:[t,e]):(this.left=t,this.right=e,this.height=t.height+e.height,this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,n){let{left:s,right:r}=this,o=e+s.length+this.break,l=null;return n&&n.from<=e+s.length&&n.more?l=s=s.updateHeight(t,e,i,n):s.updateHeight(t,e,i),n&&n.from<=o+r.length&&n.more?l=r=r.updateHeight(t,o,i,n):r.updateHeight(t,o,i),l?this.balanced(s,r):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Xn(t,e){let i,n;null==t[e]&&(i=t[e-1])instanceof Jn&&(n=t[e+1])instanceof Jn&&t.splice(e-1,3,new Jn(i.length+1+n.length))}class Qn{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let t=Math.min(e,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof Un?i.length+=t-this.pos:(t>this.pos||!this.isCovered)&&this.nodes.push(new Un(t-this.pos,-1)),this.writtenTo=t,e>t&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=5)&&this.addLineDeco(n,s,r)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new Un(this.pos-t,-1)),this.writtenTo=this.pos}blankContent(t,e){let i=new Jn(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof Un)return t;let e=new Un(0,-1);return this.nodes.push(e),e}addBlock(t){var e;this.enterLine();let i=null===(e=t.deco)||void 0===e?void 0:e.type;i!=Ke.WidgetAfter||this.isCovered||this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,i!=Ke.WidgetBefore&&(this.covering=t)}addLineDeco(t,e,i){let n=this.ensureLine();n.length+=i,n.collapsed+=i,n.widgetHeight=Math.max(n.widgetHeight,t),n.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||e instanceof Un||this.isCovered?(this.writtenToi.clientHeight||i.scrollWidth>i.clientWidth)&&"visible"!=n.overflow){let n=i.getBoundingClientRect();r=Math.max(r,n.left),o=Math.min(o,n.right),l=Math.max(l,n.top),a=e==t.parentNode?n.bottom:Math.min(a,n.bottom)}e="absolute"==n.position||"fixed"==n.position?i.offsetParent:i.parentNode}else{if(11!=e.nodeType)break;e=e.host}return{left:r-i.left,right:Math.max(r,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,a)-(i.top+e)}}function es(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class is{constructor(t,e,i){this.from=t,this.to=e,this.size=i}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;i"function"!=typeof t&&"cm-lineWrapping"==t.class));this.heightOracle=new Fn(i),this.stateDeco=e.facet(Si).filter((t=>"function"!=typeof t)),this.heightMap=Kn.empty().applyChanges(this.stateDeco,t.empty,this.heightOracle.setDoc(e.doc),[new Ei(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Ge.set(this.lineGaps.map((t=>t.draw(this,!1)))),this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let n=i?e.head:e.anchor;if(!t.some((({from:t,to:e})=>n>=t&&n<=e))){let{from:e,to:i}=this.lineBlockAt(n);t.push(new rs(e,i))}}this.viewports=t.sort(((t,e)=>t.from-e.from)),this.scaler=this.heightMap.height<=7e6?hs:new cs(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,(t=>{this.viewportLines.push(1==this.scaler.scale?t:us(t,this.scaler))}))}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Si).filter((t=>"function"!=typeof t));let n=t.changedRanges,s=Ei.extendWithRanges(n,function(t,e,i){let n=new Zn;return Mt.compare(t,e,i,n,0),n.changes}(i,this.stateDeco,t?t.changes:A.empty(this.state.doc.length))),r=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),s),this.heightMap.height!=r&&(t.flags|=2),o?(this.scrollAnchorPos=t.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let l=s.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,e));let a=!t.changes.empty||2&t.flags||l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,this.updateForViewport(),a&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&t.selectionSet&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(fi)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let i=e.contentDOM,n=window.getComputedStyle(i),s=this.heightOracle,r=n.whiteSpace;this.defaultTextDirection="rtl"==n.direction?Bi.RTL:Bi.LTR;let o=this.heightOracle.mustRefreshForWrapping(r),l=i.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,c=0;if(l.width&&l.height){let t=l.width/i.offsetWidth,e=l.height/i.offsetHeight;t>.995&&t<1.005&&(t=1),e>.995&&e<1.005&&(e=1),this.scaleX==t&&this.scaleY==e||(this.scaleX=t,this.scaleY=e,h|=8,o=a=!0)}let u=(parseInt(n.paddingTop)||0)*this.scaleY,f=(parseInt(n.paddingBottom)||0)*this.scaleY;this.paddingTop==u&&this.paddingBottom==f||(this.paddingTop=u,this.paddingBottom=f,h|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=8);let d=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=de(e.scrollDOM);let p=(this.printing?es:ts)(i,this.paddingTop),g=p.top-this.pixelViewport.top,m=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let w=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(w!=this.inView&&(this.inView=w,w&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let y=l.width;if(this.contentDOMWidth==y&&this.editorHeight==e.scrollDOM.clientHeight||(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=8),a){let i=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(i)&&(o=!0),o||s.lineWrapping&&Math.abs(y-this.contentDOMWidth)>s.charWidth){let{lineHeight:t,charWidth:n,textHeight:l}=e.docView.measureTextSize();o=t>0&&s.refresh(r,t,n,l,y/n,i),o&&(e.docView.minWidth=0,h|=8)}g>0&&m>0?c=Math.max(g,m):g<0&&m<0&&(c=Math.min(g,m)),s.heightChanged=!1;for(let n of this.viewports){let r=n.from==this.viewport.from?i:e.docView.measureVisibleLineHeights(n);this.heightMap=(o?Kn.empty().applyChanges(this.stateDeco,t.empty,this.heightOracle,[new Ei(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new _n(n.from,r))}s.heightChanged&&(h|=2)}let v=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return v&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(2&h||v)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),n=this.heightMap,s=this.heightOracle,{visibleTop:r,visibleBottom:o}=this,l=new rs(n.lineAt(r-1e3*i,jn.ByHeight,s,0,0).from,n.lineAt(o+1e3*(1-i),jn.ByHeight,s,0,0).to);if(e){let{head:t}=e.range;if(tl.to){let i,r=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),o=n.lineAt(t,jn.ByPos,s,0,0);i="center"==e.y?(o.top+o.bottom)/2-r/2:"start"==e.y||"nearest"==e.y&&t=o+Math.max(10,Math.min(i,250)))&&n>r-2e3&&s>1,r=n<<1;if(this.defaultTextDirection!=Bi.LTR&&!i)return[];let o=[],l=(n,r,a,h)=>{if(r-nn&&tt.from>=a.from&&t.to<=a.to&&Math.abs(t.from-n)t.frome))));if(!f){if(rt.from<=r&&t.to>=r))){let t=e.moveToLineBoundary(B.cursor(r),!1,!0).head;t>n&&(r=t)}f=new is(n,r,this.gapSize(a,n,r,h))}o.push(f)};for(let t of this.viewportLines){if(t.lengtht.from&&l(t.from,s,t,e),ot.draw(this,this.heightOracle.lineWrapping)))))}computeVisibleRanges(){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let e=[];Mt.spans(t,this.viewport.from,this.viewport.to,{span(t,i){e.push({from:t,to:i})},point(){}},20);let i=e.length!=this.visibleRanges.length||this.visibleRanges.some(((t,i)=>t.from!=e[i].from||t.to!=e[i].to));return this.visibleRanges=e,i?4:0}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find((e=>e.from<=t&&e.to>=t))||us(this.heightMap.lineAt(t,jn.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return us(this.heightMap.lineAt(this.scaler.fromDOM(t),jn.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return us(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class rs{constructor(t,e){this.from=t,this.to=e}}function os(t,e,i){let n=[],s=t,r=0;return Mt.spans(i,t,e,{span(){},point(t,e){t>s&&(n.push({from:s,to:t}),r+=t-s),s=e}},20),s=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let t=0;;t++){let{from:i,to:s}=e[t],r=s-i;if(n<=r)return i+n;n-=r}}function as(t,e){let i=0;for(let{from:n,to:s}of t.ranges){if(e<=s){i+=e-n;break}i+=s-n}return i/t.total}const hs={toDOM:t=>t,fromDOM:t=>t,scale:1};class cs{constructor(t,e,i){let n=0,s=0,r=0;this.viewports=i.map((({from:i,to:s})=>{let r=e.lineAt(i,jn.ByPos,t,0,0).top,o=e.lineAt(s,jn.ByPos,t,0,0).bottom;return n+=o-r,{from:i,to:s,top:r,bottom:o,domTop:0,domBottom:0}})),this.scale=(7e6-n)/(e.height-n);for(let t of this.viewports)t.domTop=r+(t.top-s)*this.scale,r=t.domBottom=t.domTop+(t.bottom-t.top),s=t.bottom}toDOM(t){for(let e=0,i=0,n=0;;e++){let s=eus(t,e))):t._content)}const fs=R.define({combine:t=>t.join(" ")}),ds=R.define({combine:t=>t.indexOf(!0)>-1}),ps=Ft.newName(),gs=Ft.newName(),ms=Ft.newName(),ws={"&light":"."+gs,"&dark":"."+ms};function ys(t,e,i){return new Ft(e,{finish:e=>/&/.test(e)?e.replace(/&\w*/,(e=>{if("&"==e)return t;if(!i||!i[e])throw new RangeError(`Unsupported selector: ${e}`);return i[e]})):t+" "+e})}const vs=ys("."+ps,{"&":{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",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"},"&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,\')',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"}},ws),ks="￿";class bs{constructor(t,e){this.points=t,this.text="",this.lineSeparator=e.facet(vt.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=ks}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let n=t;;){this.findPointBefore(i,n);let t=this.text.length;this.readNode(n);let s=n.nextSibling;if(s==e)break;let r=me.get(n),o=me.get(s);(r&&o?r.breakAfter:(r?r.breakAfter:xs(n))||xs(s)&&("BR"!=n.nodeName||n.cmIgnore)&&this.text.length>t)&&this.lineBreak(),n=s}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,n=this.lineSeparator?null:/\r\n?|\n/g;;){let s,r=-1,o=1;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(s=n.exec(e))&&(r=s.index,o=s[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let e of this.points)e.node==t&&e.pos>this.text.length&&(e.pos-=o-1);i=r+o}}readNode(t){if(t.cmIgnore)return;let e=me.get(t),i=e&&e.overrideDOMText;if(null!=i){this.findPointInside(t,i.length);for(let t=i.iter();!t.next().done;)t.lineBreak?this.lineBreak():this.append(t.value)}else 3==t.nodeType?this.readTextNode(t):"BR"==t.nodeName?t.nextSibling&&this.lineBreak():1==t.nodeType&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(3==t.nodeType?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+Math.min(e,i.offset))}}function xs(t){return 1==t.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}class Ss{constructor(t,e){this.node=t,this.offset=e,this.pos=-1}}class As{constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text="";let{impreciseHead:s,impreciseAnchor:r}=t.docView;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=t.docView.domBoundsAround(e,i,0))){let e=s||r?[]:function(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:s,focusOffset:r}=t.observer.selectionRange;return i&&(e.push(new Ss(i,n)),s==i&&r==n||e.push(new Ss(s,r))),e}(t),i=new bs(e,t.state);i.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=i.text,this.newSel=function(t,e){if(0==t.length)return null;let i=t[0].pos,n=2==t.length?t[1].pos:i;return i>-1&&n>-1?B.single(i+e,n+e):null}(e,this.bounds.from)}else{let e=t.observer.selectionRange,i=s&&s.node==e.focusNode&&s.offset==e.focusOffset||!Xt(t.contentDOM,e.focusNode)?t.state.selection.main.head:t.docView.posFromDOM(e.focusNode,e.focusOffset),n=r&&r.node==e.anchorNode&&r.offset==e.anchorOffset||!Xt(t.contentDOM,e.anchorNode)?t.state.selection.main.anchor:t.docView.posFromDOM(e.anchorNode,e.anchorOffset);this.newSel=B.single(n,i)}}}function Ms(e,i){let n,{newSel:s}=i,r=e.state.selection.main,o=e.inputState.lastKeyTime>Date.now()-100?e.inputState.lastKeyCode:-1;if(i.bounds){let{from:s,to:l}=i.bounds,a=r.from,h=null;(8===o||Be.android&&i.text.length0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;return"end"==n&&(i-=o+Math.max(0,r-Math.min(o,l))-r),o=o?r-i:0,l=r+(l-o),o=r):l=l?r-i:0,o=r+(o-l),l=r),{from:r,toA:o,toB:l}}(e.state.doc.sliceString(s,l,ks),i.text,a-s,h);c&&(Be.chrome&&13==o&&c.toB==c.from+2&&i.text.slice(c.from,c.toB)==ks+ks&&c.toB--,n={from:s+c.from,to:s+c.toA,insert:t.of(i.text.slice(c.from,c.toB).split(ks))})}else s&&(!e.hasFocus&&e.state.facet(mi)||s.main.eq(r))&&(s=null);if(!n&&!s)return!1;if(!n&&i.typeOver&&!r.empty&&s&&s.main.empty?n={from:r.from,to:r.to,insert:e.state.doc.slice(r.from,r.to)}:n&&n.from>=r.from&&n.to<=r.to&&(n.from!=r.from||n.to!=r.to)&&r.to-r.from-(n.to-n.from)<=4?n={from:r.from,to:r.to,insert:e.state.doc.slice(r.from,n.from).append(n.insert).append(e.state.doc.slice(n.to,r.to))}:(Be.mac||Be.android)&&n&&n.from==n.to&&n.from==r.head-1&&/^\. ?$/.test(n.insert.toString())&&"off"==e.contentDOM.getAttribute("autocorrect")?(s&&2==n.insert.length&&(s=B.single(s.main.anchor-1,s.main.head-1)),n={from:r.from,to:r.to,insert:t.of([" "])}):Be.chrome&&n&&n.from==n.to&&n.from==r.head&&"\n "==n.insert.toString()&&e.lineWrapping&&(s&&(s=B.single(s.main.anchor-1,s.main.head-1)),n={from:r.from,to:r.to,insert:t.of([" "])}),n){if(Be.ios&&e.inputState.flushIOSKey(e))return!0;if(Be.android&&(n.from==r.from&&n.to==r.to&&1==n.insert.length&&2==n.insert.lines&&ue(e.contentDOM,"Enter",13)||(n.from==r.from-1&&n.to==r.to&&0==n.insert.length||8==o&&n.insert.lengthr.head)&&ue(e.contentDOM,"Backspace",8)||n.from==r.from&&n.to==r.to+1&&0==n.insert.length&&ue(e.contentDOM,"Delete",46)))return!0;let t,i=n.insert.toString();e.inputState.composing>=0&&e.inputState.composing++;let l=()=>t||(t=function(t,e,i){let n,s=t.state,r=s.selection.main;if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let i=r.frome.to?s.sliceDoc(e.to,r.to):"";n=s.replaceSelection(t.state.toText(i+e.insert.sliceString(0,void 0,t.state.lineBreak)+o))}else{let o=s.changes(e),l=i&&i.main.to<=o.newLength?i.main:void 0;if(s.selection.ranges.length>1&&t.inputState.composing>=0&&e.to<=r.to&&e.to>=r.to-10){let a,h=t.state.sliceDoc(e.from,e.to),c=i&&Xi(t,i.main.head);if(c){let t=e.insert.length-(e.to-e.from);a={from:c.from,to:c.to-t}}else a=t.state.doc.lineAt(r.head);let u=r.to-e.to,f=r.to-r.from;n=s.changeByRange((i=>{if(i.from==r.from&&i.to==r.to)return{changes:o,range:l||i.map(o)};let n=i.to-u,c=n-h.length;if(i.to-i.from!=f||t.state.sliceDoc(c,n)!=h||i.to>=a.from&&i.from<=a.to)return{range:i};let d=s.changes({from:c,to:n,insert:e.insert}),p=i.to-r.to;return{changes:d,range:l?B.range(Math.max(0,l.anchor+p),Math.max(0,l.head+p)):i.map(d)}}))}else n={changes:o,selection:l&&s.selection.replaceRange(l)}}let o="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,o+=".compose",t.inputState.compositionFirstChange&&(o+=".start",t.inputState.compositionFirstChange=!1)),s.update(n,{userEvent:o,scrollIntoView:!0})}(e,n,s));return e.state.facet(hi).some((t=>t(e,n.from,n.to,i,l)))||e.dispatch(l()),!0}if(s&&!s.main.eq(r)){let t=!1,i="select";return e.inputState.lastSelectionTime>Date.now()-50&&("select"==e.inputState.lastSelectionOrigin&&(t=!0),i=e.inputState.lastSelectionOrigin),e.dispatch({selection:s,scrollIntoView:t,userEvent:i}),!0}return!1}const Ts={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Cs=Be.ie&&Be.ie_version<=11;class Os{constructor(t){this.view=t,this.active=!1,this.selectionRange=new oe,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.resizeContent=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver((e=>{for(let t of e)this.queue.push(t);(Be.ie&&Be.ie_version<=11||Be.ios&&t.composing)&&e.some((t=>"childList"==t.type&&t.removedNodes.length||"characterData"==t.type&&t.oldValue.length>t.target.nodeValue.length))?this.flushSoon():this.flush()})),Cs&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.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 t;(null===(t=this.view.docView)||void 0===t?void 0:t.lastUpdate)this.view.requestMeasure())),this.resizeContent.observe(t.contentDOM)),this.addWindowListeners(this.win=t.win),this.start(),"function"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver((t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=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((t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))}),{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runScrollHandlers(this.view,t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(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(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some(((e,i)=>e!=t[i])))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(mi)?i.root.activeElement!=this.dom:!Qt(i.dom,n))return;let s=n.anchorNode&&i.docView.nearest(n.anchorNode);s&&s.ignoreEvent(t)?e||(this.selectionChanged=!1):(Be.ie&&Be.ie_version<=11||Be.android&&Be.chrome)&&!i.state.selection.main.empty&&n.focusNode&&te(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=Be.safari&&11==t.root.nodeType&&function(t){let e=t.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}(this.dom.ownerDocument)==this.dom&&function(t){let e=null;function i(t){t.preventDefault(),t.stopImmediatePropagation(),e=t.getTargetRanges()[0]}if(t.contentDOM.addEventListener("beforeinput",i,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",i,!0),!e)return null;let n=e.startContainer,s=e.startOffset,r=e.endContainer,o=e.endOffset,l=t.docView.domAtPos(t.state.selection.main.anchor);return te(l.node,l.offset,r,o)&&([n,s,r,o]=[r,o,n,s]),{anchorNode:n,anchorOffset:s,focusNode:r,focusOffset:o}}(this.view)||Yt(t.root);if(!e||this.selectionRange.eq(e))return!1;let i=Qt(this.dom,e);return i&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let t=this.delayedAndroidKey;t&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=t.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&t.force&&ue(this.dom,t.key,t.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(t)}this.delayedAndroidKey&&"Enter"!=t||(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()})))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,n=!1;for(let s of t){let t=this.readMutation(s);t&&(t.typeOver&&(n=!0),-1==e?({from:e,to:i}=t):(e=Math.min(t.from,e),i=Math.max(t.to,i)))}return{from:e,to:i,typeOver:n}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.selectionChanged&&Qt(this.dom,this.selectionRange);if(t<0&&!n)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new As(this.view,t,e,i);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return!1;let i=this.view.state,n=Ms(this.view,e);return this.view.state==i&&this.view.update([]),n}readMutation(t){let e=this.view.docView.nearest(t.target);if(!e||e.ignoreMutation(t))return null;if(e.markDirty("attributes"==t.type),"attributes"==t.type&&(e.flags|=4),"childList"==t.type){let i=Ds(e,t.previousSibling||t.target.previousSibling,-1),n=Ds(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:n?e.posBefore(n):e.posAtEnd,typeOver:!1}}return"characterData"==t.type?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var t,e,i,n;this.stop(),null===(t=this.intersection)||void 0===t||t.disconnect(),null===(e=this.gapIntersection)||void 0===e||e.disconnect(),null===(i=this.resizeScroll)||void 0===i||i.disconnect(),null===(n=this.resizeContent)||void 0===n||n.disconnect();for(let 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 Ds(t,e,i){for(;e;){let n=me.get(e);if(n&&n.parent==t)return n;let s=e.parentNode;e=s!=t.dom?s:i>0?e.nextSibling:e.previousSibling}return null}class Es{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 this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){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.style.cssText="position: fixed; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM);let{dispatch:e}=t;this.dispatchTransactions=t.dispatchTransactions||e&&(t=>t.forEach((t=>e(t,this))))||(t=>this.update(t)),this.dispatch=this.dispatch.bind(this),this._root=t.root||function(t){for(;t;){if(t&&(9==t.nodeType||11==t.nodeType&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}(t.parent)||document,this.viewState=new ss(t.state||vt.create(t)),this.plugins=this.state.facet(yi).map((t=>new ki(t)));for(let t of this.plugins)t.update(this);this.observer=new Os(this),this.inputState=new dn(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new Ji(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),t.parent&&t.parent.appendChild(this.dom)}dispatch(...t){let e=1==t.length&&t[0]instanceof ht?t:1==t.length&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(0!=this.updateState)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e,i=!1,n=!1,s=this.state;for(let e of t){if(e.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=e.state}if(this.destroyed)return void(this.viewState.state=s);let r=this.hasFocus,o=0,l=null;t.some((t=>t.annotation(In)))?(this.inputState.notifiedFocused=r,o=1):r!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=r,l=Hn(s,r),l||(o=1));let a=this.observer.delayedAndroidKey,h=null;if(a?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(h=null)):this.observer.clear(),s.facet(vt.phrases)!=this.state.facet(vt.phrases))return this.setState(s);e=Li.create(this,s,t),e.flags|=o;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let e of t){if(c&&(c=c.map(e.changes)),e.scrollIntoView){let{main:t}=e.state.selection;c=new di(t.empty?t:B.cursor(t.head,t.head>t.anchor?-1:1))}for(let t of e.effects)t.is(pi)&&(c=t.value)}this.viewState.update(e,c),this.bidiCache=Ps.update(this.bidiCache,e.changes),e.empty||(this.updatePlugins(e),this.inputState.update(e)),i=this.docView.update(e),this.state.facet(Di)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(i,t.some((t=>t.isUserEvent("select.pointer"))))}finally{this.updateState=0}if(e.startState.facet(fs)!=e.state.facet(fs)&&(this.viewState.mustMeasureContent=!0),(i||n||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!e.empty)for(let t of this.state.facet(ai))t(e);(l||h)&&Promise.resolve().then((()=>{l&&this.state==l.startState&&this.dispatch(l),h&&!Ms(this,h)&&a.force&&ue(this.contentDOM,a.key,a.keyCode)}))}setState(t){if(0!=this.updateState)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed)return void(this.viewState.state=t);this.updateState=2;let e=this.hasFocus;try{for(let t of this.plugins)t.destroy(this);this.viewState=new ss(t),this.plugins=t.facet(yi).map((t=>new ki(t))),this.pluginMap.clear();for(let t of this.plugins)t.update(this);this.docView=new Ji(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(yi),i=t.state.facet(yi);if(e!=i){let n=[];for(let s of i){let i=e.indexOf(s);if(i<0)n.push(new ki(s));else{let e=this.plugins[i];e.mustUpdate=t,n.push(e)}}for(let e of this.plugins)e.mustUpdate!=t&&e.destroy(this);this.plugins=n,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let e of this.plugins)e.mustUpdate=t;for(let t=0;t-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)return this.measureScheduled=-1,void this.requestMeasure();this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.scrollDOM,n=i.scrollTop*this.scaleY,{scrollAnchorPos:s,scrollAnchorHeight:r}=this.viewState;Math.abs(n-this.viewState.scrollTop)>1&&(r=-1),this.viewState.scrollAnchorHeight=-1;try{for(let t=0;;t++){if(r<0)if(de(i))s=-1,r=this.viewState.heightMap.height;else{let t=this.viewState.scrollAnchorAt(n);s=t.from,r=t.top}this.updateState=1;let o=this.viewState.measure(this);if(!o&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(t>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let l=[];4&o||([this.measureRequests,l]=[l,this.measureRequests]);let a=l.map((t=>{try{return t.read(this)}catch(t){return gi(this.state,t),Bs}})),h=Li.create(this,this.state,[]),c=!1;h.flags|=o,e?e.flags|=o:e=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),c=this.docView.update(h));for(let t=0;t1||t<-1){n+=t,i.scrollTop=n/this.scaleY,r=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let t of this.state.facet(ai))t(e)}get themeClasses(){return ps+" "+(this.state.facet(ds)?ms:gs)+" "+this.state.facet(fs)}updateAttrs(){let t=Ns(this,bi,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(mi)?"true":"false",class:"cm-content",style:`${Be.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),Ns(this,xi,e);let i=this.observer.ignore((()=>{let i=qe(this.contentDOM,this.contentAttrs,e),n=qe(this.dom,this.editorAttrs,t);return i||n}));return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let t of i.effects)t.is(Es.announce)&&(e&&(this.announceDOM.textContent=""),e=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=t.value)}mountStyles(){this.styleModules=this.state.facet(Di);let t=this.state.facet(Es.cspNonce);Ft.mount(this.root,this.styleModules.concat(vs).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(2==this.updateState)throw new Error("Reading the editor layout isn't allowed during an update");0==this.updateState&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame((()=>this.measure()))),t){if(this.measureRequests.indexOf(t)>-1)return;if(null!=t.key)for(let e=0;ee.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(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return fn(this,t,cn(this,t,e,i))}moveByGroup(t,e){return fn(this,t,cn(this,t,e,(e=>function(t,e,i){let n=t.state.charCategorizer(e),s=n(i);return t=>{let e=n(t);return s==mt.Space&&(s=e),s==e}}(this,t.head,e))))}moveToLineBoundary(t,e,i=!0){return function(t,e,i,n){let s=function(t,e){let i=t.lineBlockAt(e);if(Array.isArray(i.type))for(let t of i.type)if(t.to>e||t.to==e&&(t.to==i.to||t.type==Ke.Text))return t;return i}(t,e.head),r=n&&s.type==Ke.Text&&(t.lineWrapping||s.widgetLineBreaks)?t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head):null;if(r){let e=t.dom.getBoundingClientRect(),n=t.textDirectionAt(s.from),o=t.posAtCoords({x:i==(n==Bi.LTR)?e.right-1:e.left+1,y:(r.top+r.bottom)/2});if(null!=o)return B.cursor(o,i?-1:1)}return B.cursor(i?s.to:s.from,i?-1:1)}(this,t,e,i)}moveVertically(t,e,i){return fn(this,t,function(t,e,i,n){let s=e.head,r=i?1:-1;if(s==(i?t.state.doc.length:0))return B.cursor(s,e.assoc);let o,l=e.goalColumn,a=t.contentDOM.getBoundingClientRect(),h=t.coordsAtPos(s),c=t.documentTop;if(h)null==l&&(l=h.left-a.left),o=r<0?h.top:h.bottom;else{let e=t.viewState.lineBlockAt(s);null==l&&(l=Math.min(a.right-a.left,t.defaultCharacterWidth*(s-e.from))),o=(r<0?e.top:e.bottom)+c}let u=a.left+l,f=null!=n?n:t.viewState.heightOracle.textHeight>>1;for(let i=0;;i+=10){let n=o+(f+i)*r,h=an(t,{x:u,y:n},!1,r);if(na.bottom||(r<0?hs))return B.cursor(h,e.assoc,void 0,l)}}(this,t,e,i))}domAtPos(t){return this.docView.domAtPos(t)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){return this.readMeasured(),an(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let n=this.state.doc.lineAt(t),s=this.bidiSpans(n);return se(i,s[Fi.find(s,t-n.from,-1,e)].dir==Bi.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(ui)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>Ls)return Ki(t.length);let e,i=this.textDirectionAt(t.from);for(let n of this.bidiCache)if(n.from==t.from&&n.dir==i&&(n.fresh||_i(n.isolates,e=Ti(this,t.from,t.to))))return n.order;e||(e=Ti(this,t.from,t.to));let n=function(t,e,i){if(!t)return[new Fi(0,0,e==Ni?1:0)];if(e==Pi&&!i.length&&!Vi.test(t))return Ki(t.length);if(i.length)for(;t.length>qi.length;)qi[qi.length]=256;let n=[],s=e==Pi?0:1;return $i(t,s,s,i,0,t.length,n),n}(t.text,i,e);return this.bidiCache.push(new Ps(t.from,t.to,i,e,!0,n)),n}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||Be.safari&&(null===(t=this.inputState)||void 0===t?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore((()=>{he(this.contentDOM),this.docView.updateSelection()}))}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((9==t.nodeType?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){return pi.of(new di("number"==typeof t?B.cursor(t):t,e.y,e.x,e.yMargin,e.xMargin))}static domEventHandlers(t){return vi.define((()=>({})),{eventHandlers:t})}static theme(t,e){let i=Ft.newName(),n=[fs.of(i),Di.of(ys(`.${i}`,t))];return e&&e.dark&&n.push(ds.of(!0)),n}static baseTheme(t){return j.lowest(Di.of(ys("."+ps,t,ws)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&me.get(i)||me.get(t);return(null===(e=null==n?void 0:n.rootView)||void 0===e?void 0:e.view)||null}}Es.styleModule=Di,Es.inputHandler=hi,Es.focusChangeEffect=ci,Es.perLineTextDirection=ui,Es.exceptionSink=li,Es.updateListener=ai,Es.editable=mi,Es.mouseSelectionStyle=oi,Es.dragMovesSelection=ri,Es.clickAddsSelectionRange=si,Es.decorations=Si,Es.atomicRanges=Ai,Es.bidiIsolatedRanges=Mi,Es.scrollMargins=Ci,Es.darkTheme=ds,Es.cspNonce=R.define({combine:t=>t.length?t[0]:""}),Es.contentAttributes=xi,Es.editorAttributes=bi,Es.lineWrapping=Es.contentAttributes.of({class:"cm-lineWrapping"}),Es.announce=at.define();const Ls=4096,Bs={};class Ps{constructor(t,e,i,n,s,r){this.from=t,this.to=e,this.dir=i,this.isolates=n,this.fresh=s,this.order=r}static update(t,e){if(e.empty&&!t.some((t=>t.fresh)))return t;let i=[],n=t.length?t[t.length-1].dir:Bi.LTR;for(let s=Math.max(0,t.length-10);s=0;s--){let e=n[s],r="function"==typeof e?e(t):e;r&&Ve(r,i)}return i}const Rs=Be.mac?"mac":Be.windows?"win":Be.linux?"linux":"key";function Is(t,e,i){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),!1!==i&&e.shiftKey&&(t="Shift-"+t),t}const Hs=j.default(Es.domEventHandlers({keydown:(t,e)=>qs(Vs(e.state),t,e,"editor")})),zs=R.define({enables:Hs}),Ws=new WeakMap;function Vs(t){let e=t.facet(zs),i=Ws.get(e);return i||Ws.set(e,i=function(t,e=Rs){let i=Object.create(null),n=Object.create(null),s=(t,e)=>{let i=n[t];if(null==i)n[t]=e;else if(i!=e)throw new Error("Key binding "+t+" is used both as a regular binding and as a multi-stroke prefix")},r=(t,n,r,o,l)=>{var a,h;let c=i[t]||(i[t]=Object.create(null)),u=n.split(/ (?!$)/).map((t=>function(t,e){const i=t.split(/-(?!$)/);let n,s,r,o,l=i[i.length-1];"Space"==l&&(l=" ");for(let t=0;t{let n=Fs={view:e,prefix:i,scope:t};return setTimeout((()=>{Fs==n&&(Fs=null)}),_s),!0}]})}let f=u.join(" ");s(f,!1);let d=c[f]||(c[f]={preventDefault:!1,stopPropagation:!1,run:(null===(h=null===(a=c._any)||void 0===a?void 0:a.run)||void 0===h?void 0:h.slice())||[]});r&&d.run.push(r),o&&(d.preventDefault=!0),l&&(d.stopPropagation=!0)};for(let n of t){let t=n.scope?n.scope.split(" "):["editor"];if(n.any)for(let e of t){let t=i[e]||(i[e]=Object.create(null));t._any||(t._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let e in t)t[e].run.push(n.any)}let s=n[e]||n.key;if(s)for(let e of t)r(e,s,n.run,n.preventDefault,n.stopPropagation),n.shift&&r(e,"Shift-"+s,n.shift,n.preventDefault,n.stopPropagation)}return i}(e.reduce(((t,e)=>t.concat(e)),[]))),i}let Fs=null;const _s=4e3;function qs(t,e,i,n){let s=function(t){var e=!(Kt&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Gt&&t.shiftKey&&t.key&&1==t.key.length||"Unidentified"==t.key)&&t.key||(t.shiftKey?$t:jt)[t.keyCode]||t.key||"Unidentified";return"Esc"==e&&(e="Escape"),"Del"==e&&(e="Delete"),"Left"==e&&(e="ArrowLeft"),"Up"==e&&(e="ArrowUp"),"Right"==e&&(e="ArrowRight"),"Down"==e&&(e="ArrowDown"),e}(e),r=k(y(s,0))==s.length&&" "!=s,o="",l=!1,a=!1,h=!1;Fs&&Fs.view==i&&Fs.scope==n&&(o=Fs.prefix+" ",mn.indexOf(e.keyCode)<0&&(a=!0,Fs=null));let c,u,f=new Set,d=t=>{if(t){for(let n of t.run)if(!f.has(n)&&(f.add(n),n(i,e)))return t.stopPropagation&&(h=!0),!0;t.preventDefault&&(t.stopPropagation&&(h=!0),a=!0)}return!1},p=t[n];return p&&(d(p[o+Is(s,e,!r)])?l=!0:r&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Be.windows&&e.ctrlKey&&e.altKey)&&(c=jt[e.keyCode])&&c!=s?(d(p[o+Is(c,e,!0)])||e.shiftKey&&(u=$t[e.keyCode])!=s&&u!=c&&d(p[o+Is(u,e,!1)]))&&(l=!0):r&&e.shiftKey&&d(p[o+Is(s,e,!0)])&&(l=!0),!l&&d(p._any)&&(l=!0)),a&&(l=!0),l&&h&&e.stopPropagation(),l}Be.ios;const js=R.define({combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomContainer;return{topContainer:e,bottomContainer:i}}});function $s(t,e){let i=t.plugin(Ks),n=i?i.specs.indexOf(e):-1;return n>-1?i.panels[n]:null}const Ks=vi.fromClass(class{constructor(t){this.input=t.state.facet(Js),this.specs=this.input.filter((t=>t)),this.panels=this.specs.map((e=>e(t)));let e=t.state.facet(js);this.top=new Gs(t,!0,e.topContainer),this.bottom=new Gs(t,!1,e.bottomContainer),this.top.sync(this.panels.filter((t=>t.top))),this.bottom.sync(this.panels.filter((t=>!t.top)));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(t){let e=t.state.facet(js);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Gs(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Gs(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(Js);if(i!=this.input){let e=i.filter((t=>t)),n=[],s=[],r=[],o=[];for(let i of e){let e,l=this.specs.indexOf(i);l<0?(e=i(t.view),o.push(e)):(e=this.panels[l],e.update&&e.update(t)),n.push(e),(e.top?s:r).push(e)}this.specs=e,this.panels=n,this.top.sync(s),this.bottom.sync(r);for(let t of o)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}else for(let e of this.panels)e.update&&e.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Es.scrollMargins.of((e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}}))});class Gs{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(t){for(let e of this.panels)e.destroy&&t.indexOf(e)<0&&e.destroy();this.panels=t,this.syncDOM()}syncDOM(){if(0==this.panels.length)return void(this.dom&&(this.dom.remove(),this.dom=void 0));if(!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";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let t=this.dom.firstChild;for(let e of this.panels)if(e.dom.parentNode==this.dom){for(;t!=e.dom;)t=Us(t);t=t.nextSibling}else this.dom.insertBefore(e.dom,t);for(;t;)t=Us(t)}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(let t of this.classes.split(" "))t&&this.container.classList.remove(t);for(let t of(this.classes=this.view.themeClasses).split(" "))t&&this.container.classList.add(t)}}}function Us(t){let e=t.nextSibling;return t.remove(),e}const Js=R.define({enables:Ks});class Ys extends bt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}}Ys.prototype.elementClass="",Ys.prototype.toDOM=void 0,Ys.prototype.mapMode=x.TrackBefore,Ys.prototype.startSide=Ys.prototype.endSide=-1,Ys.prototype.point=!0;const Xs=R.define(),Qs=R.define(),Zs=R.define({combine:t=>t.some((t=>t))});function tr(t){let e=[er];return t&&!1===t.fixed&&e.push(Zs.of(!0)),e}const er=vi.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(Qs).map((e=>new rr(t,e)));for(let t of this.gutters)this.dom.appendChild(t.dom);this.fixed=!t.state.facet(Zs),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,n=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(n<.8*(i.to-i.from))}t.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(Zs)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let i=Mt.iter(this.view.state.facet(Xs),this.view.viewport.from),n=[],s=this.gutters.map((t=>new sr(t,this.view.viewport,-this.view.documentPadding.top)));for(let t of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(t.type)){let e=!0;for(let r of t.type)if(r.type==Ke.Text&&e){nr(i,n,r.from);for(let t of s)t.line(this.view,r,n);e=!1}else if(r.widget)for(let t of s)t.widget(this.view,r)}else if(t.type==Ke.Text){nr(i,n,t.from);for(let e of s)e.line(this.view,t,n)}else if(t.widget)for(let e of s)e.widget(this.view,t);for(let t of s)t.finish();t&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(t){let e=t.startState.facet(Qs),i=t.state.facet(Qs),n=t.docChanged||t.heightChanged||t.viewportChanged||!Mt.eq(t.startState.facet(Xs),t.state.facet(Xs),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let e of this.gutters)e.update(t)&&(n=!0);else{n=!0;let s=[];for(let n of i){let i=e.indexOf(n);i<0?s.push(new rr(this.view,n)):(this.gutters[i].update(t),s.push(this.gutters[i]))}for(let t of this.gutters)t.dom.remove(),s.indexOf(t)<0&&t.destroy();for(let t of s)this.dom.appendChild(t.dom);this.gutters=s}return n}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()}},{provide:t=>Es.scrollMargins.of((e=>{let i=e.plugin(t);return i&&0!=i.gutters.length&&i.fixed?e.textDirection==Bi.LTR?{left:i.dom.offsetWidth*e.scaleX}:{right:i.dom.offsetWidth*e.scaleX}:null}))});function ir(t){return Array.isArray(t)?t:[t]}function nr(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}class sr{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=Mt.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:n}=this,s=e.top-this.height;if(this.i==n.elements.length){let r=new or(t,e.height,s,i);n.elements.push(r),n.dom.appendChild(r.dom)}else n.elements[this.i].update(t,e.height,s,i);this.height=e.bottom,this.i++}line(t,e,i){let n=[];nr(this.cursor,n,e.from),i.length&&(n=n.concat(i));let s=this.gutter.config.lineMarker(t,e,n);s&&n.unshift(s);let r=this.gutter;(0!=n.length||r.config.renderEmptyElements)&&this.addElement(t,e,n)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e);i&&this.addElement(t,e,[i])}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}}class rr{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,(n=>{let s,r=n.target;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let t=r.getBoundingClientRect();s=(t.top+t.bottom)/2}else s=n.clientY;let o=t.lineBlockAtHeight(s-t.documentTop);e.domEventHandlers[i](t,o,n)&&n.preventDefault()}));this.markers=ir(e.markers(t)),e.initialSpacer&&(this.spacer=new or(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=ir(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let e=this.config.updateSpacer(this.spacer.markers[0],t);e!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[e])}let i=t.view.viewport;return!Mt.eq(this.markers,e,i.from,i.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(t)}destroy(){for(let t of this.elements)t.destroy()}}class or{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,n)}update(t,e,i,n){this.height!=e&&(this.height=e,this.dom.style.height=e/t.scaleY+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i/t.scaleY+"px":""),function(t,e){if(t.length!=e.length)return!1;for(let i=0;ikt(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(t,e){let i=Object.assign({},t);for(let t in e){let n=i[t],s=e[t];i[t]=n?(t,e,i)=>n(t,e,i)||s(t,e,i):s}return i}})});class hr extends Ys{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}}function cr(t,e){return t.state.facet(ar).formatNumber(e,t.state)}const ur=Qs.compute([ar],(t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers:t=>t.state.facet(lr),lineMarker:(t,e,i)=>i.some((t=>t.toDOM))?null:new hr(cr(t,t.state.doc.lineAt(e.from).number)),widgetMarker:()=>null,lineMarkerChange:t=>t.startState.facet(ar)!=t.state.facet(ar),initialSpacer:t=>new hr(cr(t,fr(t.state.doc.lines))),updateSpacer(t,e){let i=cr(e.view,fr(e.view.state.doc.lines));return i==t.number?t:new hr(i)},domEventHandlers:t.facet(ar).domEventHandlers})));function fr(t){let e=9;for(;e0&&void 0!==arguments[0]?arguments[0]:this.defaultExtensions;this.state=vt.create({doc:this.$textarea.textSelection("getContents"),extensions:e}),this.view=new Es({state:this.state,parent:this.$textarea.parent()[0]}),this.$textarea.hide(),this.$textarea[0].form&&this.$textarea[0].form.addEventListener("submit",(function(){t.$textarea.val(t.view.state.doc.toString())})),$(this.view.dom).textSelection("register",this.cmTextSelection),this.$textarea.textSelection("register",this.cmTextSelection),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}},{key:"logUsage",value:function(t){var e=Object.assign({session_token:mw.user.sessionId(),user_id:mw.user.getId()},t),i=mw.config.get("wgUserEditCountBucket");null!==i&&(e.user_edit_count_bucket=i),mw.track("event.CodeMirrorUsage",e)}},{key:"setCodeMirrorPreference",value:function(t){mw.user.isNamed()&&((new mw.Api).saveOption("usecodemirror",t?1:0),mw.user.options.set("usecodemirror",t?1:0))}},{key:"cmTextSelection",get:function(){var t=this,e=$(this.view.dom);return{getContents:function(){return t.view.state.doc.toString()},setContents:function(i){return t.view.dispatch({changes:{from:0,to:t.view.state.doc.length,insert:i}}),e},getSelection:function(){return t.view.state.sliceDoc(t.view.state.selection.main.from,t.view.state.selection.main.to)},setSelection:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{start:0,end:0};return t.view.dispatch({selection:{anchor:i.start,head:i.end||i.start}}),t.view.focus(),e},replaceSelection:function(i){return t.view.dispatch(t.view.state.replaceSelection(i)),e},getCaretPosition:function(e){return e.startAndEnd?[t.view.state.selection.main.from,t.view.state.selection.main.to]:t.view.state.selection.main.head},scrollToCaretPosition:function(){return t.view.dispatch({effects:Es.scrollIntoView(t.view.state.selection.main.head)}),e}}}}],i&&pr(e.prototype,i),Object.defineProperty(e,"prototype",{writable:!1}),t}();const wr=1024;let yr=0;class vr{constructor(t,e){this.from=t,this.to=e}}class kr{constructor(t={}){this.id=yr++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=Sr.match(t)),e=>{let i=t(e);return void 0===i?null:[this,i]}}}kr.closedBy=new kr({deserialize:t=>t.split(" ")}),kr.openedBy=new kr({deserialize:t=>t.split(" ")}),kr.group=new kr({deserialize:t=>t.split(" ")}),kr.isolate=new kr({deserialize:t=>{if(t&&"rtl"!=t&&"ltr"!=t&&"auto"!=t)throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}}),kr.contextHash=new kr({perNode:!0}),kr.lookAhead=new kr({perNode:!0}),kr.mounted=new kr({perNode:!0});class br{constructor(t,e,i){this.tree=t,this.overlay=e,this.parser=i}static get(t){return t&&t.props&&t.props[kr.mounted.id]}}const xr=Object.create(null);class Sr{constructor(t,e,i,n=0){this.name=t,this.props=e,this.id=i,this.flags=n}static define(t){let e=t.props&&t.props.length?Object.create(null):xr,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),n=new Sr(t.name||"",e,t.id,i);if(t.props)for(let i of t.props)if(Array.isArray(i)||(i=i(n)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[i[0].id]=i[1]}return n}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(kr.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let n of i.split(" "))e[n]=t[i];return t=>{for(let i=t.prop(kr.group),n=-1;n<(i?i.length:0);n++){let s=e[n<0?t.name:i[n]];if(s)return s}}}}Sr.none=new Sr("",Object.create(null),0,8);class Ar{constructor(t){this.types=t;for(let e=0;e=e){let o=new Nr(r.tree,r.overlay[0].from+t.from,-1,t);(s||(s=[n])).push(Br(o,e,i,!1))}}return s?Wr(s):n}(this,t,e)}iterate(t){let{enter:e,leave:i,from:n=0,to:s=this.length}=t,r=t.mode||0,o=(r&Cr.IncludeAnonymous)>0;for(let t=this.cursor(r|Cr.IncludeAnonymous);;){let r=!1;if(t.from<=s&&t.to>=n&&(!o&&t.type.isAnonymous||!1!==e(t))){if(t.firstChild())continue;r=!0}for(;r&&i&&(o||!t.type.isAnonymous)&&i(t),!t.nextSibling();){if(!t.parent())return;r=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:$r(Sr.none,this.children,this.positions,0,this.children.length,0,this.length,((t,e,i)=>new Or(this.type,t,e,i,this.propValues)),t.makeTree||((t,e,i)=>new Or(Sr.none,t,e,i)))}static build(t){return function(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:s=wr,reused:r=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new Dr(i,i.length):i,a=n.types,h=0,c=0;function u(t,e,i,m,w,y){let{id:v,start:k,end:b,size:x}=l,S=c;for(;x<0;){if(l.next(),-1==x){let e=r[v];return i.push(e),void m.push(k-t)}if(-3==x)return void(h=v);if(-4==x)return void(c=v);throw new RangeError(`Unrecognized record size: ${x}`)}let A,M,T=a[v],C=k-t;if(b-k<=s&&(M=function(t,e){let i=l.fork(),n=0,r=0,a=0,h=i.end-s,c={size:0,start:0,skip:0};t:for(let s=i.pos-t;i.pos>s;){let t=i.size;if(i.id==e&&t>=0){c.size=n,c.start=r,c.skip=a,a+=4,n+=4,i.next();continue}let l=i.pos-t;if(t<0||l=o?4:0,f=i.start;for(i.next();i.pos>l;){if(i.size<0){if(-3!=i.size)break t;u+=4}else i.id>=o&&(u+=4);i.next()}r=f,n+=t,a+=u}return(e<0||n==t)&&(c.size=n,c.start=r,c.skip=a),c.size>4?c:void 0}(l.pos-e,w))){let e=new Uint16Array(M.size-M.skip),i=l.pos-M.size,s=e.length;for(;l.pos>i;)s=g(M.start,e,s);A=new Er(e,b-M.start,n),C=M.start-t}else{let t=l.pos-x;l.next();let e=[],i=[],n=v>=o?v:-1,r=0,a=b;for(;l.pos>t;)n>=0&&l.id==n&&l.size>=0?(l.end<=a-s&&(d(e,i,k,r,l.end,a,n,S),r=e.length,a=l.end),l.next()):y>2500?f(k,t,e,i):u(k,t,e,i,n,y+1);if(n>=0&&r>0&&r-1&&r>0){let t=function(t){return(e,i,n)=>{let s,r,o=0,l=e.length-1;if(l>=0&&(s=e[l])instanceof Or){if(!l&&s.type==t&&s.length==n)return s;(r=s.prop(kr.lookAhead))&&(o=i[l]+s.length+r)}return p(t,e,i,n,o)}}(T);A=$r(T,e,i,0,e.length,0,b-k,t,t)}else A=p(T,e,i,b-k,S-b)}i.push(A),m.push(C)}function f(t,e,i,r){let o=[],a=0,h=-1;for(;l.pos>e;){let{id:t,start:e,end:i,size:n}=l;if(n>4)l.next();else{if(h>-1&&e=0;t-=3)e[i++]=o[t],e[i++]=o[t+1]-s,e[i++]=o[t+2]-s,e[i++]=i;i.push(new Er(e,o[2]-s,n)),r.push(s-t)}}function d(t,e,i,s,r,o,l,a){let h=[],c=[];for(;t.length>s;)h.push(t.pop()),c.push(e.pop()+i-r);t.push(p(n.types[l],h,c,o-r,a-o)),e.push(r-i)}function p(t,e,i,n,s=0,r){if(h){let t=[kr.contextHash,h];r=r?[t].concat(r):[t]}if(s>25){let t=[kr.lookAhead,s];r=r?[t].concat(r):[t]}return new Or(t,e,i,n,r)}function g(t,e,i){let{id:n,start:s,end:r,size:a}=l;if(l.next(),a>=0&&n4){let n=l.pos-(a-4);for(;l.pos>n;)i=g(t,e,i)}e[--i]=o,e[--i]=r-t,e[--i]=s-t,e[--i]=n}else-3==a?h=n:-4==a&&(c=n);return i}let m=[],w=[];for(;l.pos>0;)u(t.start||0,t.bufferStart||0,m,w,-1,0);let y=null!==(e=t.length)&&void 0!==e?e:m.length?w[0]+m[0].length:0;return new Or(a[t.topID],m.reverse(),w.reverse(),y)}(t)}}Or.empty=new Or(Sr.none,[],[],0);class Dr{constructor(t,e){this.buffer=t,this.index=e}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 Dr(this.buffer,this.index)}}class Er{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return Sr.none}toString(){let t=[];for(let e=0;e0));l=r[l+3]);return o}slice(t,e,i){let n=this.buffer,s=new Uint16Array(e-t),r=0;for(let o=t,l=0;o=e&&ie;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function Br(t,e,i,n){for(var s;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to0?o.length:-1;t!=a;t+=e){let a=o[t],h=l[t]+r.from;if(Lr(n,i,h,h+a.length))if(a instanceof Er){if(s&Cr.ExcludeBuffers)continue;let o=a.findChild(0,a.buffer.length,e,i-h,n);if(o>-1)return new zr(new Hr(r,a,t,h),null,o)}else if(s&Cr.IncludeAnonymous||!a.type.isAnonymous||_r(a)){let o;if(!(s&Cr.IgnoreMounts)&&(o=br.get(a))&&!o.overlay)return new Nr(o.tree,h,t,r);let l=new Nr(a,h,t,r);return s&Cr.IncludeAnonymous||!l.type.isAnonymous?l:l.nextChild(e<0?a.children.length-1:0,e,i,n)}}if(s&Cr.IncludeAnonymous||!r.type.isAnonymous)return null;if(t=r.index>=0?r.index+e:e<0?-1:r._parent._tree.children.length,r=r._parent,!r)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(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,i=0){let n;if(!(i&Cr.IgnoreOverlays)&&(n=br.get(this._tree))&&n.overlay){let i=t-this.from;for(let{from:t,to:s}of n.overlay)if((e>0?t<=i:t=i:s>i))return new Nr(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?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 Rr(t,e,i,n){let s=t.cursor(),r=[];if(!s.firstChild())return r;if(null!=i)for(;!s.type.is(i);)if(!s.nextSibling())return r;for(;;){if(null!=n&&s.type.is(n))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return null==n?r:[]}}function Ir(t,e,i=e.length-1){for(let n=t.parent;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class Hr{constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,this.start=n}}class zr extends Pr{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(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.context.start,i);return s<0?null:new zr(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,i=0){if(i&Cr.ExcludeBuffers)return null;let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return s<0?null:new zr(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new zr(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new zr(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,n=this.index+4,s=i.buffer[this.index+3];if(s>n){let r=i.buffer[this.index+1];t.push(i.slice(n,s,r)),e.push(0)}return new Or(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function Wr(t){if(!t.length)return null;let e=0,i=t[0];for(let n=1;ni.from||s.to0){if(this.index-1)for(let n=e+t,s=t<0?-1:i._tree.children.length;n!=s;n+=t){let t=i._tree.children[n];if(this.mode&Cr.IncludeAnonymous||t instanceof Er||!t.type.isAnonymous||_r(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let r=t;r;r=r._parent)if(r.index==n){if(n==this.index)return r;e=r,i=s+1;break t}n=this.stack[--s]}for(let t=i;t=0;s--){if(s<0)return Ir(this.node,t,n);let r=i[e.buffer[this.stack[s]]];if(!r.isAnonymous){if(t[n]&&t[n]!=r.name)return!1;n--}}return!0}}function _r(t){return t.children.some((t=>t instanceof Er||!t.type.isAnonymous||_r(t)))}const qr=new WeakMap;function jr(t,e){if(!t.isAnonymous||e instanceof Er||e.type!=t)return 1;let i=qr.get(e);if(null==i){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof Or)){i=1;break}i+=jr(t,n)}qr.set(e,i)}return i}function $r(t,e,i,n,s,r,o,l,a){let h=0;for(let i=n;i=c)break;p+=e}if(h==s+1){if(p>c){let t=i[s];e(t.children,t.positions,0,t.children.length,n[s]+l);continue}u.push(i[s])}else{let e=n[h-1]+i[h-1].length-d;u.push($r(t,i,n,s,h,d,e,null,a))}f.push(d+l-r)}}(e,i,n,s,0),(l||a)(u,f,o)}class Kr{constructor(t,e,i,n,s=!1,r=!1){this.from=t,this.to=e,this.tree=i,this.offset=n,this.open=(s?1:0)|(r?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(t,e=[],i=!1){let n=[new Kr(0,t.length,t,0,!1,i)];for(let i of e)i.to>t.length&&n.push(i);return n}static applyChanges(t,e,i=128){if(!e.length)return t;let n=[],s=1,r=t.length?t[0]:null;for(let o=0,l=0,a=0;;o++){let h=o=i)for(;r&&r.from=e.from||c<=e.to||a){let t=Math.max(e.from,l)-a,i=Math.min(e.to,c)-a;e=t>=i?null:new Kr(t,i,e.tree,e.offset+a,o>0,!!h)}if(e&&n.push(e),r.to>c)break;r=snew vr(t.from,t.to))):[new vr(0,0)]:[new vr(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let n=this.startParse(t,e,i);for(;;){let t=n.advance();if(t)return t}}}class Ur{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new kr({perNode:!0});let Jr=0;class Yr{constructor(t,e,i){this.set=t,this.base=e,this.modified=i,this.id=Jr++}static define(t){if(null==t?void 0:t.base)throw new Error("Can not derive from a modified tag");let e=new Yr([],null,[]);if(e.set.push(e),t)for(let i of t.set)e.set.push(i);return e}static defineModifier(){let t=new Qr;return e=>e.modified.indexOf(t)>-1?e:Qr.get(e.base||e,e.modified.concat(t).sort(((t,e)=>t.id-e.id)))}}let Xr=0;class Qr{constructor(){this.instances=[],this.id=Xr++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find((i=>{return i.base==t&&(n=e,s=i.modified,n.length==s.length&&n.every(((t,e)=>t==s[e])));var n,s}));if(i)return i;let n=[],s=new Yr(n,t,e);for(let t of e)t.instances.push(s);let r=function(t){let e=[[]];for(let i=0;ie.length-t.length))}(e);for(let e of t.set)if(!e.modified.length)for(let t of r)n.push(Qr.get(e,t));return s}}function Zr(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let t of i.split(" "))if(t){let i=[],s=2,r=t;for(let e=0;;){if("..."==r&&e>0&&e+3==t.length){s=1;break}let n=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(r);if(!n)throw new RangeError("Invalid path: "+t);if(i.push("*"==n[0]?"":'"'==n[0][0]?JSON.parse(n[0]):n[0]),e+=n[0].length,e==t.length)break;let o=t[e++];if(e==t.length&&"!"==o){s=0;break}if("/"!=o)throw new RangeError("Invalid path: "+t);r=t.slice(e)}let o=i.length-1,l=i[o];if(!l)throw new RangeError("Invalid path: "+t);let a=new eo(n,s,o>0?i.slice(0,o):null);e[l]=a.sort(e[l])}}return to.add(e)}const to=new kr;class eo{constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(t){return!t||t.depth{let e=s;for(let n of t)for(let t of n.set){let n=i[t.id];if(n){e=e?e+" "+n:n;break}}return e},scope:n}}function no(t,e,i,n=0,s=t.length){let r=new so(n,Array.isArray(e)?e:[e],i);r.highlightRange(t.cursor(),n,s,"",r.highlighters),r.flush(s)}eo.empty=new eo([],2,null);class so{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,n,s){let{type:r,from:o,to:l}=t;if(o>=i||l<=e)return;r.isTop&&(s=this.highlighters.filter((t=>!t.scope||t.scope(r))));let a=n,h=function(t){let e=t.type.prop(to);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}(t)||eo.empty,c=function(t,e){let i=null;for(let n of t){let t=n.style(e);t&&(i=i?i+" "+t:t)}return i}(s,h.tags);if(c&&(a&&(a+=" "),a+=c,1==h.mode&&(n+=(n?" ":"")+c)),this.startSpan(Math.max(e,o),a),h.opaque)return;let u=t.tree&&t.tree.prop(kr.mounted);if(u&&u.overlay){let r=t.node.enter(u.overlay[0].from+o,1),h=this.highlighters.filter((t=>!t.scope||t.scope(u.tree.type))),c=t.firstChild();for(let f=0,d=o;;f++){let p=f=g)&&t.nextSibling()););if(!p||g>i)break;d=p.to+o,d>e&&(this.highlightRange(r.cursor(),Math.max(e,p.from+o),Math.min(i,d),"",h),this.startSpan(Math.min(i,d),a))}c&&t.parent()}else if(t.firstChild()){u&&(n="");do{if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,n,s),this.startSpan(Math.min(i,t.to),a)}}while(t.nextSibling());t.parent()}}}const ro=Yr.define,oo=ro(),lo=ro(),ao=ro(lo),ho=ro(lo),co=ro(),uo=ro(co),fo=ro(co),po=ro(),go=ro(po),mo=ro(),wo=ro(),yo=ro(),vo=ro(yo),ko=ro(),bo={comment:oo,lineComment:ro(oo),blockComment:ro(oo),docComment:ro(oo),name:lo,variableName:ro(lo),typeName:ao,tagName:ro(ao),propertyName:ho,attributeName:ro(ho),className:ro(lo),labelName:ro(lo),namespace:ro(lo),macroName:ro(lo),literal:co,string:uo,docString:ro(uo),character:ro(uo),attributeValue:ro(uo),number:fo,integer:ro(fo),float:ro(fo),bool:ro(co),regexp:ro(co),escape:ro(co),color:ro(co),url:ro(co),keyword:mo,self:ro(mo),null:ro(mo),atom:ro(mo),unit:ro(mo),modifier:ro(mo),operatorKeyword:ro(mo),controlKeyword:ro(mo),definitionKeyword:ro(mo),moduleKeyword:ro(mo),operator:wo,derefOperator:ro(wo),arithmeticOperator:ro(wo),logicOperator:ro(wo),bitwiseOperator:ro(wo),compareOperator:ro(wo),updateOperator:ro(wo),definitionOperator:ro(wo),typeOperator:ro(wo),controlOperator:ro(wo),punctuation:yo,separator:ro(yo),bracket:vo,angleBracket:ro(vo),squareBracket:ro(vo),paren:ro(vo),brace:ro(vo),content:po,heading:go,heading1:ro(go),heading2:ro(go),heading3:ro(go),heading4:ro(go),heading5:ro(go),heading6:ro(go),contentSeparator:ro(po),list:ro(po),quote:ro(po),emphasis:ro(po),strong:ro(po),link:ro(po),monospace:ro(po),strikethrough:ro(po),inserted:ro(),deleted:ro(),changed:ro(),invalid:ro(),meta:ko,documentMeta:ro(ko),annotation:ro(ko),processingInstruction:ro(ko),definition:Yr.defineModifier(),constant:Yr.defineModifier(),function:Yr.defineModifier(),standard:Yr.defineModifier(),local:Yr.defineModifier(),special:Yr.defineModifier()};var xo;io([{tag:bo.link,class:"tok-link"},{tag:bo.heading,class:"tok-heading"},{tag:bo.emphasis,class:"tok-emphasis"},{tag:bo.strong,class:"tok-strong"},{tag:bo.keyword,class:"tok-keyword"},{tag:bo.atom,class:"tok-atom"},{tag:bo.bool,class:"tok-bool"},{tag:bo.url,class:"tok-url"},{tag:bo.labelName,class:"tok-labelName"},{tag:bo.inserted,class:"tok-inserted"},{tag:bo.deleted,class:"tok-deleted"},{tag:bo.literal,class:"tok-literal"},{tag:bo.string,class:"tok-string"},{tag:bo.number,class:"tok-number"},{tag:[bo.regexp,bo.escape,bo.special(bo.string)],class:"tok-string2"},{tag:bo.variableName,class:"tok-variableName"},{tag:bo.local(bo.variableName),class:"tok-variableName tok-local"},{tag:bo.definition(bo.variableName),class:"tok-variableName tok-definition"},{tag:bo.special(bo.variableName),class:"tok-variableName2"},{tag:bo.definition(bo.propertyName),class:"tok-propertyName tok-definition"},{tag:bo.typeName,class:"tok-typeName"},{tag:bo.namespace,class:"tok-namespace"},{tag:bo.className,class:"tok-className"},{tag:bo.macroName,class:"tok-macroName"},{tag:bo.propertyName,class:"tok-propertyName"},{tag:bo.operator,class:"tok-operator"},{tag:bo.comment,class:"tok-comment"},{tag:bo.meta,class:"tok-meta"},{tag:bo.invalid,class:"tok-invalid"},{tag:bo.punctuation,class:"tok-punctuation"}]);const So=new kr;const Ao=new kr;class Mo{constructor(t,e,i=[],n=""){this.data=t,this.name=n,vt.prototype.hasOwnProperty("tree")||Object.defineProperty(vt.prototype,"tree",{get(){return Co(this)}}),this.parser=e,this.extension=[Io.of(this),vt.languageData.of(((t,e,i)=>{let n=To(t,e,i),s=n.type.prop(So);if(!s)return[];let r=t.facet(s),o=n.type.prop(Ao);if(o){let s=n.resolve(e-n.from,i);for(let e of o)if(e.test(s,t)){let i=t.facet(e.facet);return"replace"==e.type?i:i.concat(r)}}return r}))].concat(i)}isActiveAt(t,e,i=-1){return To(t,e,i).type.prop(So)==this.data}findRegions(t){let e=t.facet(Io);if((null==e?void 0:e.data)==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],n=(t,e)=>{if(t.prop(So)==this.data)return void i.push({from:e,to:e+t.length});let s=t.prop(kr.mounted);if(s){if(s.tree.prop(So)==this.data){if(s.overlay)for(let t of s.overlay)i.push({from:t.from+e,to:t.to+e});else i.push({from:e,to:e+t.length});return}if(s.overlay){let t=i.length;if(n(s.tree,s.overlay[0].from+e),i.length>t)return}}for(let i=0;i=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}}let Do=null;class Eo{constructor(t,e,i=[],n,s,r,o,l){this.parser=t,this.state=e,this.fragments=i,this.tree=n,this.treeLen=s,this.viewport=r,this.skipped=o,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new Eo(t,e,[],Or.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Oo(this.state.doc),this.fragments)}work(t,e){return null!=e&&e>=this.state.doc.length&&(e=void 0),this.tree!=Or.empty&&this.isDone(null!=e?e:this.state.doc.length)?(this.takeTree(),!0):this.withContext((()=>{var i;if("number"==typeof t){let e=Date.now()+t;t=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=e&&(null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&e=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext((()=>{for(;!(e=this.parse.advance()););})),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Kr.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Do;Do=this;try{return t()}finally{Do=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=Lo(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:n,treeLen:s,viewport:r,skipped:o}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges(((t,i,n,s)=>e.push({fromA:t,toA:i,fromB:n,toB:s}))),i=Kr.applyChanges(i,e),n=Or.empty,s=0,r={from:t.mapPos(r.from,-1),to:t.mapPos(r.to,1)},this.skipped.length){o=[];for(let e of this.skipped){let i=t.mapPos(e.from,1),n=t.mapPos(e.to,-1);it.from&&(this.fragments=Lo(this.fragments,i,n),this.skipped.splice(e--,1))}return!(this.skipped.length>=e||(this.reset(),0))}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Gr{createParse(e,i,n){let s=n[0].from,r=n[n.length-1].to;return{parsedPos:s,advance(){let e=Do;if(e){for(let t of n)e.tempSkipped.push(t);t&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,t]):t)}return this.parsedPos=r,new Or(Sr.none,[],[],r-s)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&0==e[0].from&&e[0].to>=t}static get(){return Do}}function Lo(t,e,i){return Kr.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class Bo{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new Bo(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Eo.create(t.facet(Io).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new Bo(i)}}Mo.state=_.define({create:Bo.init,update(t,e){for(let t of e.effects)if(t.is(Mo.setState))return t.value;return e.startState.facet(Io)!=e.state.facet(Io)?Bo.init(e.state):t.apply(e)}});let Po=t=>{let e=setTimeout((()=>t()),500);return()=>clearTimeout(e)};"undefined"!=typeof requestIdleCallback&&(Po=t=>{let e=-1,i=setTimeout((()=>{e=requestIdleCallback(t,{timeout:400})}),100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const No="undefined"!=typeof navigator&&(null===(xo=navigator.scheduling)||void 0===xo?void 0:xo.isInputPending)?()=>navigator.scheduling.isInputPending():null,Ro=vi.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(Mo.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(Mo.state);e.tree==e.context.tree&&e.context.isDone(t.doc.length)||(this.working=Po(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEndn+1e3,l=s.context.work((()=>No&&No()||Date.now()>r),n+(o?0:1e5));this.chunkBudget-=Date.now()-e,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:Mo.setState.of(new Bo(s.context))})),this.chunkBudget>0&&(!l||o)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then((()=>this.scheduleWork())).catch((t=>gi(this.view.state,t))).then((()=>this.workScheduled--)),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Io=R.define({combine:t=>t.length?t[0]:null,enables:t=>[Mo.state,Ro,Es.contentAttributes.compute([t],(e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}}))]});class Ho{constructor(t,e=[]){this.language=t,this.support=e,this.extension=[t,e]}}const zo=R.define(),Wo=R.define({combine:t=>{if(!t.length)return"  ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some((t=>t!=e[0])))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Vo(t){let e=t.facet(Wo);return 9==e.charCodeAt(0)?t.tabSize*e.length:e.length}function Fo(t,e){let i="",n=t.tabSize,s=t.facet(Wo)[0];if("\t"==s){for(;e>=n;)i+="\t",e-=n;s=" "}for(let t=0;t=e?function(t,e,i){let n=e.resolveStack(i),s=n.node.enterUnfinishedNodesBefore(i);if(s!=n.node){let t=[];for(let e=s;e!=n.node;e=e.parent)t.push(e);for(let e=t.length-1;e>=0;e--)n={node:t[e],next:n}}return $o(n,t,i)}(t,i,e):null}class qo{constructor(t,e={}){this.state=t,this.options=e,this.unit=Vo(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:n,simulateDoubleBreak:s}=this.options;return null!=n&&n>=i.from&&n<=i.to?s&&n==t?{text:"",from:t}:(e<0?n-1&&(s+=r-this.countColumn(i,i.search(/\S|$/))),s}countColumn(t,e=t.length){return Ht(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:n}=this.lineAt(t,e),s=this.options.overrideIndentation;if(s){let t=s(n);if(t>-1)return t}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const jo=new kr;function $o(t,e,i){for(let n=t;n;n=n.next){let t=Ko(n.node);if(t)return t(Uo.create(e,i,n))}return 0}function Ko(t){let e=t.type.prop(jo);if(e)return e;let i,n=t.firstChild;if(n&&(i=n.type.prop(kr.closedBy))){let e=t.lastChild,n=e&&i.indexOf(e.name)>-1;return t=>function(t,e,i,n,s){let r=t.textAfter,o=r.match(/^\s*/)[0].length,l=n&&r.slice(o,o+n.length)==n||s==t.pos+o,a=e?function(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let s=t.options.simulateBreak,r=t.state.doc.lineAt(i.from),o=null==s||s<=r.from?r.to:Math.min(r.to,s);for(let t=i.to;;){let s=e.childAfter(t);if(!s||s==n)return null;if(!s.type.isSkipped)return s.fromt.prop(So)==r.data:r?t=>t==r:void 0,this.style=io(t.map((t=>({tag:t.tag,class:t.class||n(Object.assign({},t,{tag:null}))}))),{all:s}).style,this.module=i?new Ft(i):null,this.themeType=e.themeType}static define(t,e){return new Yo(t,e||{})}}const Xo=R.define(),Qo=R.define({combine:t=>t.length?[t[0]]:null});function Zo(t){let e=t.facet(Xo);return e.length?e:t.facet(Qo)}class tl{constructor(t){this.markCache=Object.create(null),this.tree=Co(t.state),this.decorations=this.buildDeco(t,Zo(t.state))}update(t){let e=Co(t.state),i=Zo(t.state),n=i!=Zo(t.startState);e.length{i.add(t,e,this.markCache[n]||(this.markCache[n]=Ge.mark({class:n})))}),n,s);return i.finish()}}const el=j.high(vi.fromClass(tl,{decorations:t=>t.decorations})),il=(bo.meta,bo.link,bo.heading,bo.emphasis,bo.strong,bo.strikethrough,bo.keyword,bo.atom,bo.bool,bo.url,bo.contentSeparator,bo.labelName,bo.literal,bo.inserted,bo.string,bo.deleted,bo.regexp,bo.escape,bo.string,bo.variableName,bo.variableName,bo.typeName,bo.namespace,bo.className,bo.variableName,bo.macroName,bo.propertyName,bo.comment,bo.invalid,Es.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}})),nl=1e4,sl="()[]{}",rl=R.define({combine:t=>kt(t,{afterCursor:!0,brackets:sl,maxScanDistance:nl,renderMatch:al})}),ol=Ge.mark({class:"cm-matchingBracket"}),ll=Ge.mark({class:"cm-nonmatchingBracket"});function al(t){let e=[],i=t.matched?ol:ll;return e.push(i.range(t.start.from,t.start.to)),t.end&&e.push(i.range(t.end.from,t.end.to)),e}const hl=_.define({create:()=>Ge.none,update(t,e){if(!e.docChanged&&!e.selection)return t;let i=[],n=e.state.facet(rl);for(let t of e.state.selection.ranges){if(!t.empty)continue;let s=gl(e.state,t.head,-1,n)||t.head>0&&gl(e.state,t.head-1,1,n)||n.afterCursor&&(gl(e.state,t.head,1,n)||t.headEs.decorations.from(t)}),cl=[hl,il];function ul(t={}){return[rl.of(t),cl]}const fl=new kr;function dl(t,e,i){let n=t.prop(e<0?kr.openedBy:kr.closedBy);if(n)return n;if(1==t.name.length){let n=i.indexOf(t.name);if(n>-1&&n%2==(e<0?1:0))return[i[n+e]]}return null}function pl(t){let e=t.type.prop(fl);return e?e(t.node):t}function gl(t,e,i,n={}){let s=n.maxScanDistance||nl,r=n.brackets||sl,o=Co(t),l=o.resolveInner(e,i);for(let t=l;t;t=t.parent){let n=dl(t.type,i,r);if(n&&t.from0?e>=s.from&&es.from&&e<=s.to))return ml(0,0,i,t,s,n,r)}}return function(t,e,i,n,s,r,o){let l=i<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),a=o.indexOf(l);if(a<0||a%2==0!=i>0)return null;let h={from:i<0?e-1:e,to:i>0?e+1:e},c=t.doc.iterRange(e,i>0?t.doc.length:0),u=0;for(let t=0;!c.next().done&&t<=r;){let r=c.value;i<0&&(t+=r.length);let l=e+t*i;for(let t=i>0?0:r.length-1,e=i>0?r.length:-1;t!=e;t+=i){let e=o.indexOf(r[t]);if(!(e<0||n.resolveInner(l+t,1).type!=s))if(e%2==0==i>0)u++;else{if(1==u)return{start:h,end:{from:l+t,to:l+t+1},matched:e>>1==a>>1};u--}}i>0&&(t+=r.length)}return c.done?{start:h,matched:!1}:null}(t,e,i,o,l.type,s,r)}function ml(t,e,i,n,s,r,o){let l=n.parent,a={from:s.from,to:s.to},h=0,c=null==l?void 0:l.cursor();if(c&&(i<0?c.childBefore(n.from):c.childAfter(n.to)))do{if(i<0?c.to<=n.from:c.from>=n.to){if(0==h&&r.indexOf(c.type.name)>-1&&c.from=this.string.length}sol(){return 0==this.pos}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?t.toLowerCase():t;return n(this.string.substr(this.pos,t.length))==n(t)?(!1!==e&&(this.pos+=t.length),!0):null}{let i=this.string.slice(this.pos).match(t);return i&&i.index>0?null:(i&&!1!==e&&(this.pos+=i[0].length),i)}}current(){return this.string.slice(this.start,this.pos)}}function vl(t){if("object"!=typeof t)return t;let e={};for(let i in t){let n=t[i];e[i]=n instanceof Array?n.slice():n}return e}const kl=new WeakMap;class bl extends Mo{constructor(t){let e,i=(s=t.languageData,R.define({combine:s?t=>t.concat(s):void 0})),n={name:(r=t).name||"",token:r.token,blankLine:r.blankLine||(()=>{}),startState:r.startState||(()=>!0),copyState:r.copyState||vl,indent:r.indent||(()=>null),languageData:r.languageData||{},tokenTable:r.tokenTable||Tl};var s,r;super(i,new class extends Gr{createParse(t,i,n){return new Al(e,t,i,n)}},[zo.of(((t,e)=>this.getIndent(t,e)))],t.name),this.topNode=function(t){let e=Sr.define({id:Cl.length,name:"Document",props:[So.add((()=>t))],top:!0});return Cl.push(e),e}(i),e=this,this.streamParser=n,this.stateAfter=new kr({perNode:!0}),this.tokenTable=t.tokenTable?new Bl(n.tokenTable):Pl}static define(t){return new bl(t)}getIndent(t,e){let i,n=Co(t.state),s=n.resolve(e);for(;s&&s.type!=this.topNode;)s=s.parent;if(!s)return null;let{overrideIndentation:r}=t.options;r&&(i=kl.get(t.state),null!=i&&i1e4)return null;for(;o=n&&i+e.length<=s&&e.prop(t.stateAfter);if(r)return{state:t.streamParser.copyState(r),pos:i+e.length};for(let r=e.children.length-1;r>=0;r--){let o=e.children[r],l=i+e.positions[r],a=o instanceof Or&&l=e.length)return e;s||e.type!=t.topNode||(s=!0);for(let r=e.children.length-1;r>=0;r--){let o,l=e.positions[r],a=e.children[r];if(li&&xl(t,n.tree,0-n.offset,i,r);if(o&&(e=Sl(t,n.tree,i+n.offset,o.pos+n.offset,!1)))return{state:o.state,tree:e}}return{state:t.streamParser.startState(n?Vo(n):4),tree:Or.empty}}(t,i,r,null==s?void 0:s.state);this.state=o,this.parsedPos=this.chunkStart=r+l.length;for(let t=0;t=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)"\n"==e&&(e="");else{let t=e.indexOf("\n");t>-1&&(e=e.slice(0,t))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let t=this.rangeIndex;;){let n=this.ranges[t].to;if(n>=i)break;if(e=e.slice(0,n-(i-e.length)),t++,t==this.ranges.length)break;let s=this.ranges[t].from,r=this.lineAfter(s);e+=r,i=s+r.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let n=this.ranges[this.rangeIndex].to,s=t+e;if(i>0?n>s:n>=s)break;e+=this.ranges[++this.rangeIndex].from-n}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){e+=s=this.skipGapsTo(e,s,1);let t=this.chunk.length;i+=s=this.skipGapsTo(i,s,-1),n+=this.chunk.length-t}return this.chunk.push(t,e,i,n),s}parseLine(t){let{line:e,end:i}=this.nextLine(),n=0,{streamParser:s}=this.lang,r=new yl(e,t?t.state.tabSize:4,t?Vo(t.state):2);if(r.eol())s.blankLine(this.state,r.indentUnit);else for(;!r.eol();){let t=Ml(s.token,r,this.state);if(t&&(n=this.emitToken(this.lang.tokenTable.resolve(t),this.parsedPos+r.start,this.parsedPos+r.pos,4,n)),r.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPose.start)return n}throw new Error("Stream parser failed to advance stream.")}const Tl=Object.create(null),Cl=[Sr.none],Ol=new Ar(Cl),Dl=[],El=Object.create(null),Ll=Object.create(null);for(let[t,e]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"]])Ll[t]=Rl(Tl,e);class Bl{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Ll)}resolve(t){return t?this.table[t]||(this.table[t]=Rl(this.extra,t)):0}}const Pl=new Bl(Tl);function Nl(t,e){Dl.indexOf(t)>-1||(Dl.push(t),console.warn(e))}function Rl(t,e){let i=[];for(let n of e.split(" ")){let e=[];for(let i of n.split(".")){let n=t[i]||bo[i];n?"function"==typeof n?e.length?e=e.map(n):Nl(i,`Modifier ${i} used at start of tag`):e.length?Nl(i,`Tag ${i} used as modifier`):e=Array.isArray(n)?n:[n]:Nl(i,`Unknown highlighting tag ${i}`)}for(let t of e)i.push(t)}if(!i.length)return 0;let n=e.replace(/ /g,"_"),s=n+" "+i.map((t=>t.id)),r=El[s];if(r)return r.id;let o=El[s]=Sr.define({id:Cl.length,name:n,props:[Zr({[n]:i})]});return Cl.push(o),o.id}function Il(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let s=t(e,i);return!!s&&(n(i.update(s)),!0)}}const Hl=Il(ql,0),zl=Il(_l,0),Wl=Il(((t,e)=>_l(t,e,function(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),s=i.to<=n.to?n:t.doc.lineAt(i.to),r=e.length-1;r>=0&&e[r].to>n.from?e[r].to=s.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:s.to})}return e}(e))),0);function Vl(t,e){let i=t.languageDataAt("commentTokens",e);return i.length?i[0]:{}}const Fl=50;function _l(t,e,i=e.selection.ranges){let n=i.map((t=>Vl(e,t.from).block));if(!n.every((t=>t)))return null;let s=i.map(((t,i)=>function(t,{open:e,close:i},n,s){let r,o,l=t.sliceDoc(n-Fl,n),a=t.sliceDoc(s,s+Fl),h=/\s*$/.exec(l)[0].length,c=/^\s*/.exec(a)[0].length,u=l.length-h;if(l.slice(u-e.length,u)==e&&a.slice(c,c+i.length)==i)return{open:{pos:n-h,margin:h&&1},close:{pos:s+c,margin:c&&1}};s-n<=2*Fl?r=o=t.sliceDoc(n,s):(r=t.sliceDoc(n,n+Fl),o=t.sliceDoc(s-Fl,s));let f=/^\s*/.exec(r)[0].length,d=/\s*$/.exec(o)[0].length,p=o.length-d-i.length;return r.slice(f,f+e.length)==e&&o.slice(p,p+i.length)==i?{open:{pos:n+f+e.length,margin:/\s/.test(r.charAt(f+e.length))?1:0},close:{pos:s-d-i.length,margin:/\s/.test(o.charAt(p-1))?1:0}}:null}(e,n[i],t.from,t.to)));if(2!=t&&!s.every((t=>t)))return{changes:e.changes(i.map(((t,e)=>s[e]?[]:[{from:t.from,insert:n[e].open+" "},{from:t.to,insert:" "+n[e].close}])))};if(1!=t&&s.some((t=>t))){let t=[];for(let e,i=0;is&&(t==r||r>a.from)){s=a.from;let t=/^\s*/.exec(a.text)[0].length,e=t==a.length,i=a.text.slice(t,t+l.length)==l?t:-1;tt.comment<0&&(!t.empty||t.single)))){let t=[];for(let{line:e,token:i,indent:s,empty:r,single:o}of n)!o&&r||t.push({from:e.from+s,insert:i+" "});let i=e.changes(t);return{changes:i,selection:e.selection.map(i,1)}}if(1!=t&&n.some((t=>t.comment>=0))){let t=[];for(let{line:e,comment:i,token:s}of n)if(i>=0){let n=e.from+i,r=n+s.length;" "==e.text[r-e.from]&&r++,t.push({from:n,to:r})}return{changes:t}}return null}const jl=rt.define(),$l=rt.define(),Kl=R.define(),Gl=R.define({combine:t=>kt(t,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,n)=>t(i,n)||e(i,n)})}),Ul=_.define({create:()=>ua.empty,update(t,e){let i=e.state.facet(Gl),n=e.annotation(jl);if(n){let s=e.docChanged?B.single(function(t){let e=0;return t.iterChangedRanges(((t,i)=>e=i)),e}(e.changes)):void 0,r=ea.fromTransaction(e,s),o=n.side,l=0==o?t.undone:t.done;return l=r?ia(l,l.length,i.minDepth,r):oa(l,e.startState.selection),new ua(0==o?n.rest:l,0==o?l:n.rest)}let s=e.annotation($l);if("full"!=s&&"before"!=s||(t=t.isolate()),!1===e.annotation(ht.addToHistory))return e.changes.empty?t:t.addMapping(e.changes.desc);let r=ea.fromTransaction(e),o=e.annotation(ht.time),l=e.annotation(ht.userEvent);return r?t=t.addChanges(r,o,l,i,e):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),"full"!=s&&"after"!=s||(t=t.isolate()),t},toJSON:t=>({done:t.done.map((t=>t.toJSON())),undone:t.undone.map((t=>t.toJSON()))}),fromJSON:t=>new ua(t.done.map(ea.fromJSON),t.undone.map(ea.fromJSON))});function Jl(t={}){return[Ul,Gl.of(t),Es.domEventHandlers({beforeinput(t,e){let i="historyUndo"==t.inputType?Xl:"historyRedo"==t.inputType?Ql:null;return!!i&&(t.preventDefault(),i(e))}})]}function Yl(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let s=i.field(Ul,!1);if(!s)return!1;let r=s.pop(t,i,e);return!!r&&(n(r),!0)}}const Xl=Yl(0,!1),Ql=Yl(1,!1),Zl=Yl(0,!0),ta=Yl(1,!0);class ea{constructor(t,e,i,n,s){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=n,this.selectionsAfter=s}setSelAfter(t){return new ea(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:null===(t=this.changes)||void 0===t?void 0:t.toJSON(),mapped:null===(e=this.mapped)||void 0===e?void 0:e.toJSON(),startSelection:null===(i=this.startSelection)||void 0===i?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map((t=>t.toJSON()))}}static fromJSON(t){return new ea(t.changes&&A.fromJSON(t.changes),[],t.mapped&&S.fromJSON(t.mapped),t.startSelection&&B.fromJSON(t.startSelection),t.selectionsAfter.map(B.fromJSON))}static fromTransaction(t,e){let i=sa;for(let e of t.startState.facet(Kl)){let n=e(t);n.length&&(i=i.concat(n))}return!i.length&&t.changes.empty?null:new ea(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,sa)}static selection(t){return new ea(void 0,sa,void 0,void 0,t)}}function ia(t,e,i,n){let s=e+1>i+20?e-i-1:0,r=t.slice(s,e);return r.push(n),r}function na(t,e){return t.length?e.length?t.concat(e):t:e}const sa=[],ra=200;function oa(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-ra));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),ia(t,t.length-1,1e9,i.setSelAfter(n)))}return[ea.selection([e])]}function la(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function aa(t,e){if(!t.length)return t;let i=t.length,n=sa;for(;i;){let s=ha(t[i-1],e,n);if(s.changes&&!s.changes.empty||s.effects.length){let e=t.slice(0,i);return e[i-1]=s,e}e=s.mapped,i--,n=s.selectionsAfter}return n.length?[ea.selection(n)]:sa}function ha(t,e,i){let n=na(t.selectionsAfter.length?t.selectionsAfter.map((t=>t.map(e))):sa,i);if(!t.changes)return ea.selection(n);let s=t.changes.map(e),r=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(r):r;return new ea(s,at.mapEffects(t.effects,e),o,t.startSelection.map(r),n)}const ca=/^(input\.type|delete)($|\.)/;class ua{constructor(t,e,i=0,n=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new ua(this.done,this.undone):this}addChanges(t,e,i,n,s){let r=this.done,o=r[r.length-1];return r=o&&o.changes&&!o.changes.empty&&t.changes&&(!i||ca.test(i))&&(!o.selectionsAfter.length&&e-this.prevTimei.push(t,e))),e.iterChangedRanges(((t,e,s,r)=>{for(let t=0;t=e&&s<=o&&(n=!0)}})),n}(o.changes,t.changes))||"input.type.compose"==i)?ia(r,r.length-1,n.minDepth,new ea(t.changes.compose(o.changes),na(t.effects,o.effects),o.mapped,o.startSelection,sa)):ia(r,r.length,n.minDepth,t),new ua(r,sa,e,i)}addSelection(t,e,i,n){let s=this.done.length?this.done[this.done.length-1].selectionsAfter:sa;return s.length>0&&e-this.prevTimet.empty!=o.ranges[e].empty)).length)?this:new ua(oa(this.done,t),this.undone,e,i);var r,o}addMapping(t){return new ua(aa(this.done,t),aa(this.undone,t),this.prevTime,this.prevUserEvent)}pop(t,e,i){let n=0==t?this.done:this.undone;if(0==n.length)return null;let s=n[n.length-1];if(i&&s.selectionsAfter.length)return e.update({selection:s.selectionsAfter[s.selectionsAfter.length-1],annotations:jl.of({side:t,rest:la(n)}),userEvent:0==t?"select.undo":"select.redo",scrollIntoView:!0});if(s.changes){let i=1==n.length?sa:n.slice(0,n.length-1);return s.mapped&&(i=aa(i,s.mapped)),e.update({changes:s.changes,selection:s.startSelection,effects:s.effects,annotations:jl.of({side:t,rest:i}),filter:!1,userEvent:0==t?"undo":"redo",scrollIntoView:!0})}return null}}ua.empty=new ua(sa,sa);const fa=[{key:"Mod-z",run:Xl,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ql,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Ql,preventDefault:!0},{key:"Mod-u",run:Zl,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:ta,preventDefault:!0}];function da(t,e){return B.create(t.ranges.map(e),t.mainIndex)}function pa(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function ga({state:t,dispatch:e},i){let n=da(t.selection,i);return!n.eq(t.selection)&&(e(pa(t,n)),!0)}function ma(t,e){return B.cursor(e?t.to:t.from)}function wa(t,e){return ga(t,(i=>i.empty?t.moveByChar(i,e):ma(i,e)))}function ya(t){return t.textDirectionAt(t.state.selection.main.head)==Bi.LTR}const va=t=>wa(t,!ya(t)),ka=t=>wa(t,ya(t));function ba(t,e){return ga(t,(i=>i.empty?t.moveByGroup(i,e):ma(i,e)))}function xa(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Sa(t,e,i){let n,s,r=Co(t).resolveInner(e.head),o=i?kr.closedBy:kr.openedBy;for(let n=e.head;;){let e=i?r.childAfter(n):r.childBefore(n);if(!e)break;xa(t,e,o)?r=e:n=i?e.to:e.from}return s=r.type.prop(o)&&(n=i?gl(t,r.from,1):gl(t,r.to,-1))&&n.matched?i?n.end.to:n.end.from:i?r.to:r.from,B.cursor(s,i?-1:1)}function Aa(t,e){return ga(t,(i=>{if(!i.empty)return ma(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)}))}"undefined"!=typeof Intl&&Intl.Segmenter;const Ma=t=>Aa(t,!1),Ta=t=>Aa(t,!0);function Ca(t){let e,i=t.scrollDOM.clientHeighti.empty?t.moveVertically(i,e,n.height):ma(i,e)));if(r.eq(s.selection))return!1;if(n.selfScroll){let e=t.coordsAtPos(s.selection.main.head),o=t.scrollDOM.getBoundingClientRect(),l=o.top+n.marginTop,a=o.bottom-n.marginBottom;e&&e.top>l&&e.bottomOa(t,!1),Ea=t=>Oa(t,!0);function La(t,e,i){let n=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,i);if(s.head==e.head&&s.head!=(i?n.to:n.from)&&(s=t.moveToLineBoundary(e,i,!1)),!i&&s.head==n.from&&n.length){let i=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;i&&e.head!=n.from+i&&(s=B.cursor(n.from+i))}return s}function Ba(t,e){let i=da(t.state.selection,(t=>{let i=e(t);return B.range(t.anchor,i.head,i.goalColumn,i.bidiLevel||void 0)}));return!i.eq(t.state.selection)&&(t.dispatch(pa(t.state,i)),!0)}function Pa(t,e){return Ba(t,(i=>t.moveByChar(i,e)))}const Na=t=>Pa(t,!ya(t)),Ra=t=>Pa(t,ya(t));function Ia(t,e){return Ba(t,(i=>t.moveByGroup(i,e)))}function Ha(t,e){return Ba(t,(i=>t.moveVertically(i,e)))}const za=t=>Ha(t,!1),Wa=t=>Ha(t,!0);function Va(t,e){return Ba(t,(i=>t.moveVertically(i,e,Ca(t).height)))}const Fa=t=>Va(t,!1),_a=t=>Va(t,!0),qa=({state:t,dispatch:e})=>(e(pa(t,{anchor:0})),!0),ja=({state:t,dispatch:e})=>(e(pa(t,{anchor:t.doc.length})),!0),$a=({state:t,dispatch:e})=>(e(pa(t,{anchor:t.selection.main.anchor,head:0})),!0),Ka=({state:t,dispatch:e})=>(e(pa(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0);function Ga(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,s=n.changeByRange((n=>{let{from:s,to:r}=n;if(s==r){let n=e(s);ns&&(i="delete.forward",n=Ua(t,n,!0)),s=Math.min(s,n),r=Math.max(r,n)}else s=Ua(t,s,!1),r=Ua(t,r,!0);return s==r?{range:n}:{changes:{from:s,to:r},range:B.cursor(s)}}));return!s.changes.empty&&(t.dispatch(n.update(s,{scrollIntoView:!0,userEvent:i,effects:"delete.selection"==i?Es.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function Ua(t,e,i){if(t instanceof Es)for(let n of t.state.facet(Es.atomicRanges).map((e=>e(t))))n.between(e,e,((t,n)=>{te&&(e=i?n:t)}));return e}const Ja=(t,e)=>Ga(t,(i=>{let n,s,{state:r}=t,o=r.doc.lineAt(i);if(!e&&i>o.from&&iJa(t,!1),Xa=t=>Ja(t,!0),Qa=(t,e)=>Ga(t,(i=>{let n=i,{state:s}=t,r=s.doc.lineAt(n),o=s.charCategorizer(n);for(let t=null;;){if(n==(e?r.to:r.from)){n==i&&r.number!=(e?s.doc.lines:1)&&(n+=e?1:-1);break}let l=d(r.text,n-r.from,e)+r.from,a=r.text.slice(Math.min(n,l)-r.from,Math.max(n,l)-r.from),h=o(a);if(null!=t&&h!=t)break;" "==a&&n==i||(t=h),n=l}return n})),Za=t=>Qa(t,!1),th=t=>Ga(t,(e=>{let i=t.lineBlockAt(e).to;return e=s.number){let t=e[e.length-1];t.to=r.to,t.ranges.push(n)}else e.push({from:s.from,to:r.to,ranges:[n]});i=r.number+1}return e}function ih(t,e,i){if(t.readOnly)return!1;let n=[],s=[];for(let e of eh(t)){if(i?e.to==t.doc.length:0==e.from)continue;let r=t.doc.lineAt(i?e.to+1:e.from-1),o=r.length+1;if(i){n.push({from:e.to,to:r.to},{from:e.from,insert:r.text+t.lineBreak});for(let i of e.ranges)s.push(B.range(Math.min(t.doc.length,i.anchor+o),Math.min(t.doc.length,i.head+o)))}else{n.push({from:r.from,to:e.from},{from:e.to,insert:t.lineBreak+r.text});for(let t of e.ranges)s.push(B.range(t.anchor-o,t.head-o))}}return!!n.length&&(e(t.update({changes:n,scrollIntoView:!0,selection:B.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0)}function nh(t,e,i){if(t.readOnly)return!1;let n=[];for(let e of eh(t))i?n.push({from:e.from,insert:t.doc.slice(e.from,e.to)+t.lineBreak}):n.push({from:e.to,insert:t.lineBreak+t.doc.slice(e.from,e.to)});return e(t.update({changes:n,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const sh=rh(!1);function rh(e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let s=i.changeByRange((n=>{let{from:s,to:r}=n,o=i.doc.lineAt(s),l=!e&&s==r&&function(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i,n=Co(t).resolveInner(e),s=n.childBefore(e),r=n.childAfter(e);return s&&r&&s.to<=e&&r.from>=e&&(i=s.type.prop(kr.closedBy))&&i.indexOf(r.name)>-1&&t.doc.lineAt(s.to).from==t.doc.lineAt(r.from).from&&!/\S/.test(t.sliceDoc(s.to,r.from))?{from:s.to,to:r.from}:null}(i,s);e&&(s=r=(r<=o.to?o:i.doc.lineAt(r)).to);let a=new qo(i,{simulateBreak:s,simulateDoubleBreak:!!l}),h=_o(a,s);for(null==h&&(h=Ht(/^\s*/.exec(i.doc.lineAt(s).text)[0],i.tabSize));ro.from&&s{let s=[];for(let r=n.from;r<=n.to;){let o=t.doc.lineAt(r);o.number>i&&(n.empty||n.to>o.from)&&(e(o,s,n),i=o.number),r=o.to+1}let r=t.changes(s);return{changes:s,range:B.range(r.mapPos(n.anchor,1),r.mapPos(n.head,1))}}))}const lh=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:t=>ga(t,(e=>Sa(t.state,e,!ya(t)))),shift:t=>Ba(t,(e=>Sa(t.state,e,!ya(t))))},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:t=>ga(t,(e=>Sa(t.state,e,ya(t)))),shift:t=>Ba(t,(e=>Sa(t.state,e,ya(t))))},{key:"Alt-ArrowUp",run:({state:t,dispatch:e})=>ih(t,e,!1)},{key:"Shift-Alt-ArrowUp",run:({state:t,dispatch:e})=>nh(t,e,!1)},{key:"Alt-ArrowDown",run:({state:t,dispatch:e})=>ih(t,e,!0)},{key:"Shift-Alt-ArrowDown",run:({state:t,dispatch:e})=>nh(t,e,!0)},{key:"Escape",run:({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=B.create([i.main]):i.main.empty||(n=B.create([B.cursor(i.main.head)])),!!n&&(e(pa(t,n)),!0)}},{key:"Mod-Enter",run:rh(!0)},{key:"Alt-l",mac:"Ctrl-l",run:({state:t,dispatch:e})=>{let i=eh(t).map((({from:e,to:i})=>B.range(e,Math.min(i+1,t.doc.length))));return e(t.update({selection:B.create(i),userEvent:"select"})),!0}},{key:"Mod-i",run:({state:t,dispatch:e})=>{let i=da(t.selection,(e=>{var i;let n=Co(t).resolveInner(e.head,1);for(;!(n.from=e.to||n.to>e.to&&n.from<=e.from)&&(null===(i=n.parent)||void 0===i?void 0:i.parent);)n=n.parent;return B.range(n.to,n.from)}));return e(pa(t,i)),!0},preventDefault:!0},{key:"Mod-[",run:({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(oh(t,((e,i)=>{let n=/^\s*/.exec(e.text)[0];if(!n)return;let s=Ht(n,t.tabSize),r=0,o=Fo(t,Math.max(0,s-Vo(t)));for(;r!t.readOnly&&(e(t.update(oh(t,((e,i)=>{i.push({from:e.from,insert:t.facet(Wo)})})),{userEvent:"input.indent"})),!0)},{key:"Mod-Alt-\\",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new qo(t,{overrideIndentation:t=>{let e=i[t];return null==e?-1:e}}),s=oh(t,((e,s,r)=>{let o=_o(n,e.from);if(null==o)return;/\S/.test(e.text)||(o=0);let l=/^\s*/.exec(e.text)[0],a=Fo(t,o);(l!=a||r.from{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(eh(e).map((({from:t,to:i})=>(t>0?t--:it.moveVertically(e,!0))).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0}},{key:"Shift-Mod-\\",run:({state:t,dispatch:e})=>function(t,e,i){let n=!1,s=da(t.selection,(e=>{let s=gl(t,e.head,-1)||gl(t,e.head,1)||e.head>0&&gl(t,e.head-1,1)||e.head{let{state:e}=t,i=e.doc.lineAt(e.selection.main.from),n=Vl(t.state,i.from);return n.line?Hl(t):!!n.block&&Wl(t)}},{key:"Alt-A",run:zl}].concat([{key:"ArrowLeft",run:va,shift:Na,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:t=>ba(t,!ya(t)),shift:t=>Ia(t,!ya(t)),preventDefault:!0},{mac:"Cmd-ArrowLeft",run:t=>ga(t,(e=>La(t,e,!ya(t)))),shift:t=>Ba(t,(e=>La(t,e,!ya(t)))),preventDefault:!0},{key:"ArrowRight",run:ka,shift:Ra,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:t=>ba(t,ya(t)),shift:t=>Ia(t,ya(t)),preventDefault:!0},{mac:"Cmd-ArrowRight",run:t=>ga(t,(e=>La(t,e,ya(t)))),shift:t=>Ba(t,(e=>La(t,e,ya(t)))),preventDefault:!0},{key:"ArrowUp",run:Ma,shift:za,preventDefault:!0},{mac:"Cmd-ArrowUp",run:qa,shift:$a},{mac:"Ctrl-ArrowUp",run:Da,shift:Fa},{key:"ArrowDown",run:Ta,shift:Wa,preventDefault:!0},{mac:"Cmd-ArrowDown",run:ja,shift:Ka},{mac:"Ctrl-ArrowDown",run:Ea,shift:_a},{key:"PageUp",run:Da,shift:Fa},{key:"PageDown",run:Ea,shift:_a},{key:"Home",run:t=>ga(t,(e=>La(t,e,!1))),shift:t=>Ba(t,(e=>La(t,e,!1))),preventDefault:!0},{key:"Mod-Home",run:qa,shift:$a},{key:"End",run:t=>ga(t,(e=>La(t,e,!0))),shift:t=>Ba(t,(e=>La(t,e,!0))),preventDefault:!0},{key:"Mod-End",run:ja,shift:Ka},{key:"Enter",run:sh},{key:"Mod-a",run:({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0)},{key:"Backspace",run:Ya,shift:Ya},{key:"Delete",run:Xa},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Za},{key:"Mod-Delete",mac:"Alt-Delete",run:t=>Qa(t,!0)},{mac:"Mod-Backspace",run:t=>Ga(t,(e=>{let i=t.lineBlockAt(e).from;return e>i?i:Math.max(0,e-1)}))},{mac:"Mod-Delete",run:th}].concat([{key:"Ctrl-b",run:va,shift:Na,preventDefault:!0},{key:"Ctrl-f",run:ka,shift:Ra},{key:"Ctrl-p",run:Ma,shift:za},{key:"Ctrl-n",run:Ta,shift:Wa},{key:"Ctrl-a",run:t=>ga(t,(e=>B.cursor(t.lineBlockAt(e.head).from,1))),shift:t=>Ba(t,(e=>B.cursor(t.lineBlockAt(e.head).from)))},{key:"Ctrl-e",run:t=>ga(t,(e=>B.cursor(t.lineBlockAt(e.head).to,-1))),shift:t=>Ba(t,(e=>B.cursor(t.lineBlockAt(e.head).to)))},{key:"Ctrl-d",run:Xa},{key:"Ctrl-h",run:Ya},{key:"Ctrl-k",run:th},{key:"Ctrl-Alt-h",run:Za},{key:"Ctrl-o",run:({state:e,dispatch:i})=>{if(e.readOnly)return!1;let n=e.changeByRange((e=>({changes:{from:e.from,to:e.to,insert:t.of(["",""])},range:B.cursor(e.from)})));return i(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}},{key:"Ctrl-t",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange((e=>{if(!e.empty||0==e.from||e.from==t.doc.length)return{range:e};let i=e.from,n=t.doc.lineAt(i),s=i==n.from?i-1:d(n.text,i-n.from,!1)+n.from,r=i==n.to?i+1:d(n.text,i-n.from,!0)+n.from;return{changes:{from:s,to:r,insert:t.doc.slice(i,r).append(t.doc.slice(s,i))},range:B.cursor(r)}}));return!i.changes.empty&&(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)}},{key:"Ctrl-v",run:Ea}].map((t=>({mac:t.key,run:t.run,shift:t.shift})))));function ah(){var t=arguments[0];"string"==typeof t&&(t=document.createElement(t));var e=1,i=arguments[1];if(i&&"object"==typeof i&&null==i.nodeType&&!Array.isArray(i)){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var s=i[n];"string"==typeof s?t.setAttribute(n,s):null!=s&&(t[n]=s)}e++}for(;et.normalize("NFKD"):t=>t;class uh{constructor(t,e,i=0,n=t.length,s,r){this.test=r,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(i,n),this.bufferStart=i,this.normalize=s?t=>s(ch(t)):ch,this.query=this.normalize(e)}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 y(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let t=this.peek();if(t<0)return this.done=!0,this;let e=v(t),i=this.bufferStart+this.bufferPos;this.bufferPos+=k(t);let n=this.normalize(e);for(let t=0,s=i;;t++){let r=n.charCodeAt(t),o=this.match(r,s);if(t==n.length-1){if(o)return this.value=o,this;break}s==i&&tthis.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 t=this.matchPos-this.curLineStart;;){this.re.lastIndex=t;let e=this.matchPos<=this.to&&this.re.exec(this.curLine);if(e){let i=this.curLineStart+e.index,n=i+e[0].length;if(this.matchPos=yh(this.text,n+(i==n?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(ithis.value.to)&&(!this.test||this.test(i,n,e)))return this.value={from:i,to:n,match:e},this;t=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length=i||n.to<=e){let n=new mh(e,t.sliceString(e,i));return gh.set(t,n),n}if(n.from==e&&n.to==i)return n;let{text:s,from:r}=n;return r>e&&(s=t.sliceString(e,r)+s,r=e),n.to=this.to?this.to:this.text.lineAt(t).to}next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,e=this.re.exec(this.flat.text);if(e&&!e[0]&&e.index==t&&(this.re.lastIndex=t+1,e=this.re.exec(this.flat.text)),e){let t=this.flat.from+e.index,i=t+e[0].length;if((this.flat.to>=this.to||e.index+e[0].length<=this.flat.text.length-10)&&(!this.test||this.test(t,i,e)))return this.value={from:t,to:i,match:e},this.matchPos=yh(this.text,i+(t==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=mh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function yh(t,e){if(e>=t.length)return e;let i,n=t.lineAt(e);for(;e=56320&&i<57344;)e++;return e}function vh(t){let e=ah("input",{class:"cm-textfield",name:"line",value:String(t.state.doc.lineAt(t.state.selection.main.head).number)});function i(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!i)return;let{state:n}=t,s=n.doc.lineAt(n.selection.main.head),[,r,o,l,a]=i,h=l?+l.slice(1):0,c=o?+o:s.number;if(o&&a){let t=c/100;r&&(t=t*("-"==r?-1:1)+s.number/n.doc.lines),c=Math.round(n.doc.lines*t)}else o&&r&&(c=c*("-"==r?-1:1)+s.number);let u=n.doc.line(Math.max(1,Math.min(n.doc.lines,c))),f=B.cursor(u.from+Math.max(0,Math.min(h,u.length)));t.dispatch({effects:[kh.of(!1),Es.scrollIntoView(f.from,{y:"center"})],selection:f}),t.focus()}return{dom:ah("form",{class:"cm-gotoLine",onkeydown:e=>{27==e.keyCode?(e.preventDefault(),t.dispatch({effects:kh.of(!1)}),t.focus()):13==e.keyCode&&(e.preventDefault(),i())},onsubmit:t=>{t.preventDefault(),i()}},ah("label",t.state.phrase("Go to line"),": ",e)," ",ah("button",{class:"cm-button",type:"submit"},t.state.phrase("go")))}}"undefined"!=typeof Symbol&&(ph.prototype[Symbol.iterator]=wh.prototype[Symbol.iterator]=function(){return this});const kh=at.define(),bh=_.define({create:()=>!0,update(t,e){for(let i of e.effects)i.is(kh)&&(t=i.value);return t},provide:t=>Js.from(t,(t=>t?vh:null))}),xh=Es.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),Sh=R.define({combine:t=>kt(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:t=>new Qh(t),scrollToMatch:t=>Es.scrollIntoView(t)})});class Ah{constructor(t){this.search=t.search,this.caseSensitive=!!t.caseSensitive,this.literal=!!t.literal,this.regexp=!!t.regexp,this.replace=t.replace||"",this.valid=!!this.search&&(!this.regexp||function(t){try{return new RegExp(t,dh),!0}catch(t){return!1}}(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!t.wholeWord}unquote(t){return this.literal?t:t.replace(/\\([nrt\\])/g,((t,e)=>"n"==e?"\n":"r"==e?"\r":"t"==e?"\t":"\\"))}eq(t){return this.search==t.search&&this.replace==t.replace&&this.caseSensitive==t.caseSensitive&&this.regexp==t.regexp&&this.wholeWord==t.wholeWord}create(){return this.regexp?new Lh(this):new Ch(this)}getCursor(t,e=0,i){let n=t.doc?t:vt.create({doc:t});return null==i&&(i=n.doc.length),this.regexp?Oh(this,n,e,i):Th(this,n,e,i)}}class Mh{constructor(t){this.spec=t}}function Th(t,e,i,n){return new uh(e.doc,t.unquoted,i,n,t.caseSensitive?void 0:t=>t.toLowerCase(),t.wholeWord?function(t,e){return(i,n,s,r)=>((r>i||r+s.length=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let s=Th(this.spec,t,Math.max(0,e-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,t.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}}function Oh(t,e,i,n){return new ph(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?(s=e.charCategorizer(e.selection.main.head),(t,e,i)=>!i[0].length||(s(Dh(i.input,i.index))!=mt.Word||s(Eh(i.input,i.index))!=mt.Word)&&(s(Eh(i.input,i.index+i[0].length))!=mt.Word||s(Dh(i.input,i.index+i[0].length))!=mt.Word)):void 0},i,n);var s}function Dh(t,e){return t.slice(d(t,e,!1),e)}function Eh(t,e){return t.slice(e,d(t,e))}class Lh extends Mh{nextMatch(t,e,i){let n=Oh(this.spec,t,i,t.doc.length).next();return n.done&&(n=Oh(this.spec,t,0,e).next()),n.done?null:n.value}prevMatchInRange(t,e,i){for(let n=1;;n++){let s=Math.max(e,i-1e4*n),r=Oh(this.spec,t,s,i),o=null;for(;!r.next().done;)o=r.value;if(o&&(s==e||o.from>s+10))return o;if(s==e)return null}}prevMatch(t,e,i){return this.prevMatchInRange(t,0,e)||this.prevMatchInRange(t,i,t.doc.length)}getReplacement(t){return this.spec.unquote(this.spec.replace.replace(/\$([$&\d+])/g,((e,i)=>"$"==i?"$":"&"==i?t.match[0]:"0"!=i&&+i=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let s=Oh(this.spec,t,Math.max(0,e-250),Math.min(i+250,t.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}}const Bh=at.define(),Ph=at.define(),Nh=_.define({create:t=>new Rh(Kh(t).create(),null),update(t,e){for(let i of e.effects)i.is(Bh)?t=new Rh(i.value.create(),t.panel):i.is(Ph)&&(t=new Rh(t.query,i.value?$h:null));return t},provide:t=>Js.from(t,(t=>t.panel))});class Rh{constructor(t,e){this.query=t,this.panel=e}}const Ih=Ge.mark({class:"cm-searchMatch"}),Hh=Ge.mark({class:"cm-searchMatch cm-searchMatch-selected"}),zh=vi.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(Nh))}update(t){let e=t.state.field(Nh);(e!=t.startState.field(Nh)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Ge.none;let{view:i}=this,n=new Tt;for(let e=0,s=i.visibleRanges,r=s.length;es[e+1].from-500;)l=s[++e].to;t.highlight(i.state,o,l,((t,e)=>{let s=i.state.selection.ranges.some((i=>i.from==t&&i.to==e));n.add(t,e,s?Hh:Ih)}))}return n.finish()}},{decorations:t=>t.decorations});function Wh(t){return e=>{let i=e.state.field(Nh,!1);return i&&i.query.spec.valid?t(e,i):Jh(e)}}const Vh=Wh(((t,{query:e})=>{let{to:i}=t.state.selection.main,n=e.nextMatch(t.state,i,i);if(!n)return!1;let s=B.single(n.from,n.to),r=t.state.facet(Sh);return t.dispatch({selection:s,effects:[ic(t,n),r.scrollToMatch(s.main,t)],userEvent:"select.search"}),Uh(t),!0})),Fh=Wh(((t,{query:e})=>{let{state:i}=t,{from:n}=i.selection.main,s=e.prevMatch(i,n,n);if(!s)return!1;let r=B.single(s.from,s.to),o=t.state.facet(Sh);return t.dispatch({selection:r,effects:[ic(t,s),o.scrollToMatch(r.main,t)],userEvent:"select.search"}),Uh(t),!0})),_h=Wh(((t,{query:e})=>{let i=e.matchAll(t.state,1e3);return!(!i||!i.length||(t.dispatch({selection:B.create(i.map((t=>B.range(t.from,t.to)))),userEvent:"select.search.matches"}),0))})),qh=Wh(((t,{query:e})=>{let{state:i}=t,{from:n,to:s}=i.selection.main;if(i.readOnly)return!1;let r=e.nextMatch(i,n,n);if(!r)return!1;let o,l,a=[],h=[];if(r.from==n&&r.to==s&&(l=i.toText(e.getReplacement(r)),a.push({from:r.from,to:r.to,insert:l}),r=e.nextMatch(i,r.from,r.to),h.push(Es.announce.of(i.phrase("replaced match on line $",i.doc.lineAt(n).number)+"."))),r){let e=0==a.length||a[0].from>=r.to?0:r.to-r.from-l.length;o=B.single(r.from-e,r.to-e),h.push(ic(t,r)),h.push(i.facet(Sh).scrollToMatch(o.main,t))}return t.dispatch({changes:a,selection:o,effects:h,userEvent:"input.replace"}),!0})),jh=Wh(((t,{query:e})=>{if(t.state.readOnly)return!1;let i=e.matchAll(t.state,1e9).map((t=>{let{from:i,to:n}=t;return{from:i,to:n,insert:e.getReplacement(t)}}));if(!i.length)return!1;let n=t.state.phrase("replaced $ matches",i.length)+".";return t.dispatch({changes:i,effects:Es.announce.of(n),userEvent:"input.replace.all"}),!0}));function $h(t){return t.state.facet(Sh).createPanel(t)}function Kh(t,e){var i,n,s,r,o;let l=t.selection.main,a=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!a)return e;let h=t.facet(Sh);return new Ah({search:(null!==(i=null==e?void 0:e.literal)&&void 0!==i?i:h.literal)?a:a.replace(/\n/g,"\\n"),caseSensitive:null!==(n=null==e?void 0:e.caseSensitive)&&void 0!==n?n:h.caseSensitive,literal:null!==(s=null==e?void 0:e.literal)&&void 0!==s?s:h.literal,regexp:null!==(r=null==e?void 0:e.regexp)&&void 0!==r?r:h.regexp,wholeWord:null!==(o=null==e?void 0:e.wholeWord)&&void 0!==o?o:h.wholeWord})}function Gh(t){let e=$s(t,$h);return e&&e.dom.querySelector("[main-field]")}function Uh(t){let e=Gh(t);e&&e==t.root.activeElement&&e.select()}const Jh=t=>{let e=t.state.field(Nh,!1);if(e&&e.panel){let i=Gh(t);if(i&&i!=t.root.activeElement){let n=Kh(t.state,e.query.spec);n.valid&&t.dispatch({effects:Bh.of(n)}),i.focus(),i.select()}}else t.dispatch({effects:[Ph.of(!0),e?Bh.of(Kh(t.state,e.query.spec)):at.appendConfig.of(sc)]});return!0},Yh=t=>{let e=t.state.field(Nh,!1);if(!e||!e.panel)return!1;let i=$s(t,$h);return i&&i.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:Ph.of(!1)}),!0},Xh=[{key:"Mod-f",run:Jh,scope:"editor search-panel"},{key:"F3",run:Vh,shift:Fh,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Vh,shift:Fh,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Yh,scope:"editor search-panel"},{key:"Mod-Shift-l",run:({state:t,dispatch:e})=>{let i=t.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:n,to:s}=i.main,r=[],o=0;for(let e=new uh(t.doc,t.sliceDoc(n,s));!e.next().done;){if(r.length>1e3)return!1;e.value.from==n&&(o=r.length),r.push(B.range(e.value.from,e.value.to))}return e(t.update({selection:B.create(r,o),userEvent:"select.search.matches"})),!0}},{key:"Alt-g",run:t=>{let e=$s(t,vh);if(!e){let i=[kh.of(!0)];null==t.state.field(bh,!1)&&i.push(at.appendConfig.of([bh,xh])),t.dispatch({effects:i}),e=$s(t,vh)}return e&&e.dom.querySelector("input").select(),!0}},{key:"Mod-d",run:({state:t,dispatch:e})=>{let{ranges:i}=t.selection;if(i.some((t=>t.from===t.to)))return(({state:t,dispatch:e})=>{let{selection:i}=t,n=B.create(i.ranges.map((e=>t.wordAt(e.head)||B.cursor(e.head))),i.mainIndex);return!n.eq(i)&&(e(t.update({selection:n})),!0)})({state:t,dispatch:e});let n=t.sliceDoc(i[0].from,i[0].to);if(t.selection.ranges.some((e=>t.sliceDoc(e.from,e.to)!=n)))return!1;let s=function(t,e){let{main:i,ranges:n}=t.selection,s=t.wordAt(i.head),r=s&&s.from==i.from&&s.to==i.to;for(let i=!1,s=new uh(t.doc,e,n[n.length-1].to);;){if(s.next(),!s.done){if(i&&n.some((t=>t.from==s.value.from)))continue;if(r){let e=t.wordAt(s.value.from);if(!e||e.from!=s.value.from||e.to!=s.value.to)continue}return s.value}if(i)return null;s=new uh(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),i=!0}}(t,n);return!!s&&(e(t.update({selection:t.selection.addRange(B.range(s.from,s.to),!1),effects:Es.scrollIntoView(s.to)})),!0)},preventDefault:!0}];class Qh{constructor(t){this.view=t;let e=this.query=t.state.field(Nh).query.spec;function i(t,e,i){return ah("button",{class:"cm-button",name:t,onclick:e,type:"button"},i)}this.commit=this.commit.bind(this),this.searchField=ah("input",{value:e.search,placeholder:Zh(t,"Find"),"aria-label":Zh(t,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=ah("input",{value:e.replace,placeholder:Zh(t,"Replace"),"aria-label":Zh(t,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=ah("input",{type:"checkbox",name:"case",form:"",checked:e.caseSensitive,onchange:this.commit}),this.reField=ah("input",{type:"checkbox",name:"re",form:"",checked:e.regexp,onchange:this.commit}),this.wordField=ah("input",{type:"checkbox",name:"word",form:"",checked:e.wholeWord,onchange:this.commit}),this.dom=ah("div",{onkeydown:t=>this.keydown(t),class:"cm-search"},[this.searchField,i("next",(()=>Vh(t)),[Zh(t,"next")]),i("prev",(()=>Fh(t)),[Zh(t,"previous")]),i("select",(()=>_h(t)),[Zh(t,"all")]),ah("label",null,[this.caseField,Zh(t,"match case")]),ah("label",null,[this.reField,Zh(t,"regexp")]),ah("label",null,[this.wordField,Zh(t,"by word")]),...t.state.readOnly?[]:[ah("br"),this.replaceField,i("replace",(()=>qh(t)),[Zh(t,"replace")]),i("replaceAll",(()=>jh(t)),[Zh(t,"replace all")])],ah("button",{name:"close",onclick:()=>Yh(t),"aria-label":Zh(t,"close"),type:"button"},["×"])])}commit(){let t=new Ah({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});t.eq(this.query)||(this.query=t,this.view.dispatch({effects:Bh.of(t)}))}keydown(t){var e,i;i=t,qs(Vs((e=this.view).state),i,e,"search-panel")?t.preventDefault():13==t.keyCode&&t.target==this.searchField?(t.preventDefault(),(t.shiftKey?Fh:Vh)(this.view)):13==t.keyCode&&t.target==this.replaceField&&(t.preventDefault(),qh(this.view))}update(t){for(let e of t.transactions)for(let t of e.effects)t.is(Bh)&&!t.value.eq(this.query)&&this.setQuery(t.value)}setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceField.value=t.replace,this.caseField.checked=t.caseSensitive,this.reField.checked=t.regexp,this.wordField.checked=t.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Sh).top}}function Zh(t,e){return t.state.phrase(e)}const tc=30,ec=/[\s\.,:;?!]/;function ic(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),s=t.state.doc.lineAt(i).to,r=Math.max(n.from,e-tc),o=Math.min(s,i+tc),l=t.state.sliceDoc(r,o);if(r!=n.from)for(let t=0;tl.length-tc;t--)if(!ec.test(l[t-1])&&ec.test(l[t])){l=l.slice(0,t);break}return Es.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${n.number}.`)}const nc=Es.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"}}),sc=[Nh,j.low(zh),nc];function rc(t){return rc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rc(t)}function oc(t){return function(t){if(Array.isArray(t))return lc(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return lc(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?lc(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function lc(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i0,n}var i,n;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&pc(t,e)}(e,t),i=e,(n=[{key:"setCodeMirrorPreference",value:function(t){this.useCodeMirror=t,fc(dc(e.prototype),"setCodeMirrorPreference",this).call(this,t)}},{key:"enableCodeMirror",value:function(){var t=this;if(!this.view){var e=this.$textarea.prop("selectionStart"),i=this.$textarea.prop("selectionEnd"),n=this.$textarea.scrollTop(),s=this.$textarea.is(":focus"),r=[].concat(oc(this.defaultExtensions),[this.langExtension,ul(),Jl(),Es.contentAttributes.of({spellcheck:"true"}),Es.domEventHandlers({blur:function(){return t.$textarea.triggerHandler("blur")},focus:function(){return t.$textarea.triggerHandler("focus")}}),Es.updateListener.of((function(e){e.docChanged&&"function"==typeof t.editRecoveryHandler&&t.editRecoveryHandler()})),Es.lineWrapping,zs.of([].concat(oc(lh),oc(Xh),oc(fa)))]);mw.hook("editRecovery.loadEnd").add((function(e){t.editRecoveryHandler=e.fieldChangeHandler})),this.initialize(r),this.view.scrollDOM.scrollTop=n,this.view.dispatch({selection:B.create([B.range(e,i)]),scrollIntoView:!0}),s&&this.view.focus(),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}}},{key:"addCodeMirrorToWikiEditor",value:function(){var t=this,e=this.$textarea.data("wikiEditor-context"),i=e&&e.modules&&e.modules.toolbar;i&&(this.$textarea.wikiEditor("addToToolbar",{section:"main",groups:{codemirror:{tools:{CodeMirror:{label:mw.msg("codemirror-toggle-label"),type:"toggle",oouiIcon:"highlight",action:{type:"callback",execute:function(){return t.switchCodeMirror()}}}}}}}),i.$toolbar.find(".tool[rel=CodeMirror]").attr("id","mw-editbutton-codemirror"),this.useCodeMirror&&this.enableCodeMirror(),this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!1,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0}))}},{key:"updateToolbarButton",value:function(){var t=$("#mw-editbutton-codemirror");t.toggleClass("mw-editbutton-codemirror-active",this.useCodeMirror),t.data("setActive")&&t.data("setActive")(this.useCodeMirror)}},{key:"switchCodeMirror",value:function(){if(this.view){this.setCodeMirrorPreference(!1);var t=this.view.scrollDOM.scrollTop,e=this.view.hasFocus,i=this.view.state.selection.ranges[0],n=i.from,s=i.to;$(this.view.dom).textSelection("unregister"),this.$textarea.textSelection("unregister"),this.$textarea.val(this.view.state.doc.toString()),this.view.destroy(),this.view=null,this.$textarea.show(),e&&this.$textarea.trigger("focus"),this.$textarea.prop("selectionStart",Math.min(n,s)).prop("selectionEnd",Math.max(s,n)),this.$textarea.scrollTop(t),mw.hook("ext.CodeMirror.switch").fire(!1,this.$textarea)}else this.enableCodeMirror(),this.setCodeMirrorPreference(!0);this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!0,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0})}}])&&ac(i.prototype,n),Object.defineProperty(i,"prototype",{writable:!1}),e}(mr);function mc(t){return mc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},mc(t)}function wc(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i~).,'])"),"i"),this.isBold=!1,this.wasBold=!1,this.isItalic=!1,this.wasItalic=!1,this.firstSingleLetterWord=null,this.firstMultiLetterWord=null,this.firstSpace=null,this.oldStyle=null,this.tokens=[],this.oldTokens=[],this.tokenTable=Mc.tokenTable,Object.keys(this.config.tags).forEach((function(t){return Mc.addTag(t)}))}var e,i;return e=t,i=[{key:"eatHtmlEntity",value:function(t,e){return(t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w.\-:]/)&&t.eat(";"))?Mc.tags.htmlEntity:e}},{key:"makeStyle",value:function(t,e,i){return this.isBold&&(t+=" "+Mc.tags.strong),this.isItalic&&(t+=" "+Mc.tags.em),this.makeLocalStyle(t,e,i)}},{key:"makeLocalStyle",value:function(t,e,i){var n="";switch(e.nTemplate){case 0:break;case 1:n+="-template";break;case 2:n+="-template2";break;default:n+="-template3"}switch(e.nExt){case 0:break;case 1:n+="-ext";break;case 2:n+="-ext2";break;default:n+="-ext3"}return e.nLink>0&&(n+="-link"),""!==n&&(t="mw".concat(n,"-ground ").concat(t)),i&&e[i]--,t.trim()}},{key:"eatBlock",value:function(t,e,i){var n=this;return function(s,r){return s.skipTo(e)?(!1!==i&&s.match(e),r.tokenize=r.stack.pop()):s.skipToEnd(),n.makeLocalStyle(t,r)}}},{key:"eatEnd",value:function(t){var e=this;return function(i,n){return i.skipToEnd(),n.tokenize=n.stack.pop(),e.makeLocalStyle(t,n)}}},{key:"eatChar",value:function(t,e){var i=this;return function(n,s){return s.tokenize=s.stack.pop(),n.eat(t)?i.makeLocalStyle(e,s):i.makeLocalStyle(Mc.tags.error,s)}}},{key:"eatSectionHeader",value:function(t){var e=this;return function(i,n){return i.match(/^[^&<[{~]+/)?(i.eol()?(i.backUp(t),n.tokenize=e.eatEnd(Mc.tags.sectionHeader)):i.match(/^.*?=)/,!1)&&(i.backUp(t),n.tokenize=e.eatBlock(Mc.tags.sectionHeader,"\x3c!--",!1)),Mc.tags.section):e.eatWikiText(Mc.tags.section)(i,n)}}},{key:"inVariable",value:function(t,e){return t.match(/^[^{}|]+/)?this.makeLocalStyle(Mc.tags.templateVariableName,e):t.eat("|")?(e.tokenize=this.inVariableDefault.bind(this),this.makeLocalStyle(Mc.tags.templateVariableDelimiter,e)):t.match("}}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.templateVariableBracket,e)):t.match("{{{")?(e.stack.push(e.tokenize),this.makeLocalStyle(Mc.tags.templateVariableBracket,e)):(t.next(),this.makeLocalStyle(Mc.tags.templateVariableName,e))}},{key:"inVariableDefault",value:function(t,e){return t.match(/^[^{}[<&~]+/)?this.makeLocalStyle(Mc.tags.templateVariable,e):t.match("}}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.templateVariableBracket,e)):this.eatWikiText(Mc.tags.templateVariable)(t,e)}},{key:"inParserFunctionName",value:function(t,e){return t.match(/^#?[^:}{~]+/)?this.makeLocalStyle(Mc.tags.parserFunctionName,e):t.eat(":")?(e.tokenize=this.inParserFunctionArguments.bind(this),this.makeLocalStyle(Mc.tags.parserFunctionDelimiter,e)):t.match("}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.parserFunctionBracket,e,"nExt")):this.eatWikiText(Mc.tags.parserFunction)(t,e)}},{key:"inParserFunctionArguments",value:function(t,e){return t.match(/^[^|}{[<&~]+/)?this.makeLocalStyle(Mc.tags.parserFunction,e):t.eat("|")?this.makeLocalStyle(Mc.tags.parserFunctionDelimiter,e):t.match("}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.parserFunctionBracket,e,"nExt")):this.eatWikiText(Mc.tags.parserFunction)(t,e)}},{key:"eatTemplatePageName",value:function(t){var e=this;return function(i,n){return i.match(/^[\s\u00a0]*\|[\s\u00a0]*/)?(n.tokenize=e.eatTemplateArgument(!0),e.makeLocalStyle(Mc.tags.templateDelimiter,n)):i.match(/^[\s\u00a0]*\}\}/)?(n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.templateBracket,n,"nTemplate")):i.match(/^[\s\u00a0]*/)?e.makeLocalStyle(Mc.tags.comment,n):t&&i.sol()?(n.nTemplate--,void(n.tokenize=n.stack.pop())):i.match(/^[\s\u00a0]*[^\s\u00a0|}<{&~]+/)?(n.tokenize=e.eatTemplatePageName(!0),e.makeLocalStyle(Mc.tags.templateName,n)):i.eatSpace()?(i.eol(),e.makeLocalStyle(Mc.tags.templateName,n)):e.eatWikiText(Mc.tags.templateName)(i,n)}}},{key:"eatTemplateArgument",value:function(t){var e=this;return function(i,n){return t&&i.eatWhile(/[^=|}{[<&~]/)?i.eat("=")?(n.tokenize=e.eatTemplateArgument(!1),e.makeLocalStyle(Mc.tags.templateArgumentName,n)):e.makeLocalStyle(Mc.tags.template,n):i.eatWhile(/[^|}{[<&~]/)?e.makeLocalStyle(Mc.tags.template,n):i.eat("|")?(n.tokenize=e.eatTemplateArgument(!0),e.makeLocalStyle(Mc.tags.templateDelimiter,n)):i.match("}}")?(n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.templateBracket,n,"nTemplate")):e.eatWikiText(Mc.tags.template)(i,n)}}},{key:"eatExternalLinkProtocol",value:function(t){var e=this;return function(i,n){for(;t>0;)t--,i.next();return i.eol()?(n.nLink--,n.tokenize=n.stack.pop()):n.tokenize=e.inExternalLink.bind(e),e.makeLocalStyle(Mc.tags.extLinkProtocol,n)}}},{key:"inExternalLink",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.match(/^[\s\u00a0]*\]/)?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.extLinkBracket,e,"nLink")):t.eatSpace()?(e.tokenize=this.inExternalLinkText.bind(this),this.makeStyle("",e)):t.match(/^[^\s\u00a0\]{&~']+/)||t.eatSpace()?("'"===t.peek()&&(t.match("''",!1)?e.tokenize=this.inExternalLinkText.bind(this):t.next()),this.makeStyle(Mc.tags.extLink,e)):this.eatWikiText(Mc.tags.extLink)(t,e)}},{key:"inExternalLinkText",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.eat("]")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.extLinkBracket,e,"nLink")):t.match(/^[^'\]{&~<]+/)?this.makeStyle(Mc.tags.extLinkText,e):this.eatWikiText(Mc.tags.extLinkText)(t,e)}},{key:"inLink",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.match(/^[\s\u00a0]*#[\s\u00a0]*/)?(e.tokenize=this.inLinkToSection.bind(this),this.makeLocalStyle(Mc.tags.link,e)):t.match(/^[\s\u00a0]*\|[\s\u00a0]*/)?(e.tokenize=this.eatLinkText(),this.makeLocalStyle(Mc.tags.linkDelimiter,e)):t.match(/^[\s\u00a0]*\]\]/)?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.linkBracket,e,"nLink")):t.match(/^[\s\u00a0]*[^\s\u00a0#|\]&~{]+/)||t.eatSpace()?this.makeStyle("".concat(Mc.tags.linkPageName," ").concat(Mc.tags.pageName),e):this.eatWikiText("".concat(Mc.tags.linkPageName," ").concat(Mc.tags.pageName))(t,e)}},{key:"inLinkToSection",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.match(/^[^|\]&~{}]+/)?this.makeLocalStyle(Mc.tags.linkToSection,e):t.eat("|")?(e.tokenize=this.eatLinkText(),this.makeLocalStyle(Mc.tags.linkDelimiter,e)):t.match("]]")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.linkBracket,e,"nLink")):this.eatWikiText(Mc.tags.linkToSection)(t,e)}},{key:"eatLinkText",value:function(){var t,e,i=this;return function(n,s){var r;return n.match("]]")?(s.tokenize=s.stack.pop(),i.makeLocalStyle(Mc.tags.linkBracket,s,"nLink")):n.match("'''")?(t=!t,i.makeLocalStyle("".concat(Mc.tags.linkText," ").concat(Mc.tags.apostrophes),s)):n.match("''")?(e=!e,i.makeLocalStyle("".concat(Mc.tags.linkText," ").concat(Mc.tags.apostrophes),s)):(r=Mc.tags.linkText,t&&(r+=" "+Mc.tags.strong),e&&(r+=" "+Mc.tags.em),n.match(/^[^'\]{&~<]+/)?i.makeStyle(r,s):i.eatWikiText(r)(n,s))}}},{key:"eatTagName",value:function(t,e,i){var n=this;return function(s,r){for(var o="";t>0;)t--,o+=s.next();return s.eatSpace(),o=o.toLowerCase(),i?(e&&!Mc.implicitlyClosedHtmlTags[o]?r.tokenize=n.eatChar(">",Mc.tags.htmlTagBracket):r.tokenize=n.eatHtmlTagAttribute(o),n.makeLocalStyle(Mc.tags.htmlTagName,r)):(r.tokenize=e?n.eatChar(">","".concat(Mc.tags.extTagBracket," mw-ext-").concat(o)):n.eatExtTagAttribute(o),n.makeLocalStyle("".concat(Mc.tags.extTagName," mw-ext-").concat(o),r))}}},{key:"eatHtmlTagAttribute",value:function(t){var e=this;return function(i,n){return i.match(/^(?:"[^<">]*"|'[^<'>]*'|[^>/<{&~])+/)?e.makeLocalStyle(Mc.tags.htmlTagAttribute,n):i.eat(">")?(t in Mc.implicitlyClosedHtmlTags||n.inHtmlTag.push(t),n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.htmlTagBracket,n)):i.match("/>")?(n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.htmlTagBracket,n)):e.eatWikiText(Mc.tags.htmlTagAttribute)(i,n)}}},{key:"eatNowiki",value:function(){var t=this;return function(e){return e.match(/^[^&]+/)?"":(e.next(),t.eatHtmlEntity(e,""))}}},{key:"eatExtTagAttribute",value:function(t){var e=this;return function(i,n){if(i.match(/^(?:"[^">]*"|'[^'>]*'|[^>/<{&~])+/))return e.makeLocalStyle("".concat(Mc.tags.extTagAttribute," mw-ext-").concat(t),n);if(i.eat(">")){if(n.extName=t,"nowiki"===t||"pre"===t)n.extMode={startState:function(){},copyState:function(){},token:e.eatNowiki()};else if(t in e.config.tagModes){var s=e.config.tagModes[t];"mediawiki"!==s&&"text/mediawiki"!==s||(n.extMode=e.mediawiki,n.extState=n.extMode.startState())}return n.tokenize=e.eatExtTagArea(t),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(t),n)}return i.match("/>")?(n.tokenize=n.stack.pop(),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(t),n)):e.eatWikiText("".concat(Mc.tags.extTagAttribute," mw-ext-").concat(t))(i,n)}}},{key:"eatExtTagArea",value:function(t){var e=this;return function(i,n){var s,r=i.pos,o=new RegExp(""),"i").exec(r?i.string.slice(r):i.string),l=!1;if(o){if(0===o.index)return n.tokenize=e.eatExtCloseTag(t),n.extName=!1,!1!==n.extMode&&(n.extMode=!1,n.extState=!1),n.tokenize(i,n);s=o.index+r,l=i.string,i.string=l.slice(0,s)}return n.stack.push(n.tokenize),n.tokenize=e.eatExtTokens(l),n.tokenize(i,n)}}},{key:"eatExtCloseTag",value:function(t){var e=this;return function(i,n){return i.next(),i.next(),n.tokenize=e.eatTagName(t.length,!0,!1),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(t),n)}}},{key:"eatExtTokens",value:function(t){var e=this;return function(i,n){var s;return!1===n.extMode?(s=Mc.tags.extTag,i.skipToEnd()):s="mw-tag-".concat(n.extName," ")+n.extMode.token(i,n.extState,!1===t),i.eol()&&(!1!==t&&(i.string=t),n.tokenize=n.stack.pop()),e.makeLocalStyle(s,n)}}},{key:"eatStartTable",value:function(t,e){return t.match("{|"),t.eatSpace(),e.tokenize=this.inTableDefinition.bind(this),Mc.tags.tableBracket}},{key:"inTableDefinition",value:function(t,e){return t.sol()?(e.tokenize=this.inTable.bind(this),this.inTable(t,e)):this.eatWikiText(Mc.tags.tableDefinition)(t,e)}},{key:"inTable",value:function(t,e){if(t.sol()){if(t.eatSpace(),t.eat("|"))return t.eat("-")?(t.eatSpace(),e.tokenize=this.inTableDefinition.bind(this),this.makeLocalStyle(Mc.tags.tableDelimiter,e)):t.eat("+")?(t.eatSpace(),e.tokenize=this.eatTableRow(!0,!1,!0),this.makeLocalStyle(Mc.tags.tableDelimiter,e)):t.eat("}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.tableBracket,e)):(t.eatSpace(),e.tokenize=this.eatTableRow(!0,!1),this.makeLocalStyle(Mc.tags.tableDelimiter,e));if(t.eat("!"))return t.eatSpace(),e.tokenize=this.eatTableRow(!0,!0),this.makeLocalStyle(Mc.tags.tableDelimiter,e)}return this.eatWikiText("")(t,e)}},{key:"eatTableRow",value:function(t,e,i){var n=this,s="";return i?s=Mc.tags.tableCaption:e&&(s=Mc.tags.strong),function(r,o){if(r.sol()){if(r.match(/^[\s\u00a0]*[|!]/,!1))return o.tokenize=n.inTable.bind(n),n.inTable(r,o)}else{if(r.match(/^[^'|{[<&~!]+/))return n.makeStyle(s,o);if(r.match("||")||e&&r.match("!!"))return n.isBold=!1,n.isItalic=!1,o.tokenize=n.eatTableRow(!0,e,i),n.makeLocalStyle(Mc.tags.tableDelimiter,o);if(t&&r.eat("|"))return o.tokenize=n.eatTableRow(!1,e,i),n.makeLocalStyle(Mc.tags.tableDelimiter,o)}return n.eatWikiText(s)(r,o)}}},{key:"eatFreeExternalLinkProtocol",value:function(t,e){return t.match(this.urlProtocols),e.tokenize=this.eatFreeExternalLink.bind(this),this.makeLocalStyle(Mc.tags.freeExtLinkProtocol,e)}},{key:"eatFreeExternalLink",value:function(t,e){if(t.eol());else if(t.match(/^[^\s\u00a0{[\]<>~).,']*/))if("~"===t.peek()){if(!t.match(/^~~~+/,!1))return t.match(/^~*/),this.makeLocalStyle(Mc.tags.freeExtLink,e)}else if("{"===t.peek()){if(!t.match("{{",!1))return t.next(),this.makeLocalStyle(Mc.tags.freeExtLink,e)}else if("'"===t.peek()){if(!t.match("''",!1))return t.next(),this.makeLocalStyle(Mc.tags.freeExtLink,e)}else if(t.match(/^[).,]+(?=[^\s\u00a0{[\]<>~).,])/))return this.makeLocalStyle(Mc.tags.freeExtLink,e);return e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.freeExtLink,e)}},{key:"eatWikiText",value:function(t){var e=this;return function(i,n){var s,r,o,l,a,h,c;if(i.sol()){if(!i.match("//",!1)&&i.match(e.urlProtocols))return n.stack.push(n.tokenize),n.tokenize=e.eatFreeExternalLink.bind(e),e.makeLocalStyle(Mc.tags.freeExtLinkProtocol,n);switch(s=i.next()){case"-":if(i.match(/^---+/))return Mc.tags.hr;break;case"=":if(r=i.match(/^(={0,5})(.+?(=\1\s*)(.*\S).*?)?)$/))return i.backUp(r[2].length),n.stack.push(n.tokenize),n.tokenize=e.eatSectionHeader(r[3].length),Mc.tags.sectionHeader+" "+Mc.tags["sectionHeader".concat(r[1].length+1)];break;case"*":case"#":case";":return i.match(/^[*#;:]*/),Mc.tags.list;case":":return i.match(/^:*{\|/,!1)&&(n.stack.push(n.tokenize),n.tokenize=e.eatStartTable.bind(e)),i.match(/^[*#;:]*/),Mc.tags.indenting;case" ":if(!i.match(/^[\s\u00a0]*:*{\|/,!1))return Mc.tags.skipFormatting;if(i.eatSpace(),i.match(/^:+/))return n.stack.push(n.tokenize),n.tokenize=e.eatStartTable.bind(e),Mc.tags.indenting;i.eat("{");case"{":if(i.eat("|"))return i.eatSpace(),n.stack.push(n.tokenize),n.tokenize=e.inTableDefinition.bind(e),Mc.tags.tableBracket}}else s=i.next();switch(s){case"&":return e.makeStyle(e.eatHtmlEntity(i,t),n);case"'":if(i.match(/^'*(?=''''')/)||i.match(/^'''(?!')/,!1))break;if(i.match("''"))return e.firstSingleLetterWord||i.match("''",!1)||e.prepareItalicForCorrection(i),e.isBold=!e.isBold,e.makeLocalStyle(Mc.tags.apostrophesBold,n);if(i.eat("'"))return e.isItalic=!e.isItalic,e.makeLocalStyle(Mc.tags.apostrophesItalic,n);break;case"[":if(i.eat("[")){if(i.eatSpace(),/[^\]|[]/.test(i.peek()))return n.nLink++,n.stack.push(n.tokenize),n.tokenize=e.inLink.bind(e),e.makeLocalStyle(Mc.tags.linkBracket,n)}else if(o=i.match(e.urlProtocols))return n.nLink++,i.backUp(o[0].length),n.stack.push(n.tokenize),n.tokenize=e.eatExternalLinkProtocol(o[0].length),e.makeLocalStyle(Mc.tags.extLinkBracket,n);break;case"{":if(i.match(/^{{(?!{|[^{}]*}}(?!}))/))return i.eatSpace(),n.stack.push(n.tokenize),n.tokenize=e.inVariable.bind(e),e.makeLocalStyle(Mc.tags.templateVariableBracket,n);if(i.match(/^{(?!{(?!{))[\s\u00a0]*/))return"#"===i.peek()?(n.nExt++,n.stack.push(n.tokenize),n.tokenize=e.inParserFunctionName.bind(e),e.makeLocalStyle(Mc.tags.parserFunctionBracket,n)):!(l=i.match(/^([^\s\u00a0}[\]<{'|&:]+)(:|[\s\u00a0]*)(\}\}?)?(.)?/))||(i.backUp(l[0].length),":"!==l[2]&&void 0!==l[4]&&"}}"!==l[3]||!(l[1].toLowerCase()in e.config.functionSynonyms[0])&&!(l[1]in e.config.functionSynonyms[1]))?(n.nTemplate++,n.stack.push(n.tokenize),n.tokenize=e.eatTemplatePageName(!1),e.makeLocalStyle(Mc.tags.templateBracket,n)):(n.nExt++,n.stack.push(n.tokenize),n.tokenize=e.inParserFunctionName.bind(e),e.makeLocalStyle(Mc.tags.parserFunctionBracket,n));break;case"<":if(a=!!i.eat("/"),h=i.match(/^[^>/\s\u00a0.*,[\]{}$^+?|/\\'`~<=!@#%&()-]+/),i.match("!--"))return c=e.eatBlock(Mc.tags.comment,"--\x3e"),n.stack.push(n.tokenize),n.tokenize=c,c(i,n);if(h){if((h=h[0].toLowerCase())in e.config.tags)return!0===a?Mc.tags.error:(i.backUp(h.length),n.stack.push(n.tokenize),n.tokenize=e.eatTagName(h.length,a,!1),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(h),n));if(h in Mc.permittedHtmlTags)return!0===a&&h!==n.inHtmlTag.pop()?(i.pos++,Mc.tags.error):!0===a&&h in Mc.implicitlyClosedHtmlTags?Mc.tags.error:(i.backUp(h.length),n.stack.push(n.tokenize),n.tokenize=e.eatTagName(h.length,a||h in Mc.implicitlyClosedHtmlTags,!0),e.makeLocalStyle(Mc.tags.htmlTagBracket,n));i.backUp(h.length)}break;case"~":if(i.match(/^~{2,4}/))return Mc.tags.signature;break;case"_":for(r=1;i.eat("_");)r++;if(r>2)return i.eol()||i.backUp(2),e.makeStyle(t,n);if(2===r&&(l=i.match(/^([^\s\u00a0>}[\]<{'|&:~]+?)__/))&&l[0])return"__"+l[0].toLowerCase()in e.config.doubleUnderscore[0]||"__"+l[0]in e.config.doubleUnderscore[1]?Mc.tags.doubleUnderscore:(i.eol()||i.backUp(2),e.makeStyle(t,n));break;default:if(/[\s\u00a0]/.test(s)&&(i.eatSpace(),i.match(e.urlProtocols,!1)&&!i.match("//")))return n.stack.push(n.tokenize),n.tokenize=e.eatFreeExternalLinkProtocol.bind(e),e.makeStyle(t,n)}return i.match(/^[^\s\u00a0_>}[\]<{'|&:~=]+/),e.makeStyle(t,n)}}},{key:"prepareItalicForCorrection",value:function(t){var e=t.pos,i=t.string.slice(0,e-3),n=i.slice(-1),s=i.slice(-2,-1);if(" "===n){if(this.firstMultiLetterWord||this.firstSpace)return;this.firstSpace=e}else if(" "===s)this.firstSingleLetterWord=e;else{if(this.firstMultiLetterWord)return;this.firstMultiLetterWord=e}this.wasBold=this.isBold,this.wasItalic=this.isItalic}},{key:"mediawiki",get:function(){var t=this;return{name:"mediawiki",startState:function(){return{tokenize:t.eatWikiText(""),stack:[],inHtmlTag:[],extName:!1,extMode:!1,extState:!1,nTemplate:0,nLink:0,nExt:0}},copyState:function(t){return{tokenize:t.tokenize,stack:t.stack.concat([]),inHtmlTag:t.inHtmlTag.concat([]),extName:t.extName,extMode:t.extMode,extState:!1!==t.extMode&&t.extMode.copyState(t.extState),nTemplate:t.nTemplate,nLink:t.nLink,nExt:t.nExt}},token:function(e,i){var n,s,r,o,l=[],a=[];if(t.oldTokens.length>0)return r=t.oldTokens.shift(),e.pos=r.pos,i=r.state,r.style;e.sol()&&(t.isBold=!1,t.isItalic=!1,t.firstSingleLetterWord=null,t.firstMultiLetterWord=null,t.firstSpace=null);do{if(n=i.tokenize(e,i),!(o=t.firstSingleLetterWord||t.firstMultiLetterWord||t.firstSpace))return t.oldStyle=n,n;o!==s&&(s=o,a.length>0&&(l=l.concat(a),a=[])),a.push({pos:e.pos,style:n,state:(i.extMode||t.mediawiki).copyState(i)})}while(!e.eol());if(t.isBold&&t.isItalic){if(t.isItalic=t.wasItalic,t.isBold=t.wasBold,t.firstSingleLetterWord=null,t.firstMultiLetterWord=null,t.firstSpace=null,!(l.length>0))return e.pos=a[0].pos-2,t.oldStyle;l[l.length-1].pos++,t.oldTokens=l}else t.oldTokens=l.concat(a);return r=t.oldTokens.shift(),e.pos=r.pos,i=r.state,r.style},blankLine:function(t){t.extMode&&t.extMode.blankLine&&t.extMode.blankLine(t.extState)},tokenTable:this.tokenTable}}}],i&&Cc(e.prototype,i),Object.defineProperty(e,"prototype",{writable:!1}),t}();mw.loader.getState("ext.wikiEditor")&&mw.hook("wikiEditor.toolbarReady").add((function(t){new gc(t,function(){var t=new Dc((arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)||mw.config.get("extCodeMirrorConfig")).mediawiki,e=bl.define(t),i=function(t,e){let i,n=[el];return t instanceof Yo&&(t.module&&n.push(Es.styleModule.of(t.module)),i=t.themeType),i?n.push(Xo.computeN([Es.darkTheme],(e=>e.facet(Es.darkTheme)==("dark"==i)?[t]:[]))):n.push(Xo.of(t)),n}(Yo.define(Mc.getTagStyles(t)));return new Ho(e,i)}()).addCodeMirrorToWikiEditor()}))})();
+(()=>{"use strict";class t{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,n){let s=[];return this.decompose(0,t,s,2),n.length&&n.decompose(0,n.length,s,3),this.decompose(e,this.length,s,1),i.from(s,this.length-(e-t)+n.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){let n=[];return this.decompose(t,e,n,0),i.from(n,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=new r(this),s=new r(t);for(let t=e,r=e;;){if(n.next(t),s.next(t),t=0,n.lineBreak!=s.lineBreak||n.done!=s.done||n.value!=s.value)return!1;if(r+=n.value.length,n.done||r>=i)return!0}}iter(t=1){return new r(this,t)}iterRange(t,e=this.length){return new o(this,t,e)}iterLines(t,e){let i;if(null==t)i=this.iter();else{null==e&&(e=this.lines+1);let n=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new l(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(n){if(0==n.length)throw new RangeError("A document must have at least one line");return 1!=n.length||n[0]?n.length<=32?new e(n):i.from(e.split(n,[])):t.empty}}class e extends t{constructor(t,e=function(t){let e=-1;for(let i of t)e+=i.length+1;return e}(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,n){for(let s=0;;s++){let r=this.text[s],o=n+r.length;if((e?i:o)>=t)return new a(n,o,i,r);n=o+1,i++}}decompose(t,i,r,o){let l=t<=0&&i>=this.length?this:new e(s(this.text,t,i),Math.min(i,this.length)-Math.max(0,t));if(1&o){let t=r.pop(),i=n(l.text,t.text.slice(),0,l.length);if(i.length<=32)r.push(new e(i,t.length+l.length));else{let t=i.length>>1;r.push(new e(i.slice(0,t)),new e(i.slice(t)))}}else r.push(l)}replace(t,r,o){if(!(o instanceof e))return super.replace(t,r,o);let l=n(this.text,n(o.text,s(this.text,0,t)),r),a=this.length+o.length-(r-t);return l.length<=32?new e(l,a):i.from(e.split(l,[]),a)}sliceString(t,e=this.length,i="\n"){let n="";for(let s=0,r=0;s<=e&&rt&&r&&(n+=i),ts&&(n+=o.slice(Math.max(0,t-s),e-s)),s=l+1}return n}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,i){let n=[],s=-1;for(let r of t)n.push(r),s+=r.length+1,32==n.length&&(i.push(new e(n,s)),n=[],s=-1);return s>-1&&i.push(new e(n,s)),i}}class i extends t{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let e of t)this.lines+=e.lines}lineInner(t,e,i,n){for(let s=0;;s++){let r=this.children[s],o=n+r.length,l=i+r.lines-1;if((e?l:o)>=t)return r.lineInner(t,e,i,n);n=o+1,i=l+1}}decompose(t,e,i,n){for(let s=0,r=0;r<=e&&s=r){let s=n&((r<=t?1:0)|(l>=e?2:0));r>=t&&l<=e&&!s?i.push(o):o.decompose(t-r,e-r,i,s)}r=l+1}}replace(t,e,n){if(n.lines=r&&e<=l){let a=o.replace(t-r,e-r,n),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let r=this.children.slice();return r[s]=a,new i(r,this.length-(e-t)+n.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,n)}sliceString(t,e=this.length,i="\n"){let n="";for(let s=0,r=0;st&&s&&(n+=i),tr&&(n+=o.sliceString(t-r,e-r,i)),r=l+1}return n}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof i))return 0;let n=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return n;let i=this.children[s],a=t.children[r];if(i!=a)return n+i.scanIdentical(a,e);n+=i.length+1}}static from(t,n=t.reduce(((t,e)=>t+e.length+1),-1)){let s=0;for(let e of t)s+=e.lines;if(s<32){let i=[];for(let e of t)e.flatten(i);return new e(i,n)}let r=Math.max(32,s>>5),o=r<<1,l=r>>1,a=[],h=0,c=-1,u=[];function f(t){let n;if(t.lines>o&&t instanceof i)for(let e of t.children)f(e);else t.lines>l&&(h>l||!h)?(d(),a.push(t)):t instanceof e&&h&&(n=u[u.length-1])instanceof e&&t.lines+n.lines<=32?(h+=t.lines,c+=t.length+1,u[u.length-1]=new e(n.text.concat(t.text),n.length+1+t.length)):(h+t.lines>r&&d(),h+=t.lines,c+=t.length+1,u.push(t))}function d(){0!=h&&(a.push(1==u.length?u[0]:i.from(u,c)),c=-1,h=u.length=0)}for(let e of t)f(e);return d(),1==a.length?a[0]:new i(a,n)}}function n(t,e,i=0,n=1e9){for(let s=0,r=0,o=!0;r=i&&(a>n&&(l=l.slice(0,n-s)),s0?1:(t instanceof e?t.text.length:t.children.length)<<1]}nextInner(t,i){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,s=this.nodes[n],r=this.offsets[n],o=r>>1,l=s instanceof e?s.text.length:s.children.length;if(o==(i>0?l:0)){if(0==n)return this.done=!0,this.value="",this;i>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&r)==(i>0?0:1)){if(this.offsets[n]+=i,0==t)return this.lineBreak=!0,this.value="\n",this;t--}else if(s instanceof e){let e=s.text[o+(i<0?-1:0)];if(this.offsets[n]+=i,e.length>Math.max(0,t))return this.value=0==t?e:i>0?e.slice(t):e.slice(0,e.length-t),this;t-=e.length}else{let r=s.children[o+(i<0?-1:0)];t>r.length?(t-=r.length,this.offsets[n]+=i):(i<0&&this.offsets[n]--,this.nodes.push(r),this.offsets.push(i>0?1:(r instanceof e?r.text.length:r.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}}class o{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new r(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:n}=this.cursor.next(t);return this.pos+=(n.length+t)*e,this.value=n.length<=i?n:e<0?n.slice(n.length-i):n.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&""!=this.value}}class l{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}}"undefined"!=typeof Symbol&&(t.prototype[Symbol.iterator]=function(){return this.iter()},r.prototype[Symbol.iterator]=o.prototype[Symbol.iterator]=l.prototype[Symbol.iterator]=function(){return this});class a{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n}get length(){return this.to-this.from}}let h="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((t=>t?parseInt(t,36):1));for(let t=1;tt)return h[e-1]<=t;return!1}function u(t){return t>=127462&&t<=127487}const f=8205;function d(t,e,i=!0,n=!0){return(i?p:g)(t,e,n)}function p(t,e,i){if(e==t.length)return e;e&&m(t.charCodeAt(e))&&w(t.charCodeAt(e-1))&&e--;let n=y(t,e);for(e+=k(n);e=0&&u(y(t,n));)i++,n-=2;if(i%2==0)break;e+=2}}}return e}function g(t,e,i){for(;e>0;){let n=p(t,e-2,i);if(n=56320&&t<57344}function w(t){return t>=55296&&t<56320}function y(t,e){let i=t.charCodeAt(e);if(!w(i)||e+1==t.length)return i;let n=t.charCodeAt(e+1);return m(n)?n-56320+(i-55296<<10)+65536:i}function v(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}function k(t){return t<65536?1:2}const b=/\r\n?|\n/;var x=function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t}(x||(x={}));class S{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return s+(t-n);s+=o}else{if(i!=x.Simple&&a>=t&&(i==x.TrackDel&&nt||i==x.TrackBefore&&nt))return null;if(a>t||a==t&&e<0&&!o)return t==n||e<0?s:s+l;s+=l}n=a}if(t>n)throw new RangeError(`Position ${t} is out of range for changeset of length ${n}`);return s}touchesRange(t,e=t){for(let i=0,n=0;i=0&&n<=e&&s>=t)return!(ne)||"cover";n=s}return!1}toString(){let t="";for(let e=0;e=0?":"+n:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some((t=>"number"!=typeof t)))throw new RangeError("Invalid JSON representation of ChangeDesc");return new S(t)}static create(t){return new S(t)}}class A extends S{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return C(this,((e,i,n,s,r)=>t=t.replace(n,n+(i-e),r)),!1),t}mapDesc(t,e=!1){return O(this,t,e,!0)}invert(e){let i=this.sections.slice(),n=[];for(let s=0,r=0;s=0){i[s]=l,i[s+1]=o;let a=s>>1;for(;n.length0&&T(i,e,s.text),s.forward(t),o+=t}let a=t[r++];for(;o>1].toJSON()))}return t}static of(e,i,n){let s=[],r=[],o=0,l=null;function a(t=!1){if(!t&&!s.length)return;ol||e<0||l>i)throw new RangeError(`Invalid change range ${e} to ${l} (in doc of length ${i})`);let u=c?"string"==typeof c?t.of(c.split(n||b)):c:t.empty,f=u.length;if(e==l&&0==f)return;eo&&M(s,e-o,-1),M(s,l-e,f),T(r,s,u),o=l}}(e),a(!l),l}static empty(t){return new A(t?[t,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let i=[],n=[];for(let s=0;se&&"string"!=typeof t)))throw new RangeError("Invalid JSON representation of ChangeSet");if(1==r.length)i.push(r[0],0);else{for(;n.length=0&&i<=0&&i==t[s+1]?t[s]+=e:0==e&&0==t[s]?t[s+1]+=i:n?(t[s]+=e,t[s+1]+=i):t.push(e,i)}function T(e,i,n){if(0==n.length)return;let s=i.length-2>>1;if(s>1])),!(n||l==e.sections.length||e.sections[l+1]<0);)a=e.sections[l++],h=e.sections[l++];i(r,c,o,u,f),r=c,o=u}}}function O(t,e,i,n=!1){let s=[],r=n?[]:null,o=new E(t),l=new E(e);for(let t=-1;;)if(-1==o.ins&&-1==l.ins){let t=Math.min(o.len,l.len);M(s,t,-1),o.forward(t),l.forward(t)}else if(l.ins>=0&&(o.ins<0||t==o.i||0==o.off&&(l.len=0&&t=0)){if(o.done&&l.done)return r?A.createSet(s,r):S.create(s);throw new Error("Mismatched change set lengths")}{let e=0,i=o.len;for(;i;)if(-1==l.ins){let t=Math.min(i,l.len);e+=t,i-=t,l.forward(t)}else{if(!(0==l.ins&&l.lene||o.ins>=0&&o.len>e)&&(t||n.length>i),r.forward2(e),o.forward(e)}}else M(n,0,o.ins,t),s&&T(s,n,o.text),o.next()}}class E{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return i>=e.length?t.empty:e[i]}textBit(e){let{inserted:i}=this.set,n=this.i-2>>1;return n>=i.length&&!e?t.empty:i[n].slice(this.off,null==e?void 0:this.off+e)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){-1==this.ins?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}}class L{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return 16&this.flags?this.to:this.from}get head(){return 16&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 4&this.flags?-1:8&this.flags?1:0}get bidiLevel(){let t=3&this.flags;return 3==t?null:t}get goalColumn(){let t=this.flags>>5;return 33554431==t?void 0:t}map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),n=t.mapPos(this.to,-1)),i==this.from&&n==this.to?this:new L(i,n,this.flags)}extend(t,e=t){if(t<=this.anchor&&e>=this.anchor)return B.range(t,e);let i=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return B.range(this.anchor,i)}eq(t){return this.anchor==t.anchor&&this.head==t.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||"number"!=typeof t.anchor||"number"!=typeof t.head)throw new RangeError("Invalid JSON representation for SelectionRange");return B.range(t.anchor,t.head)}static create(t,e,i){return new L(t,e,i)}}class B{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:B.create(this.ranges.map((i=>i.map(t,e))),this.mainIndex)}eq(t){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let e=0;et.toJSON())),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||"number"!=typeof t.main||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new B(t.ranges.map((t=>L.fromJSON(t))),t.main)}static single(t,e=t){return new B([B.range(t,e)],0)}static create(t,e=0){if(0==t.length)throw new RangeError("A selection needs at least one range");for(let i=0,n=0;nt?4:0)|s)}static normalized(t,e=0){let i=t[e];t.sort(((t,e)=>t.from-e.from)),e=t.indexOf(i);for(let i=1;in.head?B.range(o,r):B.range(r,o))}}return new B(t,e)}}function P(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Selection points outside of document")}let N=0;class R{constructor(t,e,i,n,s){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=n,this.id=N++,this.default=t([]),this.extensions="function"==typeof s?s(this):s}static define(t={}){return new R(t.combine||(t=>t),t.compareInput||((t,e)=>t===e),t.compare||(t.combine?(t,e)=>t===e:I),!!t.static,t.enables)}of(t){return new H([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new H(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new H(t,this,2,e)}from(t,e){return e||(e=t=>t),this.compute([t],(i=>e(i.field(t))))}}function I(t,e){return t==e||t.length==e.length&&t.every(((t,i)=>t===e[i]))}class H{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this.value=n,this.id=N++}dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,s=this.id,r=t[s]>>1,o=2==this.type,l=!1,a=!1,h=[];for(let i of this.dependencies)"doc"==i?l=!0:"selection"==i?a=!0:0==(1&(null!==(e=t[i.id])&&void 0!==e?e:1))&&h.push(t[i.id]);return{create:t=>(t.values[r]=i(t),1),update(t,e){if(l&&e.docChanged||a&&(e.docChanged||e.selection)||W(t,h)){let e=i(t);if(o?!z(e,t.values[r],n):!n(e,t.values[r]))return t.values[r]=e,1}return 0},reconfigure:(t,e)=>{let l,a=e.config.address[s];if(null!=a){let s=X(e,a);if(this.dependencies.every((i=>i instanceof R?e.facet(i)===t.facet(i):!(i instanceof _)||e.field(i,!1)==t.field(i,!1)))||(o?z(l=i(t),s,n):n(l=i(t),s)))return t.values[r]=s,0}else l=i(t);return t.values[r]=l,1}}}}function z(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[e.id])),s=i.map((t=>t.type)),r=n.filter((t=>!(1&t))),o=t[e.id]>>1;function l(t){let i=[];for(let e=0;et===e),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(F).find((t=>t.field==this));return((null==e?void 0:e.create)||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:t=>(t.values[e]=this.create(t),1),update:(t,i)=>{let n=t.values[e],s=this.updateF(n,i);return this.compareF(n,s)?0:(t.values[e]=s,1)},reconfigure:(t,i)=>null!=i.config.address[this.id]?(t.values[e]=i.field(this),0):(t.values[e]=this.create(t),1)}}init(t){return[this,F.of({field:this,create:t})]}get extension(){return this}}function q(t){return e=>new K(e,t)}const j={highest:q(0),high:q(1),default:q(2),low:q(3),lowest:q(4)};class K{constructor(t,e){this.inner=t,this.prec=e}}class G{of(t){return new U(this,t)}reconfigure(t){return G.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}}class U{constructor(t,e){this.compartment=t,this.inner=e}}class J{constructor(t,e,i,n,s,r){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=n,this.staticValues=s,this.facets=r,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let n=[],s=Object.create(null),r=new Map;for(let i of function(t,e,i){let n=[[],[],[],[],[]],s=new Map;return function t(r,o){let l=s.get(r);if(null!=l){if(l<=o)return;let t=n[l].indexOf(r);t>-1&&n[l].splice(t,1),r instanceof U&&i.delete(r.compartment)}if(s.set(r,o),Array.isArray(r))for(let e of r)t(e,o);else if(r instanceof U){if(i.has(r.compartment))throw new RangeError("Duplicate use of compartment in extensions");let n=e.get(r.compartment)||r.inner;i.set(r.compartment,n),t(n,o)}else if(r instanceof K)t(r.inner,r.prec);else if(r instanceof _)n[o].push(r),r.provides&&t(r.provides,o);else if(r instanceof H)n[o].push(r),r.facet.extensions&&t(r.facet.extensions,2);else{let e=r.extension;if(!e)throw new Error(`Unrecognized extension value in extension set (${r}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);t(e,o)}}(t,2),n.reduce(((t,e)=>t.concat(e)))}(t,e,r))i instanceof _?n.push(i):(s[i.facet.id]||(s[i.facet.id]=[])).push(i);let o=Object.create(null),l=[],a=[];for(let t of n)o[t.id]=a.length<<1,a.push((e=>t.slot(e)));let h=null==i?void 0:i.config.facets;for(let t in s){let e=s[t],n=e[0].facet,r=h&&h[t]||[];if(e.every((t=>0==t.type)))if(o[n.id]=l.length<<1|1,I(r,e))l.push(i.facet(n));else{let t=n.combine(e.map((t=>t.value)));l.push(i&&n.compare(t,i.facet(n))?i.facet(n):t)}else{for(let t of e)0==t.type?(o[t.id]=l.length<<1|1,l.push(t.value)):(o[t.id]=a.length<<1,a.push((e=>t.dynamicSlot(e))));o[n.id]=a.length<<1,a.push((t=>V(t,n,e)))}}let c=a.map((t=>t(o)));return new J(t,r,c,o,l,s)}}function Y(t,e){if(1&e)return 2;let i=e>>1,n=t.status[i];if(4==n)throw new Error("Cyclic dependency between fields and/or facets");if(2&n)return n;t.status[i]=4;let s=t.computeSlot(t,t.config.dynamicSlots[i]);return t.status[i]=2|s}function X(t,e){return 1&e?t.config.staticValues[e>>1]:t.values[e>>1]}const Q=R.define(),Z=R.define({combine:t=>t.some((t=>t)),static:!0}),tt=R.define({combine:t=>t.length?t[0]:void 0,static:!0}),et=R.define(),it=R.define(),nt=R.define(),st=R.define({combine:t=>!!t.length&&t[0]});class rt{constructor(t,e){this.type=t,this.value=e}static define(){return new ot}}class ot{of(t){return new rt(this,t)}}class lt{constructor(t){this.map=t}of(t){return new at(this,t)}}class at{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return void 0===e?void 0:e==this.value?this:new at(this.type,e)}is(t){return this.type==t}static define(t={}){return new lt(t.map||(t=>t))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){let t=n.map(e);t&&i.push(t)}return i}}at.reconfigure=at.define(),at.appendConfig=at.define();class ht{constructor(t,e,i,n,s,r){this.startState=t,this.changes=e,this.selection=i,this.effects=n,this.annotations=s,this.scrollIntoView=r,this._doc=null,this._state=null,i&&P(i,e.newLength),s.some((t=>t.type==ht.time))||(this.annotations=s.concat(ht.time.of(Date.now())))}static create(t,e,i,n,s,r){return new ht(t,e,i,n,s,r)}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(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(ht.userEvent);return!(!e||!(e==t||e.length>t.length&&e.slice(0,t.length)==t&&"."==e[t.length]))}}function ct(t,e){let i=[];for(let n=0,s=0;;){let r,o;if(n=t[n]))r=t[n++],o=t[n++];else{if(!(s=0;s--){let r=i[s](t);r&&Object.keys(r).length&&(n=ut(n,ft(e,r,t.changes.newLength),!0))}return n==t?t:ht.create(e,t.changes,t.selection,n.effects,n.annotations,n.scrollIntoView)}(i?function(t){let e=t.startState,i=!0;for(let n of e.facet(et)){let e=n(t);if(!1===e){i=!1;break}Array.isArray(e)&&(i=!0===i?e:ct(i,e))}if(!0!==i){let n,s;if(!1===i)s=t.changes.invertedDesc,n=A.empty(e.doc.length);else{let e=t.changes.filter(i);n=e.changes,s=e.filtered.mapDesc(e.changes).invertedDesc}t=ht.create(e,n,t.selection&&t.selection.map(s),at.mapEffects(t.effects,s),t.annotations,t.scrollIntoView)}let n=e.facet(it);for(let i=n.length-1;i>=0;i--){let s=n[i](t);t=s instanceof ht?s:Array.isArray(s)&&1==s.length&&s[0]instanceof ht?s[0]:dt(e,gt(s),!1)}return t}(s):s)}ht.time=rt.define(),ht.userEvent=rt.define(),ht.addToHistory=rt.define(),ht.remote=rt.define();const pt=[];function gt(t){return null==t?pt:Array.isArray(t)?t:[t]}var mt=function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t}(mt||(mt={}));const wt=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let yt;try{yt=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(t){}class vt{constructor(t,e,i,n,s,r){this.config=t,this.doc=e,this.selection=i,this.values=n,this.status=t.statusTemplate.slice(),this.computeSlot=s,r&&(r._state=this);for(let t=0;ts.set(e,t))),i=null),s.set(e.value.compartment,e.value.extension)):e.is(at.reconfigure)?(i=null,n=e.value):e.is(at.appendConfig)&&(i=null,n=gt(n).concat(e.value));i?e=t.startState.values.slice():(i=J.resolve(n,s,this),e=new vt(i,this.doc,this.selection,i.dynamicSlots.map((()=>null)),((t,e)=>e.reconfigure(t,this)),null).values),new vt(i,t.newDoc,t.newSelection,e,((e,i)=>i.update(e,t)),t)}replaceSelection(t){return"string"==typeof t&&(t=this.toText(t)),this.changeByRange((e=>({changes:{from:e.from,to:e.to,insert:t},range:B.cursor(e.from+t.length)})))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(i.changes),s=[i.range],r=gt(i.effects);for(let i=1;is.spec.fromJSON(r,t))))}return vt.create({doc:t.doc,selection:B.fromJSON(t.selection),extensions:e.extensions?n.concat([e.extensions]):n})}static create(e={}){let i=J.resolve(e.extensions||[],new Map),n=e.doc instanceof t?e.doc:t.of((e.doc||"").split(i.staticFacet(vt.lineSeparator)||b)),s=e.selection?e.selection instanceof B?e.selection:B.single(e.selection.anchor,e.selection.head):B.single(0);return P(s,n.length),i.staticFacet(Z)||(s=s.asSingle()),new vt(i,n,s,i.dynamicSlots.map((()=>null)),((t,e)=>e.create(t)),null)}get tabSize(){return this.facet(vt.tabSize)}get lineBreak(){return this.facet(vt.lineSeparator)||"\n"}get readOnly(){return this.facet(st)}phrase(t,...e){for(let e of this.facet(vt.phrases))if(Object.prototype.hasOwnProperty.call(e,t)){t=e[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,((t,i)=>{if("$"==i)return"$";let n=+(i||1);return!n||n>e.length?t:e[n-1]}))),t}languageDataAt(t,e,i=-1){let n=[];for(let s of this.facet(Q))for(let r of s(this,e,i))Object.prototype.hasOwnProperty.call(r,t)&&n.push(r[t]);return n}charCategorizer(t){return e=this.languageDataAt("wordChars",t).join(""),t=>{if(!/\S/.test(t))return mt.Space;if(function(t){if(yt)return yt.test(t);for(let e=0;e"€"&&(i.toUpperCase()!=i.toLowerCase()||wt.test(i)))return!0}return!1}(t))return mt.Word;for(let i=0;i-1)return mt.Word;return mt.Other};var e}wordAt(t){let{text:e,from:i,length:n}=this.doc.lineAt(t),s=this.charCategorizer(t),r=t-i,o=t-i;for(;r>0;){let t=d(e,r,!1);if(s(e.slice(t,r))!=mt.Word)break;r=t}for(;ot.length?t[0]:4}),vt.lineSeparator=tt,vt.readOnly=st,vt.phrases=R.define({compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.length&&i.every((i=>t[i]==e[i]))}}),vt.languageData=Q,vt.changeFilter=et,vt.transactionFilter=it,vt.transactionExtender=nt,G.reconfigure=at.define();class bt{eq(t){return this==t}range(t,e=t){return xt.create(t,e,this)}}bt.prototype.startSide=bt.prototype.endSide=0,bt.prototype.point=!1,bt.prototype.mapMode=x.TrackDel;class xt{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new xt(t,e,i)}}function St(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class At{constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,n=0){let s=i?this.to:this.from;for(let r=n,o=s.length;;){if(r==o)return r;let n=r+o>>1,l=s[n]-t||(i?this.value[n].endSide:this.value[n].startSide)-e;if(n==r)return l>=0?r:o;l>=0?o=n:r=n+1}}between(t,e,i,n){for(let s=this.findIndex(e,-1e9,!0),r=this.findIndex(i,1e9,!1,s);sh||a==h&&c.startSide>0&&c.endSide<=0)continue;(h-a||c.endSide-c.startSide)<0||(r<0&&(r=a),c.point&&(o=Math.max(o,h-a)),i.push(c),n.push(a-r),s.push(h-r))}return{mapped:i.length?new At(n,s,i,o):null,pos:r}}}class Mt{constructor(t,e,i,n){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=n}static create(t,e,i,n){return new Mt(t,e,i,n)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:n=0,filterTo:s=this.length}=t,r=t.filter;if(0==e.length&&!r)return this;if(i&&(e=e.slice().sort(St)),this.isEmpty)return e.length?Mt.of(e):this;let o=new Ot(this,null,-1).goto(0),l=0,a=[],h=new Tt;for(;o.value||l=0){let t=e[l++];h.addInner(t.from,t.to,t.value)||a.push(t)}else 1==o.rangeIndex&&o.chunkIndexthis.chunkEnd(o.chunkIndex)||so.to||s=s&&t<=s+r.length&&!1===r.between(s,t-s,e-s,i))return}this.nextLayer.between(t,e,i)}}iter(t=0){return Dt.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return Dt.from(t).goto(e)}static compare(t,e,i,n,s=-1){let r=t.filter((t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=s)),o=e.filter((t=>t.maxPoint>0||!t.isEmpty&&t.maxPoint>=s)),l=Ct(r,o,i),a=new Lt(r,l,s),h=new Lt(o,l,s);i.iterGaps(((t,e,i)=>Bt(a,t,h,e,i,n))),i.empty&&0==i.length&&Bt(a,0,h,0,0,n)}static eq(t,e,i=0,n){null==n&&(n=999999999);let s=t.filter((t=>!t.isEmpty&&e.indexOf(t)<0)),r=e.filter((e=>!e.isEmpty&&t.indexOf(e)<0));if(s.length!=r.length)return!1;if(!s.length)return!0;let o=Ct(s,r),l=new Lt(s,o,0).goto(i),a=new Lt(r,o,0).goto(i);for(;;){if(l.to!=a.to||!Pt(l.active,a.active)||l.point&&(!a.point||!l.point.eq(a.point)))return!1;if(l.to>n)return!0;l.next(),a.next()}}static spans(t,e,i,n,s=-1){let r=new Lt(t,null,s).goto(e),o=e,l=r.openStart;for(;;){let t=Math.min(r.to,i);if(r.point){let i=r.activeForPoint(r.to),s=r.pointFromo&&(n.span(o,t,r.active,l),l=r.openEnd(t));if(r.to>i)return l+(r.point&&r.to>i?1:0);o=r.to,r.next()}}static of(t,e=!1){let i=new Tt;for(let n of t instanceof xt?[t]:e?function(t){if(t.length>1)for(let e=t[0],i=1;i0)return t.slice().sort(St);e=n}return t}(t):t)i.add(n.from,n.to,n.value);return i.finish()}}Mt.empty=new Mt([],[],null,-1),Mt.empty.nextLayer=Mt.empty;class Tt{finishChunk(t){this.chunks.push(new At(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,t&&(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(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new Tt)).add(t,e,i)}addInner(t,e,i){let n=t-this.lastTo||i.startSide-this.last.endSide;if(n<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return!(n<0||(250==this.from.length&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),0))}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(Mt.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),0==this.chunks.length)return t;let e=Mt.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}}function Ct(t,e,i){let n=new Map;for(let e of t)for(let t=0;t=this.minPoint)break}}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&n.push(new Ot(r,e,i,s));return 1==n.length?n[0]:new Dt(n)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let t=this.heap.length>>1;t>=0;t--)Et(this.heap,t);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let t=this.heap.length>>1;t>=0;t--)Et(this.heap,t);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(0==this.heap.length)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Et(this.heap,0)}}}function Et(t,e){for(let i=t[e];;){let n=1+(e<<1);if(n>=t.length)break;let s=t[n];if(n+1=0&&(s=t[n+1],n++),i.compare(s)<0)break;t[n]=i,t[e]=s,e=n}}class Lt{constructor(t,e,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=Dt.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Nt(this.active,t),Nt(this.activeTo,t),Nt(this.activeRank,t),this.minActive=It(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:n,rank:s}=this.cursor;for(;e-1&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>t){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),i&&Nt(i,n)}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}{let t=this.cursor.value;if(t.point){if(!(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[e]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}}function Bt(t,e,i,n,s,r){t.goto(e),i.goto(n);let o=n+s,l=n,a=n-e;for(;;){let e=t.to+a-i.to||t.endSide-i.endSide,n=e<0?t.to+a:i.to,s=Math.min(n,o);if(t.point||i.point?t.point&&i.point&&(t.point==i.point||t.point.eq(i.point))&&Pt(t.activeForPoint(t.to),i.activeForPoint(i.to))||r.comparePoint(l,s,t.point,i.point):s>l&&!Pt(t.active,i.active)&&r.compareRange(l,s,t.active,i.active),n>o)break;l=n,e<=0&&t.next(),e>=0&&i.next()}}function Pt(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;i--)t[i+1]=t[i];t[e]=i}function It(t,e){let i=-1,n=1e9;for(let s=0;st.map((t=>e.replace(/&/,t))))).reduce(((t,e)=>t.concat(e))),o,r);else if(o&&"object"==typeof o){if(!a)throw new RangeError("The value of a property ("+i+") should be a primitive value.");s(n(i),o,l,h)}else null!=o&&l.push(i.replace(/_.*/,"").replace(/[A-Z]/g,(t=>"-"+t.toLowerCase()))+": "+o+";")}(l.length||h)&&r.push((!i||a||o?t:t.map(i)).join(", ")+" {"+l.join(" ")+"}")}for(let e in t)s(n(e),t[e],this.rules)}getRules(){return this.rules.join("\n")}static newName(){let t=Vt[zt]||1;return Vt[zt]=t+1,"ͼ"+t.toString(36)}static mount(t,e,i){let n=t[Wt],s=i&&i.nonce;n?s&&n.setNonce(s):n=new qt(t,s),n.mount(Array.isArray(e)?e:[e])}}let _t=new Map;class qt{constructor(t,e){let i=t.ownerDocument||t,n=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&n.CSSStyleSheet){let e=_t.get(i);if(e)return t.adoptedStyleSheets=[e.sheet,...t.adoptedStyleSheets],t[Wt]=e;this.sheet=new n.CSSStyleSheet,t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets],_t.set(i,this)}else{this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);let n=t.head||t;n.insertBefore(this.styleTag,n.firstChild)}this.modules=[],t[Wt]=this}mount(t){let e=this.sheet,i=0,n=0;for(let s=0;s-1&&(this.modules.splice(o,1),n--,o=-1),-1==o){if(this.modules.splice(n++,0,r),e)for(let t=0;t",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Kt="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),Gt="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),Ut=0;Ut<10;Ut++)jt[48+Ut]=jt[96+Ut]=String(Ut);for(Ut=1;Ut<=24;Ut++)jt[Ut+111]="F"+Ut;for(Ut=65;Ut<=90;Ut++)jt[Ut]=String.fromCharCode(Ut+32),$t[Ut]=String.fromCharCode(Ut);for(var Jt in jt)$t.hasOwnProperty(Jt)||($t[Jt]=jt[Jt]);function Yt(t){let e;return e=11==t.nodeType?t.getSelection?t:t.ownerDocument:t,e.getSelection()}function Xt(t,e){return!!e&&(t==e||t.contains(1!=e.nodeType?e.parentNode:e))}function Qt(t,e){if(!e.anchorNode)return!1;try{return Xt(t,e.anchorNode)}catch(t){return!1}}function Zt(t){return 3==t.nodeType?ce(t,0,t.nodeValue.length).getClientRects():1==t.nodeType?t.getClientRects():[]}function te(t,e,i,n){return!!i&&(ie(t,e,i,n,-1)||ie(t,e,i,n,1))}function ee(t){for(var e=0;;e++)if(!(t=t.previousSibling))return e}function ie(t,e,i,n,s){for(;;){if(t==i&&e==n)return!0;if(e==(s<0?0:ne(t))){if("DIV"==t.nodeName)return!1;let i=t.parentNode;if(!i||1!=i.nodeType)return!1;e=ee(t)+(s<0?0:1),t=i}else{if(1!=t.nodeType)return!1;if(1==(t=t.childNodes[e+(s<0?-1:0)]).nodeType&&"false"==t.contentEditable)return!1;e=s<0?ne(t):0}}}function ne(t){return 3==t.nodeType?t.nodeValue.length:t.childNodes.length}function se(t,e){let i=e?t.left:t.right;return{left:i,right:i,top:t.top,bottom:t.bottom}}function re(t){return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}class oe{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?ne(e):0),i,Math.min(t.focusOffset,i?ne(i):0))}set(t,e,i,n){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=n}}let le,ae=null;function he(t){if(t.setActive)return t.setActive();if(ae)return t.focus(ae);let e=[];for(let i=t;i&&(e.push(i,i.scrollTop,i.scrollLeft),i!=i.ownerDocument);i=i.parentNode);if(t.focus(null==ae?{get preventScroll(){return ae={preventScroll:!0},!0}}:void 0),!ae){ae=!1;for(let t=0;tMath.max(1,t.scrollHeight-t.clientHeight-4)}class pe{constructor(t,e,i=!0){this.node=t,this.offset=e,this.precise=i}static before(t,e){return new pe(t.parentNode,ee(t),e)}static after(t,e){return new pe(t.parentNode,ee(t)+1,e)}}const ge=[];class me{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(t){let e=this.posAtStart;for(let i of this.children){if(i==t)return e;e+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}sync(t,e){if(2&this.flags){let i,n=this.dom,s=null;for(let r of this.children){if(7&r.flags){if(!r.dom&&(i=s?s.nextSibling:n.firstChild)){let t=me.get(i);(!t||!t.parent&&t.canReuseDOM(r))&&r.reuseDOM(i)}r.sync(t,e),r.flags&=-8}if(i=s?s.nextSibling:n.firstChild,e&&!e.written&&e.node==n&&i!=r.dom&&(e.written=!0),r.dom.parentNode==n)for(;i&&i!=r.dom;)i=we(i);else n.insertBefore(r.dom,i);s=r.dom}for(i=s?s.nextSibling:n.firstChild,i&&e&&e.node==n&&(e.written=!0);i;)i=we(i)}else if(1&this.flags)for(let i of this.children)7&i.flags&&(i.sync(t,e),i.flags&=-8)}reuseDOM(t){}localPosFromDOM(t,e){let i;if(t==this.dom)i=this.dom.childNodes[e];else{let n=0==ne(t)?0:0==e?-1:1;for(;;){let e=t.parentNode;if(e==this.dom)break;0==n&&e.firstChild!=e.lastChild&&(n=t==e.firstChild?-1:1),t=e}i=n<0?t:t.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!me.get(i);)i=i.nextSibling;if(!i)return this.length;for(let t=0,e=0;;t++){let n=this.children[t];if(n.dom==i)return e;e+=n.length+n.breakAfter}}domBoundsAround(t,e,i=0){let n=-1,s=-1,r=-1,o=-1;for(let l=0,a=i,h=i;le)return i.domBoundsAround(t,e,a);if(c>=t&&-1==n&&(n=l,s=a),a>e&&i.dom.parentNode==this.dom){r=l,o=h;break}h=c,a=c+i.breakAfter}return{from:s,to:o<0?i+this.length:o,startDOM:(n?this.children[n-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:r=0?this.children[r].dom:null}}markDirty(t=!1){this.flags|=2,this.markParentsDirty(t)}markParentsDirty(t){for(let e=this.parent;e;e=e.parent){if(t&&(e.flags|=2),1&e.flags)return;e.flags|=1,t=!1}}setParent(t){this.parent!=t&&(this.parent=t,7&this.flags&&this.markParentsDirty(!0))}setDOM(t){this.dom!=t&&(this.dom&&(this.dom.cmView=null),this.dom=t,t.cmView=this)}get rootView(){for(let t=this;;){let e=t.parent;if(!e)return t;t=e}}replaceChildren(t,e,i=ge){this.markDirty();for(let i=t;ithis.pos||t==this.pos&&(e>0||0==this.i||this.children[this.i-1].breakAfter))return this.off=t-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function ve(t,e,i,n,s,r,o,l,a){let{children:h}=t,c=h.length?h[e]:null,u=r.length?r[r.length-1]:null,f=u?u.breakAfter:o;if(!(e==n&&c&&!o&&!f&&r.length<2&&c.merge(i,s,r.length?u:null,0==i,l,a))){if(n0&&(!o&&r.length&&c.merge(i,c.length,r[0],!1,l,0)?c.breakAfter=r.shift().breakAfter:(i2);var Be={mac:Le||/Mac/.test(be.platform),windows:/Win/.test(be.platform),linux:/Linux|X11/.test(be.platform),ie:Te,ie_version:Ae?xe.documentMode||6:Me?+Me[1]:Se?+Se[1]:0,gecko:Ce,gecko_version:Ce?+(/Firefox\/(\d+)/.exec(be.userAgent)||[0,0])[1]:0,chrome:!!Oe,chrome_version:Oe?+Oe[1]:0,ios:Le,android:/Android\b/.test(be.userAgent),webkit:De,safari:Ee,webkit_version:De?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=xe.documentElement.style.tabSize?"tab-size":"-moz-tab-size"};class Pe extends me{constructor(t){super(),this.text=t}get length(){return this.text.length}createDOM(t){this.setDOM(t||document.createTextNode(this.text))}sync(t,e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(t){3==t.nodeType&&this.createDOM(t)}merge(t,e,i){return!(8&this.flags||i&&(!(i instanceof Pe)||this.length-(e-t)+i.length>256||8&i.flags)||(this.text=this.text.slice(0,t)+(i?i.text:"")+this.text.slice(e),this.markDirty(),0))}split(t){let e=new Pe(this.text.slice(t));return this.text=this.text.slice(0,t),this.markDirty(),e.flags|=8&this.flags,e}localPosFromDOM(t,e){return t==this.dom?e:e?this.text.length:0}domAtPos(t){return new pe(this.dom,t)}domBoundsAround(t,e,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(t,e){return function(t,e,i){let n=t.nodeValue.length;e>n&&(e=n);let s=e,r=e,o=0;0==e&&i<0||e==n&&i>=0?Be.chrome||Be.gecko||(e?(s--,o=1):r=0)?0:l.length-1];return Be.safari&&!o&&0==a.width&&(a=Array.prototype.find.call(l,(t=>t.width))||a),o?se(a,o<0):a||null}(this.dom,t,e)}}class Ne extends me{constructor(t,e=[],i=0){super(),this.mark=t,this.children=e,this.length=i;for(let t of e)t.setParent(this)}setAttrs(t){if(fe(t),this.mark.class&&(t.className=this.mark.class),this.mark.attrs)for(let e in this.mark.attrs)t.setAttribute(e,this.mark.attrs[e]);return t}canReuseDOM(t){return super.canReuseDOM(t)&&!(8&(this.flags|t.flags))}reuseDOM(t){t.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(t),this.flags|=6)}sync(t,e){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(t,e)}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof Ne&&i.mark.eq(this.mark))||t&&s<=0||et&&e.push(i=t&&(n=s),i=o,s++}let r=this.length-t;return this.length=t,n>-1&&(this.children.length=n,this.markDirty()),new Ne(this.mark,e,r)}domAtPos(t){return He(this,t)}coordsAt(t,e){return We(this,t,e)}}class Re extends me{static create(t,e,i){return new Re(t,e,i)}constructor(t,e,i){super(),this.widget=t,this.length=e,this.side=i,this.prevWidget=null}split(t){let e=Re.create(this.widget,this.length-t,this.side);return this.length-=t,e}sync(t){this.dom&&this.widget.updateDOM(this.dom,t)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(t)),this.dom.contentEditable="false")}getSide(){return this.side}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof Re&&this.widget.compare(i.widget))||t>0&&s<=0||e0)?pe.before(this.dom):pe.after(this.dom,t==this.length)}domBoundsAround(){return null}coordsAt(t,e){let i=this.widget.coordsAt(this.dom,t,e);if(i)return i;let n=this.dom.getClientRects(),s=null;if(!n.length)return null;let r=this.side?this.side<0:t>0;for(let e=r?n.length-1:0;s=n[e],!(t>0?0==e:e==n.length-1||s.top0?pe.before(this.dom):pe.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(t){return this.dom.getBoundingClientRect()}get overrideDOMText(){return t.empty}get isHidden(){return!0}}function He(t,e){let i=t.dom,{children:n}=t,s=0;for(let t=0;st&&e0;t--){let e=n[t-1];if(e.dom.parentNode==i)return e.domAtPos(e.length)}for(let t=s;t0&&e instanceof Ne&&s.length&&(n=s[s.length-1])instanceof Ne&&n.mark.eq(e.mark)?ze(n,e.children[0],i-1):(s.push(e),e.setParent(t)),t.length+=e.length}function We(t,e,i){let n=null,s=-1,r=null,o=-1;!function t(e,l){for(let a=0,h=0;a=l&&(c.children.length?t(c,l-h):(!r||r.isHidden&&i>0)&&(u>l||h==u&&c.getSide()>0)?(r=c,o=l-h):(h-1?1:0)!=s.length-(i&&s.indexOf(i)>-1?1:0))return!1;for(let r of n)if(r!=i&&(-1==s.indexOf(r)||t[r]!==e[r]))return!1;return!0}function qe(t,e,i){let n=!1;if(e)for(let s in e)i&&s in i||(n=!0,"style"==s?t.style.cssText="":t.removeAttribute(s));if(i)for(let s in i)e&&e[s]==i[s]||(n=!0,"style"==s?t.style.cssText=i[s]:t.setAttribute(s,i[s]));return n}function je(t){let e=Object.create(null);for(let i=0;i0?3e8:-4e8:e>0?1e8:-1e8,new Ye(t,e,e,i,t.widget||null,!1)}static replace(t){let e,i,n=!!t.block;if(t.isBlockGap)e=-5e8,i=4e8;else{let{start:s,end:r}=Xe(t,n);e=(s?n?-3e8:-1:5e8)-1,i=1+(r?n?2e8:1:-6e8)}return new Ye(t,e,i,n,t.widget||null,!0)}static line(t){return new Je(t)}static set(t,e=!1){return Mt.of(t,e)}hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1}}Ge.none=Mt.empty;class Ue extends Ge{constructor(t){let{start:e,end:i}=Xe(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.class=t.class||"",this.attrs=t.attributes||null}eq(t){var e,i;return this==t||t instanceof Ue&&this.tagName==t.tagName&&(this.class||(null===(e=this.attrs)||void 0===e?void 0:e.class))==(t.class||(null===(i=t.attrs)||void 0===i?void 0:i.class))&&_e(this.attrs,t.attrs,"class")}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}}Ue.prototype.point=!1;class Je extends Ge{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof Je&&this.spec.class==t.spec.class&&_e(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}}Je.prototype.mapMode=x.TrackBefore,Je.prototype.point=!0;class Ye extends Ge{constructor(t,e,i,n,s,r){super(e,i,s,t),this.block=n,this.isReplace=r,this.mapMode=n?e<=0?x.TrackBefore:x.TrackAfter:x.TrackDel}get type(){return this.startSide=5||this.widget.lineBreaks>0)}eq(t){return t instanceof Ye&&((e=this.widget)==(i=t.widget)||!!(e&&i&&e.compare(i)))&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide;var e,i}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}}function Xe(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return null==i&&(i=t.inclusive),null==n&&(n=t.inclusive),{start:null!=i?i:e,end:null!=n?n:e}}function Qe(t,e,i,n=0){let s=i.length-1;s>=0&&i[s]+n>=t?i[s]=Math.max(i[s],e):i.push(t,e)}Ye.prototype.point=!0;class Ze extends me{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(t,e,i,n,s,r){if(i){if(!(i instanceof Ze))return!1;this.dom||i.transferDOM(this)}return n&&this.setDeco(i?i.attrs:null),ke(this,t,e,i?i.children:[],s,r),!0}split(t){let e=new Ze;if(e.breakAfter=this.breakAfter,0==this.length)return e;let{i,off:n}=this.childPos(t);n&&(e.append(this.children[i].split(n),0),this.children[i].merge(n,this.children[i].length,null,!1,0,0),i++);for(let t=i;t0&&0==this.children[i-1].length;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=t,e}transferDOM(t){this.dom&&(this.markDirty(),t.setDOM(this.dom),t.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(t){_e(this.attrs,t)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=t)}append(t,e){ze(this,t,e)}addLineDeco(t){let e=t.spec.attributes,i=t.spec.class;e&&(this.attrs=Ve(e,this.attrs||{})),i&&(this.attrs=Ve({class:i},this.attrs||{}))}domAtPos(t){return He(this,t)}reuseDOM(t){"DIV"==t.nodeName&&(this.setDOM(t),this.flags|=6)}sync(t,e){var i;this.dom?4&this.flags&&(fe(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&&(qe(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(t,e);let n=this.dom.lastChild;for(;n&&me.get(n)instanceof Ne;)n=n.lastChild;if(!(n&&this.length&&("BR"==n.nodeName||0!=(null===(i=me.get(n))||void 0===i?void 0:i.isEditable)||Be.ios&&this.children.some((t=>t instanceof Pe))))){let t=document.createElement("BR");t.cmIgnore=!0,this.dom.appendChild(t)}}measureTextSize(){if(0==this.children.length||this.length>20)return null;let t,e=0;for(let i of this.children){if(!(i instanceof Pe)||/[^ -~]/.test(i.text))return null;let n=Zt(i.dom);if(1!=n.length)return null;e+=n[0].width,t=n[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(t,e){let i=We(this,t,e);if(!this.children.length&&i&&this.parent){let{heightOracle:t}=this.parent.view.viewState,e=i.bottom-i.top;if(Math.abs(e-t.lineHeight)<2&&t.textHeight=e){if(s instanceof Ze)return s;if(r>e)break}n=r+s.breakAfter}return null}}class ti extends me{constructor(t,e,i){super(),this.widget=t,this.length=e,this.type=i,this.breakAfter=0,this.prevWidget=null}merge(t,e,i,n,s,r){return!(i&&(!(i instanceof ti&&this.widget.compare(i.widget))||t>0&&s<=0||e0;){if(this.textOff==this.text.length){let{value:e,lineBreak:i,done:n}=this.cursor.next(this.skip);if(this.skip=0,n)throw new Error("Ran out of text content when drawing inline views");if(i){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,t--;continue}this.text=e,this.textOff=0}let n=Math.min(this.text.length-this.textOff,t,512);this.flushBuffer(e.slice(e.length-i)),this.getLine().append(ii(new Pe(this.text.slice(this.textOff,this.textOff+n)),e),i),this.atCursorPos=!0,this.textOff+=n,t-=n,i=0}}span(t,e,i,n){this.buildText(e-t,i,n),this.pos=e,this.openStart<0&&(this.openStart=n)}point(t,e,i,n,s,r){if(this.disallowBlockEffectsFor[r]&&i instanceof Ye){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(e>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let o=e-t;if(i instanceof Ye)if(i.block){let{type:t}=i;t!=Ke.WidgetAfter||this.posCovered()||this.getLine(),this.addBlockWidget(new ti(i.widget||new ni("div"),o,t))}else{let r=Re.create(i.widget||new ni("span"),o,o?0:i.startSide),l=this.atCursorPos&&!r.isEditable&&s<=n.length&&(t0),a=!r.isEditable&&(tn.length||i.startSide<=0),h=this.getLine();2!=this.pendingBuffer||l||r.isEditable||(this.pendingBuffer=0),this.flushBuffer(n),l&&(h.append(ii(new Ie(1),n),s),s=n.length+Math.max(0,s-n.length)),h.append(ii(r,n),s),this.atCursorPos=a,this.pendingBuffer=a?tn.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=n.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);o&&(this.textOff+o<=this.text.length?this.textOff+=o:(this.skip+=o-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=e),this.openStart<0&&(this.openStart=s)}static build(t,e,i,n,s){let r=new ei(t,e,i,s);return r.openEnd=Mt.spans(n,e,i,r),r.openStart<0&&(r.openStart=r.openEnd),r.finish(r.openEnd),r}}function ii(t,e){for(let i of e)t=new Ne(i,[t],t.length);return t}class ni extends $e{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}const si=R.define(),ri=R.define(),oi=R.define(),li=R.define(),ai=R.define(),hi=R.define(),ci=R.define(),ui=R.define({combine:t=>t.some((t=>t))}),fi=R.define({combine:t=>t.some((t=>t))});class di{constructor(t,e="nearest",i="nearest",n=5,s=5){this.range=t,this.y=e,this.x=i,this.yMargin=n,this.xMargin=s}map(t){return t.empty?this:new di(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin)}}const pi=at.define({map:(t,e)=>t.map(e)});function gi(t,e,i){let n=t.facet(li);n.length?n[0](e):window.onerror?window.onerror(String(e),i,void 0,void 0,e):i?console.error(i+":",e):console.error(e)}const mi=R.define({combine:t=>!t.length||t[0]});let wi=0;const yi=R.define();class vi{constructor(t,e,i,n){this.id=t,this.create=e,this.domEventHandlers=i,this.extension=n(this)}static define(t,e){const{eventHandlers:i,provide:n,decorations:s}=e||{};return new vi(wi++,t,i,(t=>{let e=[yi.of(t)];return s&&e.push(Si.of((e=>{let i=e.plugin(t);return i?s(i):Ge.none}))),n&&e.push(n(t)),e}))}static fromClass(t,e){return vi.define((e=>new t(e)),e)}}class ki{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}update(t){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(e){if(gi(t.state,e,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(t){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(t)}catch(e){gi(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(null===(e=this.value)||void 0===e?void 0:e.destroy)try{this.value.destroy()}catch(e){gi(t.state,e,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const bi=R.define(),xi=R.define(),Si=R.define(),Ai=R.define(),Mi=R.define();function Ti(t,e,i){let n=t.state.facet(Mi);if(!n.length)return n;let s=n.map((e=>e instanceof Function?e(t):e)),r=[];return Mt.spans(s,e,i,{point(){},span(t,e,i,n){let s=r;for(let r=i.length-1;r>=0;r--,n--){let o,l=i[r].spec.bidiIsolate;if(null!=l)if(n>0&&s.length&&(o=s[s.length-1]).to==t&&o.direction==l)o.to=e,s=o.inner;else{let i={from:t,to:e,direction:l,inner:[]};s.push(i),s=i.inner}}}}),r}const Ci=R.define();function Oi(t){let e=0,i=0,n=0,s=0;for(let r of t.state.facet(Ci)){let o=r(t);o&&(null!=o.left&&(e=Math.max(e,o.left)),null!=o.right&&(i=Math.max(i,o.right)),null!=o.top&&(n=Math.max(n,o.top)),null!=o.bottom&&(s=Math.max(s,o.bottom)))}return{left:e,right:i,top:n,bottom:s}}const Di=R.define();class Ei{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n}join(t){return new Ei(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fromA>i.toA)){if(n.toAh)break;s+=2}if(!l)return i;new Ei(l.fromA,l.toA,l.fromB,l.toB).addToSet(i),r=l.toA,o=l.toB}}}class Li{constructor(t,e,i){this.view=t,this.state=e,this.transactions=i,this.flags=0,this.startState=t.state,this.changes=A.empty(this.startState.doc.length);for(let t of i)this.changes=this.changes.compose(t.changes);let n=[];this.changes.iterChangedRanges(((t,e,i,s)=>n.push(new Ei(t,e,i,s)))),this.changedRanges=n}static create(t,e,i){return new Li(t,e,i)}get viewportChanged(){return(4&this.flags)>0}get heightChanged(){return(2&this.flags)>0}get geometryChanged(){return this.docChanged||(10&this.flags)>0}get focusChanged(){return(1&this.flags)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some((t=>t.selection))}get empty(){return 0==this.flags&&0==this.transactions.length}}var Bi=function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t}(Bi||(Bi={}));const Pi=Bi.LTR,Ni=Bi.RTL;function Ri(t){let e=[];for(let i=0;i=e){if(o.level==i)return r;(s<0||(0!=n?n<0?o.frome:t[s].level>o.level))&&(s=r)}}if(s<0)throw new RangeError("Index out of range");return s}}function _i(t,e){if(t.length!=e.length)return!1;for(let i=0;ia&&o.push(new Fi(a,p.from,f)),$i(t,p.direction==Pi!=!(f%2)?n+1:n,s,p.inner,p.from,p.to,o),a=p.to),d=p.to}else{if(d==i||(e?qi[d]!=l:qi[d]==l))break;d++}u?ji(t,a,d,n+1,s,u,o):ae;){let i=!0,c=!1;if(!h||a>r[h-1].to){let t=qi[a-1];t!=l&&(i=!1,c=16==t)}let u=i||1!=l?null:[],f=i?n:n+1,d=a;t:for(;;)if(h&&d==r[h-1].to){if(c)break t;let p=r[--h];if(!i)for(let t=p.from,i=h;;){if(t==e)break t;if(!i||r[i-1].to!=t){if(qi[t-1]==l)break t;break}t=r[--i].from}u?u.push(p):(p.to=0;t-=3)if(Wi[t+1]==-i){let e=Wi[t+2],i=2&e?s:4&e?1&e?r:s:0;i&&(qi[o]=qi[Wi[t]]=i),l=t;break}}else{if(189==Wi.length)break;Wi[l++]=o,Wi[l++]=e,Wi[l++]=a}else if(2==(n=qi[o])||1==n){let t=n==s;a=t?0:1;for(let e=l-3;e>=0;e-=3){let i=Wi[e+2];if(2&i)break;if(t)Wi[e+2]|=2;else{if(4&i)break;Wi[e+2]|=4}}}}}(t,s,r,n,l),function(t,e,i,n){for(let s=0,r=n;s<=i.length;s++){let o=s?i[s-1].to:t,l=sa;)e==r&&(e=i[--n].from,r=n?i[n-1].to:t),qi[--e]=c;a=o}else r=o,a++}}}(s,r,n,l),ji(t,s,r,e,i,n,o)}function Ki(t){return[new Fi(0,t,0)]}let Gi="";function Ui(t,e,i,n,s){var r;let o=n.head-t.from,l=-1;if(0==o){if(!s||!t.length)return null;e[0].level!=i&&(o=e[0].side(!1,i),l=0)}else if(o==t.length){if(s)return null;let t=e[e.length-1];t.level!=i&&(o=t.side(!0,i),l=e.length-1)}l<0&&(l=Fi.find(e,o,null!==(r=n.bidiLevel)&&void 0!==r?r:-1,n.assoc));let a=e[l];o==a.side(s,i)&&(a=e[l+=s?1:-1],o=a.side(!s,i));let h=s==(a.dir==i),c=d(t.text,o,h);if(Gi=t.text.slice(Math.min(o,c),Math.max(o,c)),c!=a.side(s,i))return B.cursor(c+t.from,h?-1:1,a.level);let u=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return u||a.level==i?u&&u.level0&&i.length&&(i.every((({fromA:t,toA:e})=>ethis.minWidthTo))?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let n=-1;this.view.inputState.composing>=0&&((null===(e=this.domChanged)||void 0===e?void 0:e.newSel)?n=this.domChanged.newSel.head:function(t,e){let i=!1;return e&&t.iterChangedRanges(((t,n)=>{te.from&&(i=!0)})),i}(t.changes,this.hasComposition)||t.selectionSet||(n=t.state.selection.main.head));let s=n>-1?function(t,e,i){let n=Xi(t,i);if(!n)return null;let{node:s,from:r,to:o}=n,l=s.nodeValue;if(/[\n\r]/.test(l))return null;if(t.state.doc.sliceString(n.from,n.to)!=l)return null;let a=e.invertedDesc,h=new Ei(a.mapPos(r),a.mapPos(o),r,o),c=[];for(let e=s.parentNode;;e=e.parentNode){let i=me.get(e);if(i instanceof Ne)c.push({node:e,deco:i.mark});else{if(i instanceof Ze||"DIV"==e.nodeName&&e.parentNode==t.contentDOM)return{range:h,text:s,marks:c,line:e};if(e==t.contentDOM)return null;c.push({node:e,deco:new Ue({inclusive:!0,attributes:je(e),tagName:e.tagName.toLowerCase()})})}}}(this.view,t.changes,n):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:e,to:n}=this.hasComposition;i=new Ei(e,n,t.changes.mapPos(e,-1),t.changes.mapPos(n,1)).addToSet(i.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(Be.ie||Be.chrome)&&!s&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let r=function(t,e,i){let n=new Zi;return Mt.compare(t,e,i,n),n.changes}(this.decorations,this.updateDeco(),t.changes);return i=Ei.extendWithRanges(i,r),!!(7&this.flags||0!=i.length)&&(this.updateInner(i,t.startState.doc.length,s),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(t,e,i);let{observer:n}=this.view;n.ignore((()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let t=Be.chrome||Be.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,t),this.flags&=-8,t&&(t.written||n.selectionRange.focusNode!=t.node)&&(this.forceSelection=!0),this.dom.style.height=""})),this.markedForComposition.forEach((t=>t.flags&=-9));let s=[];if(this.view.viewport.from||this.view.viewport.to=0?n[t]:null;if(!e)break;let r,o,l,a,{fromA:h,toA:c,fromB:u,toB:f}=e;if(i&&i.range.fromBu){let t=ei.build(this.view.state.doc,u,i.range.fromB,this.decorations,this.dynamicDecorationMap),e=ei.build(this.view.state.doc,i.range.toB,f,this.decorations,this.dynamicDecorationMap);o=t.breakAtStart,l=t.openStart,a=e.openEnd;let n=this.compositionView(i);e.breakAtStart?n.breakAfter=1:e.content.length&&n.merge(n.length,n.length,e.content[0],!1,e.openStart,0)&&(n.breakAfter=e.content[0].breakAfter,e.content.shift()),t.content.length&&n.merge(0,0,t.content[t.content.length-1],!0,0,t.openEnd)&&t.content.pop(),r=t.content.concat(n).concat(e.content)}else({content:r,breakAtStart:o,openStart:l,openEnd:a}=ei.build(this.view.state.doc,u,f,this.decorations,this.dynamicDecorationMap));let{i:d,off:p}=s.findPos(c,1),{i:g,off:m}=s.findPos(h,-1);ve(this,g,m,d,p,r,o,l,a)}i&&this.fixCompositionDOM(i)}compositionView(t){let e=new Pe(t.text.nodeValue);e.flags|=8;for(let{deco:i}of t.marks)e=new Ne(i,[e],e.length);let i=new Ze;return i.append(e,0),i}fixCompositionDOM(t){let e=(t,e)=>{e.flags|=8|(e.children.some((t=>7&t.flags))?1:0),this.markedForComposition.add(e);let i=me.get(t);i&&i!=e&&(i.dom=null),e.setDOM(t)},i=this.childPos(t.range.fromB,1),n=this.children[i.i];e(t.line,n);for(let s=t.marks.length-1;s>=-1;s--)i=n.childPos(i.off,1),n=n.children[i.i],e(s>=0?t.marks[s].node:t.text,n)}updateSelection(t=!1,e=!1){!t&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let i=this.view.root.activeElement,n=i==this.dom,s=!n&&Qt(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(n||e||s))return;let r=this.forceSelection;this.forceSelection=!1;let o=this.view.state.selection.main,l=this.moveToLine(this.domAtPos(o.anchor)),a=o.empty?l:this.moveToLine(this.domAtPos(o.head));if(Be.gecko&&o.empty&&!this.hasComposition&&1==(h=l).node.nodeType&&h.node.firstChild&&(0==h.offset||"false"==h.node.childNodes[h.offset-1].contentEditable)&&(h.offset==h.node.childNodes.length||"false"==h.node.childNodes[h.offset].contentEditable)){let t=document.createTextNode("");this.view.observer.ignore((()=>l.node.insertBefore(t,l.node.childNodes[l.offset]||null))),l=a=new pe(t,0),r=!0}var h;let c=this.view.observer.selectionRange;!r&&c.focusNode&&te(l.node,l.offset,c.anchorNode,c.anchorOffset)&&te(a.node,a.offset,c.focusNode,c.focusOffset)||(this.view.observer.ignore((()=>{Be.android&&Be.chrome&&this.dom.contains(c.focusNode)&&function(t,e){for(let i=t;i&&i!=e;i=i.assignedSlot||i.parentNode)if(1==i.nodeType&&"false"==i.contentEditable)return!0;return!1}(c.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let t=Yt(this.view.root);if(t)if(o.empty){if(Be.gecko){let t=(e=l.node,n=l.offset,1!=e.nodeType?0:(n&&"false"==e.childNodes[n-1].contentEditable?1:0)|(no.head&&([l,a]=[a,l]),e.setEnd(a.node,a.offset),e.setStart(l.node,l.offset),t.removeAllRanges(),t.addRange(e)}var e,n;s&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())})),this.view.observer.setSelectionRange(l,a)),this.impreciseAnchor=l.precise?null:new pe(c.anchorNode,c.anchorOffset),this.impreciseHead=a.precise?null:new pe(c.focusNode,c.focusOffset)}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=Yt(t.root),{anchorNode:n,anchorOffset:s}=t.observer.selectionRange;if(!(i&&e.empty&&e.assoc&&i.modify))return;let r=Ze.find(this,e.head);if(!r)return;let o=r.posAtStart;if(e.head==o||e.head==o+r.length)return;let l=this.coordsAt(e.head,-1),a=this.coordsAt(e.head,1);if(!l||!a||l.bottom>a.top)return;let h=this.domAtPos(e.head+e.assoc);i.collapse(h.node,h.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(n,s)}moveToLine(t){let e,i=this.dom;if(t.node!=i)return t;for(let n=t.offset;!e&&n=0;n--){let t=me.get(i.childNodes[n]);t instanceof Ze&&(e=t.domAtPos(t.length))}return e?new pe(e.node,e.offset,!0):t}nearest(t){for(let e=t;e;){let t=me.get(e);if(t&&t.rootView==this)return t;e=e.parentNode}return null}posFromDOM(t,e){let i=this.nearest(t);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(t,e)+i.posAtStart}domAtPos(t){let{i:e,off:i}=this.childCursor().findPos(t,-1);for(;er||t==r&&s.type!=Ke.WidgetBefore&&s.type!=Ke.WidgetAfter&&(!n||2==e||this.children[n-1].breakAfter||this.children[n-1].type==Ke.WidgetBefore&&e>-2))return s.coordsAt(t-r,e);i=r}}coordsForChar(t){let{i:e,off:i}=this.childPos(t,1),n=this.children[e];if(!(n instanceof Ze))return null;for(;n.children.length;){let{i:t,off:e}=n.childPos(i,1);for(;;t++){if(t==n.children.length)return null;if((n=n.children[t]).length)break}i=e}if(!(n instanceof Pe))return null;let s=d(n.text,i);if(s==i)return null;let r=ce(n.dom,i,s).getClientRects();return!r.length||r[0].top>=r[0].bottom?null:r[0]}measureVisibleLineHeights(t){let e=[],{from:i,to:n}=t,s=this.view.contentDOM.clientWidth,r=s>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,l=this.view.textDirection==Bi.LTR;for(let t=0,a=0;an)break;if(t>=i){let i=h.dom.getBoundingClientRect();if(e.push(i.height),r){let e=h.dom.lastChild,n=e?Zt(e):[];if(n.length){let e=n[n.length-1],r=l?e.right-i.left:i.right-e.left;r>o&&(o=r,this.minWidth=s,this.minWidthFrom=t,this.minWidthTo=c)}}}t=c+h.breakAfter}return e}textDirectionAt(t){let{i:e}=this.childPos(t,1);return"rtl"==getComputedStyle(this.children[e].dom).direction?Bi.RTL:Bi.LTR}measureTextSize(){for(let t of this.children)if(t instanceof Ze){let e=t.measureTextSize();if(e)return e}let t,e,i,n=document.createElement("div");return n.className="cm-line",n.style.width="99999px",n.style.position="absolute",n.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore((()=>{this.dom.appendChild(n);let s=Zt(n.firstChild)[0];t=n.getBoundingClientRect().height,e=s?s.width/27:7,i=s?s.height:t,n.remove()})),{lineHeight:t,charWidth:e,textHeight:i}}childCursor(t=this.length){let e=this.children.length;return e&&(t-=this.children[--e].length),new ye(this.children,t,e)}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,n=0;;n++){let s=n==e.viewports.length?null:e.viewports[n],r=s?s.from-1:this.length;if(r>i){let n=(e.lineBlockAt(r).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(Ge.replace({widget:new Yi(n),block:!0,inclusive:!0,isBlockGap:!0}).range(i,r))}if(!s)break;i=s.to+1}return Ge.set(t)}updateDeco(){let t=this.view.state.facet(Si).map(((t,e)=>(this.dynamicDecorationMap[e]="function"==typeof t)?t(this.view):t));for(let e=t.length;ei.anchor?-1:1);if(!n)return;!i.empty&&(e=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(n={left:Math.min(n.left,e.left),top:Math.min(n.top,e.top),right:Math.max(n.right,e.right),bottom:Math.max(n.bottom,e.bottom)});let s=Oi(this.view),r={left:n.left-s.left,top:n.top-s.top,right:n.right+s.right,bottom:n.bottom+s.bottom};!function(t,e,i,n,s,r,o,l){let a=t.ownerDocument,h=a.defaultView||window;for(let c=t,u=!1;c&&!u;)if(1==c.nodeType){let t,f=c==a.body,d=1,p=1;if(f)t=re(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(u=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let e=c.getBoundingClientRect();d=e.width/c.offsetWidth,p=e.height/c.offsetHeight,t={left:e.left,right:e.left+c.clientWidth*d,top:e.top,bottom:e.top+c.clientHeight*p}}let g=0,m=0;if("nearest"==s)e.top0&&e.bottom>t.bottom+m&&(m=e.bottom-t.bottom+m+o)):e.bottom>t.bottom&&(m=e.bottom-t.bottom+o,i<0&&e.top-m0&&e.right>t.right+g&&(g=e.right-t.right+g+r)):e.right>t.right&&(g=e.right-t.right+r,i<0&&e.left0))break;i=i.childNodes[n-1],n=ne(i)}if(i>=0)for(let n=t,s=e;;){if(3==n.nodeType)return{node:n,offset:s};if(!(1==n.nodeType&&s=0))break;n=n.childNodes[s],s=0}return null}let Zi=class{constructor(){this.changes=[]}compareRange(t,e){Qe(t,e,this.changes)}comparePoint(t,e){Qe(t,e,this.changes)}};function tn(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function en(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function nn(t,e){return t.tope.top+1}function sn(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function on(t,e,i){let n,s,r,o,l,a,h,c,u=!1;for(let f=t.firstChild;f;f=f.nextSibling){let t=Zt(f);for(let d=0;dm||o==m&&r>g){n=f,s=p,r=g,o=m;let l=m?i0?d0)}0==g?i>p.bottom&&(!h||h.bottomp.top)&&(a=f,c=p):h&&nn(h,p)?h=rn(h,p.bottom):c&&nn(c,p)&&(c=sn(c,p.top))}}if(h&&h.bottom>=i?(n=l,s=h):c&&c.top<=i&&(n=a,s=c),!n)return{node:t,offset:0};let f=Math.max(s.left,Math.min(s.right,e));return 3==n.nodeType?ln(n,f,i):u&&"false"!=n.contentEditable?on(n,f,i):{node:t,offset:Array.prototype.indexOf.call(t.childNodes,n)+(e>=(s.left+s.right)/2?1:0)}}function ln(t,e,i){let n=t.nodeValue.length,s=-1,r=1e9,o=0;for(let l=0;li?h.top-i:i-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&c=(h.left+h.right)/2,n=i;if((Be.chrome||Be.gecko)&&ce(t,l).getBoundingClientRect().left==h.right&&(n=!i),c<=0)return{node:t,offset:l+(n?1:0)};s=l+(n?1:0),r=c}}}return{node:t,offset:s>-1?s:o>0?t.nodeValue.length:0}}function an(t,e,i,n=-1){var s,r;let o,l=t.contentDOM.getBoundingClientRect(),a=l.top+t.viewState.paddingTop,{docHeight:h}=t.viewState,{x:c,y:u}=e,f=u-a;if(f<0)return 0;if(f>h)return t.state.doc.length;for(let e=t.viewState.heightOracle.textHeight/2,s=!1;o=t.elementAtHeight(f),o.type!=Ke.Text;)for(;f=n>0?o.bottom+e:o.top-e,!(f>=0&&f<=h);){if(s)return i?null:0;s=!0,n=-n}u=a+f;let d=o.from;if(dt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:i?null:hn(t,l,o,c,u);let p=t.dom.ownerDocument,g=t.root.elementFromPoint?t.root:p,m=g.elementFromPoint(c,u);m&&!t.contentDOM.contains(m)&&(m=null),m||(c=Math.max(l.left+1,Math.min(l.right-1,c)),m=g.elementFromPoint(c,u),m&&!t.contentDOM.contains(m)&&(m=null));let w,y=-1;if(m&&0!=(null===(s=t.docView.nearest(m))||void 0===s?void 0:s.isEditable))if(p.caretPositionFromPoint){let t=p.caretPositionFromPoint(c,u);t&&({offsetNode:w,offset:y}=t)}else if(p.caretRangeFromPoint){let e=p.caretRangeFromPoint(c,u);e&&(({startContainer:w,startOffset:y}=e),(!t.contentDOM.contains(w)||Be.safari&&function(t,e,i){let n;if(3!=t.nodeType||e!=(n=t.nodeValue.length))return!1;for(let e=t.nextSibling;e;e=e.nextSibling)if(1!=e.nodeType||"BR"!=e.nodeName)return!1;return ce(t,n-1,n).getBoundingClientRect().left>i}(w,y,c)||Be.chrome&&function(t,e,i){if(0!=e)return!1;for(let e=t;;){let t=e.parentNode;if(!t||1!=t.nodeType||t.firstChild!=e)return!1;if(t.classList.contains("cm-line"))break;e=t}return i-(1==t.nodeType?t.getBoundingClientRect():ce(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect()).left>5}(w,y,c))&&(w=void 0))}if(!w||!t.docView.dom.contains(w)){let e=Ze.find(t.docView,d);if(!e)return f>o.top+o.height/2?o.to:o.from;({node:w,offset:y}=on(e.dom,c,u))}let v=t.docView.nearest(w);if(!v)return null;if(v.isWidget&&1==(null===(r=v.dom)||void 0===r?void 0:r.nodeType)){let t=v.dom.getBoundingClientRect();return e.y1.5*t.defaultLineHeight){let e=t.viewState.heightOracle.textHeight;r+=Math.floor((s-i.top-.5*(t.defaultLineHeight-e))/e)*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(i.from,i.to);return i.from+function(t,e,i,n){for(let n=0,s=0;;){if(s>=e)return n;if(n==t.length)break;s+=9==t.charCodeAt(n)?i-s%i:1,n=d(t,n)}return t.length}(o,r,t.state.tabSize)}function cn(t,e,i,n){let s=t.state.doc.lineAt(e.head),r=t.bidiSpans(s),o=t.textDirectionAt(s.from);for(let l=e,a=null;;){let e=Ui(s,r,o,l,i),h=Gi;if(!e){if(s.number==(i?t.state.doc.lines:1))return l;h="\n",s=t.state.doc.line(s.number+(i?1:-1)),r=t.bidiSpans(s),e=B.cursor(i?s.from:s.to)}if(a){if(!a(h))return l}else{if(!n)return e;a=n(h)}l=e}}function un(t,e,i){for(;;){let n=0;for(let s of t)s.between(e-1,e+1,((t,s,r)=>{if(e>t&&ee(t))),i.from,e.head>i.from?-1:1);return n==i.from?i:B.cursor(n,n{this.ignoreDuringComposition(i)||"keydown"==i.type&&this.keydown(t,i)||(this.mustFlushObserver(i)&&t.observer.forceFlush(),this.runCustomHandlers(i.type,t,i)?i.preventDefault():e(t,i))};for(let i in kn){let n=kn[i];t.contentDOM.addEventListener(i,(i=>{vn(t,i)&&e(n,i)}),bn[i]),this.registeredEvents.push(i)}t.scrollDOM.addEventListener("mousedown",(i=>{if(i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&(e(kn.mousedown,i),!i.defaultPrevented&&2==i.button)){let e=t.contentDOM.style.minHeight;t.contentDOM.style.minHeight="100%",setTimeout((()=>t.contentDOM.style.minHeight=e),200)}})),t.scrollDOM.addEventListener("drop",(i=>{i.target==t.scrollDOM&&i.clientY>t.contentDOM.getBoundingClientRect().bottom&&e(kn.drop,i)})),Be.chrome&&102==Be.chrome_version&&t.scrollDOM.addEventListener("wheel",(()=>{this.chromeScrollHack<0?t.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout((()=>{this.chromeScrollHack=-1,t.contentDOM.style.pointerEvents=""}),100)}),{passive:!0}),this.notifiedFocused=t.hasFocus,Be.safari&&t.contentDOM.addEventListener("input",(()=>null)),Be.gecko&&function(t){Wn.has(t)||(Wn.add(t),t.addEventListener("copy",(()=>{})),t.addEventListener("cut",(()=>{})))}(t.contentDOM.ownerDocument)}ensureHandlers(t,e){var i;let n;this.customHandlers=[];for(let s of e)if(n=null===(i=s.update(t).spec)||void 0===i?void 0:i.domEventHandlers){this.customHandlers.push({plugin:s.value,handlers:n});for(let e in n)this.registeredEvents.indexOf(e)<0&&"scroll"!=e&&(this.registeredEvents.push(e),t.contentDOM.addEventListener(e,(i=>{vn(t,i)&&this.runCustomHandlers(e,t,i)&&i.preventDefault()})))}}runCustomHandlers(t,e,i){for(let n of this.customHandlers){let s=n.handlers[t];if(s)try{if(s.call(n.plugin,i,e)||i.defaultPrevented)return!0}catch(t){gi(e.state,t)}}return!1}runScrollHandlers(t,e){this.lastScrollTop=t.scrollDOM.scrollTop,this.lastScrollLeft=t.scrollDOM.scrollLeft;for(let i of this.customHandlers){let n=i.handlers.scroll;if(n)try{n.call(i.plugin,e,t)}catch(e){gi(t.state,e)}}}keydown(t,e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),9==e.keyCode&&Date.now()t.keyCode==e.keyCode)))&&!e.ctrlKey||gn.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)||(this.pendingIOSKey=i||e,setTimeout((()=>this.flushIOSKey(t)),250),0))}flushIOSKey(t){let e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey=void 0,ue(t.contentDOM,e.key,e.keyCode))}ignoreDuringComposition(t){return!!/^key/.test(t.type)&&(this.composing>0||!!(Be.safari&&!Be.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&(this.compositionPendingKey=!1,!0))}mustFlushObserver(t){return"keydown"==t.type&&229!=t.keyCode}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.mouseSelection&&this.mouseSelection.update(t),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const pn=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],gn="dthko",mn=[16,17,18,20,91,92,224,225];function wn(t){return.7*Math.max(0,t)+8}class yn{constructor(t,e,i,n){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParent=function(t){let e=t.ownerDocument;for(let i=t.parentNode;i&&i!=e.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}(t.contentDOM),this.atoms=t.state.facet(Ai).map((e=>e(t)));let s=t.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(vt.allowMultipleSelections)&&function(t,e){let i=t.state.facet(si);return i.length?i[0](e):Be.mac?e.metaKey:e.ctrlKey}(t,e),this.dragging=!(!function(t,e){let{main:i}=t.state.selection;if(i.empty)return!1;let n=Yt(t.root);if(!n||0==n.rangeCount)return!0;let s=n.getRangeAt(0).getClientRects();for(let t=0;t=e.clientX&&i.top<=e.clientY&&i.bottom>=e.clientY)return!0}return!1}(t,e)||1!=Pn(e))&&null}start(t){!1===this.dragging&&(t.preventDefault(),this.select(t))}move(t){var e,i,n;if(0==t.buttons)return this.destroy();if(this.dragging||null==this.dragging&&(i=this.startEvent,n=t,Math.max(Math.abs(i.clientX-n.clientX),Math.abs(i.clientY-n.clientY))<10))return;this.select(this.lastEvent=t);let s=0,r=0,o=(null===(e=this.scrollParent)||void 0===e?void 0:e.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},l=Oi(this.view);t.clientX-l.left<=o.left+6?s=-wn(o.left-t.clientX):t.clientX+l.right>=o.right-6&&(s=wn(t.clientX-o.right)),t.clientY-l.top<=o.top+6?r=-wn(o.top-t.clientY):t.clientY+l.bottom>=o.bottom-6&&(r=wn(t.clientY-o.bottom)),this.setScrollSpeed(s,r)}up(t){null==this.dragging&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval((()=>this.scroll()),50)):this.scrolling>-1&&(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(t){let e=null;for(let i=0;ithis.select(this.lastEvent)),20)}}function vn(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let i,n=e.target;n!=t.contentDOM;n=n.parentNode)if(!n||11==n.nodeType||(i=me.get(n))&&i.ignoreEvent(e))return!1;return!0}const kn=Object.create(null),bn=Object.create(null),xn=Be.ie&&Be.ie_version<15||Be.ios&&Be.webkit_version<604;function Sn(t,e){let i,{state:n}=t,s=1,r=n.toText(e),o=r.lines==n.selection.ranges.length;if(null!=Rn&&n.selection.ranges.every((t=>t.empty))&&Rn==r.toString()){let t=-1;i=n.changeByRange((i=>{let l=n.doc.lineAt(i.from);if(l.from==t)return{range:i};t=l.from;let a=n.toText((o?r.line(s++).text:e)+n.lineBreak);return{changes:{from:l.from,insert:a},range:B.cursor(i.from+a.length)}}))}else i=o?n.changeByRange((t=>{let e=r.line(s++);return{changes:{from:t.from,to:t.to,insert:e.text},range:B.cursor(t.from+e.length)}})):n.replaceSelection(r);t.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}function An(t,e,i,n){if(1==n)return B.cursor(e,i);if(2==n)return function(t,e,i=1){let n=t.charCategorizer(e),s=t.doc.lineAt(e),r=e-s.from;if(0==s.length)return B.cursor(e);0==r?i=1:r==s.length&&(i=-1);let o=r,l=r;i<0?o=d(s.text,r,!1):l=d(s.text,r);let a=n(s.text.slice(o,l));for(;o>0;){let t=d(s.text,o,!1);if(n(s.text.slice(t,o))!=a)break;o=t}for(;l{t.inputState.setSelectionOrigin("select"),27==e.keyCode&&(t.inputState.lastEscPress=Date.now())},kn.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")},kn.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")},bn.touchstart=bn.touchmove={passive:!0},kn.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return;let i=null;for(let n of t.state.facet(oi))if(i=n(t,e),i)break;if(i||0!=e.button||(i=function(t,e){let i=On(t,e),n=Pn(e),s=t.state.selection;return{update(t){t.docChanged&&(i.pos=t.changes.mapPos(i.pos),s=s.map(t.changes))},get(e,r,o){let l,a=On(t,e),h=An(t,a.pos,a.bias,n);if(i.pos!=a.pos&&!r){let e=An(t,i.pos,i.bias,n),s=Math.min(e.from,h.from),r=Math.max(e.to,h.to);h=s1&&(l=function(t,e){for(let i=0;i=e)return B.create(t.ranges.slice(0,i).concat(t.ranges.slice(i+1)),t.mainIndex==i?0:t.mainIndex-(t.mainIndex>i?1:0))}return null}(s,a.pos))?l:o?s.addRange(h):B.create([h])}}}(t,e)),i){let n=!t.hasFocus;t.inputState.startMouseSelection(new yn(t,e,i,n)),n&&t.observer.ignore((()=>he(t.contentDOM))),t.inputState.mouseSelection&&t.inputState.mouseSelection.start(e)}};let Mn=(t,e)=>t>=e.top&&t<=e.bottom,Tn=(t,e,i)=>Mn(e,i)&&t>=i.left&&t<=i.right;function Cn(t,e,i,n){let s=Ze.find(t.docView,e);if(!s)return 1;let r=e-s.posAtStart;if(0==r)return 1;if(r==s.length)return-1;let o=s.coordsAt(r,-1);if(o&&Tn(i,n,o))return-1;let l=s.coordsAt(r,1);return l&&Tn(i,n,l)?1:o&&Mn(n,o)?-1:1}function On(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:i,bias:Cn(t,i,e.clientX,e.clientY)}}const Dn=Be.ie&&Be.ie_version<=11;let En=null,Ln=0,Bn=0;function Pn(t){if(!Dn)return t.detail;let e=En,i=Bn;return En=t,Bn=Date.now(),Ln=!e||i>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(Ln+1)%3:1}function Nn(t,e,i,n){if(!i)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:r}=t.inputState,o=n&&r&&r.dragging&&function(t,e){let i=t.state.facet(ri);return i.length?i[0](e):Be.mac?!e.altKey:!e.ctrlKey}(t,e)?{from:r.dragging.from,to:r.dragging.to}:null,l={from:s,insert:i},a=t.state.changes(o?[o,l]:l);t.focus(),t.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"})}kn.dragstart=(t,e)=>{let{selection:{main:i}}=t.state,{mouseSelection:n}=t.inputState;n&&(n.dragging=i),e.dataTransfer&&(e.dataTransfer.setData("Text",t.state.sliceDoc(i.from,i.to)),e.dataTransfer.effectAllowed="copyMove")},kn.drop=(t,e)=>{if(!e.dataTransfer)return;if(t.state.readOnly)return e.preventDefault();let i=e.dataTransfer.files;if(i&&i.length){e.preventDefault();let n=Array(i.length),s=0,r=()=>{++s==i.length&&Nn(t,e,n.filter((t=>null!=t)).join(t.state.lineBreak),!1)};for(let t=0;t{/[\x00-\x08\x0e-\x1f]{2}/.test(e.result)||(n[t]=e.result),r()},e.readAsText(i[t])}}else Nn(t,e,e.dataTransfer.getData("Text"),!0)},kn.paste=(t,e)=>{if(t.state.readOnly)return e.preventDefault();t.observer.flush();let i=xn?null:e.clipboardData;i?(Sn(t,i.getData("text/plain")||i.getData("text/uri-text")),e.preventDefault()):function(t){let e=t.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.focus(),setTimeout((()=>{t.focus(),i.remove(),Sn(t,i.value)}),50)}(t)};let Rn=null;kn.copy=kn.cut=(t,e)=>{let{text:i,ranges:n,linewise:s}=function(t){let e=[],i=[],n=!1;for(let n of t.selection.ranges)n.empty||(e.push(t.sliceDoc(n.from,n.to)),i.push(n));if(!e.length){let s=-1;for(let{from:n}of t.selection.ranges){let r=t.doc.lineAt(n);r.number>s&&(e.push(r.text),i.push({from:r.from,to:Math.min(t.doc.length,r.to+1)})),s=r.number}n=!0}return{text:e.join(t.lineBreak),ranges:i,linewise:n}}(t.state);if(!i&&!s)return;Rn=s?i:null;let r=xn?null:e.clipboardData;r?(e.preventDefault(),r.clearData(),r.setData("text/plain",i)):function(t,e){let i=t.dom.parentNode;if(!i)return;let n=i.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.value=e,n.focus(),n.selectionEnd=e.length,n.selectionStart=0,setTimeout((()=>{n.remove(),t.focus()}),50)}(t,i),"cut"!=e.type||t.state.readOnly||t.dispatch({changes:n,scrollIntoView:!0,userEvent:"delete.cut"})};const In=rt.define();function Hn(t,e){let i=[];for(let n of t.facet(ci)){let s=n(t,e);s&&i.push(s)}return i?t.update({effects:i,annotations:In.of(!0)}):null}function zn(t){setTimeout((()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let i=Hn(t.state,e);i?t.dispatch(i):t.update([])}}),10)}kn.focus=t=>{t.inputState.lastFocusTime=Date.now(),t.scrollDOM.scrollTop||!t.inputState.lastScrollTop&&!t.inputState.lastScrollLeft||(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),zn(t)},kn.blur=t=>{t.observer.clearSelectionRange(),zn(t)},kn.compositionstart=kn.compositionupdate=t=>{null==t.inputState.compositionFirstChange&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0)},kn.compositionend=t=>{t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,Be.chrome&&Be.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then((()=>t.observer.flush())):setTimeout((()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])}),50)},kn.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()},kn.beforeinput=(t,e)=>{var i;let n;if(Be.chrome&&Be.android&&(n=pn.find((t=>t.inputType==e.inputType)))&&(t.observer.delayAndroidKey(n.key,n.keyCode),"Backspace"==n.key||"Delete"==n.key)){let e=(null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0;setTimeout((()=>{var i;((null===(i=window.visualViewport)||void 0===i?void 0:i.height)||0)>e+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())}),100)}};const Wn=new Set,Vn=["pre-wrap","normal","pre-line","break-spaces"];class Fn{constructor(e){this.lineWrapping=e,this.doc=t.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Vn.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,l=Math.round(e)!=Math.round(this.lineHeight)||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=e,this.charWidth=i,this.textHeight=n,this.lineLength=s,l){this.heightSamples={};for(let t=0;t0}set outdated(t){this.flags=(t?2:0)|-3&this.flags}setHeight(t,e){this.height!=e&&(Math.abs(this.height-e)>$n&&(t.heightChanged=!0),this.height=e)}replace(t,e,i){return Kn.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,n){let s=this,r=i.doc;for(let o=n.length-1;o>=0;o--){let{fromA:l,toA:a,fromB:h,toB:c}=n[o],u=s.lineAt(l,jn.ByPosNoHeight,i.setDoc(e),0,0),f=u.to>=a?u:s.lineAt(a,jn.ByPosNoHeight,i,0,0);for(c+=f.to-a,a=f.to;o>0&&u.from<=n[o-1].toA;)l=n[o-1].fromA,h=n[o-1].fromB,o--,l2*s){let s=t[e-1];s.break?t.splice(--e,1,s.left,null,s.right):t.splice(--e,1,s.left,s.right),i+=1+s.break,n-=s.size}else{if(!(s>2*n))break;{let e=t[i];e.break?t.splice(i,1,e.left,null,e.right):t.splice(i,1,e.left,e.right),i+=2+e.break,s-=e.size}}else if(n=s&&r(this.blockAt(0,i,n,s))}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setHeight(t,n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Un extends Gn{constructor(t,e){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(t,e,i,n){return new qn(n,this.length,i,this.height,this.breaks)}replace(t,e,i){let n=i[0];return 1==i.length&&(n instanceof Un||n instanceof Jn&&4&n.flags)&&Math.abs(this.length-n.length)<10?(n instanceof Jn?n=new Un(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):Kn.of(i)}updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setHeight(t,n.heights[n.index++]):(i||this.outdated)&&this.setHeight(t,Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Jn extends Kn{constructor(t){super(t,0)}heightMetrics(t,e){let i,n=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-n+1,o=0;if(t.lineWrapping){let e=Math.min(this.height,t.lineHeight*r);i=e/r,this.length>r+1&&(o=(this.height-e)/(this.length-r-1))}else i=this.height/r;return{firstLine:n,lastLine:s,perLine:i,perChar:o}}blockAt(t,e,i,n){let{firstLine:s,lastLine:r,perLine:o,perChar:l}=this.heightMetrics(e,n);if(e.lineWrapping){let s=n+Math.round(Math.max(0,Math.min(1,(t-i)/this.height))*this.length),r=e.doc.lineAt(s),a=o+r.length*l,h=Math.max(i,t-a/2);return new qn(r.from,r.length,h,a,0)}{let n=Math.max(0,Math.min(r-s,Math.floor((t-i)/o))),{from:l,length:a}=e.doc.line(s+n);return new qn(l,a,i+o*n,o,0)}}lineAt(t,e,i,n,s){if(e==jn.ByHeight)return this.blockAt(t,i,n,s);if(e==jn.ByPosNoHeight){let{from:e,to:n}=i.doc.lineAt(t);return new qn(e,n-e,0,0,0)}let{firstLine:r,perLine:o,perChar:l}=this.heightMetrics(i,s),a=i.doc.lineAt(t),h=o+a.length*l,c=a.number-r,u=n+o*c+l*(a.from-s-c);return new qn(a.from,a.length,Math.max(n,Math.min(u,n+this.height-h)),h,0)}forEachLine(t,e,i,n,s,r){t=Math.max(t,s),e=Math.min(e,s+this.length);let{firstLine:o,perLine:l,perChar:a}=this.heightMetrics(i,s);for(let h=t,c=n;h<=e;){let e=i.doc.lineAt(h);if(h==t){let i=e.number-o;c+=l*i+a*(t-s-i)}let n=l+a*e.length;r(new qn(e.from,e.length,c,n,0)),c+=n,h=e.to+1}}replace(t,e,i){let n=this.length-e;if(n>0){let t=i[i.length-1];t instanceof Jn?i[i.length-1]=new Jn(t.length+n):i.push(null,new Jn(n-1))}if(t>0){let e=i[0];e instanceof Jn?i[0]=new Jn(t+e.length):i.unshift(new Jn(t-1),null)}return Kn.of(i)}decomposeLeft(t,e){e.push(new Jn(t-1),null)}decomposeRight(t,e){e.push(null,new Jn(this.length-t-1))}updateHeight(t,e=0,i=!1,n){let s=e+this.length;if(n&&n.from<=e+this.length&&n.more){let i=[],r=Math.max(e,n.from),o=-1;for(n.from>e&&i.push(new Jn(n.from-e-1).updateHeight(t,e));r<=s&&n.more;){let e=t.doc.lineAt(r).length;i.length&&i.push(null);let s=n.heights[n.index++];-1==o?o=s:Math.abs(s-o)>=$n&&(o=-2);let l=new Un(e,s);l.outdated=!1,i.push(l),r+=e+1}r<=s&&i.push(null,new Jn(s-r).updateHeight(t,r));let l=Kn.of(i);return(o<0||Math.abs(l.height-this.height)>=$n||Math.abs(o-this.heightMetrics(t,e).perLine)>=$n)&&(t.heightChanged=!0),l}return(i||this.outdated)&&(this.setHeight(t,t.heightForGap(e,e+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}}class Yn extends Kn{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return 1&this.flags}blockAt(t,e,i,n){let s=i+this.left.height;return to))return a;let h=e==jn.ByPosNoHeight?jn.ByPosNoHeight:jn.ByPos;return l?a.join(this.right.lineAt(o,h,i,r,o)):this.left.lineAt(o,h,i,n,s).join(a)}forEachLine(t,e,i,n,s,r){let o=n+this.left.height,l=s+this.left.length+this.break;if(this.break)t=l&&this.right.forEachLine(t,e,i,o,l,r);else{let a=this.lineAt(l,jn.ByPos,i,n,s);t=t&&a.from<=e&&r(a),e>a.to&&this.right.forEachLine(a.to+1,e,i,o,l,r)}}replace(t,e,i){let n=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-n,e-n,i));let s=[];t>0&&this.decomposeLeft(t,s);let r=s.length;for(let t of i)s.push(t);if(t>0&&Xn(s,r-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,n=i+this.break;if(t>=n)return this.right.decomposeRight(t-n,e);t2*e.size||e.size>2*t.size?Kn.of(this.break?[t,null,e]:[t,e]):(this.left=t,this.right=e,this.height=t.height+e.height,this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,n){let{left:s,right:r}=this,o=e+s.length+this.break,l=null;return n&&n.from<=e+s.length&&n.more?l=s=s.updateHeight(t,e,i,n):s.updateHeight(t,e,i),n&&n.from<=o+r.length&&n.more?l=r=r.updateHeight(t,o,i,n):r.updateHeight(t,o,i),l?this.balanced(s,r):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Xn(t,e){let i,n;null==t[e]&&(i=t[e-1])instanceof Jn&&(n=t[e+1])instanceof Jn&&t.splice(e-1,3,new Jn(i.length+1+n.length))}class Qn{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let t=Math.min(e,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof Un?i.length+=t-this.pos:(t>this.pos||!this.isCovered)&&this.nodes.push(new Un(t-this.pos,-1)),this.writtenTo=t,e>t&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=5)&&this.addLineDeco(n,s,r)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new Un(this.pos-t,-1)),this.writtenTo=this.pos}blankContent(t,e){let i=new Jn(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof Un)return t;let e=new Un(0,-1);return this.nodes.push(e),e}addBlock(t){var e;this.enterLine();let i=null===(e=t.deco)||void 0===e?void 0:e.type;i!=Ke.WidgetAfter||this.isCovered||this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,i!=Ke.WidgetBefore&&(this.covering=t)}addLineDeco(t,e,i){let n=this.ensureLine();n.length+=i,n.collapsed+=i,n.widgetHeight=Math.max(n.widgetHeight,t),n.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||e instanceof Un||this.isCovered?(this.writtenToi.clientHeight||i.scrollWidth>i.clientWidth)&&"visible"!=n.overflow){let n=i.getBoundingClientRect();r=Math.max(r,n.left),o=Math.min(o,n.right),l=Math.max(l,n.top),a=e==t.parentNode?n.bottom:Math.min(a,n.bottom)}e="absolute"==n.position||"fixed"==n.position?i.offsetParent:i.parentNode}else{if(11!=e.nodeType)break;e=e.host}return{left:r-i.left,right:Math.max(r,o)-i.left,top:l-(i.top+e),bottom:Math.max(l,a)-(i.top+e)}}function es(t,e){let i=t.getBoundingClientRect();return{left:0,right:i.right-i.left,top:e,bottom:i.bottom-(i.top+e)}}class is{constructor(t,e,i){this.from=t,this.to=e,this.size=i}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;i"function"!=typeof t&&"cm-lineWrapping"==t.class));this.heightOracle=new Fn(i),this.stateDeco=e.facet(Si).filter((t=>"function"!=typeof t)),this.heightMap=Kn.empty().applyChanges(this.stateDeco,t.empty,this.heightOracle.setDoc(e.doc),[new Ei(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Ge.set(this.lineGaps.map((t=>t.draw(this,!1)))),this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let n=i?e.head:e.anchor;if(!t.some((({from:t,to:e})=>n>=t&&n<=e))){let{from:e,to:i}=this.lineBlockAt(n);t.push(new rs(e,i))}}this.viewports=t.sort(((t,e)=>t.from-e.from)),this.scaler=this.heightMap.height<=7e6?hs:new cs(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,(t=>{this.viewportLines.push(1==this.scaler.scale?t:us(t,this.scaler))}))}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Si).filter((t=>"function"!=typeof t));let n=t.changedRanges,s=Ei.extendWithRanges(n,function(t,e,i){let n=new Zn;return Mt.compare(t,e,i,n,0),n.changes}(i,this.stateDeco,t?t.changes:A.empty(this.state.doc.length))),r=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),s),this.heightMap.height!=r&&(t.flags|=2),o?(this.scrollAnchorPos=t.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let l=s.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,e));let a=!t.changes.empty||2&t.flags||l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,this.updateForViewport(),a&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&t.selectionSet&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(fi)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let i=e.contentDOM,n=window.getComputedStyle(i),s=this.heightOracle,r=n.whiteSpace;this.defaultTextDirection="rtl"==n.direction?Bi.RTL:Bi.LTR;let o=this.heightOracle.mustRefreshForWrapping(r),l=i.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,c=0;if(l.width&&l.height){let t=l.width/i.offsetWidth,e=l.height/i.offsetHeight;t>.995&&t<1.005&&(t=1),e>.995&&e<1.005&&(e=1),this.scaleX==t&&this.scaleY==e||(this.scaleX=t,this.scaleY=e,h|=8,o=a=!0)}let u=(parseInt(n.paddingTop)||0)*this.scaleY,f=(parseInt(n.paddingBottom)||0)*this.scaleY;this.paddingTop==u&&this.paddingBottom==f||(this.paddingTop=u,this.paddingBottom=f,h|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=8);let d=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=de(e.scrollDOM);let p=(this.printing?es:ts)(i,this.paddingTop),g=p.top-this.pixelViewport.top,m=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let w=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(w!=this.inView&&(this.inView=w,w&&(a=!0)),!this.inView&&!this.scrollTarget)return 0;let y=l.width;if(this.contentDOMWidth==y&&this.editorHeight==e.scrollDOM.clientHeight||(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=8),a){let i=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(i)&&(o=!0),o||s.lineWrapping&&Math.abs(y-this.contentDOMWidth)>s.charWidth){let{lineHeight:t,charWidth:n,textHeight:l}=e.docView.measureTextSize();o=t>0&&s.refresh(r,t,n,l,y/n,i),o&&(e.docView.minWidth=0,h|=8)}g>0&&m>0?c=Math.max(g,m):g<0&&m<0&&(c=Math.min(g,m)),s.heightChanged=!1;for(let n of this.viewports){let r=n.from==this.viewport.from?i:e.docView.measureVisibleLineHeights(n);this.heightMap=(o?Kn.empty().applyChanges(this.stateDeco,t.empty,this.heightOracle,[new Ei(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new _n(n.from,r))}s.heightChanged&&(h|=2)}let v=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return v&&(this.viewport=this.getViewport(c,this.scrollTarget)),this.updateForViewport(),(2&h||v)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),n=this.heightMap,s=this.heightOracle,{visibleTop:r,visibleBottom:o}=this,l=new rs(n.lineAt(r-1e3*i,jn.ByHeight,s,0,0).from,n.lineAt(o+1e3*(1-i),jn.ByHeight,s,0,0).to);if(e){let{head:t}=e.range;if(tl.to){let i,r=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),o=n.lineAt(t,jn.ByPos,s,0,0);i="center"==e.y?(o.top+o.bottom)/2-r/2:"start"==e.y||"nearest"==e.y&&t=o+Math.max(10,Math.min(i,250)))&&n>r-2e3&&s>1,r=n<<1;if(this.defaultTextDirection!=Bi.LTR&&!i)return[];let o=[],l=(n,r,a,h)=>{if(r-nn&&tt.from>=a.from&&t.to<=a.to&&Math.abs(t.from-n)t.frome))));if(!f){if(rt.from<=r&&t.to>=r))){let t=e.moveToLineBoundary(B.cursor(r),!1,!0).head;t>n&&(r=t)}f=new is(n,r,this.gapSize(a,n,r,h))}o.push(f)};for(let t of this.viewportLines){if(t.lengtht.from&&l(t.from,s,t,e),ot.draw(this,this.heightOracle.lineWrapping)))))}computeVisibleRanges(){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let e=[];Mt.spans(t,this.viewport.from,this.viewport.to,{span(t,i){e.push({from:t,to:i})},point(){}},20);let i=e.length!=this.visibleRanges.length||this.visibleRanges.some(((t,i)=>t.from!=e[i].from||t.to!=e[i].to));return this.visibleRanges=e,i?4:0}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find((e=>e.from<=t&&e.to>=t))||us(this.heightMap.lineAt(t,jn.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return us(this.heightMap.lineAt(this.scaler.fromDOM(t),jn.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return us(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class rs{constructor(t,e){this.from=t,this.to=e}}function os(t,e,i){let n=[],s=t,r=0;return Mt.spans(i,t,e,{span(){},point(t,e){t>s&&(n.push({from:s,to:t}),r+=t-s),s=e}},20),s=1)return e[e.length-1].to;let n=Math.floor(t*i);for(let t=0;;t++){let{from:i,to:s}=e[t],r=s-i;if(n<=r)return i+n;n-=r}}function as(t,e){let i=0;for(let{from:n,to:s}of t.ranges){if(e<=s){i+=e-n;break}i+=s-n}return i/t.total}const hs={toDOM:t=>t,fromDOM:t=>t,scale:1};class cs{constructor(t,e,i){let n=0,s=0,r=0;this.viewports=i.map((({from:i,to:s})=>{let r=e.lineAt(i,jn.ByPos,t,0,0).top,o=e.lineAt(s,jn.ByPos,t,0,0).bottom;return n+=o-r,{from:i,to:s,top:r,bottom:o,domTop:0,domBottom:0}})),this.scale=(7e6-n)/(e.height-n);for(let t of this.viewports)t.domTop=r+(t.top-s)*this.scale,r=t.domBottom=t.domTop+(t.bottom-t.top),s=t.bottom}toDOM(t){for(let e=0,i=0,n=0;;e++){let s=eus(t,e))):t._content)}const fs=R.define({combine:t=>t.join(" ")}),ds=R.define({combine:t=>t.indexOf(!0)>-1}),ps=Ft.newName(),gs=Ft.newName(),ms=Ft.newName(),ws={"&light":"."+gs,"&dark":"."+ms};function ys(t,e,i){return new Ft(e,{finish:e=>/&/.test(e)?e.replace(/&\w*/,(e=>{if("&"==e)return t;if(!i||!i[e])throw new RangeError(`Unsupported selector: ${e}`);return i[e]})):t+" "+e})}const vs=ys("."+ps,{"&":{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",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"},"&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,\')',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"}},ws),ks="￿";class bs{constructor(t,e){this.points=t,this.text="",this.lineSeparator=e.facet(vt.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=ks}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let n=t;;){this.findPointBefore(i,n);let t=this.text.length;this.readNode(n);let s=n.nextSibling;if(s==e)break;let r=me.get(n),o=me.get(s);(r&&o?r.breakAfter:(r?r.breakAfter:xs(n))||xs(s)&&("BR"!=n.nodeName||n.cmIgnore)&&this.text.length>t)&&this.lineBreak(),n=s}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,n=this.lineSeparator?null:/\r\n?|\n/g;;){let s,r=-1,o=1;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(s=n.exec(e))&&(r=s.index,o=s[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let e of this.points)e.node==t&&e.pos>this.text.length&&(e.pos-=o-1);i=r+o}}readNode(t){if(t.cmIgnore)return;let e=me.get(t),i=e&&e.overrideDOMText;if(null!=i){this.findPointInside(t,i.length);for(let t=i.iter();!t.next().done;)t.lineBreak?this.lineBreak():this.append(t.value)}else 3==t.nodeType?this.readTextNode(t):"BR"==t.nodeName?t.nextSibling&&this.lineBreak():1==t.nodeType&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(3==t.nodeType?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+Math.min(e,i.offset))}}function xs(t){return 1==t.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}class Ss{constructor(t,e){this.node=t,this.offset=e,this.pos=-1}}class As{constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text="";let{impreciseHead:s,impreciseAnchor:r}=t.docView;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=t.docView.domBoundsAround(e,i,0))){let e=s||r?[]:function(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:i,anchorOffset:n,focusNode:s,focusOffset:r}=t.observer.selectionRange;return i&&(e.push(new Ss(i,n)),s==i&&r==n||e.push(new Ss(s,r))),e}(t),i=new bs(e,t.state);i.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=i.text,this.newSel=function(t,e){if(0==t.length)return null;let i=t[0].pos,n=2==t.length?t[1].pos:i;return i>-1&&n>-1?B.single(i+e,n+e):null}(e,this.bounds.from)}else{let e=t.observer.selectionRange,i=s&&s.node==e.focusNode&&s.offset==e.focusOffset||!Xt(t.contentDOM,e.focusNode)?t.state.selection.main.head:t.docView.posFromDOM(e.focusNode,e.focusOffset),n=r&&r.node==e.anchorNode&&r.offset==e.anchorOffset||!Xt(t.contentDOM,e.anchorNode)?t.state.selection.main.anchor:t.docView.posFromDOM(e.anchorNode,e.anchorOffset);this.newSel=B.single(n,i)}}}function Ms(e,i){let n,{newSel:s}=i,r=e.state.selection.main,o=e.inputState.lastKeyTime>Date.now()-100?e.inputState.lastKeyCode:-1;if(i.bounds){let{from:s,to:l}=i.bounds,a=r.from,h=null;(8===o||Be.android&&i.text.length0&&l>0&&t.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;return"end"==n&&(i-=o+Math.max(0,r-Math.min(o,l))-r),o=o?r-i:0,l=r+(l-o),o=r):l=l?r-i:0,o=r+(o-l),l=r),{from:r,toA:o,toB:l}}(e.state.doc.sliceString(s,l,ks),i.text,a-s,h);c&&(Be.chrome&&13==o&&c.toB==c.from+2&&i.text.slice(c.from,c.toB)==ks+ks&&c.toB--,n={from:s+c.from,to:s+c.toA,insert:t.of(i.text.slice(c.from,c.toB).split(ks))})}else s&&(!e.hasFocus&&e.state.facet(mi)||s.main.eq(r))&&(s=null);if(!n&&!s)return!1;if(!n&&i.typeOver&&!r.empty&&s&&s.main.empty?n={from:r.from,to:r.to,insert:e.state.doc.slice(r.from,r.to)}:n&&n.from>=r.from&&n.to<=r.to&&(n.from!=r.from||n.to!=r.to)&&r.to-r.from-(n.to-n.from)<=4?n={from:r.from,to:r.to,insert:e.state.doc.slice(r.from,n.from).append(n.insert).append(e.state.doc.slice(n.to,r.to))}:(Be.mac||Be.android)&&n&&n.from==n.to&&n.from==r.head-1&&/^\. ?$/.test(n.insert.toString())&&"off"==e.contentDOM.getAttribute("autocorrect")?(s&&2==n.insert.length&&(s=B.single(s.main.anchor-1,s.main.head-1)),n={from:r.from,to:r.to,insert:t.of([" "])}):Be.chrome&&n&&n.from==n.to&&n.from==r.head&&"\n "==n.insert.toString()&&e.lineWrapping&&(s&&(s=B.single(s.main.anchor-1,s.main.head-1)),n={from:r.from,to:r.to,insert:t.of([" "])}),n){if(Be.ios&&e.inputState.flushIOSKey(e))return!0;if(Be.android&&(n.from==r.from&&n.to==r.to&&1==n.insert.length&&2==n.insert.lines&&ue(e.contentDOM,"Enter",13)||(n.from==r.from-1&&n.to==r.to&&0==n.insert.length||8==o&&n.insert.lengthr.head)&&ue(e.contentDOM,"Backspace",8)||n.from==r.from&&n.to==r.to+1&&0==n.insert.length&&ue(e.contentDOM,"Delete",46)))return!0;let t,i=n.insert.toString();e.inputState.composing>=0&&e.inputState.composing++;let l=()=>t||(t=function(t,e,i){let n,s=t.state,r=s.selection.main;if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!i||i.main.empty&&i.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let i=r.frome.to?s.sliceDoc(e.to,r.to):"";n=s.replaceSelection(t.state.toText(i+e.insert.sliceString(0,void 0,t.state.lineBreak)+o))}else{let o=s.changes(e),l=i&&i.main.to<=o.newLength?i.main:void 0;if(s.selection.ranges.length>1&&t.inputState.composing>=0&&e.to<=r.to&&e.to>=r.to-10){let a,h=t.state.sliceDoc(e.from,e.to),c=i&&Xi(t,i.main.head);if(c){let t=e.insert.length-(e.to-e.from);a={from:c.from,to:c.to-t}}else a=t.state.doc.lineAt(r.head);let u=r.to-e.to,f=r.to-r.from;n=s.changeByRange((i=>{if(i.from==r.from&&i.to==r.to)return{changes:o,range:l||i.map(o)};let n=i.to-u,c=n-h.length;if(i.to-i.from!=f||t.state.sliceDoc(c,n)!=h||i.to>=a.from&&i.from<=a.to)return{range:i};let d=s.changes({from:c,to:n,insert:e.insert}),p=i.to-r.to;return{changes:d,range:l?B.range(Math.max(0,l.anchor+p),Math.max(0,l.head+p)):i.map(d)}}))}else n={changes:o,selection:l&&s.selection.replaceRange(l)}}let o="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,o+=".compose",t.inputState.compositionFirstChange&&(o+=".start",t.inputState.compositionFirstChange=!1)),s.update(n,{userEvent:o,scrollIntoView:!0})}(e,n,s));return e.state.facet(hi).some((t=>t(e,n.from,n.to,i,l)))||e.dispatch(l()),!0}if(s&&!s.main.eq(r)){let t=!1,i="select";return e.inputState.lastSelectionTime>Date.now()-50&&("select"==e.inputState.lastSelectionOrigin&&(t=!0),i=e.inputState.lastSelectionOrigin),e.dispatch({selection:s,scrollIntoView:t,userEvent:i}),!0}return!1}const Ts={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Cs=Be.ie&&Be.ie_version<=11;class Os{constructor(t){this.view=t,this.active=!1,this.selectionRange=new oe,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.resizeContent=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver((e=>{for(let t of e)this.queue.push(t);(Be.ie&&Be.ie_version<=11||Be.ios&&t.composing)&&e.some((t=>"childList"==t.type&&t.removedNodes.length||"characterData"==t.type&&t.oldValue.length>t.target.nodeValue.length))?this.flushSoon():this.flush()})),Cs&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.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 t;(null===(t=this.view.docView)||void 0===t?void 0:t.lastUpdate)this.view.requestMeasure())),this.resizeContent.observe(t.contentDOM)),this.addWindowListeners(this.win=t.win),this.start(),"function"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver((t=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=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((t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))}),{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runScrollHandlers(this.view,t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(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(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some(((e,i)=>e!=t[i])))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,n=this.selectionRange;if(i.state.facet(mi)?i.root.activeElement!=this.dom:!Qt(i.dom,n))return;let s=n.anchorNode&&i.docView.nearest(n.anchorNode);s&&s.ignoreEvent(t)?e||(this.selectionChanged=!1):(Be.ie&&Be.ie_version<=11||Be.android&&Be.chrome)&&!i.state.selection.main.empty&&n.focusNode&&te(n.focusNode,n.focusOffset,n.anchorNode,n.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=Be.safari&&11==t.root.nodeType&&function(t){let e=t.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}(this.dom.ownerDocument)==this.dom&&function(t){let e=null;function i(t){t.preventDefault(),t.stopImmediatePropagation(),e=t.getTargetRanges()[0]}if(t.contentDOM.addEventListener("beforeinput",i,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",i,!0),!e)return null;let n=e.startContainer,s=e.startOffset,r=e.endContainer,o=e.endOffset,l=t.docView.domAtPos(t.state.selection.main.anchor);return te(l.node,l.offset,r,o)&&([n,s,r,o]=[r,o,n,s]),{anchorNode:n,anchorOffset:s,focusNode:r,focusOffset:o}}(this.view)||Yt(t.root);if(!e||this.selectionRange.eq(e))return!1;let i=Qt(this.dom,e);return i&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let t=this.delayedAndroidKey;t&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=t.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&t.force&&ue(this.dom,t.key,t.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(t)}this.delayedAndroidKey&&"Enter"!=t||(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()})))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,n=!1;for(let s of t){let t=this.readMutation(s);t&&(t.typeOver&&(n=!0),-1==e?({from:e,to:i}=t):(e=Math.min(t.from,e),i=Math.max(t.to,i)))}return{from:e,to:i,typeOver:n}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.selectionChanged&&Qt(this.dom,this.selectionRange);if(t<0&&!n)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new As(this.view,t,e,i);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return!1;let i=this.view.state,n=Ms(this.view,e);return this.view.state==i&&this.view.update([]),n}readMutation(t){let e=this.view.docView.nearest(t.target);if(!e||e.ignoreMutation(t))return null;if(e.markDirty("attributes"==t.type),"attributes"==t.type&&(e.flags|=4),"childList"==t.type){let i=Ds(e,t.previousSibling||t.target.previousSibling,-1),n=Ds(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:n?e.posBefore(n):e.posAtEnd,typeOver:!1}}return"characterData"==t.type?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var t,e,i,n;this.stop(),null===(t=this.intersection)||void 0===t||t.disconnect(),null===(e=this.gapIntersection)||void 0===e||e.disconnect(),null===(i=this.resizeScroll)||void 0===i||i.disconnect(),null===(n=this.resizeContent)||void 0===n||n.disconnect();for(let 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 Ds(t,e,i){for(;e;){let n=me.get(e);if(n&&n.parent==t)return n;let s=e.parentNode;e=s!=t.dom?s:i>0?e.nextSibling:e.previousSibling}return null}class Es{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 this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){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.style.cssText="position: fixed; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM);let{dispatch:e}=t;this.dispatchTransactions=t.dispatchTransactions||e&&(t=>t.forEach((t=>e(t,this))))||(t=>this.update(t)),this.dispatch=this.dispatch.bind(this),this._root=t.root||function(t){for(;t;){if(t&&(9==t.nodeType||11==t.nodeType&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}(t.parent)||document,this.viewState=new ss(t.state||vt.create(t)),this.plugins=this.state.facet(yi).map((t=>new ki(t)));for(let t of this.plugins)t.update(this);this.observer=new Os(this),this.inputState=new dn(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new Ji(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),t.parent&&t.parent.appendChild(this.dom)}dispatch(...t){let e=1==t.length&&t[0]instanceof ht?t:1==t.length&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(0!=this.updateState)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e,i=!1,n=!1,s=this.state;for(let e of t){if(e.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=e.state}if(this.destroyed)return void(this.viewState.state=s);let r=this.hasFocus,o=0,l=null;t.some((t=>t.annotation(In)))?(this.inputState.notifiedFocused=r,o=1):r!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=r,l=Hn(s,r),l||(o=1));let a=this.observer.delayedAndroidKey,h=null;if(a?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(h=null)):this.observer.clear(),s.facet(vt.phrases)!=this.state.facet(vt.phrases))return this.setState(s);e=Li.create(this,s,t),e.flags|=o;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let e of t){if(c&&(c=c.map(e.changes)),e.scrollIntoView){let{main:t}=e.state.selection;c=new di(t.empty?t:B.cursor(t.head,t.head>t.anchor?-1:1))}for(let t of e.effects)t.is(pi)&&(c=t.value)}this.viewState.update(e,c),this.bidiCache=Ps.update(this.bidiCache,e.changes),e.empty||(this.updatePlugins(e),this.inputState.update(e)),i=this.docView.update(e),this.state.facet(Di)!=this.styleModules&&this.mountStyles(),n=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(i,t.some((t=>t.isUserEvent("select.pointer"))))}finally{this.updateState=0}if(e.startState.facet(fs)!=e.state.facet(fs)&&(this.viewState.mustMeasureContent=!0),(i||n||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!e.empty)for(let t of this.state.facet(ai))t(e);(l||h)&&Promise.resolve().then((()=>{l&&this.state==l.startState&&this.dispatch(l),h&&!Ms(this,h)&&a.force&&ue(this.contentDOM,a.key,a.keyCode)}))}setState(t){if(0!=this.updateState)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed)return void(this.viewState.state=t);this.updateState=2;let e=this.hasFocus;try{for(let t of this.plugins)t.destroy(this);this.viewState=new ss(t),this.plugins=t.facet(yi).map((t=>new ki(t))),this.pluginMap.clear();for(let t of this.plugins)t.update(this);this.docView=new Ji(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(yi),i=t.state.facet(yi);if(e!=i){let n=[];for(let s of i){let i=e.indexOf(s);if(i<0)n.push(new ki(s));else{let e=this.plugins[i];e.mustUpdate=t,n.push(e)}}for(let e of this.plugins)e.mustUpdate!=t&&e.destroy(this);this.plugins=n,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let e of this.plugins)e.mustUpdate=t;for(let t=0;t-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)return this.measureScheduled=-1,void this.requestMeasure();this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.scrollDOM,n=i.scrollTop*this.scaleY,{scrollAnchorPos:s,scrollAnchorHeight:r}=this.viewState;Math.abs(n-this.viewState.scrollTop)>1&&(r=-1),this.viewState.scrollAnchorHeight=-1;try{for(let t=0;;t++){if(r<0)if(de(i))s=-1,r=this.viewState.heightMap.height;else{let t=this.viewState.scrollAnchorAt(n);s=t.from,r=t.top}this.updateState=1;let o=this.viewState.measure(this);if(!o&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(t>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let l=[];4&o||([this.measureRequests,l]=[l,this.measureRequests]);let a=l.map((t=>{try{return t.read(this)}catch(t){return gi(this.state,t),Bs}})),h=Li.create(this,this.state,[]),c=!1;h.flags|=o,e?e.flags|=o:e=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),c=this.docView.update(h));for(let t=0;t1||t<-1){n+=t,i.scrollTop=n/this.scaleY,r=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let t of this.state.facet(ai))t(e)}get themeClasses(){return ps+" "+(this.state.facet(ds)?ms:gs)+" "+this.state.facet(fs)}updateAttrs(){let t=Ns(this,bi,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(mi)?"true":"false",class:"cm-content",style:`${Be.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),Ns(this,xi,e);let i=this.observer.ignore((()=>{let i=qe(this.contentDOM,this.contentAttrs,e),n=qe(this.dom,this.editorAttrs,t);return i||n}));return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let t of i.effects)t.is(Es.announce)&&(e&&(this.announceDOM.textContent=""),e=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=t.value)}mountStyles(){this.styleModules=this.state.facet(Di);let t=this.state.facet(Es.cspNonce);Ft.mount(this.root,this.styleModules.concat(vs).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(2==this.updateState)throw new Error("Reading the editor layout isn't allowed during an update");0==this.updateState&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame((()=>this.measure()))),t){if(this.measureRequests.indexOf(t)>-1)return;if(null!=t.key)for(let e=0;ee.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(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return fn(this,t,cn(this,t,e,i))}moveByGroup(t,e){return fn(this,t,cn(this,t,e,(e=>function(t,e,i){let n=t.state.charCategorizer(e),s=n(i);return t=>{let e=n(t);return s==mt.Space&&(s=e),s==e}}(this,t.head,e))))}moveToLineBoundary(t,e,i=!0){return function(t,e,i,n){let s=function(t,e){let i=t.lineBlockAt(e);if(Array.isArray(i.type))for(let t of i.type)if(t.to>e||t.to==e&&(t.to==i.to||t.type==Ke.Text))return t;return i}(t,e.head),r=n&&s.type==Ke.Text&&(t.lineWrapping||s.widgetLineBreaks)?t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head):null;if(r){let e=t.dom.getBoundingClientRect(),n=t.textDirectionAt(s.from),o=t.posAtCoords({x:i==(n==Bi.LTR)?e.right-1:e.left+1,y:(r.top+r.bottom)/2});if(null!=o)return B.cursor(o,i?-1:1)}return B.cursor(i?s.to:s.from,i?-1:1)}(this,t,e,i)}moveVertically(t,e,i){return fn(this,t,function(t,e,i,n){let s=e.head,r=i?1:-1;if(s==(i?t.state.doc.length:0))return B.cursor(s,e.assoc);let o,l=e.goalColumn,a=t.contentDOM.getBoundingClientRect(),h=t.coordsAtPos(s),c=t.documentTop;if(h)null==l&&(l=h.left-a.left),o=r<0?h.top:h.bottom;else{let e=t.viewState.lineBlockAt(s);null==l&&(l=Math.min(a.right-a.left,t.defaultCharacterWidth*(s-e.from))),o=(r<0?e.top:e.bottom)+c}let u=a.left+l,f=null!=n?n:t.viewState.heightOracle.textHeight>>1;for(let i=0;;i+=10){let n=o+(f+i)*r,h=an(t,{x:u,y:n},!1,r);if(na.bottom||(r<0?hs))return B.cursor(h,e.assoc,void 0,l)}}(this,t,e,i))}domAtPos(t){return this.docView.domAtPos(t)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){return this.readMeasured(),an(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let n=this.state.doc.lineAt(t),s=this.bidiSpans(n);return se(i,s[Fi.find(s,t-n.from,-1,e)].dir==Bi.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(ui)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>Ls)return Ki(t.length);let e,i=this.textDirectionAt(t.from);for(let n of this.bidiCache)if(n.from==t.from&&n.dir==i&&(n.fresh||_i(n.isolates,e=Ti(this,t.from,t.to))))return n.order;e||(e=Ti(this,t.from,t.to));let n=function(t,e,i){if(!t)return[new Fi(0,0,e==Ni?1:0)];if(e==Pi&&!i.length&&!Vi.test(t))return Ki(t.length);if(i.length)for(;t.length>qi.length;)qi[qi.length]=256;let n=[],s=e==Pi?0:1;return $i(t,s,s,i,0,t.length,n),n}(t.text,i,e);return this.bidiCache.push(new Ps(t.from,t.to,i,e,!0,n)),n}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||Be.safari&&(null===(t=this.inputState)||void 0===t?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore((()=>{he(this.contentDOM),this.docView.updateSelection()}))}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((9==t.nodeType?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){return pi.of(new di("number"==typeof t?B.cursor(t):t,e.y,e.x,e.yMargin,e.xMargin))}static domEventHandlers(t){return vi.define((()=>({})),{eventHandlers:t})}static theme(t,e){let i=Ft.newName(),n=[fs.of(i),Di.of(ys(`.${i}`,t))];return e&&e.dark&&n.push(ds.of(!0)),n}static baseTheme(t){return j.lowest(Di.of(ys("."+ps,t,ws)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&me.get(i)||me.get(t);return(null===(e=null==n?void 0:n.rootView)||void 0===e?void 0:e.view)||null}}Es.styleModule=Di,Es.inputHandler=hi,Es.focusChangeEffect=ci,Es.perLineTextDirection=ui,Es.exceptionSink=li,Es.updateListener=ai,Es.editable=mi,Es.mouseSelectionStyle=oi,Es.dragMovesSelection=ri,Es.clickAddsSelectionRange=si,Es.decorations=Si,Es.atomicRanges=Ai,Es.bidiIsolatedRanges=Mi,Es.scrollMargins=Ci,Es.darkTheme=ds,Es.cspNonce=R.define({combine:t=>t.length?t[0]:""}),Es.contentAttributes=xi,Es.editorAttributes=bi,Es.lineWrapping=Es.contentAttributes.of({class:"cm-lineWrapping"}),Es.announce=at.define();const Ls=4096,Bs={};class Ps{constructor(t,e,i,n,s,r){this.from=t,this.to=e,this.dir=i,this.isolates=n,this.fresh=s,this.order=r}static update(t,e){if(e.empty&&!t.some((t=>t.fresh)))return t;let i=[],n=t.length?t[t.length-1].dir:Bi.LTR;for(let s=Math.max(0,t.length-10);s=0;s--){let e=n[s],r="function"==typeof e?e(t):e;r&&Ve(r,i)}return i}const Rs=Be.mac?"mac":Be.windows?"win":Be.linux?"linux":"key";function Is(t,e,i){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),!1!==i&&e.shiftKey&&(t="Shift-"+t),t}const Hs=j.default(Es.domEventHandlers({keydown:(t,e)=>qs(Vs(e.state),t,e,"editor")})),zs=R.define({enables:Hs}),Ws=new WeakMap;function Vs(t){let e=t.facet(zs),i=Ws.get(e);return i||Ws.set(e,i=function(t,e=Rs){let i=Object.create(null),n=Object.create(null),s=(t,e)=>{let i=n[t];if(null==i)n[t]=e;else if(i!=e)throw new Error("Key binding "+t+" is used both as a regular binding and as a multi-stroke prefix")},r=(t,n,r,o,l)=>{var a,h;let c=i[t]||(i[t]=Object.create(null)),u=n.split(/ (?!$)/).map((t=>function(t,e){const i=t.split(/-(?!$)/);let n,s,r,o,l=i[i.length-1];"Space"==l&&(l=" ");for(let t=0;t{let n=Fs={view:e,prefix:i,scope:t};return setTimeout((()=>{Fs==n&&(Fs=null)}),_s),!0}]})}let f=u.join(" ");s(f,!1);let d=c[f]||(c[f]={preventDefault:!1,stopPropagation:!1,run:(null===(h=null===(a=c._any)||void 0===a?void 0:a.run)||void 0===h?void 0:h.slice())||[]});r&&d.run.push(r),o&&(d.preventDefault=!0),l&&(d.stopPropagation=!0)};for(let n of t){let t=n.scope?n.scope.split(" "):["editor"];if(n.any)for(let e of t){let t=i[e]||(i[e]=Object.create(null));t._any||(t._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let e in t)t[e].run.push(n.any)}let s=n[e]||n.key;if(s)for(let e of t)r(e,s,n.run,n.preventDefault,n.stopPropagation),n.shift&&r(e,"Shift-"+s,n.shift,n.preventDefault,n.stopPropagation)}return i}(e.reduce(((t,e)=>t.concat(e)),[]))),i}let Fs=null;const _s=4e3;function qs(t,e,i,n){let s=function(t){var e=!(Kt&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Gt&&t.shiftKey&&t.key&&1==t.key.length||"Unidentified"==t.key)&&t.key||(t.shiftKey?$t:jt)[t.keyCode]||t.key||"Unidentified";return"Esc"==e&&(e="Escape"),"Del"==e&&(e="Delete"),"Left"==e&&(e="ArrowLeft"),"Up"==e&&(e="ArrowUp"),"Right"==e&&(e="ArrowRight"),"Down"==e&&(e="ArrowDown"),e}(e),r=k(y(s,0))==s.length&&" "!=s,o="",l=!1,a=!1,h=!1;Fs&&Fs.view==i&&Fs.scope==n&&(o=Fs.prefix+" ",mn.indexOf(e.keyCode)<0&&(a=!0,Fs=null));let c,u,f=new Set,d=t=>{if(t){for(let n of t.run)if(!f.has(n)&&(f.add(n),n(i,e)))return t.stopPropagation&&(h=!0),!0;t.preventDefault&&(t.stopPropagation&&(h=!0),a=!0)}return!1},p=t[n];return p&&(d(p[o+Is(s,e,!r)])?l=!0:r&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Be.windows&&e.ctrlKey&&e.altKey)&&(c=jt[e.keyCode])&&c!=s?(d(p[o+Is(c,e,!0)])||e.shiftKey&&(u=$t[e.keyCode])!=s&&u!=c&&d(p[o+Is(u,e,!1)]))&&(l=!0):r&&e.shiftKey&&d(p[o+Is(s,e,!0)])&&(l=!0),!l&&d(p._any)&&(l=!0)),a&&(l=!0),l&&h&&e.stopPropagation(),l}Be.ios;const js=R.define({combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomContainer;return{topContainer:e,bottomContainer:i}}});function $s(t,e){let i=t.plugin(Ks),n=i?i.specs.indexOf(e):-1;return n>-1?i.panels[n]:null}const Ks=vi.fromClass(class{constructor(t){this.input=t.state.facet(Js),this.specs=this.input.filter((t=>t)),this.panels=this.specs.map((e=>e(t)));let e=t.state.facet(js);this.top=new Gs(t,!0,e.topContainer),this.bottom=new Gs(t,!1,e.bottomContainer),this.top.sync(this.panels.filter((t=>t.top))),this.bottom.sync(this.panels.filter((t=>!t.top)));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(t){let e=t.state.facet(js);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Gs(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Gs(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let i=t.state.facet(Js);if(i!=this.input){let e=i.filter((t=>t)),n=[],s=[],r=[],o=[];for(let i of e){let e,l=this.specs.indexOf(i);l<0?(e=i(t.view),o.push(e)):(e=this.panels[l],e.update&&e.update(t)),n.push(e),(e.top?s:r).push(e)}this.specs=e,this.panels=n,this.top.sync(s),this.bottom.sync(r);for(let t of o)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}else for(let e of this.panels)e.update&&e.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Es.scrollMargins.of((e=>{let i=e.plugin(t);return i&&{top:i.top.scrollMargin(),bottom:i.bottom.scrollMargin()}}))});class Gs{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(t){for(let e of this.panels)e.destroy&&t.indexOf(e)<0&&e.destroy();this.panels=t,this.syncDOM()}syncDOM(){if(0==this.panels.length)return void(this.dom&&(this.dom.remove(),this.dom=void 0));if(!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";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let t=this.dom.firstChild;for(let e of this.panels)if(e.dom.parentNode==this.dom){for(;t!=e.dom;)t=Us(t);t=t.nextSibling}else this.dom.insertBefore(e.dom,t);for(;t;)t=Us(t)}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(let t of this.classes.split(" "))t&&this.container.classList.remove(t);for(let t of(this.classes=this.view.themeClasses).split(" "))t&&this.container.classList.add(t)}}}function Us(t){let e=t.nextSibling;return t.remove(),e}const Js=R.define({enables:Ks});class Ys extends bt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}}Ys.prototype.elementClass="",Ys.prototype.toDOM=void 0,Ys.prototype.mapMode=x.TrackBefore,Ys.prototype.startSide=Ys.prototype.endSide=-1,Ys.prototype.point=!0;const Xs=R.define(),Qs=R.define(),Zs=R.define({combine:t=>t.some((t=>t))});function tr(t){let e=[er];return t&&!1===t.fixed&&e.push(Zs.of(!0)),e}const er=vi.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(Qs).map((e=>new rr(t,e)));for(let t of this.gutters)this.dom.appendChild(t.dom);this.fixed=!t.state.facet(Zs),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.viewport,n=Math.min(e.to,i.to)-Math.max(e.from,i.from);this.syncGutters(n<.8*(i.to-i.from))}t.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(Zs)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let i=Mt.iter(this.view.state.facet(Xs),this.view.viewport.from),n=[],s=this.gutters.map((t=>new sr(t,this.view.viewport,-this.view.documentPadding.top)));for(let t of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(t.type)){let e=!0;for(let r of t.type)if(r.type==Ke.Text&&e){nr(i,n,r.from);for(let t of s)t.line(this.view,r,n);e=!1}else if(r.widget)for(let t of s)t.widget(this.view,r)}else if(t.type==Ke.Text){nr(i,n,t.from);for(let e of s)e.line(this.view,t,n)}else if(t.widget)for(let e of s)e.widget(this.view,t);for(let t of s)t.finish();t&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(t){let e=t.startState.facet(Qs),i=t.state.facet(Qs),n=t.docChanged||t.heightChanged||t.viewportChanged||!Mt.eq(t.startState.facet(Xs),t.state.facet(Xs),t.view.viewport.from,t.view.viewport.to);if(e==i)for(let e of this.gutters)e.update(t)&&(n=!0);else{n=!0;let s=[];for(let n of i){let i=e.indexOf(n);i<0?s.push(new rr(this.view,n)):(this.gutters[i].update(t),s.push(this.gutters[i]))}for(let t of this.gutters)t.dom.remove(),s.indexOf(t)<0&&t.destroy();for(let t of s)this.dom.appendChild(t.dom);this.gutters=s}return n}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()}},{provide:t=>Es.scrollMargins.of((e=>{let i=e.plugin(t);return i&&0!=i.gutters.length&&i.fixed?e.textDirection==Bi.LTR?{left:i.dom.offsetWidth*e.scaleX}:{right:i.dom.offsetWidth*e.scaleX}:null}))});function ir(t){return Array.isArray(t)?t:[t]}function nr(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t.next()}class sr{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=Mt.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:n}=this,s=e.top-this.height;if(this.i==n.elements.length){let r=new or(t,e.height,s,i);n.elements.push(r),n.dom.appendChild(r.dom)}else n.elements[this.i].update(t,e.height,s,i);this.height=e.bottom,this.i++}line(t,e,i){let n=[];nr(this.cursor,n,e.from),i.length&&(n=n.concat(i));let s=this.gutter.config.lineMarker(t,e,n);s&&n.unshift(s);let r=this.gutter;(0!=n.length||r.config.renderEmptyElements)&&this.addElement(t,e,n)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e);i&&this.addElement(t,e,[i])}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}}class rr{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,(n=>{let s,r=n.target;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let t=r.getBoundingClientRect();s=(t.top+t.bottom)/2}else s=n.clientY;let o=t.lineBlockAtHeight(s-t.documentTop);e.domEventHandlers[i](t,o,n)&&n.preventDefault()}));this.markers=ir(e.markers(t)),e.initialSpacer&&(this.spacer=new or(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=ir(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let e=this.config.updateSpacer(this.spacer.markers[0],t);e!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[e])}let i=t.view.viewport;return!Mt.eq(this.markers,e,i.from,i.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(t)}destroy(){for(let t of this.elements)t.destroy()}}class or{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,n)}update(t,e,i,n){this.height!=e&&(this.height=e,this.dom.style.height=e/t.scaleY+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i/t.scaleY+"px":""),function(t,e){if(t.length!=e.length)return!1;for(let i=0;ikt(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(t,e){let i=Object.assign({},t);for(let t in e){let n=i[t],s=e[t];i[t]=n?(t,e,i)=>n(t,e,i)||s(t,e,i):s}return i}})});class hr extends Ys{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}}function cr(t,e){return t.state.facet(ar).formatNumber(e,t.state)}const ur=Qs.compute([ar],(t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers:t=>t.state.facet(lr),lineMarker:(t,e,i)=>i.some((t=>t.toDOM))?null:new hr(cr(t,t.state.doc.lineAt(e.from).number)),widgetMarker:()=>null,lineMarkerChange:t=>t.startState.facet(ar)!=t.state.facet(ar),initialSpacer:t=>new hr(cr(t,fr(t.state.doc.lines))),updateSpacer(t,e){let i=cr(e.view,fr(e.view.state.doc.lines));return i==t.number?t:new hr(i)},domEventHandlers:t.facet(ar).domEventHandlers})));function fr(t){let e=9;for(;e0&&void 0!==arguments[0]?arguments[0]:this.defaultExtensions;this.state=vt.create({doc:this.$textarea.textSelection("getContents"),extensions:e}),this.view=new Es({state:this.state,parent:this.$textarea.parent()[0]}),this.$textarea.hide(),this.$textarea[0].form&&this.$textarea[0].form.addEventListener("submit",(function(){t.$textarea.val(t.view.state.doc.toString())})),$(this.view.dom).textSelection("register",this.cmTextSelection),this.$textarea.textSelection("register",this.cmTextSelection),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}},{key:"logUsage",value:function(t){var e=Object.assign({session_token:mw.user.sessionId(),user_id:mw.user.getId()},t),i=mw.config.get("wgUserEditCountBucket");null!==i&&(e.user_edit_count_bucket=i),mw.track("event.CodeMirrorUsage",e)}},{key:"setCodeMirrorPreference",value:function(t){mw.user.isNamed()&&((new mw.Api).saveOption("usecodemirror",t?1:0),mw.user.options.set("usecodemirror",t?1:0))}},{key:"cmTextSelection",get:function(){var t=this,e=$(this.view.dom);return{getContents:function(){return t.view.state.doc.toString()},setContents:function(i){return t.view.dispatch({changes:{from:0,to:t.view.state.doc.length,insert:i}}),e},getSelection:function(){return t.view.state.sliceDoc(t.view.state.selection.main.from,t.view.state.selection.main.to)},setSelection:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{start:0,end:0};return t.view.dispatch({selection:{anchor:i.start,head:i.end||i.start}}),t.view.focus(),e},replaceSelection:function(i){return t.view.dispatch(t.view.state.replaceSelection(i)),e},getCaretPosition:function(e){return e.startAndEnd?[t.view.state.selection.main.from,t.view.state.selection.main.to]:t.view.state.selection.main.head},scrollToCaretPosition:function(){return t.view.dispatch({effects:Es.scrollIntoView(t.view.state.selection.main.head)}),e}}}}],i&&pr(e.prototype,i),Object.defineProperty(e,"prototype",{writable:!1}),t}();const wr=1024;let yr=0;class vr{constructor(t,e){this.from=t,this.to=e}}class kr{constructor(t={}){this.id=yr++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=Sr.match(t)),e=>{let i=t(e);return void 0===i?null:[this,i]}}}kr.closedBy=new kr({deserialize:t=>t.split(" ")}),kr.openedBy=new kr({deserialize:t=>t.split(" ")}),kr.group=new kr({deserialize:t=>t.split(" ")}),kr.isolate=new kr({deserialize:t=>{if(t&&"rtl"!=t&&"ltr"!=t&&"auto"!=t)throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}}),kr.contextHash=new kr({perNode:!0}),kr.lookAhead=new kr({perNode:!0}),kr.mounted=new kr({perNode:!0});class br{constructor(t,e,i){this.tree=t,this.overlay=e,this.parser=i}static get(t){return t&&t.props&&t.props[kr.mounted.id]}}const xr=Object.create(null);class Sr{constructor(t,e,i,n=0){this.name=t,this.props=e,this.id=i,this.flags=n}static define(t){let e=t.props&&t.props.length?Object.create(null):xr,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),n=new Sr(t.name||"",e,t.id,i);if(t.props)for(let i of t.props)if(Array.isArray(i)||(i=i(n)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[i[0].id]=i[1]}return n}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(kr.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let n of i.split(" "))e[n]=t[i];return t=>{for(let i=t.prop(kr.group),n=-1;n<(i?i.length:0);n++){let s=e[n<0?t.name:i[n]];if(s)return s}}}}Sr.none=new Sr("",Object.create(null),0,8);class Ar{constructor(t){this.types=t;for(let e=0;e=e){let o=new Nr(r.tree,r.overlay[0].from+t.from,-1,t);(s||(s=[n])).push(Br(o,e,i,!1))}}return s?Wr(s):n}(this,t,e)}iterate(t){let{enter:e,leave:i,from:n=0,to:s=this.length}=t,r=t.mode||0,o=(r&Cr.IncludeAnonymous)>0;for(let t=this.cursor(r|Cr.IncludeAnonymous);;){let r=!1;if(t.from<=s&&t.to>=n&&(!o&&t.type.isAnonymous||!1!==e(t))){if(t.firstChild())continue;r=!0}for(;r&&i&&(o||!t.type.isAnonymous)&&i(t),!t.nextSibling();){if(!t.parent())return;r=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:$r(Sr.none,this.children,this.positions,0,this.children.length,0,this.length,((t,e,i)=>new Or(this.type,t,e,i,this.propValues)),t.makeTree||((t,e,i)=>new Or(Sr.none,t,e,i)))}static build(t){return function(t){var e;let{buffer:i,nodeSet:n,maxBufferLength:s=wr,reused:r=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(i)?new Dr(i,i.length):i,a=n.types,h=0,c=0;function u(t,e,i,m,w,y){let{id:v,start:k,end:b,size:x}=l,S=c;for(;x<0;){if(l.next(),-1==x){let e=r[v];return i.push(e),void m.push(k-t)}if(-3==x)return void(h=v);if(-4==x)return void(c=v);throw new RangeError(`Unrecognized record size: ${x}`)}let A,M,T=a[v],C=k-t;if(b-k<=s&&(M=function(t,e){let i=l.fork(),n=0,r=0,a=0,h=i.end-s,c={size:0,start:0,skip:0};t:for(let s=i.pos-t;i.pos>s;){let t=i.size;if(i.id==e&&t>=0){c.size=n,c.start=r,c.skip=a,a+=4,n+=4,i.next();continue}let l=i.pos-t;if(t<0||l=o?4:0,f=i.start;for(i.next();i.pos>l;){if(i.size<0){if(-3!=i.size)break t;u+=4}else i.id>=o&&(u+=4);i.next()}r=f,n+=t,a+=u}return(e<0||n==t)&&(c.size=n,c.start=r,c.skip=a),c.size>4?c:void 0}(l.pos-e,w))){let e=new Uint16Array(M.size-M.skip),i=l.pos-M.size,s=e.length;for(;l.pos>i;)s=g(M.start,e,s);A=new Er(e,b-M.start,n),C=M.start-t}else{let t=l.pos-x;l.next();let e=[],i=[],n=v>=o?v:-1,r=0,a=b;for(;l.pos>t;)n>=0&&l.id==n&&l.size>=0?(l.end<=a-s&&(d(e,i,k,r,l.end,a,n,S),r=e.length,a=l.end),l.next()):y>2500?f(k,t,e,i):u(k,t,e,i,n,y+1);if(n>=0&&r>0&&r-1&&r>0){let t=function(t){return(e,i,n)=>{let s,r,o=0,l=e.length-1;if(l>=0&&(s=e[l])instanceof Or){if(!l&&s.type==t&&s.length==n)return s;(r=s.prop(kr.lookAhead))&&(o=i[l]+s.length+r)}return p(t,e,i,n,o)}}(T);A=$r(T,e,i,0,e.length,0,b-k,t,t)}else A=p(T,e,i,b-k,S-b)}i.push(A),m.push(C)}function f(t,e,i,r){let o=[],a=0,h=-1;for(;l.pos>e;){let{id:t,start:e,end:i,size:n}=l;if(n>4)l.next();else{if(h>-1&&e=0;t-=3)e[i++]=o[t],e[i++]=o[t+1]-s,e[i++]=o[t+2]-s,e[i++]=i;i.push(new Er(e,o[2]-s,n)),r.push(s-t)}}function d(t,e,i,s,r,o,l,a){let h=[],c=[];for(;t.length>s;)h.push(t.pop()),c.push(e.pop()+i-r);t.push(p(n.types[l],h,c,o-r,a-o)),e.push(r-i)}function p(t,e,i,n,s=0,r){if(h){let t=[kr.contextHash,h];r=r?[t].concat(r):[t]}if(s>25){let t=[kr.lookAhead,s];r=r?[t].concat(r):[t]}return new Or(t,e,i,n,r)}function g(t,e,i){let{id:n,start:s,end:r,size:a}=l;if(l.next(),a>=0&&n4){let n=l.pos-(a-4);for(;l.pos>n;)i=g(t,e,i)}e[--i]=o,e[--i]=r-t,e[--i]=s-t,e[--i]=n}else-3==a?h=n:-4==a&&(c=n);return i}let m=[],w=[];for(;l.pos>0;)u(t.start||0,t.bufferStart||0,m,w,-1,0);let y=null!==(e=t.length)&&void 0!==e?e:m.length?w[0]+m[0].length:0;return new Or(a[t.topID],m.reverse(),w.reverse(),y)}(t)}}Or.empty=new Or(Sr.none,[],[],0);class Dr{constructor(t,e){this.buffer=t,this.index=e}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 Dr(this.buffer,this.index)}}class Er{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return Sr.none}toString(){let t=[];for(let e=0;e0));l=r[l+3]);return o}slice(t,e,i){let n=this.buffer,s=new Uint16Array(e-t),r=0;for(let o=t,l=0;o=e&&ie;case 1:return i<=e&&n>e;case 2:return n>e;case 4:return!0}}function Br(t,e,i,n){for(var s;t.from==t.to||(i<1?t.from>=e:t.from>e)||(i>-1?t.to<=e:t.to0?o.length:-1;t!=a;t+=e){let a=o[t],h=l[t]+r.from;if(Lr(n,i,h,h+a.length))if(a instanceof Er){if(s&Cr.ExcludeBuffers)continue;let o=a.findChild(0,a.buffer.length,e,i-h,n);if(o>-1)return new zr(new Hr(r,a,t,h),null,o)}else if(s&Cr.IncludeAnonymous||!a.type.isAnonymous||_r(a)){let o;if(!(s&Cr.IgnoreMounts)&&(o=br.get(a))&&!o.overlay)return new Nr(o.tree,h,t,r);let l=new Nr(a,h,t,r);return s&Cr.IncludeAnonymous||!l.type.isAnonymous?l:l.nextChild(e<0?a.children.length-1:0,e,i,n)}}if(s&Cr.IncludeAnonymous||!r.type.isAnonymous)return null;if(t=r.index>=0?r.index+e:e<0?-1:r._parent._tree.children.length,r=r._parent,!r)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(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,i=0){let n;if(!(i&Cr.IgnoreOverlays)&&(n=br.get(this._tree))&&n.overlay){let i=t-this.from;for(let{from:t,to:s}of n.overlay)if((e>0?t<=i:t=i:s>i))return new Nr(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?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 Rr(t,e,i,n){let s=t.cursor(),r=[];if(!s.firstChild())return r;if(null!=i)for(;!s.type.is(i);)if(!s.nextSibling())return r;for(;;){if(null!=n&&s.type.is(n))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return null==n?r:[]}}function Ir(t,e,i=e.length-1){for(let n=t.parent;i>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}class Hr{constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,this.start=n}}class zr extends Pr{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(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.context.start,i);return s<0?null:new zr(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,i=0){if(i&Cr.ExcludeBuffers)return null;let{buffer:n}=this.context,s=n.findChild(this.index+4,n.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return s<0?null:new zr(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new zr(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new zr(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,n=this.index+4,s=i.buffer[this.index+3];if(s>n){let r=i.buffer[this.index+1];t.push(i.slice(n,s,r)),e.push(0)}return new Or(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function Wr(t){if(!t.length)return null;let e=0,i=t[0];for(let n=1;ni.from||s.to0){if(this.index-1)for(let n=e+t,s=t<0?-1:i._tree.children.length;n!=s;n+=t){let t=i._tree.children[n];if(this.mode&Cr.IncludeAnonymous||t instanceof Er||!t.type.isAnonymous||_r(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let r=t;r;r=r._parent)if(r.index==n){if(n==this.index)return r;e=r,i=s+1;break t}n=this.stack[--s]}for(let t=i;t=0;s--){if(s<0)return Ir(this.node,t,n);let r=i[e.buffer[this.stack[s]]];if(!r.isAnonymous){if(t[n]&&t[n]!=r.name)return!1;n--}}return!0}}function _r(t){return t.children.some((t=>t instanceof Er||!t.type.isAnonymous||_r(t)))}const qr=new WeakMap;function jr(t,e){if(!t.isAnonymous||e instanceof Er||e.type!=t)return 1;let i=qr.get(e);if(null==i){i=1;for(let n of e.children){if(n.type!=t||!(n instanceof Or)){i=1;break}i+=jr(t,n)}qr.set(e,i)}return i}function $r(t,e,i,n,s,r,o,l,a){let h=0;for(let i=n;i=c)break;p+=e}if(h==s+1){if(p>c){let t=i[s];e(t.children,t.positions,0,t.children.length,n[s]+l);continue}u.push(i[s])}else{let e=n[h-1]+i[h-1].length-d;u.push($r(t,i,n,s,h,d,e,null,a))}f.push(d+l-r)}}(e,i,n,s,0),(l||a)(u,f,o)}class Kr{constructor(t,e,i,n,s=!1,r=!1){this.from=t,this.to=e,this.tree=i,this.offset=n,this.open=(s?1:0)|(r?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(t,e=[],i=!1){let n=[new Kr(0,t.length,t,0,!1,i)];for(let i of e)i.to>t.length&&n.push(i);return n}static applyChanges(t,e,i=128){if(!e.length)return t;let n=[],s=1,r=t.length?t[0]:null;for(let o=0,l=0,a=0;;o++){let h=o=i)for(;r&&r.from=e.from||c<=e.to||a){let t=Math.max(e.from,l)-a,i=Math.min(e.to,c)-a;e=t>=i?null:new Kr(t,i,e.tree,e.offset+a,o>0,!!h)}if(e&&n.push(e),r.to>c)break;r=snew vr(t.from,t.to))):[new vr(0,0)]:[new vr(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let n=this.startParse(t,e,i);for(;;){let t=n.advance();if(t)return t}}}class Ur{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new kr({perNode:!0});let Jr=0;class Yr{constructor(t,e,i){this.set=t,this.base=e,this.modified=i,this.id=Jr++}static define(t){if(null==t?void 0:t.base)throw new Error("Can not derive from a modified tag");let e=new Yr([],null,[]);if(e.set.push(e),t)for(let i of t.set)e.set.push(i);return e}static defineModifier(){let t=new Qr;return e=>e.modified.indexOf(t)>-1?e:Qr.get(e.base||e,e.modified.concat(t).sort(((t,e)=>t.id-e.id)))}}let Xr=0;class Qr{constructor(){this.instances=[],this.id=Xr++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find((i=>{return i.base==t&&(n=e,s=i.modified,n.length==s.length&&n.every(((t,e)=>t==s[e])));var n,s}));if(i)return i;let n=[],s=new Yr(n,t,e);for(let t of e)t.instances.push(s);let r=function(t){let e=[[]];for(let i=0;ie.length-t.length))}(e);for(let e of t.set)if(!e.modified.length)for(let t of r)n.push(Qr.get(e,t));return s}}function Zr(t){let e=Object.create(null);for(let i in t){let n=t[i];Array.isArray(n)||(n=[n]);for(let t of i.split(" "))if(t){let i=[],s=2,r=t;for(let e=0;;){if("..."==r&&e>0&&e+3==t.length){s=1;break}let n=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(r);if(!n)throw new RangeError("Invalid path: "+t);if(i.push("*"==n[0]?"":'"'==n[0][0]?JSON.parse(n[0]):n[0]),e+=n[0].length,e==t.length)break;let o=t[e++];if(e==t.length&&"!"==o){s=0;break}if("/"!=o)throw new RangeError("Invalid path: "+t);r=t.slice(e)}let o=i.length-1,l=i[o];if(!l)throw new RangeError("Invalid path: "+t);let a=new eo(n,s,o>0?i.slice(0,o):null);e[l]=a.sort(e[l])}}return to.add(e)}const to=new kr;class eo{constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(t){return!t||t.depth{let e=s;for(let n of t)for(let t of n.set){let n=i[t.id];if(n){e=e?e+" "+n:n;break}}return e},scope:n}}function no(t,e,i,n=0,s=t.length){let r=new so(n,Array.isArray(e)?e:[e],i);r.highlightRange(t.cursor(),n,s,"",r.highlighters),r.flush(s)}eo.empty=new eo([],2,null);class so{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,n,s){let{type:r,from:o,to:l}=t;if(o>=i||l<=e)return;r.isTop&&(s=this.highlighters.filter((t=>!t.scope||t.scope(r))));let a=n,h=function(t){let e=t.type.prop(to);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}(t)||eo.empty,c=function(t,e){let i=null;for(let n of t){let t=n.style(e);t&&(i=i?i+" "+t:t)}return i}(s,h.tags);if(c&&(a&&(a+=" "),a+=c,1==h.mode&&(n+=(n?" ":"")+c)),this.startSpan(Math.max(e,o),a),h.opaque)return;let u=t.tree&&t.tree.prop(kr.mounted);if(u&&u.overlay){let r=t.node.enter(u.overlay[0].from+o,1),h=this.highlighters.filter((t=>!t.scope||t.scope(u.tree.type))),c=t.firstChild();for(let f=0,d=o;;f++){let p=f=g)&&t.nextSibling()););if(!p||g>i)break;d=p.to+o,d>e&&(this.highlightRange(r.cursor(),Math.max(e,p.from+o),Math.min(i,d),"",h),this.startSpan(Math.min(i,d),a))}c&&t.parent()}else if(t.firstChild()){u&&(n="");do{if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,n,s),this.startSpan(Math.min(i,t.to),a)}}while(t.nextSibling());t.parent()}}}const ro=Yr.define,oo=ro(),lo=ro(),ao=ro(lo),ho=ro(lo),co=ro(),uo=ro(co),fo=ro(co),po=ro(),go=ro(po),mo=ro(),wo=ro(),yo=ro(),vo=ro(yo),ko=ro(),bo={comment:oo,lineComment:ro(oo),blockComment:ro(oo),docComment:ro(oo),name:lo,variableName:ro(lo),typeName:ao,tagName:ro(ao),propertyName:ho,attributeName:ro(ho),className:ro(lo),labelName:ro(lo),namespace:ro(lo),macroName:ro(lo),literal:co,string:uo,docString:ro(uo),character:ro(uo),attributeValue:ro(uo),number:fo,integer:ro(fo),float:ro(fo),bool:ro(co),regexp:ro(co),escape:ro(co),color:ro(co),url:ro(co),keyword:mo,self:ro(mo),null:ro(mo),atom:ro(mo),unit:ro(mo),modifier:ro(mo),operatorKeyword:ro(mo),controlKeyword:ro(mo),definitionKeyword:ro(mo),moduleKeyword:ro(mo),operator:wo,derefOperator:ro(wo),arithmeticOperator:ro(wo),logicOperator:ro(wo),bitwiseOperator:ro(wo),compareOperator:ro(wo),updateOperator:ro(wo),definitionOperator:ro(wo),typeOperator:ro(wo),controlOperator:ro(wo),punctuation:yo,separator:ro(yo),bracket:vo,angleBracket:ro(vo),squareBracket:ro(vo),paren:ro(vo),brace:ro(vo),content:po,heading:go,heading1:ro(go),heading2:ro(go),heading3:ro(go),heading4:ro(go),heading5:ro(go),heading6:ro(go),contentSeparator:ro(po),list:ro(po),quote:ro(po),emphasis:ro(po),strong:ro(po),link:ro(po),monospace:ro(po),strikethrough:ro(po),inserted:ro(),deleted:ro(),changed:ro(),invalid:ro(),meta:ko,documentMeta:ro(ko),annotation:ro(ko),processingInstruction:ro(ko),definition:Yr.defineModifier(),constant:Yr.defineModifier(),function:Yr.defineModifier(),standard:Yr.defineModifier(),local:Yr.defineModifier(),special:Yr.defineModifier()};var xo;io([{tag:bo.link,class:"tok-link"},{tag:bo.heading,class:"tok-heading"},{tag:bo.emphasis,class:"tok-emphasis"},{tag:bo.strong,class:"tok-strong"},{tag:bo.keyword,class:"tok-keyword"},{tag:bo.atom,class:"tok-atom"},{tag:bo.bool,class:"tok-bool"},{tag:bo.url,class:"tok-url"},{tag:bo.labelName,class:"tok-labelName"},{tag:bo.inserted,class:"tok-inserted"},{tag:bo.deleted,class:"tok-deleted"},{tag:bo.literal,class:"tok-literal"},{tag:bo.string,class:"tok-string"},{tag:bo.number,class:"tok-number"},{tag:[bo.regexp,bo.escape,bo.special(bo.string)],class:"tok-string2"},{tag:bo.variableName,class:"tok-variableName"},{tag:bo.local(bo.variableName),class:"tok-variableName tok-local"},{tag:bo.definition(bo.variableName),class:"tok-variableName tok-definition"},{tag:bo.special(bo.variableName),class:"tok-variableName2"},{tag:bo.definition(bo.propertyName),class:"tok-propertyName tok-definition"},{tag:bo.typeName,class:"tok-typeName"},{tag:bo.namespace,class:"tok-namespace"},{tag:bo.className,class:"tok-className"},{tag:bo.macroName,class:"tok-macroName"},{tag:bo.propertyName,class:"tok-propertyName"},{tag:bo.operator,class:"tok-operator"},{tag:bo.comment,class:"tok-comment"},{tag:bo.meta,class:"tok-meta"},{tag:bo.invalid,class:"tok-invalid"},{tag:bo.punctuation,class:"tok-punctuation"}]);const So=new kr;const Ao=new kr;class Mo{constructor(t,e,i=[],n=""){this.data=t,this.name=n,vt.prototype.hasOwnProperty("tree")||Object.defineProperty(vt.prototype,"tree",{get(){return Co(this)}}),this.parser=e,this.extension=[Io.of(this),vt.languageData.of(((t,e,i)=>{let n=To(t,e,i),s=n.type.prop(So);if(!s)return[];let r=t.facet(s),o=n.type.prop(Ao);if(o){let s=n.resolve(e-n.from,i);for(let e of o)if(e.test(s,t)){let i=t.facet(e.facet);return"replace"==e.type?i:i.concat(r)}}return r}))].concat(i)}isActiveAt(t,e,i=-1){return To(t,e,i).type.prop(So)==this.data}findRegions(t){let e=t.facet(Io);if((null==e?void 0:e.data)==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],n=(t,e)=>{if(t.prop(So)==this.data)return void i.push({from:e,to:e+t.length});let s=t.prop(kr.mounted);if(s){if(s.tree.prop(So)==this.data){if(s.overlay)for(let t of s.overlay)i.push({from:t.from+e,to:t.to+e});else i.push({from:e,to:e+t.length});return}if(s.overlay){let t=i.length;if(n(s.tree,s.overlay[0].from+e),i.length>t)return}}for(let i=0;i=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}}let Do=null;class Eo{constructor(t,e,i=[],n,s,r,o,l){this.parser=t,this.state=e,this.fragments=i,this.tree=n,this.treeLen=s,this.viewport=r,this.skipped=o,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new Eo(t,e,[],Or.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Oo(this.state.doc),this.fragments)}work(t,e){return null!=e&&e>=this.state.doc.length&&(e=void 0),this.tree!=Or.empty&&this.isDone(null!=e?e:this.state.doc.length)?(this.takeTree(),!0):this.withContext((()=>{var i;if("number"==typeof t){let e=Date.now()+t;t=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=e&&(null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&e=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext((()=>{for(;!(e=this.parse.advance()););})),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Kr.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Do;Do=this;try{return t()}finally{Do=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=Lo(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:n,treeLen:s,viewport:r,skipped:o}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges(((t,i,n,s)=>e.push({fromA:t,toA:i,fromB:n,toB:s}))),i=Kr.applyChanges(i,e),n=Or.empty,s=0,r={from:t.mapPos(r.from,-1),to:t.mapPos(r.to,1)},this.skipped.length){o=[];for(let e of this.skipped){let i=t.mapPos(e.from,1),n=t.mapPos(e.to,-1);it.from&&(this.fragments=Lo(this.fragments,i,n),this.skipped.splice(e--,1))}return!(this.skipped.length>=e||(this.reset(),0))}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Gr{createParse(e,i,n){let s=n[0].from,r=n[n.length-1].to;return{parsedPos:s,advance(){let e=Do;if(e){for(let t of n)e.tempSkipped.push(t);t&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,t]):t)}return this.parsedPos=r,new Or(Sr.none,[],[],r-s)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&0==e[0].from&&e[0].to>=t}static get(){return Do}}function Lo(t,e,i){return Kr.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:i}])}class Bo{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new Bo(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Eo.create(t.facet(Io).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new Bo(i)}}Mo.state=_.define({create:Bo.init,update(t,e){for(let t of e.effects)if(t.is(Mo.setState))return t.value;return e.startState.facet(Io)!=e.state.facet(Io)?Bo.init(e.state):t.apply(e)}});let Po=t=>{let e=setTimeout((()=>t()),500);return()=>clearTimeout(e)};"undefined"!=typeof requestIdleCallback&&(Po=t=>{let e=-1,i=setTimeout((()=>{e=requestIdleCallback(t,{timeout:400})}),100);return()=>e<0?clearTimeout(i):cancelIdleCallback(e)});const No="undefined"!=typeof navigator&&(null===(xo=navigator.scheduling)||void 0===xo?void 0:xo.isInputPending)?()=>navigator.scheduling.isInputPending():null,Ro=vi.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(Mo.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(Mo.state);e.tree==e.context.tree&&e.context.isDone(t.doc.length)||(this.working=Po(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEndn+1e3,l=s.context.work((()=>No&&No()||Date.now()>r),n+(o?0:1e5));this.chunkBudget-=Date.now()-e,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:Mo.setState.of(new Bo(s.context))})),this.chunkBudget>0&&(!l||o)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then((()=>this.scheduleWork())).catch((t=>gi(this.view.state,t))).then((()=>this.workScheduled--)),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Io=R.define({combine:t=>t.length?t[0]:null,enables:t=>[Mo.state,Ro,Es.contentAttributes.compute([t],(e=>{let i=e.facet(t);return i&&i.name?{"data-language":i.name}:{}}))]});class Ho{constructor(t,e=[]){this.language=t,this.support=e,this.extension=[t,e]}}const zo=R.define(),Wo=R.define({combine:t=>{if(!t.length)return"  ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some((t=>t!=e[0])))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Vo(t){let e=t.facet(Wo);return 9==e.charCodeAt(0)?t.tabSize*e.length:e.length}function Fo(t,e){let i="",n=t.tabSize,s=t.facet(Wo)[0];if("\t"==s){for(;e>=n;)i+="\t",e-=n;s=" "}for(let t=0;t=e?function(t,e,i){let n=e.resolveStack(i),s=n.node.enterUnfinishedNodesBefore(i);if(s!=n.node){let t=[];for(let e=s;e!=n.node;e=e.parent)t.push(e);for(let e=t.length-1;e>=0;e--)n={node:t[e],next:n}}return $o(n,t,i)}(t,i,e):null}class qo{constructor(t,e={}){this.state=t,this.options=e,this.unit=Vo(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:n,simulateDoubleBreak:s}=this.options;return null!=n&&n>=i.from&&n<=i.to?s&&n==t?{text:"",from:t}:(e<0?n-1&&(s+=r-this.countColumn(i,i.search(/\S|$/))),s}countColumn(t,e=t.length){return Ht(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:n}=this.lineAt(t,e),s=this.options.overrideIndentation;if(s){let t=s(n);if(t>-1)return t}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const jo=new kr;function $o(t,e,i){for(let n=t;n;n=n.next){let t=Ko(n.node);if(t)return t(Uo.create(e,i,n))}return 0}function Ko(t){let e=t.type.prop(jo);if(e)return e;let i,n=t.firstChild;if(n&&(i=n.type.prop(kr.closedBy))){let e=t.lastChild,n=e&&i.indexOf(e.name)>-1;return t=>function(t,e,i,n,s){let r=t.textAfter,o=r.match(/^\s*/)[0].length,l=n&&r.slice(o,o+n.length)==n||s==t.pos+o,a=e?function(t){let e=t.node,i=e.childAfter(e.from),n=e.lastChild;if(!i)return null;let s=t.options.simulateBreak,r=t.state.doc.lineAt(i.from),o=null==s||s<=r.from?r.to:Math.min(r.to,s);for(let t=i.to;;){let s=e.childAfter(t);if(!s||s==n)return null;if(!s.type.isSkipped)return s.fromt.prop(So)==r.data:r?t=>t==r:void 0,this.style=io(t.map((t=>({tag:t.tag,class:t.class||n(Object.assign({},t,{tag:null}))}))),{all:s}).style,this.module=i?new Ft(i):null,this.themeType=e.themeType}static define(t,e){return new Yo(t,e||{})}}const Xo=R.define(),Qo=R.define({combine:t=>t.length?[t[0]]:null});function Zo(t){let e=t.facet(Xo);return e.length?e:t.facet(Qo)}class tl{constructor(t){this.markCache=Object.create(null),this.tree=Co(t.state),this.decorations=this.buildDeco(t,Zo(t.state))}update(t){let e=Co(t.state),i=Zo(t.state),n=i!=Zo(t.startState);e.length{i.add(t,e,this.markCache[n]||(this.markCache[n]=Ge.mark({class:n})))}),n,s);return i.finish()}}const el=j.high(vi.fromClass(tl,{decorations:t=>t.decorations})),il=(bo.meta,bo.link,bo.heading,bo.emphasis,bo.strong,bo.strikethrough,bo.keyword,bo.atom,bo.bool,bo.url,bo.contentSeparator,bo.labelName,bo.literal,bo.inserted,bo.string,bo.deleted,bo.regexp,bo.escape,bo.string,bo.variableName,bo.variableName,bo.typeName,bo.namespace,bo.className,bo.variableName,bo.macroName,bo.propertyName,bo.comment,bo.invalid,Es.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}})),nl=1e4,sl="()[]{}",rl=R.define({combine:t=>kt(t,{afterCursor:!0,brackets:sl,maxScanDistance:nl,renderMatch:al})}),ol=Ge.mark({class:"cm-matchingBracket"}),ll=Ge.mark({class:"cm-nonmatchingBracket"});function al(t){let e=[],i=t.matched?ol:ll;return e.push(i.range(t.start.from,t.start.to)),t.end&&e.push(i.range(t.end.from,t.end.to)),e}const hl=_.define({create:()=>Ge.none,update(t,e){if(!e.docChanged&&!e.selection)return t;let i=[],n=e.state.facet(rl);for(let t of e.state.selection.ranges){if(!t.empty)continue;let s=gl(e.state,t.head,-1,n)||t.head>0&&gl(e.state,t.head-1,1,n)||n.afterCursor&&(gl(e.state,t.head,1,n)||t.headEs.decorations.from(t)}),cl=[hl,il];function ul(t={}){return[rl.of(t),cl]}const fl=new kr;function dl(t,e,i){let n=t.prop(e<0?kr.openedBy:kr.closedBy);if(n)return n;if(1==t.name.length){let n=i.indexOf(t.name);if(n>-1&&n%2==(e<0?1:0))return[i[n+e]]}return null}function pl(t){let e=t.type.prop(fl);return e?e(t.node):t}function gl(t,e,i,n={}){let s=n.maxScanDistance||nl,r=n.brackets||sl,o=Co(t),l=o.resolveInner(e,i);for(let t=l;t;t=t.parent){let n=dl(t.type,i,r);if(n&&t.from0?e>=s.from&&es.from&&e<=s.to))return ml(0,0,i,t,s,n,r)}}return function(t,e,i,n,s,r,o){let l=i<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),a=o.indexOf(l);if(a<0||a%2==0!=i>0)return null;let h={from:i<0?e-1:e,to:i>0?e+1:e},c=t.doc.iterRange(e,i>0?t.doc.length:0),u=0;for(let t=0;!c.next().done&&t<=r;){let r=c.value;i<0&&(t+=r.length);let l=e+t*i;for(let t=i>0?0:r.length-1,e=i>0?r.length:-1;t!=e;t+=i){let e=o.indexOf(r[t]);if(!(e<0||n.resolveInner(l+t,1).type!=s))if(e%2==0==i>0)u++;else{if(1==u)return{start:h,end:{from:l+t,to:l+t+1},matched:e>>1==a>>1};u--}}i>0&&(t+=r.length)}return c.done?{start:h,matched:!1}:null}(t,e,i,o,l.type,s,r)}function ml(t,e,i,n,s,r,o){let l=n.parent,a={from:s.from,to:s.to},h=0,c=null==l?void 0:l.cursor();if(c&&(i<0?c.childBefore(n.from):c.childAfter(n.to)))do{if(i<0?c.to<=n.from:c.from>=n.to){if(0==h&&r.indexOf(c.type.name)>-1&&c.from=this.string.length}sol(){return 0==this.pos}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?t.toLowerCase():t;return n(this.string.substr(this.pos,t.length))==n(t)?(!1!==e&&(this.pos+=t.length),!0):null}{let i=this.string.slice(this.pos).match(t);return i&&i.index>0?null:(i&&!1!==e&&(this.pos+=i[0].length),i)}}current(){return this.string.slice(this.start,this.pos)}}function vl(t){if("object"!=typeof t)return t;let e={};for(let i in t){let n=t[i];e[i]=n instanceof Array?n.slice():n}return e}const kl=new WeakMap;class bl extends Mo{constructor(t){let e,i=(s=t.languageData,R.define({combine:s?t=>t.concat(s):void 0})),n={name:(r=t).name||"",token:r.token,blankLine:r.blankLine||(()=>{}),startState:r.startState||(()=>!0),copyState:r.copyState||vl,indent:r.indent||(()=>null),languageData:r.languageData||{},tokenTable:r.tokenTable||Tl};var s,r;super(i,new class extends Gr{createParse(t,i,n){return new Al(e,t,i,n)}},[zo.of(((t,e)=>this.getIndent(t,e)))],t.name),this.topNode=function(t){let e=Sr.define({id:Cl.length,name:"Document",props:[So.add((()=>t))],top:!0});return Cl.push(e),e}(i),e=this,this.streamParser=n,this.stateAfter=new kr({perNode:!0}),this.tokenTable=t.tokenTable?new Bl(n.tokenTable):Pl}static define(t){return new bl(t)}getIndent(t,e){let i,n=Co(t.state),s=n.resolve(e);for(;s&&s.type!=this.topNode;)s=s.parent;if(!s)return null;let{overrideIndentation:r}=t.options;r&&(i=kl.get(t.state),null!=i&&i1e4)return null;for(;o=n&&i+e.length<=s&&e.prop(t.stateAfter);if(r)return{state:t.streamParser.copyState(r),pos:i+e.length};for(let r=e.children.length-1;r>=0;r--){let o=e.children[r],l=i+e.positions[r],a=o instanceof Or&&l=e.length)return e;s||e.type!=t.topNode||(s=!0);for(let r=e.children.length-1;r>=0;r--){let o,l=e.positions[r],a=e.children[r];if(li&&xl(t,n.tree,0-n.offset,i,r);if(o&&(e=Sl(t,n.tree,i+n.offset,o.pos+n.offset,!1)))return{state:o.state,tree:e}}return{state:t.streamParser.startState(n?Vo(n):4),tree:Or.empty}}(t,i,r,null==s?void 0:s.state);this.state=o,this.parsedPos=this.chunkStart=r+l.length;for(let t=0;t=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)"\n"==e&&(e="");else{let t=e.indexOf("\n");t>-1&&(e=e.slice(0,t))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let t=this.rangeIndex;;){let n=this.ranges[t].to;if(n>=i)break;if(e=e.slice(0,n-(i-e.length)),t++,t==this.ranges.length)break;let s=this.ranges[t].from,r=this.lineAfter(s);e+=r,i=s+r.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let n=this.ranges[this.rangeIndex].to,s=t+e;if(i>0?n>s:n>=s)break;e+=this.ranges[++this.rangeIndex].from-n}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){e+=s=this.skipGapsTo(e,s,1);let t=this.chunk.length;i+=s=this.skipGapsTo(i,s,-1),n+=this.chunk.length-t}return this.chunk.push(t,e,i,n),s}parseLine(t){let{line:e,end:i}=this.nextLine(),n=0,{streamParser:s}=this.lang,r=new yl(e,t?t.state.tabSize:4,t?Vo(t.state):2);if(r.eol())s.blankLine(this.state,r.indentUnit);else for(;!r.eol();){let t=Ml(s.token,r,this.state);if(t&&(n=this.emitToken(this.lang.tokenTable.resolve(t),this.parsedPos+r.start,this.parsedPos+r.pos,4,n)),r.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPose.start)return n}throw new Error("Stream parser failed to advance stream.")}const Tl=Object.create(null),Cl=[Sr.none],Ol=new Ar(Cl),Dl=[],El=Object.create(null),Ll=Object.create(null);for(let[t,e]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"]])Ll[t]=Rl(Tl,e);class Bl{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Ll)}resolve(t){return t?this.table[t]||(this.table[t]=Rl(this.extra,t)):0}}const Pl=new Bl(Tl);function Nl(t,e){Dl.indexOf(t)>-1||(Dl.push(t),console.warn(e))}function Rl(t,e){let i=[];for(let n of e.split(" ")){let e=[];for(let i of n.split(".")){let n=t[i]||bo[i];n?"function"==typeof n?e.length?e=e.map(n):Nl(i,`Modifier ${i} used at start of tag`):e.length?Nl(i,`Tag ${i} used as modifier`):e=Array.isArray(n)?n:[n]:Nl(i,`Unknown highlighting tag ${i}`)}for(let t of e)i.push(t)}if(!i.length)return 0;let n=e.replace(/ /g,"_"),s=n+" "+i.map((t=>t.id)),r=El[s];if(r)return r.id;let o=El[s]=Sr.define({id:Cl.length,name:n,props:[Zr({[n]:i})]});return Cl.push(o),o.id}function Il(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let s=t(e,i);return!!s&&(n(i.update(s)),!0)}}const Hl=Il(ql,0),zl=Il(_l,0),Wl=Il(((t,e)=>_l(t,e,function(t){let e=[];for(let i of t.selection.ranges){let n=t.doc.lineAt(i.from),s=i.to<=n.to?n:t.doc.lineAt(i.to),r=e.length-1;r>=0&&e[r].to>n.from?e[r].to=s.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:s.to})}return e}(e))),0);function Vl(t,e){let i=t.languageDataAt("commentTokens",e);return i.length?i[0]:{}}const Fl=50;function _l(t,e,i=e.selection.ranges){let n=i.map((t=>Vl(e,t.from).block));if(!n.every((t=>t)))return null;let s=i.map(((t,i)=>function(t,{open:e,close:i},n,s){let r,o,l=t.sliceDoc(n-Fl,n),a=t.sliceDoc(s,s+Fl),h=/\s*$/.exec(l)[0].length,c=/^\s*/.exec(a)[0].length,u=l.length-h;if(l.slice(u-e.length,u)==e&&a.slice(c,c+i.length)==i)return{open:{pos:n-h,margin:h&&1},close:{pos:s+c,margin:c&&1}};s-n<=2*Fl?r=o=t.sliceDoc(n,s):(r=t.sliceDoc(n,n+Fl),o=t.sliceDoc(s-Fl,s));let f=/^\s*/.exec(r)[0].length,d=/\s*$/.exec(o)[0].length,p=o.length-d-i.length;return r.slice(f,f+e.length)==e&&o.slice(p,p+i.length)==i?{open:{pos:n+f+e.length,margin:/\s/.test(r.charAt(f+e.length))?1:0},close:{pos:s-d-i.length,margin:/\s/.test(o.charAt(p-1))?1:0}}:null}(e,n[i],t.from,t.to)));if(2!=t&&!s.every((t=>t)))return{changes:e.changes(i.map(((t,e)=>s[e]?[]:[{from:t.from,insert:n[e].open+" "},{from:t.to,insert:" "+n[e].close}])))};if(1!=t&&s.some((t=>t))){let t=[];for(let e,i=0;is&&(t==r||r>a.from)){s=a.from;let t=/^\s*/.exec(a.text)[0].length,e=t==a.length,i=a.text.slice(t,t+l.length)==l?t:-1;tt.comment<0&&(!t.empty||t.single)))){let t=[];for(let{line:e,token:i,indent:s,empty:r,single:o}of n)!o&&r||t.push({from:e.from+s,insert:i+" "});let i=e.changes(t);return{changes:i,selection:e.selection.map(i,1)}}if(1!=t&&n.some((t=>t.comment>=0))){let t=[];for(let{line:e,comment:i,token:s}of n)if(i>=0){let n=e.from+i,r=n+s.length;" "==e.text[r-e.from]&&r++,t.push({from:n,to:r})}return{changes:t}}return null}const jl=rt.define(),$l=rt.define(),Kl=R.define(),Gl=R.define({combine:t=>kt(t,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,n)=>t(i,n)||e(i,n)})}),Ul=_.define({create:()=>ua.empty,update(t,e){let i=e.state.facet(Gl),n=e.annotation(jl);if(n){let s=e.docChanged?B.single(function(t){let e=0;return t.iterChangedRanges(((t,i)=>e=i)),e}(e.changes)):void 0,r=ea.fromTransaction(e,s),o=n.side,l=0==o?t.undone:t.done;return l=r?ia(l,l.length,i.minDepth,r):oa(l,e.startState.selection),new ua(0==o?n.rest:l,0==o?l:n.rest)}let s=e.annotation($l);if("full"!=s&&"before"!=s||(t=t.isolate()),!1===e.annotation(ht.addToHistory))return e.changes.empty?t:t.addMapping(e.changes.desc);let r=ea.fromTransaction(e),o=e.annotation(ht.time),l=e.annotation(ht.userEvent);return r?t=t.addChanges(r,o,l,i,e):e.selection&&(t=t.addSelection(e.startState.selection,o,l,i.newGroupDelay)),"full"!=s&&"after"!=s||(t=t.isolate()),t},toJSON:t=>({done:t.done.map((t=>t.toJSON())),undone:t.undone.map((t=>t.toJSON()))}),fromJSON:t=>new ua(t.done.map(ea.fromJSON),t.undone.map(ea.fromJSON))});function Jl(t={}){return[Ul,Gl.of(t),Es.domEventHandlers({beforeinput(t,e){let i="historyUndo"==t.inputType?Xl:"historyRedo"==t.inputType?Ql:null;return!!i&&(t.preventDefault(),i(e))}})]}function Yl(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly)return!1;let s=i.field(Ul,!1);if(!s)return!1;let r=s.pop(t,i,e);return!!r&&(n(r),!0)}}const Xl=Yl(0,!1),Ql=Yl(1,!1),Zl=Yl(0,!0),ta=Yl(1,!0);class ea{constructor(t,e,i,n,s){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=n,this.selectionsAfter=s}setSelAfter(t){return new ea(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:null===(t=this.changes)||void 0===t?void 0:t.toJSON(),mapped:null===(e=this.mapped)||void 0===e?void 0:e.toJSON(),startSelection:null===(i=this.startSelection)||void 0===i?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map((t=>t.toJSON()))}}static fromJSON(t){return new ea(t.changes&&A.fromJSON(t.changes),[],t.mapped&&S.fromJSON(t.mapped),t.startSelection&&B.fromJSON(t.startSelection),t.selectionsAfter.map(B.fromJSON))}static fromTransaction(t,e){let i=sa;for(let e of t.startState.facet(Kl)){let n=e(t);n.length&&(i=i.concat(n))}return!i.length&&t.changes.empty?null:new ea(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,sa)}static selection(t){return new ea(void 0,sa,void 0,void 0,t)}}function ia(t,e,i,n){let s=e+1>i+20?e-i-1:0,r=t.slice(s,e);return r.push(n),r}function na(t,e){return t.length?e.length?t.concat(e):t:e}const sa=[],ra=200;function oa(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.slice(Math.max(0,i.selectionsAfter.length-ra));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),ia(t,t.length-1,1e9,i.setSelAfter(n)))}return[ea.selection([e])]}function la(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),i}function aa(t,e){if(!t.length)return t;let i=t.length,n=sa;for(;i;){let s=ha(t[i-1],e,n);if(s.changes&&!s.changes.empty||s.effects.length){let e=t.slice(0,i);return e[i-1]=s,e}e=s.mapped,i--,n=s.selectionsAfter}return n.length?[ea.selection(n)]:sa}function ha(t,e,i){let n=na(t.selectionsAfter.length?t.selectionsAfter.map((t=>t.map(e))):sa,i);if(!t.changes)return ea.selection(n);let s=t.changes.map(e),r=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(r):r;return new ea(s,at.mapEffects(t.effects,e),o,t.startSelection.map(r),n)}const ca=/^(input\.type|delete)($|\.)/;class ua{constructor(t,e,i=0,n=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=n}isolate(){return this.prevTime?new ua(this.done,this.undone):this}addChanges(t,e,i,n,s){let r=this.done,o=r[r.length-1];return r=o&&o.changes&&!o.changes.empty&&t.changes&&(!i||ca.test(i))&&(!o.selectionsAfter.length&&e-this.prevTimei.push(t,e))),e.iterChangedRanges(((t,e,s,r)=>{for(let t=0;t=e&&s<=o&&(n=!0)}})),n}(o.changes,t.changes))||"input.type.compose"==i)?ia(r,r.length-1,n.minDepth,new ea(t.changes.compose(o.changes),na(t.effects,o.effects),o.mapped,o.startSelection,sa)):ia(r,r.length,n.minDepth,t),new ua(r,sa,e,i)}addSelection(t,e,i,n){let s=this.done.length?this.done[this.done.length-1].selectionsAfter:sa;return s.length>0&&e-this.prevTimet.empty!=o.ranges[e].empty)).length)?this:new ua(oa(this.done,t),this.undone,e,i);var r,o}addMapping(t){return new ua(aa(this.done,t),aa(this.undone,t),this.prevTime,this.prevUserEvent)}pop(t,e,i){let n=0==t?this.done:this.undone;if(0==n.length)return null;let s=n[n.length-1];if(i&&s.selectionsAfter.length)return e.update({selection:s.selectionsAfter[s.selectionsAfter.length-1],annotations:jl.of({side:t,rest:la(n)}),userEvent:0==t?"select.undo":"select.redo",scrollIntoView:!0});if(s.changes){let i=1==n.length?sa:n.slice(0,n.length-1);return s.mapped&&(i=aa(i,s.mapped)),e.update({changes:s.changes,selection:s.startSelection,effects:s.effects,annotations:jl.of({side:t,rest:i}),filter:!1,userEvent:0==t?"undo":"redo",scrollIntoView:!0})}return null}}ua.empty=new ua(sa,sa);const fa=[{key:"Mod-z",run:Xl,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ql,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Ql,preventDefault:!0},{key:"Mod-u",run:Zl,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:ta,preventDefault:!0}];function da(t,e){return B.create(t.ranges.map(e),t.mainIndex)}function pa(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function ga({state:t,dispatch:e},i){let n=da(t.selection,i);return!n.eq(t.selection)&&(e(pa(t,n)),!0)}function ma(t,e){return B.cursor(e?t.to:t.from)}function wa(t,e){return ga(t,(i=>i.empty?t.moveByChar(i,e):ma(i,e)))}function ya(t){return t.textDirectionAt(t.state.selection.main.head)==Bi.LTR}const va=t=>wa(t,!ya(t)),ka=t=>wa(t,ya(t));function ba(t,e){return ga(t,(i=>i.empty?t.moveByGroup(i,e):ma(i,e)))}function xa(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Sa(t,e,i){let n,s,r=Co(t).resolveInner(e.head),o=i?kr.closedBy:kr.openedBy;for(let n=e.head;;){let e=i?r.childAfter(n):r.childBefore(n);if(!e)break;xa(t,e,o)?r=e:n=i?e.to:e.from}return s=r.type.prop(o)&&(n=i?gl(t,r.from,1):gl(t,r.to,-1))&&n.matched?i?n.end.to:n.end.from:i?r.to:r.from,B.cursor(s,i?-1:1)}function Aa(t,e){return ga(t,(i=>{if(!i.empty)return ma(i,e);let n=t.moveVertically(i,e);return n.head!=i.head?n:t.moveToLineBoundary(i,e)}))}"undefined"!=typeof Intl&&Intl.Segmenter;const Ma=t=>Aa(t,!1),Ta=t=>Aa(t,!0);function Ca(t){let e,i=t.scrollDOM.clientHeighti.empty?t.moveVertically(i,e,n.height):ma(i,e)));if(r.eq(s.selection))return!1;if(n.selfScroll){let e=t.coordsAtPos(s.selection.main.head),o=t.scrollDOM.getBoundingClientRect(),l=o.top+n.marginTop,a=o.bottom-n.marginBottom;e&&e.top>l&&e.bottomOa(t,!1),Ea=t=>Oa(t,!0);function La(t,e,i){let n=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,i);if(s.head==e.head&&s.head!=(i?n.to:n.from)&&(s=t.moveToLineBoundary(e,i,!1)),!i&&s.head==n.from&&n.length){let i=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;i&&e.head!=n.from+i&&(s=B.cursor(n.from+i))}return s}function Ba(t,e){let i=da(t.state.selection,(t=>{let i=e(t);return B.range(t.anchor,i.head,i.goalColumn,i.bidiLevel||void 0)}));return!i.eq(t.state.selection)&&(t.dispatch(pa(t.state,i)),!0)}function Pa(t,e){return Ba(t,(i=>t.moveByChar(i,e)))}const Na=t=>Pa(t,!ya(t)),Ra=t=>Pa(t,ya(t));function Ia(t,e){return Ba(t,(i=>t.moveByGroup(i,e)))}function Ha(t,e){return Ba(t,(i=>t.moveVertically(i,e)))}const za=t=>Ha(t,!1),Wa=t=>Ha(t,!0);function Va(t,e){return Ba(t,(i=>t.moveVertically(i,e,Ca(t).height)))}const Fa=t=>Va(t,!1),_a=t=>Va(t,!0),qa=({state:t,dispatch:e})=>(e(pa(t,{anchor:0})),!0),ja=({state:t,dispatch:e})=>(e(pa(t,{anchor:t.doc.length})),!0),$a=({state:t,dispatch:e})=>(e(pa(t,{anchor:t.selection.main.anchor,head:0})),!0),Ka=({state:t,dispatch:e})=>(e(pa(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0);function Ga(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{state:n}=t,s=n.changeByRange((n=>{let{from:s,to:r}=n;if(s==r){let n=e(s);ns&&(i="delete.forward",n=Ua(t,n,!0)),s=Math.min(s,n),r=Math.max(r,n)}else s=Ua(t,s,!1),r=Ua(t,r,!0);return s==r?{range:n}:{changes:{from:s,to:r},range:B.cursor(s)}}));return!s.changes.empty&&(t.dispatch(n.update(s,{scrollIntoView:!0,userEvent:i,effects:"delete.selection"==i?Es.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function Ua(t,e,i){if(t instanceof Es)for(let n of t.state.facet(Es.atomicRanges).map((e=>e(t))))n.between(e,e,((t,n)=>{te&&(e=i?n:t)}));return e}const Ja=(t,e)=>Ga(t,(i=>{let n,s,{state:r}=t,o=r.doc.lineAt(i);if(!e&&i>o.from&&iJa(t,!1),Xa=t=>Ja(t,!0),Qa=(t,e)=>Ga(t,(i=>{let n=i,{state:s}=t,r=s.doc.lineAt(n),o=s.charCategorizer(n);for(let t=null;;){if(n==(e?r.to:r.from)){n==i&&r.number!=(e?s.doc.lines:1)&&(n+=e?1:-1);break}let l=d(r.text,n-r.from,e)+r.from,a=r.text.slice(Math.min(n,l)-r.from,Math.max(n,l)-r.from),h=o(a);if(null!=t&&h!=t)break;" "==a&&n==i||(t=h),n=l}return n})),Za=t=>Qa(t,!1),th=t=>Ga(t,(e=>{let i=t.lineBlockAt(e).to;return e=s.number){let t=e[e.length-1];t.to=r.to,t.ranges.push(n)}else e.push({from:s.from,to:r.to,ranges:[n]});i=r.number+1}return e}function ih(t,e,i){if(t.readOnly)return!1;let n=[],s=[];for(let e of eh(t)){if(i?e.to==t.doc.length:0==e.from)continue;let r=t.doc.lineAt(i?e.to+1:e.from-1),o=r.length+1;if(i){n.push({from:e.to,to:r.to},{from:e.from,insert:r.text+t.lineBreak});for(let i of e.ranges)s.push(B.range(Math.min(t.doc.length,i.anchor+o),Math.min(t.doc.length,i.head+o)))}else{n.push({from:r.from,to:e.from},{from:e.to,insert:t.lineBreak+r.text});for(let t of e.ranges)s.push(B.range(t.anchor-o,t.head-o))}}return!!n.length&&(e(t.update({changes:n,scrollIntoView:!0,selection:B.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0)}function nh(t,e,i){if(t.readOnly)return!1;let n=[];for(let e of eh(t))i?n.push({from:e.from,insert:t.doc.slice(e.from,e.to)+t.lineBreak}):n.push({from:e.to,insert:t.lineBreak+t.doc.slice(e.from,e.to)});return e(t.update({changes:n,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const sh=rh(!1);function rh(e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let s=i.changeByRange((n=>{let{from:s,to:r}=n,o=i.doc.lineAt(s),l=!e&&s==r&&function(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let i,n=Co(t).resolveInner(e),s=n.childBefore(e),r=n.childAfter(e);return s&&r&&s.to<=e&&r.from>=e&&(i=s.type.prop(kr.closedBy))&&i.indexOf(r.name)>-1&&t.doc.lineAt(s.to).from==t.doc.lineAt(r.from).from&&!/\S/.test(t.sliceDoc(s.to,r.from))?{from:s.to,to:r.from}:null}(i,s);e&&(s=r=(r<=o.to?o:i.doc.lineAt(r)).to);let a=new qo(i,{simulateBreak:s,simulateDoubleBreak:!!l}),h=_o(a,s);for(null==h&&(h=Ht(/^\s*/.exec(i.doc.lineAt(s).text)[0],i.tabSize));ro.from&&s{let s=[];for(let r=n.from;r<=n.to;){let o=t.doc.lineAt(r);o.number>i&&(n.empty||n.to>o.from)&&(e(o,s,n),i=o.number),r=o.to+1}let r=t.changes(s);return{changes:s,range:B.range(r.mapPos(n.anchor,1),r.mapPos(n.head,1))}}))}const lh=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:t=>ga(t,(e=>Sa(t.state,e,!ya(t)))),shift:t=>Ba(t,(e=>Sa(t.state,e,!ya(t))))},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:t=>ga(t,(e=>Sa(t.state,e,ya(t)))),shift:t=>Ba(t,(e=>Sa(t.state,e,ya(t))))},{key:"Alt-ArrowUp",run:({state:t,dispatch:e})=>ih(t,e,!1)},{key:"Shift-Alt-ArrowUp",run:({state:t,dispatch:e})=>nh(t,e,!1)},{key:"Alt-ArrowDown",run:({state:t,dispatch:e})=>ih(t,e,!0)},{key:"Shift-Alt-ArrowDown",run:({state:t,dispatch:e})=>nh(t,e,!0)},{key:"Escape",run:({state:t,dispatch:e})=>{let i=t.selection,n=null;return i.ranges.length>1?n=B.create([i.main]):i.main.empty||(n=B.create([B.cursor(i.main.head)])),!!n&&(e(pa(t,n)),!0)}},{key:"Mod-Enter",run:rh(!0)},{key:"Alt-l",mac:"Ctrl-l",run:({state:t,dispatch:e})=>{let i=eh(t).map((({from:e,to:i})=>B.range(e,Math.min(i+1,t.doc.length))));return e(t.update({selection:B.create(i),userEvent:"select"})),!0}},{key:"Mod-i",run:({state:t,dispatch:e})=>{let i=da(t.selection,(e=>{var i;let n=Co(t).resolveInner(e.head,1);for(;!(n.from=e.to||n.to>e.to&&n.from<=e.from)&&(null===(i=n.parent)||void 0===i?void 0:i.parent);)n=n.parent;return B.range(n.to,n.from)}));return e(pa(t,i)),!0},preventDefault:!0},{key:"Mod-[",run:({state:t,dispatch:e})=>!t.readOnly&&(e(t.update(oh(t,((e,i)=>{let n=/^\s*/.exec(e.text)[0];if(!n)return;let s=Ht(n,t.tabSize),r=0,o=Fo(t,Math.max(0,s-Vo(t)));for(;r!t.readOnly&&(e(t.update(oh(t,((e,i)=>{i.push({from:e.from,insert:t.facet(Wo)})})),{userEvent:"input.indent"})),!0)},{key:"Mod-Alt-\\",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=Object.create(null),n=new qo(t,{overrideIndentation:t=>{let e=i[t];return null==e?-1:e}}),s=oh(t,((e,s,r)=>{let o=_o(n,e.from);if(null==o)return;/\S/.test(e.text)||(o=0);let l=/^\s*/.exec(e.text)[0],a=Fo(t,o);(l!=a||r.from{if(t.state.readOnly)return!1;let{state:e}=t,i=e.changes(eh(e).map((({from:t,to:i})=>(t>0?t--:it.moveVertically(e,!0))).map(i);return t.dispatch({changes:i,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0}},{key:"Shift-Mod-\\",run:({state:t,dispatch:e})=>function(t,e,i){let n=!1,s=da(t.selection,(e=>{let s=gl(t,e.head,-1)||gl(t,e.head,1)||e.head>0&&gl(t,e.head-1,1)||e.head{let{state:e}=t,i=e.doc.lineAt(e.selection.main.from),n=Vl(t.state,i.from);return n.line?Hl(t):!!n.block&&Wl(t)}},{key:"Alt-A",run:zl}].concat([{key:"ArrowLeft",run:va,shift:Na,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:t=>ba(t,!ya(t)),shift:t=>Ia(t,!ya(t)),preventDefault:!0},{mac:"Cmd-ArrowLeft",run:t=>ga(t,(e=>La(t,e,!ya(t)))),shift:t=>Ba(t,(e=>La(t,e,!ya(t)))),preventDefault:!0},{key:"ArrowRight",run:ka,shift:Ra,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:t=>ba(t,ya(t)),shift:t=>Ia(t,ya(t)),preventDefault:!0},{mac:"Cmd-ArrowRight",run:t=>ga(t,(e=>La(t,e,ya(t)))),shift:t=>Ba(t,(e=>La(t,e,ya(t)))),preventDefault:!0},{key:"ArrowUp",run:Ma,shift:za,preventDefault:!0},{mac:"Cmd-ArrowUp",run:qa,shift:$a},{mac:"Ctrl-ArrowUp",run:Da,shift:Fa},{key:"ArrowDown",run:Ta,shift:Wa,preventDefault:!0},{mac:"Cmd-ArrowDown",run:ja,shift:Ka},{mac:"Ctrl-ArrowDown",run:Ea,shift:_a},{key:"PageUp",run:Da,shift:Fa},{key:"PageDown",run:Ea,shift:_a},{key:"Home",run:t=>ga(t,(e=>La(t,e,!1))),shift:t=>Ba(t,(e=>La(t,e,!1))),preventDefault:!0},{key:"Mod-Home",run:qa,shift:$a},{key:"End",run:t=>ga(t,(e=>La(t,e,!0))),shift:t=>Ba(t,(e=>La(t,e,!0))),preventDefault:!0},{key:"Mod-End",run:ja,shift:Ka},{key:"Enter",run:sh},{key:"Mod-a",run:({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0)},{key:"Backspace",run:Ya,shift:Ya},{key:"Delete",run:Xa},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Za},{key:"Mod-Delete",mac:"Alt-Delete",run:t=>Qa(t,!0)},{mac:"Mod-Backspace",run:t=>Ga(t,(e=>{let i=t.lineBlockAt(e).from;return e>i?i:Math.max(0,e-1)}))},{mac:"Mod-Delete",run:th}].concat([{key:"Ctrl-b",run:va,shift:Na,preventDefault:!0},{key:"Ctrl-f",run:ka,shift:Ra},{key:"Ctrl-p",run:Ma,shift:za},{key:"Ctrl-n",run:Ta,shift:Wa},{key:"Ctrl-a",run:t=>ga(t,(e=>B.cursor(t.lineBlockAt(e.head).from,1))),shift:t=>Ba(t,(e=>B.cursor(t.lineBlockAt(e.head).from)))},{key:"Ctrl-e",run:t=>ga(t,(e=>B.cursor(t.lineBlockAt(e.head).to,-1))),shift:t=>Ba(t,(e=>B.cursor(t.lineBlockAt(e.head).to)))},{key:"Ctrl-d",run:Xa},{key:"Ctrl-h",run:Ya},{key:"Ctrl-k",run:th},{key:"Ctrl-Alt-h",run:Za},{key:"Ctrl-o",run:({state:e,dispatch:i})=>{if(e.readOnly)return!1;let n=e.changeByRange((e=>({changes:{from:e.from,to:e.to,insert:t.of(["",""])},range:B.cursor(e.from)})));return i(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}},{key:"Ctrl-t",run:({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange((e=>{if(!e.empty||0==e.from||e.from==t.doc.length)return{range:e};let i=e.from,n=t.doc.lineAt(i),s=i==n.from?i-1:d(n.text,i-n.from,!1)+n.from,r=i==n.to?i+1:d(n.text,i-n.from,!0)+n.from;return{changes:{from:s,to:r,insert:t.doc.slice(i,r).append(t.doc.slice(s,i))},range:B.cursor(r)}}));return!i.changes.empty&&(e(t.update(i,{scrollIntoView:!0,userEvent:"move.character"})),!0)}},{key:"Ctrl-v",run:Ea}].map((t=>({mac:t.key,run:t.run,shift:t.shift})))));function ah(){var t=arguments[0];"string"==typeof t&&(t=document.createElement(t));var e=1,i=arguments[1];if(i&&"object"==typeof i&&null==i.nodeType&&!Array.isArray(i)){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var s=i[n];"string"==typeof s?t.setAttribute(n,s):null!=s&&(t[n]=s)}e++}for(;et.normalize("NFKD"):t=>t;class uh{constructor(t,e,i=0,n=t.length,s,r){this.test=r,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=t.iterRange(i,n),this.bufferStart=i,this.normalize=s?t=>s(ch(t)):ch,this.query=this.normalize(e)}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 y(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let t=this.peek();if(t<0)return this.done=!0,this;let e=v(t),i=this.bufferStart+this.bufferPos;this.bufferPos+=k(t);let n=this.normalize(e);for(let t=0,s=i;;t++){let r=n.charCodeAt(t),o=this.match(r,s);if(t==n.length-1){if(o)return this.value=o,this;break}s==i&&tthis.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 t=this.matchPos-this.curLineStart;;){this.re.lastIndex=t;let e=this.matchPos<=this.to&&this.re.exec(this.curLine);if(e){let i=this.curLineStart+e.index,n=i+e[0].length;if(this.matchPos=yh(this.text,n+(i==n?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(ithis.value.to)&&(!this.test||this.test(i,n,e)))return this.value={from:i,to:n,match:e},this;t=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length=i||n.to<=e){let n=new mh(e,t.sliceString(e,i));return gh.set(t,n),n}if(n.from==e&&n.to==i)return n;let{text:s,from:r}=n;return r>e&&(s=t.sliceString(e,r)+s,r=e),n.to=this.to?this.to:this.text.lineAt(t).to}next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,e=this.re.exec(this.flat.text);if(e&&!e[0]&&e.index==t&&(this.re.lastIndex=t+1,e=this.re.exec(this.flat.text)),e){let t=this.flat.from+e.index,i=t+e[0].length;if((this.flat.to>=this.to||e.index+e[0].length<=this.flat.text.length-10)&&(!this.test||this.test(t,i,e)))return this.value={from:t,to:i,match:e},this.matchPos=yh(this.text,i+(t==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=mh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function yh(t,e){if(e>=t.length)return e;let i,n=t.lineAt(e);for(;e=56320&&i<57344;)e++;return e}function vh(t){let e=ah("input",{class:"cm-textfield",name:"line",value:String(t.state.doc.lineAt(t.state.selection.main.head).number)});function i(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!i)return;let{state:n}=t,s=n.doc.lineAt(n.selection.main.head),[,r,o,l,a]=i,h=l?+l.slice(1):0,c=o?+o:s.number;if(o&&a){let t=c/100;r&&(t=t*("-"==r?-1:1)+s.number/n.doc.lines),c=Math.round(n.doc.lines*t)}else o&&r&&(c=c*("-"==r?-1:1)+s.number);let u=n.doc.line(Math.max(1,Math.min(n.doc.lines,c))),f=B.cursor(u.from+Math.max(0,Math.min(h,u.length)));t.dispatch({effects:[kh.of(!1),Es.scrollIntoView(f.from,{y:"center"})],selection:f}),t.focus()}return{dom:ah("form",{class:"cm-gotoLine",onkeydown:e=>{27==e.keyCode?(e.preventDefault(),t.dispatch({effects:kh.of(!1)}),t.focus()):13==e.keyCode&&(e.preventDefault(),i())},onsubmit:t=>{t.preventDefault(),i()}},ah("label",t.state.phrase("Go to line"),": ",e)," ",ah("button",{class:"cm-button",type:"submit"},t.state.phrase("go")))}}"undefined"!=typeof Symbol&&(ph.prototype[Symbol.iterator]=wh.prototype[Symbol.iterator]=function(){return this});const kh=at.define(),bh=_.define({create:()=>!0,update(t,e){for(let i of e.effects)i.is(kh)&&(t=i.value);return t},provide:t=>Js.from(t,(t=>t?vh:null))}),xh=Es.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),Sh=R.define({combine:t=>kt(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:t=>new Qh(t),scrollToMatch:t=>Es.scrollIntoView(t)})});class Ah{constructor(t){this.search=t.search,this.caseSensitive=!!t.caseSensitive,this.literal=!!t.literal,this.regexp=!!t.regexp,this.replace=t.replace||"",this.valid=!!this.search&&(!this.regexp||function(t){try{return new RegExp(t,dh),!0}catch(t){return!1}}(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!t.wholeWord}unquote(t){return this.literal?t:t.replace(/\\([nrt\\])/g,((t,e)=>"n"==e?"\n":"r"==e?"\r":"t"==e?"\t":"\\"))}eq(t){return this.search==t.search&&this.replace==t.replace&&this.caseSensitive==t.caseSensitive&&this.regexp==t.regexp&&this.wholeWord==t.wholeWord}create(){return this.regexp?new Lh(this):new Ch(this)}getCursor(t,e=0,i){let n=t.doc?t:vt.create({doc:t});return null==i&&(i=n.doc.length),this.regexp?Oh(this,n,e,i):Th(this,n,e,i)}}class Mh{constructor(t){this.spec=t}}function Th(t,e,i,n){return new uh(e.doc,t.unquoted,i,n,t.caseSensitive?void 0:t=>t.toLowerCase(),t.wholeWord?function(t,e){return(i,n,s,r)=>((r>i||r+s.length=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let s=Th(this.spec,t,Math.max(0,e-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,t.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}}function Oh(t,e,i,n){return new ph(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?(s=e.charCategorizer(e.selection.main.head),(t,e,i)=>!i[0].length||(s(Dh(i.input,i.index))!=mt.Word||s(Eh(i.input,i.index))!=mt.Word)&&(s(Eh(i.input,i.index+i[0].length))!=mt.Word||s(Dh(i.input,i.index+i[0].length))!=mt.Word)):void 0},i,n);var s}function Dh(t,e){return t.slice(d(t,e,!1),e)}function Eh(t,e){return t.slice(e,d(t,e))}class Lh extends Mh{nextMatch(t,e,i){let n=Oh(this.spec,t,i,t.doc.length).next();return n.done&&(n=Oh(this.spec,t,0,e).next()),n.done?null:n.value}prevMatchInRange(t,e,i){for(let n=1;;n++){let s=Math.max(e,i-1e4*n),r=Oh(this.spec,t,s,i),o=null;for(;!r.next().done;)o=r.value;if(o&&(s==e||o.from>s+10))return o;if(s==e)return null}}prevMatch(t,e,i){return this.prevMatchInRange(t,0,e)||this.prevMatchInRange(t,i,t.doc.length)}getReplacement(t){return this.spec.unquote(this.spec.replace.replace(/\$([$&\d+])/g,((e,i)=>"$"==i?"$":"&"==i?t.match[0]:"0"!=i&&+i=e)return null;n.push(i.value)}return n}highlight(t,e,i,n){let s=Oh(this.spec,t,Math.max(0,e-250),Math.min(i+250,t.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}}const Bh=at.define(),Ph=at.define(),Nh=_.define({create:t=>new Rh(Kh(t).create(),null),update(t,e){for(let i of e.effects)i.is(Bh)?t=new Rh(i.value.create(),t.panel):i.is(Ph)&&(t=new Rh(t.query,i.value?$h:null));return t},provide:t=>Js.from(t,(t=>t.panel))});class Rh{constructor(t,e){this.query=t,this.panel=e}}const Ih=Ge.mark({class:"cm-searchMatch"}),Hh=Ge.mark({class:"cm-searchMatch cm-searchMatch-selected"}),zh=vi.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(Nh))}update(t){let e=t.state.field(Nh);(e!=t.startState.field(Nh)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Ge.none;let{view:i}=this,n=new Tt;for(let e=0,s=i.visibleRanges,r=s.length;es[e+1].from-500;)l=s[++e].to;t.highlight(i.state,o,l,((t,e)=>{let s=i.state.selection.ranges.some((i=>i.from==t&&i.to==e));n.add(t,e,s?Hh:Ih)}))}return n.finish()}},{decorations:t=>t.decorations});function Wh(t){return e=>{let i=e.state.field(Nh,!1);return i&&i.query.spec.valid?t(e,i):Jh(e)}}const Vh=Wh(((t,{query:e})=>{let{to:i}=t.state.selection.main,n=e.nextMatch(t.state,i,i);if(!n)return!1;let s=B.single(n.from,n.to),r=t.state.facet(Sh);return t.dispatch({selection:s,effects:[ic(t,n),r.scrollToMatch(s.main,t)],userEvent:"select.search"}),Uh(t),!0})),Fh=Wh(((t,{query:e})=>{let{state:i}=t,{from:n}=i.selection.main,s=e.prevMatch(i,n,n);if(!s)return!1;let r=B.single(s.from,s.to),o=t.state.facet(Sh);return t.dispatch({selection:r,effects:[ic(t,s),o.scrollToMatch(r.main,t)],userEvent:"select.search"}),Uh(t),!0})),_h=Wh(((t,{query:e})=>{let i=e.matchAll(t.state,1e3);return!(!i||!i.length||(t.dispatch({selection:B.create(i.map((t=>B.range(t.from,t.to)))),userEvent:"select.search.matches"}),0))})),qh=Wh(((t,{query:e})=>{let{state:i}=t,{from:n,to:s}=i.selection.main;if(i.readOnly)return!1;let r=e.nextMatch(i,n,n);if(!r)return!1;let o,l,a=[],h=[];if(r.from==n&&r.to==s&&(l=i.toText(e.getReplacement(r)),a.push({from:r.from,to:r.to,insert:l}),r=e.nextMatch(i,r.from,r.to),h.push(Es.announce.of(i.phrase("replaced match on line $",i.doc.lineAt(n).number)+"."))),r){let e=0==a.length||a[0].from>=r.to?0:r.to-r.from-l.length;o=B.single(r.from-e,r.to-e),h.push(ic(t,r)),h.push(i.facet(Sh).scrollToMatch(o.main,t))}return t.dispatch({changes:a,selection:o,effects:h,userEvent:"input.replace"}),!0})),jh=Wh(((t,{query:e})=>{if(t.state.readOnly)return!1;let i=e.matchAll(t.state,1e9).map((t=>{let{from:i,to:n}=t;return{from:i,to:n,insert:e.getReplacement(t)}}));if(!i.length)return!1;let n=t.state.phrase("replaced $ matches",i.length)+".";return t.dispatch({changes:i,effects:Es.announce.of(n),userEvent:"input.replace.all"}),!0}));function $h(t){return t.state.facet(Sh).createPanel(t)}function Kh(t,e){var i,n,s,r,o;let l=t.selection.main,a=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!a)return e;let h=t.facet(Sh);return new Ah({search:(null!==(i=null==e?void 0:e.literal)&&void 0!==i?i:h.literal)?a:a.replace(/\n/g,"\\n"),caseSensitive:null!==(n=null==e?void 0:e.caseSensitive)&&void 0!==n?n:h.caseSensitive,literal:null!==(s=null==e?void 0:e.literal)&&void 0!==s?s:h.literal,regexp:null!==(r=null==e?void 0:e.regexp)&&void 0!==r?r:h.regexp,wholeWord:null!==(o=null==e?void 0:e.wholeWord)&&void 0!==o?o:h.wholeWord})}function Gh(t){let e=$s(t,$h);return e&&e.dom.querySelector("[main-field]")}function Uh(t){let e=Gh(t);e&&e==t.root.activeElement&&e.select()}const Jh=t=>{let e=t.state.field(Nh,!1);if(e&&e.panel){let i=Gh(t);if(i&&i!=t.root.activeElement){let n=Kh(t.state,e.query.spec);n.valid&&t.dispatch({effects:Bh.of(n)}),i.focus(),i.select()}}else t.dispatch({effects:[Ph.of(!0),e?Bh.of(Kh(t.state,e.query.spec)):at.appendConfig.of(sc)]});return!0},Yh=t=>{let e=t.state.field(Nh,!1);if(!e||!e.panel)return!1;let i=$s(t,$h);return i&&i.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:Ph.of(!1)}),!0},Xh=[{key:"Mod-f",run:Jh,scope:"editor search-panel"},{key:"F3",run:Vh,shift:Fh,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Vh,shift:Fh,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Yh,scope:"editor search-panel"},{key:"Mod-Shift-l",run:({state:t,dispatch:e})=>{let i=t.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:n,to:s}=i.main,r=[],o=0;for(let e=new uh(t.doc,t.sliceDoc(n,s));!e.next().done;){if(r.length>1e3)return!1;e.value.from==n&&(o=r.length),r.push(B.range(e.value.from,e.value.to))}return e(t.update({selection:B.create(r,o),userEvent:"select.search.matches"})),!0}},{key:"Alt-g",run:t=>{let e=$s(t,vh);if(!e){let i=[kh.of(!0)];null==t.state.field(bh,!1)&&i.push(at.appendConfig.of([bh,xh])),t.dispatch({effects:i}),e=$s(t,vh)}return e&&e.dom.querySelector("input").select(),!0}},{key:"Mod-d",run:({state:t,dispatch:e})=>{let{ranges:i}=t.selection;if(i.some((t=>t.from===t.to)))return(({state:t,dispatch:e})=>{let{selection:i}=t,n=B.create(i.ranges.map((e=>t.wordAt(e.head)||B.cursor(e.head))),i.mainIndex);return!n.eq(i)&&(e(t.update({selection:n})),!0)})({state:t,dispatch:e});let n=t.sliceDoc(i[0].from,i[0].to);if(t.selection.ranges.some((e=>t.sliceDoc(e.from,e.to)!=n)))return!1;let s=function(t,e){let{main:i,ranges:n}=t.selection,s=t.wordAt(i.head),r=s&&s.from==i.from&&s.to==i.to;for(let i=!1,s=new uh(t.doc,e,n[n.length-1].to);;){if(s.next(),!s.done){if(i&&n.some((t=>t.from==s.value.from)))continue;if(r){let e=t.wordAt(s.value.from);if(!e||e.from!=s.value.from||e.to!=s.value.to)continue}return s.value}if(i)return null;s=new uh(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),i=!0}}(t,n);return!!s&&(e(t.update({selection:t.selection.addRange(B.range(s.from,s.to),!1),effects:Es.scrollIntoView(s.to)})),!0)},preventDefault:!0}];class Qh{constructor(t){this.view=t;let e=this.query=t.state.field(Nh).query.spec;function i(t,e,i){return ah("button",{class:"cm-button",name:t,onclick:e,type:"button"},i)}this.commit=this.commit.bind(this),this.searchField=ah("input",{value:e.search,placeholder:Zh(t,"Find"),"aria-label":Zh(t,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=ah("input",{value:e.replace,placeholder:Zh(t,"Replace"),"aria-label":Zh(t,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=ah("input",{type:"checkbox",name:"case",form:"",checked:e.caseSensitive,onchange:this.commit}),this.reField=ah("input",{type:"checkbox",name:"re",form:"",checked:e.regexp,onchange:this.commit}),this.wordField=ah("input",{type:"checkbox",name:"word",form:"",checked:e.wholeWord,onchange:this.commit}),this.dom=ah("div",{onkeydown:t=>this.keydown(t),class:"cm-search"},[this.searchField,i("next",(()=>Vh(t)),[Zh(t,"next")]),i("prev",(()=>Fh(t)),[Zh(t,"previous")]),i("select",(()=>_h(t)),[Zh(t,"all")]),ah("label",null,[this.caseField,Zh(t,"match case")]),ah("label",null,[this.reField,Zh(t,"regexp")]),ah("label",null,[this.wordField,Zh(t,"by word")]),...t.state.readOnly?[]:[ah("br"),this.replaceField,i("replace",(()=>qh(t)),[Zh(t,"replace")]),i("replaceAll",(()=>jh(t)),[Zh(t,"replace all")])],ah("button",{name:"close",onclick:()=>Yh(t),"aria-label":Zh(t,"close"),type:"button"},["×"])])}commit(){let t=new Ah({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});t.eq(this.query)||(this.query=t,this.view.dispatch({effects:Bh.of(t)}))}keydown(t){var e,i;i=t,qs(Vs((e=this.view).state),i,e,"search-panel")?t.preventDefault():13==t.keyCode&&t.target==this.searchField?(t.preventDefault(),(t.shiftKey?Fh:Vh)(this.view)):13==t.keyCode&&t.target==this.replaceField&&(t.preventDefault(),qh(this.view))}update(t){for(let e of t.transactions)for(let t of e.effects)t.is(Bh)&&!t.value.eq(this.query)&&this.setQuery(t.value)}setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceField.value=t.replace,this.caseField.checked=t.caseSensitive,this.reField.checked=t.regexp,this.wordField.checked=t.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Sh).top}}function Zh(t,e){return t.state.phrase(e)}const tc=30,ec=/[\s\.,:;?!]/;function ic(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),s=t.state.doc.lineAt(i).to,r=Math.max(n.from,e-tc),o=Math.min(s,i+tc),l=t.state.sliceDoc(r,o);if(r!=n.from)for(let t=0;tl.length-tc;t--)if(!ec.test(l[t-1])&&ec.test(l[t])){l=l.slice(0,t);break}return Es.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${n.number}.`)}const nc=Es.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"}}),sc=[Nh,j.low(zh),nc];function rc(t){return rc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},rc(t)}function oc(t){return function(t){if(Array.isArray(t))return lc(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return lc(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?lc(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function lc(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i0,n}var i,n;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&pc(t,e)}(e,t),i=e,(n=[{key:"setCodeMirrorPreference",value:function(t){this.useCodeMirror=t,fc(dc(e.prototype),"setCodeMirrorPreference",this).call(this,t)}},{key:"enableCodeMirror",value:function(){var t=this;if(!this.view){var e=this.$textarea.prop("selectionStart"),i=this.$textarea.prop("selectionEnd"),n=this.$textarea.scrollTop(),s=this.$textarea.is(":focus"),r=[].concat(oc(this.defaultExtensions),[this.langExtension,ul(),Jl(),Es.contentAttributes.of({spellcheck:"true"}),Es.domEventHandlers({blur:function(){return t.$textarea.triggerHandler("blur")},focus:function(){return t.$textarea.triggerHandler("focus")}}),Es.updateListener.of((function(e){e.docChanged&&"function"==typeof t.editRecoveryHandler&&t.editRecoveryHandler()})),Es.lineWrapping,zs.of([].concat(oc(lh),oc(Xh),oc(fa)))]);mw.hook("editRecovery.loadEnd").add((function(e){t.editRecoveryHandler=e.fieldChangeHandler})),this.initialize(r),this.view.scrollDOM.scrollTop=n,this.view.dispatch({selection:B.create([B.range(e,i)]),scrollIntoView:!0}),s&&this.view.focus(),mw.hook("ext.CodeMirror.switch").fire(!0,$(this.view.dom))}}},{key:"addCodeMirrorToWikiEditor",value:function(){var t=this,e=this.$textarea.data("wikiEditor-context"),i=e&&e.modules&&e.modules.toolbar;i&&(this.$textarea.wikiEditor("addToToolbar",{section:"main",groups:{codemirror:{tools:{CodeMirror:{label:mw.msg("codemirror-toggle-label"),type:"toggle",oouiIcon:"highlight",action:{type:"callback",execute:function(){return t.switchCodeMirror()}}}}}}}),i.$toolbar.find(".tool[rel=CodeMirror]").attr("id","mw-editbutton-codemirror"),this.useCodeMirror&&this.enableCodeMirror(),this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!1,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0}))}},{key:"updateToolbarButton",value:function(){var t=$("#mw-editbutton-codemirror");t.toggleClass("mw-editbutton-codemirror-active",this.useCodeMirror),t.data("setActive")&&t.data("setActive")(this.useCodeMirror)}},{key:"switchCodeMirror",value:function(){if(this.view){this.setCodeMirrorPreference(!1);var t=this.view.scrollDOM.scrollTop,e=this.view.hasFocus,i=this.view.state.selection.ranges[0],n=i.from,s=i.to;$(this.view.dom).textSelection("unregister"),this.$textarea.textSelection("unregister"),this.$textarea.val(this.view.state.doc.toString()),this.view.destroy(),this.view=null,this.$textarea.show(),e&&this.$textarea.trigger("focus"),this.$textarea.prop("selectionStart",Math.min(n,s)).prop("selectionEnd",Math.max(s,n)),this.$textarea.scrollTop(t),mw.hook("ext.CodeMirror.switch").fire(!1,this.$textarea)}else this.enableCodeMirror(),this.setCodeMirrorPreference(!0);this.updateToolbarButton(),this.logUsage({editor:"wikitext",enabled:this.useCodeMirror,toggled:!0,edit_start_ts_ms:1e3*parseInt($('input[name="wpStarttime"]').val(),10)||0})}}])&&ac(i.prototype,n),Object.defineProperty(i,"prototype",{writable:!1}),e}(mr);function mc(t){return mc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},mc(t)}function wc(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i~).,'])"),"i"),this.isBold=!1,this.wasBold=!1,this.isItalic=!1,this.wasItalic=!1,this.firstSingleLetterWord=null,this.firstMultiLetterWord=null,this.firstSpace=null,this.oldStyle=null,this.tokens=[],this.oldTokens=[],this.tokenTable=Mc.tokenTable,Object.keys(this.config.tags).forEach((function(t){return Mc.addTag(t)}))}var e,i;return e=t,i=[{key:"eatHtmlEntity",value:function(t,e){return(t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w.\-:]/)&&t.eat(";"))?Mc.tags.htmlEntity:e}},{key:"makeStyle",value:function(t,e,i){return this.isBold&&(t+=" "+Mc.tags.strong),this.isItalic&&(t+=" "+Mc.tags.em),this.makeLocalStyle(t,e,i)}},{key:"makeLocalStyle",value:function(t,e,i){var n="";switch(e.nTemplate){case 0:break;case 1:n+="-template";break;case 2:n+="-template2";break;default:n+="-template3"}switch(e.nExt){case 0:break;case 1:n+="-ext";break;case 2:n+="-ext2";break;default:n+="-ext3"}return e.nLink>0&&(n+="-link"),""!==n&&(t="mw".concat(n,"-ground ").concat(t)),i&&e[i]--,t.trim()}},{key:"eatBlock",value:function(t,e,i){var n=this;return function(s,r){return s.skipTo(e)?(!1!==i&&s.match(e),r.tokenize=r.stack.pop()):s.skipToEnd(),n.makeLocalStyle(t,r)}}},{key:"eatEnd",value:function(t){var e=this;return function(i,n){return i.skipToEnd(),n.tokenize=n.stack.pop(),e.makeLocalStyle(t,n)}}},{key:"eatChar",value:function(t,e){var i=this;return function(n,s){return s.tokenize=s.stack.pop(),n.eat(t)?i.makeLocalStyle(e,s):i.makeLocalStyle(Mc.tags.error,s)}}},{key:"eatSectionHeader",value:function(t){var e=this;return function(i,n){return i.match(/^[^&<[{~]+/)?(i.eol()?(i.backUp(t),n.tokenize=e.eatEnd(Mc.tags.sectionHeader)):i.match(/^.*?=)/,!1)&&(i.backUp(t),n.tokenize=e.eatBlock(Mc.tags.sectionHeader,"\x3c!--",!1)),Mc.tags.section):e.eatWikiText(Mc.tags.section)(i,n)}}},{key:"inVariable",value:function(t,e){return t.match(/^[^{}|]+/)?this.makeLocalStyle(Mc.tags.templateVariableName,e):t.eat("|")?(e.tokenize=this.inVariableDefault.bind(this),this.makeLocalStyle(Mc.tags.templateVariableDelimiter,e)):t.match("}}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.templateVariableBracket,e)):t.match("{{{")?(e.stack.push(e.tokenize),this.makeLocalStyle(Mc.tags.templateVariableBracket,e)):(t.next(),this.makeLocalStyle(Mc.tags.templateVariableName,e))}},{key:"inVariableDefault",value:function(t,e){return t.match(/^[^{}[<&~]+/)?this.makeLocalStyle(Mc.tags.templateVariable,e):t.match("}}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.templateVariableBracket,e)):this.eatWikiText(Mc.tags.templateVariable)(t,e)}},{key:"inParserFunctionName",value:function(t,e){return t.match(/^#?[^:}{~]+/)?this.makeLocalStyle(Mc.tags.parserFunctionName,e):t.eat(":")?(e.tokenize=this.inParserFunctionArguments.bind(this),this.makeLocalStyle(Mc.tags.parserFunctionDelimiter,e)):t.match("}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.parserFunctionBracket,e,"nExt")):this.eatWikiText(Mc.tags.parserFunction)(t,e)}},{key:"inParserFunctionArguments",value:function(t,e){return t.match(/^[^|}{[<&~]+/)?this.makeLocalStyle(Mc.tags.parserFunction,e):t.eat("|")?this.makeLocalStyle(Mc.tags.parserFunctionDelimiter,e):t.match("}}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.parserFunctionBracket,e,"nExt")):this.eatWikiText(Mc.tags.parserFunction)(t,e)}},{key:"eatTemplatePageName",value:function(t){var e=this;return function(i,n){return i.match(/^[\s\u00a0]*\|[\s\u00a0]*/)?(n.tokenize=e.eatTemplateArgument(!0),e.makeLocalStyle(Mc.tags.templateDelimiter,n)):i.match(/^[\s\u00a0]*\}\}/)?(n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.templateBracket,n,"nTemplate")):i.match(/^[\s\u00a0]*/)?e.makeLocalStyle(Mc.tags.comment,n):t&&i.sol()?(n.nTemplate--,void(n.tokenize=n.stack.pop())):i.match(/^[\s\u00a0]*[^\s\u00a0|}<{&~]+/)?(n.tokenize=e.eatTemplatePageName(!0),e.makeLocalStyle(Mc.tags.templateName,n)):i.eatSpace()?(i.eol(),e.makeLocalStyle(Mc.tags.templateName,n)):e.eatWikiText(Mc.tags.templateName)(i,n)}}},{key:"eatTemplateArgument",value:function(t){var e=this;return function(i,n){return t&&i.eatWhile(/[^=|}{[<&~]/)?i.eat("=")?(n.tokenize=e.eatTemplateArgument(!1),e.makeLocalStyle(Mc.tags.templateArgumentName,n)):e.makeLocalStyle(Mc.tags.template,n):i.eatWhile(/[^|}{[<&~]/)?e.makeLocalStyle(Mc.tags.template,n):i.eat("|")?(n.tokenize=e.eatTemplateArgument(!0),e.makeLocalStyle(Mc.tags.templateDelimiter,n)):i.match("}}")?(n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.templateBracket,n,"nTemplate")):e.eatWikiText(Mc.tags.template)(i,n)}}},{key:"eatExternalLinkProtocol",value:function(t){var e=this;return function(i,n){for(;t>0;)t--,i.next();return i.eol()?(n.nLink--,n.tokenize=n.stack.pop()):n.tokenize=e.inExternalLink.bind(e),e.makeLocalStyle(Mc.tags.extLinkProtocol,n)}}},{key:"inExternalLink",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.match(/^[\s\u00a0]*\]/)?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.extLinkBracket,e,"nLink")):t.eatSpace()?(e.tokenize=this.inExternalLinkText.bind(this),this.makeStyle("",e)):t.match(/^[^\s\u00a0\]{&~']+/)||t.eatSpace()?("'"===t.peek()&&(t.match("''",!1)?e.tokenize=this.inExternalLinkText.bind(this):t.next()),this.makeStyle(Mc.tags.extLink,e)):this.eatWikiText(Mc.tags.extLink)(t,e)}},{key:"inExternalLinkText",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.eat("]")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.extLinkBracket,e,"nLink")):t.match(/^[^'\]{&~<]+/)?this.makeStyle(Mc.tags.extLinkText,e):this.eatWikiText(Mc.tags.extLinkText)(t,e)}},{key:"inLink",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.match(/^[\s\u00a0]*#[\s\u00a0]*/)?(e.tokenize=this.inLinkToSection.bind(this),this.makeLocalStyle(Mc.tags.link,e)):t.match(/^[\s\u00a0]*\|[\s\u00a0]*/)?(e.tokenize=this.eatLinkText(),this.makeLocalStyle(Mc.tags.linkDelimiter,e)):t.match(/^[\s\u00a0]*\]\]/)?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.linkBracket,e,"nLink")):t.match(/^[\s\u00a0]*[^\s\u00a0#|\]&~{]+/)||t.eatSpace()?this.makeStyle("".concat(Mc.tags.linkPageName," ").concat(Mc.tags.pageName),e):this.eatWikiText("".concat(Mc.tags.linkPageName," ").concat(Mc.tags.pageName))(t,e)}},{key:"inLinkToSection",value:function(t,e){return t.sol()?(e.nLink--,void(e.tokenize=e.stack.pop())):t.match(/^[^|\]&~{}]+/)?this.makeLocalStyle(Mc.tags.linkToSection,e):t.eat("|")?(e.tokenize=this.eatLinkText(),this.makeLocalStyle(Mc.tags.linkDelimiter,e)):t.match("]]")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.linkBracket,e,"nLink")):this.eatWikiText(Mc.tags.linkToSection)(t,e)}},{key:"eatLinkText",value:function(){var t,e,i=this;return function(n,s){var r;return n.match("]]")?(s.tokenize=s.stack.pop(),i.makeLocalStyle(Mc.tags.linkBracket,s,"nLink")):n.match("'''")?(t=!t,i.makeLocalStyle("".concat(Mc.tags.linkText," ").concat(Mc.tags.apostrophes),s)):n.match("''")?(e=!e,i.makeLocalStyle("".concat(Mc.tags.linkText," ").concat(Mc.tags.apostrophes),s)):(r=Mc.tags.linkText,t&&(r+=" "+Mc.tags.strong),e&&(r+=" "+Mc.tags.em),n.match(/^[^'\]{&~<]+/)?i.makeStyle(r,s):i.eatWikiText(r)(n,s))}}},{key:"eatTagName",value:function(t,e,i){var n=this;return function(s,r){for(var o="";t>0;)t--,o+=s.next();return s.eatSpace(),o=o.toLowerCase(),i?(e&&!Mc.implicitlyClosedHtmlTags[o]?r.tokenize=n.eatChar(">",Mc.tags.htmlTagBracket):r.tokenize=n.eatHtmlTagAttribute(o),n.makeLocalStyle(Mc.tags.htmlTagName,r)):(r.tokenize=e?n.eatChar(">","".concat(Mc.tags.extTagBracket," mw-ext-").concat(o)):n.eatExtTagAttribute(o),n.makeLocalStyle("".concat(Mc.tags.extTagName," mw-ext-").concat(o),r))}}},{key:"eatHtmlTagAttribute",value:function(t){var e=this;return function(i,n){return i.match(/^(?:"[^<">]*"|'[^<'>]*'|[^>/<{&~])+/)?e.makeLocalStyle(Mc.tags.htmlTagAttribute,n):i.eat(">")?(t in Mc.implicitlyClosedHtmlTags||n.inHtmlTag.push(t),n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.htmlTagBracket,n)):i.match("/>")?(n.tokenize=n.stack.pop(),e.makeLocalStyle(Mc.tags.htmlTagBracket,n)):e.eatWikiText(Mc.tags.htmlTagAttribute)(i,n)}}},{key:"eatNowiki",value:function(){var t=this;return function(e){return e.match(/^[^&]+/)?"":(e.next(),t.eatHtmlEntity(e,""))}}},{key:"eatExtTagAttribute",value:function(t){var e=this;return function(i,n){if(i.match(/^(?:"[^">]*"|'[^'>]*'|[^>/<{&~])+/))return e.makeLocalStyle("".concat(Mc.tags.extTagAttribute," mw-ext-").concat(t),n);if(i.eat(">")){if(n.extName=t,"nowiki"===t||"pre"===t)n.extMode={startState:function(){},copyState:function(){},token:e.eatNowiki()};else if(t in e.config.tagModes){var s=e.config.tagModes[t];"mediawiki"!==s&&"text/mediawiki"!==s||(n.extMode=e.mediawiki,n.extState=n.extMode.startState())}return n.tokenize=e.eatExtTagArea(t),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(t),n)}return i.match("/>")?(n.tokenize=n.stack.pop(),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(t),n)):e.eatWikiText("".concat(Mc.tags.extTagAttribute," mw-ext-").concat(t))(i,n)}}},{key:"eatExtTagArea",value:function(t){var e=this;return function(i,n){var s,r=i.pos,o=new RegExp(""),"i").exec(r?i.string.slice(r):i.string),l=!1;if(o){if(0===o.index)return n.tokenize=e.eatExtCloseTag(t),n.extName=!1,!1!==n.extMode&&(n.extMode=!1,n.extState=!1),n.tokenize(i,n);s=o.index+r,l=i.string,i.string=l.slice(0,s)}return n.stack.push(n.tokenize),n.tokenize=e.eatExtTokens(l),n.tokenize(i,n)}}},{key:"eatExtCloseTag",value:function(t){var e=this;return function(i,n){return i.next(),i.next(),n.tokenize=e.eatTagName(t.length,!0,!1),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(t),n)}}},{key:"eatExtTokens",value:function(t){var e=this;return function(i,n){var s;return!1===n.extMode?(s=Mc.tags.extTag,i.skipToEnd()):s="mw-tag-".concat(n.extName," ")+n.extMode.token(i,n.extState,!1===t),i.eol()&&(!1!==t&&(i.string=t),n.tokenize=n.stack.pop()),e.makeLocalStyle(s,n)}}},{key:"eatStartTable",value:function(t,e){return t.match("{|"),t.eatSpace(),e.tokenize=this.inTableDefinition.bind(this),Mc.tags.tableBracket}},{key:"inTableDefinition",value:function(t,e){return t.sol()?(e.tokenize=this.inTable.bind(this),this.inTable(t,e)):this.eatWikiText(Mc.tags.tableDefinition)(t,e)}},{key:"inTable",value:function(t,e){if(t.sol()){if(t.eatSpace(),t.eat("|"))return t.eat("-")?(t.eatSpace(),e.tokenize=this.inTableDefinition.bind(this),this.makeLocalStyle(Mc.tags.tableDelimiter,e)):t.eat("+")?(t.eatSpace(),e.tokenize=this.eatTableRow(!0,!1,!0),this.makeLocalStyle(Mc.tags.tableDelimiter,e)):t.eat("}")?(e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.tableBracket,e)):(t.eatSpace(),e.tokenize=this.eatTableRow(!0,!1),this.makeLocalStyle(Mc.tags.tableDelimiter,e));if(t.eat("!"))return t.eatSpace(),e.tokenize=this.eatTableRow(!0,!0),this.makeLocalStyle(Mc.tags.tableDelimiter,e)}return this.eatWikiText("")(t,e)}},{key:"eatTableRow",value:function(t,e,i){var n=this,s="";return i?s=Mc.tags.tableCaption:e&&(s=Mc.tags.strong),function(r,o){if(r.sol()){if(r.match(/^[\s\u00a0]*[|!]/,!1))return o.tokenize=n.inTable.bind(n),n.inTable(r,o)}else{if(r.match(/^[^'|{[<&~!]+/))return n.makeStyle(s,o);if(r.match("||")||e&&r.match("!!"))return n.isBold=!1,n.isItalic=!1,o.tokenize=n.eatTableRow(!0,e,i),n.makeLocalStyle(Mc.tags.tableDelimiter,o);if(t&&r.eat("|"))return o.tokenize=n.eatTableRow(!1,e,i),n.makeLocalStyle(Mc.tags.tableDelimiter,o)}return n.eatWikiText(s)(r,o)}}},{key:"eatFreeExternalLinkProtocol",value:function(t,e){return t.match(this.urlProtocols),e.tokenize=this.eatFreeExternalLink.bind(this),this.makeLocalStyle(Mc.tags.freeExtLinkProtocol,e)}},{key:"eatFreeExternalLink",value:function(t,e){if(t.eol());else if(t.match(/^[^\s\u00a0{[\]<>~).,']*/))if("~"===t.peek()){if(!t.match(/^~~~+/,!1))return t.match(/^~*/),this.makeLocalStyle(Mc.tags.freeExtLink,e)}else if("{"===t.peek()){if(!t.match("{{",!1))return t.next(),this.makeLocalStyle(Mc.tags.freeExtLink,e)}else if("'"===t.peek()){if(!t.match("''",!1))return t.next(),this.makeLocalStyle(Mc.tags.freeExtLink,e)}else if(t.match(/^[).,]+(?=[^\s\u00a0{[\]<>~).,])/))return this.makeLocalStyle(Mc.tags.freeExtLink,e);return e.tokenize=e.stack.pop(),this.makeLocalStyle(Mc.tags.freeExtLink,e)}},{key:"eatWikiText",value:function(t){var e=this;return function(i,n){var s,r,o,l,a,h,c;if(i.sol()){if(!i.match("//",!1)&&i.match(e.urlProtocols))return n.stack.push(n.tokenize),n.tokenize=e.eatFreeExternalLink.bind(e),e.makeLocalStyle(Mc.tags.freeExtLinkProtocol,n);switch(s=i.next()){case"-":if(i.match(/^---+/))return Mc.tags.hr;break;case"=":if(r=i.match(/^(={0,5})(.+?(=\1\s*)(.*\S).*?)?)$/))return i.backUp(r[2].length),n.stack.push(n.tokenize),n.tokenize=e.eatSectionHeader(r[3].length),Mc.tags.sectionHeader+" "+Mc.tags["sectionHeader".concat(r[1].length+1)];break;case"*":case"#":case";":return i.match(/^[*#;:]*/),Mc.tags.list;case":":return i.match(/^:*{\|/,!1)&&(n.stack.push(n.tokenize),n.tokenize=e.eatStartTable.bind(e)),i.match(/^[*#;:]*/),Mc.tags.indenting;case" ":if(!i.match(/^[\s\u00a0]*:*{\|/,!1))return Mc.tags.skipFormatting;if(i.eatSpace(),i.match(/^:+/))return n.stack.push(n.tokenize),n.tokenize=e.eatStartTable.bind(e),Mc.tags.indenting;i.eat("{");case"{":if(i.eat("|"))return i.eatSpace(),n.stack.push(n.tokenize),n.tokenize=e.inTableDefinition.bind(e),Mc.tags.tableBracket}}else s=i.next();switch(s){case"&":return e.makeStyle(e.eatHtmlEntity(i,t),n);case"'":if(i.match(/^'*(?=''''')/)||i.match(/^'''(?!')/,!1))break;if(i.match("''"))return e.firstSingleLetterWord||i.match("''",!1)||e.prepareItalicForCorrection(i),e.isBold=!e.isBold,e.makeLocalStyle(Mc.tags.apostrophesBold,n);if(i.eat("'"))return e.isItalic=!e.isItalic,e.makeLocalStyle(Mc.tags.apostrophesItalic,n);break;case"[":if(i.eat("[")){if(i.eatSpace(),/[^\]|[]/.test(i.peek()))return n.nLink++,n.stack.push(n.tokenize),n.tokenize=e.inLink.bind(e),e.makeLocalStyle(Mc.tags.linkBracket,n)}else if(o=i.match(e.urlProtocols))return n.nLink++,i.backUp(o[0].length),n.stack.push(n.tokenize),n.tokenize=e.eatExternalLinkProtocol(o[0].length),e.makeLocalStyle(Mc.tags.extLinkBracket,n);break;case"{":if(i.match(/^{{(?!{|[^{}]*}}(?!}))/))return i.eatSpace(),n.stack.push(n.tokenize),n.tokenize=e.inVariable.bind(e),e.makeLocalStyle(Mc.tags.templateVariableBracket,n);if(i.match(/^{(?!{(?!{))[\s\u00a0]*/))return"#"===i.peek()?(n.nExt++,n.stack.push(n.tokenize),n.tokenize=e.inParserFunctionName.bind(e),e.makeLocalStyle(Mc.tags.parserFunctionBracket,n)):!(l=i.match(/^([^\s\u00a0}[\]<{'|&:]+)(:|[\s\u00a0]*)(\}\}?)?(.)?/))||(i.backUp(l[0].length),":"!==l[2]&&void 0!==l[4]&&"}}"!==l[3]||!(l[1].toLowerCase()in e.config.functionSynonyms[0])&&!(l[1]in e.config.functionSynonyms[1]))?(n.nTemplate++,n.stack.push(n.tokenize),n.tokenize=e.eatTemplatePageName(!1),e.makeLocalStyle(Mc.tags.templateBracket,n)):(n.nExt++,n.stack.push(n.tokenize),n.tokenize=e.inParserFunctionName.bind(e),e.makeLocalStyle(Mc.tags.parserFunctionBracket,n));break;case"<":if(a=!!i.eat("/"),h=i.match(/^[^>/\s\u00a0.*,[\]{}$^+?|/\\'`~<=!@#%&()-]+/),i.match("!--"))return c=e.eatBlock(Mc.tags.comment,"--\x3e"),n.stack.push(n.tokenize),n.tokenize=c,c(i,n);if(h){if((h=h[0].toLowerCase())in e.config.tags)return!0===a?Mc.tags.error:(i.backUp(h.length),n.stack.push(n.tokenize),n.tokenize=e.eatTagName(h.length,a,!1),e.makeLocalStyle("".concat(Mc.tags.extTagBracket," mw-ext-").concat(h),n));if(h in Mc.permittedHtmlTags)return!0===a&&h!==n.inHtmlTag.pop()?(i.pos++,Mc.tags.error):!0===a&&h in Mc.implicitlyClosedHtmlTags?Mc.tags.error:(i.backUp(h.length),n.stack.push(n.tokenize),n.tokenize=e.eatTagName(h.length,a||h in Mc.implicitlyClosedHtmlTags,!0),e.makeLocalStyle(Mc.tags.htmlTagBracket,n));i.backUp(h.length)}break;case"~":if(i.match(/^~{2,4}/))return Mc.tags.signature;break;case"_":for(r=1;i.eat("_");)r++;if(r>2)return i.eol()||i.backUp(2),e.makeStyle(t,n);if(2===r&&(l=i.match(/^([^\s\u00a0>}[\]<{'|&:~]+?)__/))&&l[0])return"__"+l[0].toLowerCase()in e.config.doubleUnderscore[0]||"__"+l[0]in e.config.doubleUnderscore[1]?Mc.tags.doubleUnderscore:(i.eol()||i.backUp(2),e.makeStyle(t,n));break;default:if(/[\s\u00a0]/.test(s)&&(i.eatSpace(),i.match(e.urlProtocols,!1)&&!i.match("//")))return n.stack.push(n.tokenize),n.tokenize=e.eatFreeExternalLinkProtocol.bind(e),e.makeStyle(t,n)}return i.match(/^[^\s\u00a0_>}[\]<{'|&:~=]+/),e.makeStyle(t,n)}}},{key:"prepareItalicForCorrection",value:function(t){var e=t.pos,i=t.string.slice(0,e-3),n=i.slice(-1),s=i.slice(-2,-1);if(" "===n){if(this.firstMultiLetterWord||this.firstSpace)return;this.firstSpace=e}else if(" "===s)this.firstSingleLetterWord=e;else{if(this.firstMultiLetterWord)return;this.firstMultiLetterWord=e}this.wasBold=this.isBold,this.wasItalic=this.isItalic}},{key:"mediawiki",get:function(){var t=this;return{name:"mediawiki",startState:function(){return{tokenize:t.eatWikiText(""),stack:[],inHtmlTag:[],extName:!1,extMode:!1,extState:!1,nTemplate:0,nLink:0,nExt:0}},copyState:function(t){return{tokenize:t.tokenize,stack:t.stack.concat([]),inHtmlTag:t.inHtmlTag.concat([]),extName:t.extName,extMode:t.extMode,extState:!1!==t.extMode&&t.extMode.copyState(t.extState),nTemplate:t.nTemplate,nLink:t.nLink,nExt:t.nExt}},token:function(e,i){var n,s,r,o,l=[],a=[];if(t.oldTokens.length>0)return r=t.oldTokens.shift(),e.pos=r.pos,i=r.state,r.style;e.sol()&&(t.isBold=!1,t.isItalic=!1,t.firstSingleLetterWord=null,t.firstMultiLetterWord=null,t.firstSpace=null);do{if(n=i.tokenize(e,i),!(o=t.firstSingleLetterWord||t.firstMultiLetterWord||t.firstSpace))return t.oldStyle=n,n;o!==s&&(s=o,a.length>0&&(l=l.concat(a),a=[])),a.push({pos:e.pos,style:n,state:(i.extMode||t.mediawiki).copyState(i)})}while(!e.eol());if(t.isBold&&t.isItalic){if(t.isItalic=t.wasItalic,t.isBold=t.wasBold,t.firstSingleLetterWord=null,t.firstMultiLetterWord=null,t.firstSpace=null,!(l.length>0))return e.pos=a[0].pos-2,t.oldStyle;l[l.length-1].pos++,t.oldTokens=l}else t.oldTokens=l.concat(a);return r=t.oldTokens.shift(),e.pos=r.pos,i=r.state,r.style},blankLine:function(t){t.extMode&&t.extMode.blankLine&&t.extMode.blankLine(t.extState)},tokenTable:this.tokenTable}}}],i&&Cc(e.prototype,i),Object.defineProperty(e,"prototype",{writable:!1}),t}();mw.loader.getState("ext.wikiEditor")&&mw.hook("wikiEditor.toolbarReady").add((function(t){new gc(t,function(){var t=new Dc((arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)||mw.config.get("extCodeMirrorConfig")).mediawiki,e=bl.define(t),i=function(t,e){let i,n=[el];return t instanceof Yo&&(t.module&&n.push(Es.styleModule.of(t.module)),i=t.themeType),i?n.push(Xo.computeN([Es.darkTheme],(e=>e.facet(Es.darkTheme)==("dark"==i)?[t]:[]))):n.push(Xo.of(t)),n}(Yo.define(Mc.getTagStyles(t)));return new Ho(e,i)}()).addCodeMirrorToWikiEditor()}))})();
 //# sourceMappingURL=main.js.map.json
\ No newline at end of file
diff --git a/resources/dist/main.js.map.json b/resources/dist/main.js.map.json
index 4a7ed9ff..c647b436 100644
--- a/resources/dist/main.js.map.json
+++ b/resources/dist/main.js.map.json
@@ -1 +1 @@
-{"version":3,"file":"main.js","mappings":"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","sources":["/w/extensions/CodeMirror/./node_modules/@codemirror/state/dist/index.js","/w/extensions/CodeMirror/./node_modules/style-mod/src/style-mod.js","/w/extensions/CodeMirror/./node_modules/w3c-keyname/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/view/dist/index.js","/w/extensions/CodeMirror/./src/codemirror.js","/w/extensions/CodeMirror/./node_modules/@lezer/common/dist/index.js","/w/extensions/CodeMirror/./node_modules/@lezer/highlight/dist/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/language/dist/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/commands/dist/index.js","/w/extensions/CodeMirror/./node_modules/crelt/index.js","/w/extensions/CodeMirror/./node_modules/@codemirror/search/dist/index.js","/w/extensions/CodeMirror/./src/codemirror.wikieditor.js","/w/extensions/CodeMirror/./src/codemirror.mode.mediawiki.config.js","/w/extensions/CodeMirror/./src/codemirror.mode.mediawiki.js","/w/extensions/CodeMirror/./src/codemirror.wikieditor.mediawiki.js"],"sourcesContent":["/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n    /**\n    Get the line description around the given position.\n    */\n    lineAt(pos) {\n        if (pos < 0 || pos > this.length)\n            throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n        return this.lineInner(pos, false, 1, 0);\n    }\n    /**\n    Get the description for the given (1-based) line number.\n    */\n    line(n) {\n        if (n < 1 || n > this.lines)\n            throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n        return this.lineInner(n, true, 1, 0);\n    }\n    /**\n    Replace a range of the text with the given content.\n    */\n    replace(from, to, text) {\n        let parts = [];\n        this.decompose(0, from, parts, 2 /* Open.To */);\n        if (text.length)\n            text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n        this.decompose(to, this.length, parts, 1 /* Open.From */);\n        return TextNode.from(parts, this.length - (to - from) + text.length);\n    }\n    /**\n    Append another document to this one.\n    */\n    append(other) {\n        return this.replace(this.length, this.length, other);\n    }\n    /**\n    Retrieve the text between the given points.\n    */\n    slice(from, to = this.length) {\n        let parts = [];\n        this.decompose(from, to, parts, 0);\n        return TextNode.from(parts, to - from);\n    }\n    /**\n    Test whether this text is equal to another instance.\n    */\n    eq(other) {\n        if (other == this)\n            return true;\n        if (other.length != this.length || other.lines != this.lines)\n            return false;\n        let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n        let a = new RawTextCursor(this), b = new RawTextCursor(other);\n        for (let skip = start, pos = start;;) {\n            a.next(skip);\n            b.next(skip);\n            skip = 0;\n            if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n                return false;\n            pos += a.value.length;\n            if (a.done || pos >= end)\n                return true;\n        }\n    }\n    /**\n    Iterate over the text. When `dir` is `-1`, iteration happens\n    from end to start. This will return lines and the breaks between\n    them as separate strings.\n    */\n    iter(dir = 1) { return new RawTextCursor(this, dir); }\n    /**\n    Iterate over a range of the text. When `from` > `to`, the\n    iterator will run in reverse.\n    */\n    iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n    /**\n    Return a cursor that iterates over the given range of lines,\n    _without_ returning the line breaks between, and yielding empty\n    strings for empty lines.\n    \n    When `from` and `to` are given, they should be 1-based line numbers.\n    */\n    iterLines(from, to) {\n        let inner;\n        if (from == null) {\n            inner = this.iter();\n        }\n        else {\n            if (to == null)\n                to = this.lines + 1;\n            let start = this.line(from).from;\n            inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n        }\n        return new LineCursor(inner);\n    }\n    /**\n    Return the document as a string, using newline characters to\n    separate lines.\n    */\n    toString() { return this.sliceString(0); }\n    /**\n    Convert the document to an array of lines (which can be\n    deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n    */\n    toJSON() {\n        let lines = [];\n        this.flatten(lines);\n        return lines;\n    }\n    /**\n    @internal\n    */\n    constructor() { }\n    /**\n    Create a `Text` instance for the given array of lines.\n    */\n    static of(text) {\n        if (text.length == 0)\n            throw new RangeError(\"A document must have at least one line\");\n        if (text.length == 1 && !text[0])\n            return Text.empty;\n        return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n    }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n    constructor(text, length = textLength(text)) {\n        super();\n        this.text = text;\n        this.length = length;\n    }\n    get lines() { return this.text.length; }\n    get children() { return null; }\n    lineInner(target, isLine, line, offset) {\n        for (let i = 0;; i++) {\n            let string = this.text[i], end = offset + string.length;\n            if ((isLine ? line : end) >= target)\n                return new Line(offset, end, line, string);\n            offset = end + 1;\n            line++;\n        }\n    }\n    decompose(from, to, target, open) {\n        let text = from <= 0 && to >= this.length ? this\n            : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n        if (open & 1 /* Open.From */) {\n            let prev = target.pop();\n            let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n            if (joined.length <= 32 /* Tree.Branch */) {\n                target.push(new TextLeaf(joined, prev.length + text.length));\n            }\n            else {\n                let mid = joined.length >> 1;\n                target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n            }\n        }\n        else {\n            target.push(text);\n        }\n    }\n    replace(from, to, text) {\n        if (!(text instanceof TextLeaf))\n            return super.replace(from, to, text);\n        let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n        let newLen = this.length + text.length - (to - from);\n        if (lines.length <= 32 /* Tree.Branch */)\n            return new TextLeaf(lines, newLen);\n        return TextNode.from(TextLeaf.split(lines, []), newLen);\n    }\n    sliceString(from, to = this.length, lineSep = \"\\n\") {\n        let result = \"\";\n        for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n            let line = this.text[i], end = pos + line.length;\n            if (pos > from && i)\n                result += lineSep;\n            if (from < end && to > pos)\n                result += line.slice(Math.max(0, from - pos), to - pos);\n            pos = end + 1;\n        }\n        return result;\n    }\n    flatten(target) {\n        for (let line of this.text)\n            target.push(line);\n    }\n    scanIdentical() { return 0; }\n    static split(text, target) {\n        let part = [], len = -1;\n        for (let line of text) {\n            part.push(line);\n            len += line.length + 1;\n            if (part.length == 32 /* Tree.Branch */) {\n                target.push(new TextLeaf(part, len));\n                part = [];\n                len = -1;\n            }\n        }\n        if (len > -1)\n            target.push(new TextLeaf(part, len));\n        return target;\n    }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n    constructor(children, length) {\n        super();\n        this.children = children;\n        this.length = length;\n        this.lines = 0;\n        for (let child of children)\n            this.lines += child.lines;\n    }\n    lineInner(target, isLine, line, offset) {\n        for (let i = 0;; i++) {\n            let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n            if ((isLine ? endLine : end) >= target)\n                return child.lineInner(target, isLine, line, offset);\n            offset = end + 1;\n            line = endLine + 1;\n        }\n    }\n    decompose(from, to, target, open) {\n        for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (from <= end && to >= pos) {\n                let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n                if (pos >= from && end <= to && !childOpen)\n                    target.push(child);\n                else\n                    child.decompose(from - pos, to - pos, target, childOpen);\n            }\n            pos = end + 1;\n        }\n    }\n    replace(from, to, text) {\n        if (text.lines < this.lines)\n            for (let i = 0, pos = 0; i < this.children.length; i++) {\n                let child = this.children[i], end = pos + child.length;\n                // Fast path: if the change only affects one child and the\n                // child's size remains in the acceptable range, only update\n                // that child\n                if (from >= pos && to <= end) {\n                    let updated = child.replace(from - pos, to - pos, text);\n                    let totalLines = this.lines - child.lines + updated.lines;\n                    if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n                        updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n                        let copy = this.children.slice();\n                        copy[i] = updated;\n                        return new TextNode(copy, this.length - (to - from) + text.length);\n                    }\n                    return super.replace(pos, end, updated);\n                }\n                pos = end + 1;\n            }\n        return super.replace(from, to, text);\n    }\n    sliceString(from, to = this.length, lineSep = \"\\n\") {\n        let result = \"\";\n        for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (pos > from && i)\n                result += lineSep;\n            if (from < end && to > pos)\n                result += child.sliceString(from - pos, to - pos, lineSep);\n            pos = end + 1;\n        }\n        return result;\n    }\n    flatten(target) {\n        for (let child of this.children)\n            child.flatten(target);\n    }\n    scanIdentical(other, dir) {\n        if (!(other instanceof TextNode))\n            return 0;\n        let length = 0;\n        let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n            : [this.children.length - 1, other.children.length - 1, -1, -1];\n        for (;; iA += dir, iB += dir) {\n            if (iA == eA || iB == eB)\n                return length;\n            let chA = this.children[iA], chB = other.children[iB];\n            if (chA != chB)\n                return length + chA.scanIdentical(chB, dir);\n            length += chA.length + 1;\n        }\n    }\n    static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n        let lines = 0;\n        for (let ch of children)\n            lines += ch.lines;\n        if (lines < 32 /* Tree.Branch */) {\n            let flat = [];\n            for (let ch of children)\n                ch.flatten(flat);\n            return new TextLeaf(flat, length);\n        }\n        let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n        let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n        function add(child) {\n            let last;\n            if (child.lines > maxChunk && child instanceof TextNode) {\n                for (let node of child.children)\n                    add(node);\n            }\n            else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n                flush();\n                chunked.push(child);\n            }\n            else if (child instanceof TextLeaf && currentLines &&\n                (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n                child.lines + last.lines <= 32 /* Tree.Branch */) {\n                currentLines += child.lines;\n                currentLen += child.length + 1;\n                currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n            }\n            else {\n                if (currentLines + child.lines > chunk)\n                    flush();\n                currentLines += child.lines;\n                currentLen += child.length + 1;\n                currentChunk.push(child);\n            }\n        }\n        function flush() {\n            if (currentLines == 0)\n                return;\n            chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n            currentLen = -1;\n            currentLines = currentChunk.length = 0;\n        }\n        for (let child of children)\n            add(child);\n        flush();\n        return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n    }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n    let length = -1;\n    for (let line of text)\n        length += line.length + 1;\n    return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n    for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n        let line = text[i], end = pos + line.length;\n        if (end >= from) {\n            if (end > to)\n                line = line.slice(0, to - pos);\n            if (pos < from)\n                line = line.slice(from - pos);\n            if (first) {\n                target[target.length - 1] += line;\n                first = false;\n            }\n            else\n                target.push(line);\n        }\n        pos = end + 1;\n    }\n    return target;\n}\nfunction sliceText(text, from, to) {\n    return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n    constructor(text, dir = 1) {\n        this.dir = dir;\n        this.done = false;\n        this.lineBreak = false;\n        this.value = \"\";\n        this.nodes = [text];\n        this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n    }\n    nextInner(skip, dir) {\n        this.done = this.lineBreak = false;\n        for (;;) {\n            let last = this.nodes.length - 1;\n            let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n            let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n            if (offset == (dir > 0 ? size : 0)) {\n                if (last == 0) {\n                    this.done = true;\n                    this.value = \"\";\n                    return this;\n                }\n                if (dir > 0)\n                    this.offsets[last - 1]++;\n                this.nodes.pop();\n                this.offsets.pop();\n            }\n            else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n                this.offsets[last] += dir;\n                if (skip == 0) {\n                    this.lineBreak = true;\n                    this.value = \"\\n\";\n                    return this;\n                }\n                skip--;\n            }\n            else if (top instanceof TextLeaf) {\n                // Move to the next string\n                let next = top.text[offset + (dir < 0 ? -1 : 0)];\n                this.offsets[last] += dir;\n                if (next.length > Math.max(0, skip)) {\n                    this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n                    return this;\n                }\n                skip -= next.length;\n            }\n            else {\n                let next = top.children[offset + (dir < 0 ? -1 : 0)];\n                if (skip > next.length) {\n                    skip -= next.length;\n                    this.offsets[last] += dir;\n                }\n                else {\n                    if (dir < 0)\n                        this.offsets[last]--;\n                    this.nodes.push(next);\n                    this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n                }\n            }\n        }\n    }\n    next(skip = 0) {\n        if (skip < 0) {\n            this.nextInner(-skip, (-this.dir));\n            skip = this.value.length;\n        }\n        return this.nextInner(skip, this.dir);\n    }\n}\nclass PartialTextCursor {\n    constructor(text, start, end) {\n        this.value = \"\";\n        this.done = false;\n        this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n        this.pos = start > end ? text.length : 0;\n        this.from = Math.min(start, end);\n        this.to = Math.max(start, end);\n    }\n    nextInner(skip, dir) {\n        if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n            this.value = \"\";\n            this.done = true;\n            return this;\n        }\n        skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n        let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n        if (skip > limit)\n            skip = limit;\n        limit -= skip;\n        let { value } = this.cursor.next(skip);\n        this.pos += (value.length + skip) * dir;\n        this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n        this.done = !this.value;\n        return this;\n    }\n    next(skip = 0) {\n        if (skip < 0)\n            skip = Math.max(skip, this.from - this.pos);\n        else if (skip > 0)\n            skip = Math.min(skip, this.to - this.pos);\n        return this.nextInner(skip, this.cursor.dir);\n    }\n    get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n    constructor(inner) {\n        this.inner = inner;\n        this.afterBreak = true;\n        this.value = \"\";\n        this.done = false;\n    }\n    next(skip = 0) {\n        let { done, lineBreak, value } = this.inner.next(skip);\n        if (done) {\n            this.done = true;\n            this.value = \"\";\n        }\n        else if (lineBreak) {\n            if (this.afterBreak) {\n                this.value = \"\";\n            }\n            else {\n                this.afterBreak = true;\n                this.next();\n            }\n        }\n        else {\n            this.value = value;\n            this.afterBreak = false;\n        }\n        return this;\n    }\n    get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n    Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n    RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n        LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The position of the start of the line.\n    */\n    from, \n    /**\n    The position at the end of the line (_before_ the line break,\n    or at the end of document for the last line).\n    */\n    to, \n    /**\n    This line's line number (1-based).\n    */\n    number, \n    /**\n    The line's content.\n    */\n    text) {\n        this.from = from;\n        this.to = to;\n        this.number = number;\n        this.text = text;\n    }\n    /**\n    The length of the line (not including any line break after it).\n    */\n    get length() { return this.to - this.from; }\n}\n\n// Compressed representation of the Grapheme_Cluster_Break=Extend\n// information from\n// http://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n// Each pair of elements represents a range, as an offet from the\n// previous range and a length. Numbers are in base-36, with the empty\n// string being a shorthand for 1.\nlet extend = /*@__PURE__*/\"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(s => s ? parseInt(s, 36) : 1);\n// Convert offsets into absolute values\nfor (let i = 1; i < extend.length; i++)\n    extend[i] += extend[i - 1];\nfunction isExtendingChar(code) {\n    for (let i = 1; i < extend.length; i += 2)\n        if (extend[i] > code)\n            return extend[i - 1] <= code;\n    return false;\n}\nfunction isRegionalIndicator(code) {\n    return code >= 0x1F1E6 && code <= 0x1F1FF;\n}\nconst ZWJ = 0x200d;\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n    return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending);\n}\nfunction nextClusterBreak(str, pos, includeExtending) {\n    if (pos == str.length)\n        return pos;\n    // If pos is in the middle of a surrogate pair, move to its start\n    if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1)))\n        pos--;\n    let prev = codePointAt(str, pos);\n    pos += codePointSize(prev);\n    while (pos < str.length) {\n        let next = codePointAt(str, pos);\n        if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n            pos += codePointSize(next);\n            prev = next;\n        }\n        else if (isRegionalIndicator(next)) {\n            let countBefore = 0, i = pos - 2;\n            while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) {\n                countBefore++;\n                i -= 2;\n            }\n            if (countBefore % 2 == 0)\n                break;\n            else\n                pos += 2;\n        }\n        else {\n            break;\n        }\n    }\n    return pos;\n}\nfunction prevClusterBreak(str, pos, includeExtending) {\n    while (pos > 0) {\n        let found = nextClusterBreak(str, pos - 2, includeExtending);\n        if (found < pos)\n            return found;\n        pos--;\n    }\n    return 0;\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n    let code0 = str.charCodeAt(pos);\n    if (!surrogateHigh(code0) || pos + 1 == str.length)\n        return code0;\n    let code1 = str.charCodeAt(pos + 1);\n    if (!surrogateLow(code1))\n        return code0;\n    return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n    if (code <= 0xffff)\n        return String.fromCharCode(code);\n    code -= 0x10000;\n    return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n    /**\n    Map a position to a valid new position, even when its context\n    was deleted.\n    */\n    MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n    /**\n    Return null if deletion happens across the position.\n    */\n    MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n    /**\n    Return null if the character _before_ the position is deleted.\n    */\n    MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n    /**\n    Return null if the character _after_ the position is deleted.\n    */\n    MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n    // Sections are encoded as pairs of integers. The first is the\n    // length in the current document, and the second is -1 for\n    // unaffected sections, and the length of the replacement content\n    // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n    // 0), and a replacement two positive numbers.\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    sections) {\n        this.sections = sections;\n    }\n    /**\n    The length of the document before the change.\n    */\n    get length() {\n        let result = 0;\n        for (let i = 0; i < this.sections.length; i += 2)\n            result += this.sections[i];\n        return result;\n    }\n    /**\n    The length of the document after the change.\n    */\n    get newLength() {\n        let result = 0;\n        for (let i = 0; i < this.sections.length; i += 2) {\n            let ins = this.sections[i + 1];\n            result += ins < 0 ? this.sections[i] : ins;\n        }\n        return result;\n    }\n    /**\n    False when there are actual changes in this set.\n    */\n    get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n    /**\n    Iterate over the unchanged parts left by these changes. `posA`\n    provides the position of the range in the old document, `posB`\n    the new position in the changed document.\n    */\n    iterGaps(f) {\n        for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            if (ins < 0) {\n                f(posA, posB, len);\n                posB += len;\n            }\n            else {\n                posB += ins;\n            }\n            posA += len;\n        }\n    }\n    /**\n    Iterate over the ranges changed by these changes. (See\n    [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n    variant that also provides you with the inserted text.)\n    `fromA`/`toA` provides the extent of the change in the starting\n    document, `fromB`/`toB` the extent of the replacement in the\n    changed document.\n    \n    When `individual` is true, adjacent changes (which are kept\n    separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n    reported separately.\n    */\n    iterChangedRanges(f, individual = false) {\n        iterChanges(this, f, individual);\n    }\n    /**\n    Get a description of the inverted form of these changes.\n    */\n    get invertedDesc() {\n        let sections = [];\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            if (ins < 0)\n                sections.push(len, ins);\n            else\n                sections.push(ins, len);\n        }\n        return new ChangeDesc(sections);\n    }\n    /**\n    Compute the combined effect of applying another set of changes\n    after this one. The length of the document after this set should\n    match the length before `other`.\n    */\n    composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n    /**\n    Map this description, which should start with the same document\n    as `other`, over another set of changes, so that it can be\n    applied after it. When `before` is true, map as if the changes\n    in `other` happened before the ones in `this`.\n    */\n    mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n    mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n        let posA = 0, posB = 0;\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n            if (ins < 0) {\n                if (endA > pos)\n                    return posB + (pos - posA);\n                posB += len;\n            }\n            else {\n                if (mode != MapMode.Simple && endA >= pos &&\n                    (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n                        mode == MapMode.TrackBefore && posA < pos ||\n                        mode == MapMode.TrackAfter && endA > pos))\n                    return null;\n                if (endA > pos || endA == pos && assoc < 0 && !len)\n                    return pos == posA || assoc < 0 ? posB : posB + ins;\n                posB += ins;\n            }\n            posA = endA;\n        }\n        if (pos > posA)\n            throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n        return posB;\n    }\n    /**\n    Check whether these changes touch a given range. When one of the\n    changes entirely covers the range, the string `\"cover\"` is\n    returned.\n    */\n    touchesRange(from, to = from) {\n        for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n            let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n            if (ins >= 0 && pos <= to && end >= from)\n                return pos < from && end > to ? \"cover\" : true;\n            pos = end;\n        }\n        return false;\n    }\n    /**\n    @internal\n    */\n    toString() {\n        let result = \"\";\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n        }\n        return result;\n    }\n    /**\n    Serialize this change desc to a JSON-representable value.\n    */\n    toJSON() { return this.sections; }\n    /**\n    Create a change desc from its JSON representation (as produced\n    by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n    */\n    static fromJSON(json) {\n        if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n            throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n        return new ChangeDesc(json);\n    }\n    /**\n    @internal\n    */\n    static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n    constructor(sections, \n    /**\n    @internal\n    */\n    inserted) {\n        super(sections);\n        this.inserted = inserted;\n    }\n    /**\n    Apply the changes to a document, returning the modified\n    document.\n    */\n    apply(doc) {\n        if (this.length != doc.length)\n            throw new RangeError(\"Applying change set to a document with the wrong length\");\n        iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n        return doc;\n    }\n    mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n    /**\n    Given the document as it existed _before_ the changes, return a\n    change set that represents the inverse of this set, which could\n    be used to go from the document created by the changes back to\n    the document as it existed before the changes.\n    */\n    invert(doc) {\n        let sections = this.sections.slice(), inserted = [];\n        for (let i = 0, pos = 0; i < sections.length; i += 2) {\n            let len = sections[i], ins = sections[i + 1];\n            if (ins >= 0) {\n                sections[i] = ins;\n                sections[i + 1] = len;\n                let index = i >> 1;\n                while (inserted.length < index)\n                    inserted.push(Text.empty);\n                inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n            }\n            pos += len;\n        }\n        return new ChangeSet(sections, inserted);\n    }\n    /**\n    Combine two subsequent change sets into a single set. `other`\n    must start in the document produced by `this`. If `this` goes\n    `docA` → `docB` and `other` represents `docB` → `docC`, the\n    returned value will represent the change `docA` → `docC`.\n    */\n    compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n    /**\n    Given another change set starting in the same document, maps this\n    change set over the other, producing a new change set that can be\n    applied to the document produced by applying `other`. When\n    `before` is `true`, order changes as if `this` comes before\n    `other`, otherwise (the default) treat `other` as coming first.\n    \n    Given two changes `A` and `B`, `A.compose(B.map(A))` and\n    `B.compose(A.map(B, true))` will produce the same document. This\n    provides a basic form of [operational\n    transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n    and can be used for collaborative editing.\n    */\n    map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n    /**\n    Iterate over the changed ranges in the document, calling `f` for\n    each, with the range in the original document (`fromA`-`toA`)\n    and the range that replaces it in the new document\n    (`fromB`-`toB`).\n    \n    When `individual` is true, adjacent changes are reported\n    separately.\n    */\n    iterChanges(f, individual = false) {\n        iterChanges(this, f, individual);\n    }\n    /**\n    Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n    set.\n    */\n    get desc() { return ChangeDesc.create(this.sections); }\n    /**\n    @internal\n    */\n    filter(ranges) {\n        let resultSections = [], resultInserted = [], filteredSections = [];\n        let iter = new SectionIter(this);\n        done: for (let i = 0, pos = 0;;) {\n            let next = i == ranges.length ? 1e9 : ranges[i++];\n            while (pos < next || pos == next && iter.len == 0) {\n                if (iter.done)\n                    break done;\n                let len = Math.min(iter.len, next - pos);\n                addSection(filteredSections, len, -1);\n                let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n                addSection(resultSections, len, ins);\n                if (ins > 0)\n                    addInsert(resultInserted, resultSections, iter.text);\n                iter.forward(len);\n                pos += len;\n            }\n            let end = ranges[i++];\n            while (pos < end) {\n                if (iter.done)\n                    break done;\n                let len = Math.min(iter.len, end - pos);\n                addSection(resultSections, len, -1);\n                addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n                iter.forward(len);\n                pos += len;\n            }\n        }\n        return { changes: new ChangeSet(resultSections, resultInserted),\n            filtered: ChangeDesc.create(filteredSections) };\n    }\n    /**\n    Serialize this change set to a JSON-representable value.\n    */\n    toJSON() {\n        let parts = [];\n        for (let i = 0; i < this.sections.length; i += 2) {\n            let len = this.sections[i], ins = this.sections[i + 1];\n            if (ins < 0)\n                parts.push(len);\n            else if (ins == 0)\n                parts.push([len]);\n            else\n                parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n        }\n        return parts;\n    }\n    /**\n    Create a change set for the given changes, for a document of the\n    given length, using `lineSep` as line separator.\n    */\n    static of(changes, length, lineSep) {\n        let sections = [], inserted = [], pos = 0;\n        let total = null;\n        function flush(force = false) {\n            if (!force && !sections.length)\n                return;\n            if (pos < length)\n                addSection(sections, length - pos, -1);\n            let set = new ChangeSet(sections, inserted);\n            total = total ? total.compose(set.map(total)) : set;\n            sections = [];\n            inserted = [];\n            pos = 0;\n        }\n        function process(spec) {\n            if (Array.isArray(spec)) {\n                for (let sub of spec)\n                    process(sub);\n            }\n            else if (spec instanceof ChangeSet) {\n                if (spec.length != length)\n                    throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n                flush();\n                total = total ? total.compose(spec.map(total)) : spec;\n            }\n            else {\n                let { from, to = from, insert } = spec;\n                if (from > to || from < 0 || to > length)\n                    throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n                let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n                let insLen = insText.length;\n                if (from == to && insLen == 0)\n                    return;\n                if (from < pos)\n                    flush();\n                if (from > pos)\n                    addSection(sections, from - pos, -1);\n                addSection(sections, to - from, insLen);\n                addInsert(inserted, sections, insText);\n                pos = to;\n            }\n        }\n        process(changes);\n        flush(!total);\n        return total;\n    }\n    /**\n    Create an empty changeset of the given length.\n    */\n    static empty(length) {\n        return new ChangeSet(length ? [length, -1] : [], []);\n    }\n    /**\n    Create a changeset from its JSON representation (as produced by\n    [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n    */\n    static fromJSON(json) {\n        if (!Array.isArray(json))\n            throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n        let sections = [], inserted = [];\n        for (let i = 0; i < json.length; i++) {\n            let part = json[i];\n            if (typeof part == \"number\") {\n                sections.push(part, -1);\n            }\n            else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n                throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n            }\n            else if (part.length == 1) {\n                sections.push(part[0], 0);\n            }\n            else {\n                while (inserted.length < i)\n                    inserted.push(Text.empty);\n                inserted[i] = Text.of(part.slice(1));\n                sections.push(part[0], inserted[i].length);\n            }\n        }\n        return new ChangeSet(sections, inserted);\n    }\n    /**\n    @internal\n    */\n    static createSet(sections, inserted) {\n        return new ChangeSet(sections, inserted);\n    }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n    if (len == 0 && ins <= 0)\n        return;\n    let last = sections.length - 2;\n    if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n        sections[last] += len;\n    else if (len == 0 && sections[last] == 0)\n        sections[last + 1] += ins;\n    else if (forceJoin) {\n        sections[last] += len;\n        sections[last + 1] += ins;\n    }\n    else\n        sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n    if (value.length == 0)\n        return;\n    let index = (sections.length - 2) >> 1;\n    if (index < values.length) {\n        values[values.length - 1] = values[values.length - 1].append(value);\n    }\n    else {\n        while (values.length < index)\n            values.push(Text.empty);\n        values.push(value);\n    }\n}\nfunction iterChanges(desc, f, individual) {\n    let inserted = desc.inserted;\n    for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n        let len = desc.sections[i++], ins = desc.sections[i++];\n        if (ins < 0) {\n            posA += len;\n            posB += len;\n        }\n        else {\n            let endA = posA, endB = posB, text = Text.empty;\n            for (;;) {\n                endA += len;\n                endB += ins;\n                if (ins && inserted)\n                    text = text.append(inserted[(i - 2) >> 1]);\n                if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n                    break;\n                len = desc.sections[i++];\n                ins = desc.sections[i++];\n            }\n            f(posA, endA, posB, endB, text);\n            posA = endA;\n            posB = endB;\n        }\n    }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n    // Produce a copy of setA that applies to the document after setB\n    // has been applied (assuming both start at the same document).\n    let sections = [], insert = mkSet ? [] : null;\n    let a = new SectionIter(setA), b = new SectionIter(setB);\n    // Iterate over both sets in parallel. inserted tracks, for changes\n    // in A that have to be processed piece-by-piece, whether their\n    // content has been inserted already, and refers to the section\n    // index.\n    for (let inserted = -1;;) {\n        if (a.ins == -1 && b.ins == -1) {\n            // Move across ranges skipped by both sets.\n            let len = Math.min(a.len, b.len);\n            addSection(sections, len, -1);\n            a.forward(len);\n            b.forward(len);\n        }\n        else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n            // If there's a change in B that comes before the next change in\n            // A (ordered by start pos, then len, then before flag), skip\n            // that (and process any changes in A it covers).\n            let len = b.len;\n            addSection(sections, b.ins, -1);\n            while (len) {\n                let piece = Math.min(a.len, len);\n                if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n                    addSection(sections, 0, a.ins);\n                    if (insert)\n                        addInsert(insert, sections, a.text);\n                    inserted = a.i;\n                }\n                a.forward(piece);\n                len -= piece;\n            }\n            b.next();\n        }\n        else if (a.ins >= 0) {\n            // Process the part of a change in A up to the start of the next\n            // non-deletion change in B (if overlapping).\n            let len = 0, left = a.len;\n            while (left) {\n                if (b.ins == -1) {\n                    let piece = Math.min(left, b.len);\n                    len += piece;\n                    left -= piece;\n                    b.forward(piece);\n                }\n                else if (b.ins == 0 && b.len < left) {\n                    left -= b.len;\n                    b.next();\n                }\n                else {\n                    break;\n                }\n            }\n            addSection(sections, len, inserted < a.i ? a.ins : 0);\n            if (insert && inserted < a.i)\n                addInsert(insert, sections, a.text);\n            inserted = a.i;\n            a.forward(a.len - left);\n        }\n        else if (a.done && b.done) {\n            return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n        }\n        else {\n            throw new Error(\"Mismatched change set lengths\");\n        }\n    }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n    let sections = [];\n    let insert = mkSet ? [] : null;\n    let a = new SectionIter(setA), b = new SectionIter(setB);\n    for (let open = false;;) {\n        if (a.done && b.done) {\n            return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n        }\n        else if (a.ins == 0) { // Deletion in A\n            addSection(sections, a.len, 0, open);\n            a.next();\n        }\n        else if (b.len == 0 && !b.done) { // Insertion in B\n            addSection(sections, 0, b.ins, open);\n            if (insert)\n                addInsert(insert, sections, b.text);\n            b.next();\n        }\n        else if (a.done || b.done) {\n            throw new Error(\"Mismatched change set lengths\");\n        }\n        else {\n            let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n            if (a.ins == -1) {\n                let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n                addSection(sections, len, insB, open);\n                if (insert && insB)\n                    addInsert(insert, sections, b.text);\n            }\n            else if (b.ins == -1) {\n                addSection(sections, a.off ? 0 : a.len, len, open);\n                if (insert)\n                    addInsert(insert, sections, a.textBit(len));\n            }\n            else {\n                addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n                if (insert && !b.off)\n                    addInsert(insert, sections, b.text);\n            }\n            open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n            a.forward2(len);\n            b.forward(len);\n        }\n    }\n}\nclass SectionIter {\n    constructor(set) {\n        this.set = set;\n        this.i = 0;\n        this.next();\n    }\n    next() {\n        let { sections } = this.set;\n        if (this.i < sections.length) {\n            this.len = sections[this.i++];\n            this.ins = sections[this.i++];\n        }\n        else {\n            this.len = 0;\n            this.ins = -2;\n        }\n        this.off = 0;\n    }\n    get done() { return this.ins == -2; }\n    get len2() { return this.ins < 0 ? this.len : this.ins; }\n    get text() {\n        let { inserted } = this.set, index = (this.i - 2) >> 1;\n        return index >= inserted.length ? Text.empty : inserted[index];\n    }\n    textBit(len) {\n        let { inserted } = this.set, index = (this.i - 2) >> 1;\n        return index >= inserted.length && !len ? Text.empty\n            : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n    }\n    forward(len) {\n        if (len == this.len)\n            this.next();\n        else {\n            this.len -= len;\n            this.off += len;\n        }\n    }\n    forward2(len) {\n        if (this.ins == -1)\n            this.forward(len);\n        else if (len == this.ins)\n            this.next();\n        else {\n            this.ins -= len;\n            this.off += len;\n        }\n    }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n    constructor(\n    /**\n    The lower boundary of the range.\n    */\n    from, \n    /**\n    The upper boundary of the range.\n    */\n    to, flags) {\n        this.from = from;\n        this.to = to;\n        this.flags = flags;\n    }\n    /**\n    The anchor of the range—the side that doesn't move when you\n    extend it.\n    */\n    get anchor() { return this.flags & 16 /* RangeFlag.Inverted */ ? this.to : this.from; }\n    /**\n    The head of the range, which is moved when the range is\n    [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n    */\n    get head() { return this.flags & 16 /* RangeFlag.Inverted */ ? this.from : this.to; }\n    /**\n    True when `anchor` and `head` are at the same position.\n    */\n    get empty() { return this.from == this.to; }\n    /**\n    If this is a cursor that is explicitly associated with the\n    character on one of its sides, this returns the side. -1 means\n    the character before its position, 1 the character after, and 0\n    means no association.\n    */\n    get assoc() { return this.flags & 4 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 8 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n    /**\n    The bidirectional text level associated with this cursor, if\n    any.\n    */\n    get bidiLevel() {\n        let level = this.flags & 3 /* RangeFlag.BidiLevelMask */;\n        return level == 3 ? null : level;\n    }\n    /**\n    The goal column (stored vertical offset) associated with a\n    cursor. This is used to preserve the vertical position when\n    [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n    lines of different length.\n    */\n    get goalColumn() {\n        let value = this.flags >> 5 /* RangeFlag.GoalColumnOffset */;\n        return value == 33554431 /* RangeFlag.NoGoalColumn */ ? undefined : value;\n    }\n    /**\n    Map this range through a change, producing a valid range in the\n    updated document.\n    */\n    map(change, assoc = -1) {\n        let from, to;\n        if (this.empty) {\n            from = to = change.mapPos(this.from, assoc);\n        }\n        else {\n            from = change.mapPos(this.from, 1);\n            to = change.mapPos(this.to, -1);\n        }\n        return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);\n    }\n    /**\n    Extend this range to cover at least `from` to `to`.\n    */\n    extend(from, to = from) {\n        if (from <= this.anchor && to >= this.anchor)\n            return EditorSelection.range(from, to);\n        let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n        return EditorSelection.range(this.anchor, head);\n    }\n    /**\n    Compare this range to another range.\n    */\n    eq(other) {\n        return this.anchor == other.anchor && this.head == other.head;\n    }\n    /**\n    Return a JSON-serializable object representing the range.\n    */\n    toJSON() { return { anchor: this.anchor, head: this.head }; }\n    /**\n    Convert a JSON representation of a range to a `SelectionRange`\n    instance.\n    */\n    static fromJSON(json) {\n        if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n            throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n        return EditorSelection.range(json.anchor, json.head);\n    }\n    /**\n    @internal\n    */\n    static create(from, to, flags) {\n        return new SelectionRange(from, to, flags);\n    }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n    constructor(\n    /**\n    The ranges in the selection, sorted by position. Ranges cannot\n    overlap (but they may touch, if they aren't empty).\n    */\n    ranges, \n    /**\n    The index of the _main_ range in the selection (which is\n    usually the range that was added last).\n    */\n    mainIndex) {\n        this.ranges = ranges;\n        this.mainIndex = mainIndex;\n    }\n    /**\n    Map a selection through a change. Used to adjust the selection\n    position for changes.\n    */\n    map(change, assoc = -1) {\n        if (change.empty)\n            return this;\n        return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n    }\n    /**\n    Compare this selection to another selection.\n    */\n    eq(other) {\n        if (this.ranges.length != other.ranges.length ||\n            this.mainIndex != other.mainIndex)\n            return false;\n        for (let i = 0; i < this.ranges.length; i++)\n            if (!this.ranges[i].eq(other.ranges[i]))\n                return false;\n        return true;\n    }\n    /**\n    Get the primary selection range. Usually, you should make sure\n    your code applies to _all_ ranges, by using methods like\n    [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n    */\n    get main() { return this.ranges[this.mainIndex]; }\n    /**\n    Make sure the selection only has one range. Returns a selection\n    holding only the main range from this selection.\n    */\n    asSingle() {\n        return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n    }\n    /**\n    Extend this selection with an extra range.\n    */\n    addRange(range, main = true) {\n        return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n    }\n    /**\n    Replace a given range with another range, and then normalize the\n    selection to merge and sort ranges if necessary.\n    */\n    replaceRange(range, which = this.mainIndex) {\n        let ranges = this.ranges.slice();\n        ranges[which] = range;\n        return EditorSelection.create(ranges, this.mainIndex);\n    }\n    /**\n    Convert this selection to an object that can be serialized to\n    JSON.\n    */\n    toJSON() {\n        return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n    }\n    /**\n    Create a selection from a JSON representation.\n    */\n    static fromJSON(json) {\n        if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n            throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n        return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n    }\n    /**\n    Create a selection holding a single range.\n    */\n    static single(anchor, head = anchor) {\n        return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n    }\n    /**\n    Sort and merge the given set of ranges, creating a valid\n    selection.\n    */\n    static create(ranges, mainIndex = 0) {\n        if (ranges.length == 0)\n            throw new RangeError(\"A selection needs at least one range\");\n        for (let pos = 0, i = 0; i < ranges.length; i++) {\n            let range = ranges[i];\n            if (range.empty ? range.from <= pos : range.from < pos)\n                return EditorSelection.normalized(ranges.slice(), mainIndex);\n            pos = range.to;\n        }\n        return new EditorSelection(ranges, mainIndex);\n    }\n    /**\n    Create a cursor selection range at the given position. You can\n    safely ignore the optional arguments in most situations.\n    */\n    static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n        return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 4 /* RangeFlag.AssocBefore */ : 8 /* RangeFlag.AssocAfter */) |\n            (bidiLevel == null ? 3 : Math.min(2, bidiLevel)) |\n            ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431 /* RangeFlag.NoGoalColumn */) << 5 /* RangeFlag.GoalColumnOffset */));\n    }\n    /**\n    Create a selection range.\n    */\n    static range(anchor, head, goalColumn, bidiLevel) {\n        let flags = ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431 /* RangeFlag.NoGoalColumn */) << 5 /* RangeFlag.GoalColumnOffset */) |\n            (bidiLevel == null ? 3 : Math.min(2, bidiLevel));\n        return head < anchor ? SelectionRange.create(head, anchor, 16 /* RangeFlag.Inverted */ | 8 /* RangeFlag.AssocAfter */ | flags)\n            : SelectionRange.create(anchor, head, (head > anchor ? 4 /* RangeFlag.AssocBefore */ : 0) | flags);\n    }\n    /**\n    @internal\n    */\n    static normalized(ranges, mainIndex = 0) {\n        let main = ranges[mainIndex];\n        ranges.sort((a, b) => a.from - b.from);\n        mainIndex = ranges.indexOf(main);\n        for (let i = 1; i < ranges.length; i++) {\n            let range = ranges[i], prev = ranges[i - 1];\n            if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n                let from = prev.from, to = Math.max(range.to, prev.to);\n                if (i <= mainIndex)\n                    mainIndex--;\n                ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n            }\n        }\n        return new EditorSelection(ranges, mainIndex);\n    }\n}\nfunction checkSelection(selection, docLength) {\n    for (let range of selection.ranges)\n        if (range.to > docLength)\n            throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n*/\nclass Facet {\n    constructor(\n    /**\n    @internal\n    */\n    combine, \n    /**\n    @internal\n    */\n    compareInput, \n    /**\n    @internal\n    */\n    compare, isStatic, enables) {\n        this.combine = combine;\n        this.compareInput = compareInput;\n        this.compare = compare;\n        this.isStatic = isStatic;\n        /**\n        @internal\n        */\n        this.id = nextID++;\n        this.default = combine([]);\n        this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n    }\n    /**\n    Define a new facet.\n    */\n    static define(config = {}) {\n        return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n    }\n    /**\n    Returns an extension that adds the given value to this facet.\n    */\n    of(value) {\n        return new FacetProvider([], this, 0 /* Provider.Static */, value);\n    }\n    /**\n    Create an extension that computes a value for the facet from a\n    state. You must take care to declare the parts of the state that\n    this value depends on, since your function is only called again\n    for a new state when one of those parts changed.\n    \n    In cases where your value depends only on a single field, you'll\n    want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n    */\n    compute(deps, get) {\n        if (this.isStatic)\n            throw new Error(\"Can't compute a static facet\");\n        return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n    }\n    /**\n    Create an extension that computes zero or more values for this\n    facet from a state.\n    */\n    computeN(deps, get) {\n        if (this.isStatic)\n            throw new Error(\"Can't compute a static facet\");\n        return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n    }\n    from(field, get) {\n        if (!get)\n            get = x => x;\n        return this.compute([field], state => get(state.field(field)));\n    }\n}\nfunction sameArray(a, b) {\n    return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n    constructor(dependencies, facet, type, value) {\n        this.dependencies = dependencies;\n        this.facet = facet;\n        this.type = type;\n        this.value = value;\n        this.id = nextID++;\n    }\n    dynamicSlot(addresses) {\n        var _a;\n        let getter = this.value;\n        let compare = this.facet.compareInput;\n        let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n        let depDoc = false, depSel = false, depAddrs = [];\n        for (let dep of this.dependencies) {\n            if (dep == \"doc\")\n                depDoc = true;\n            else if (dep == \"selection\")\n                depSel = true;\n            else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n                depAddrs.push(addresses[dep.id]);\n        }\n        return {\n            create(state) {\n                state.values[idx] = getter(state);\n                return 1 /* SlotStatus.Changed */;\n            },\n            update(state, tr) {\n                if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n                    let newVal = getter(state);\n                    if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n                        state.values[idx] = newVal;\n                        return 1 /* SlotStatus.Changed */;\n                    }\n                }\n                return 0;\n            },\n            reconfigure: (state, oldState) => {\n                let newVal, oldAddr = oldState.config.address[id];\n                if (oldAddr != null) {\n                    let oldVal = getAddr(oldState, oldAddr);\n                    if (this.dependencies.every(dep => {\n                        return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n                            dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n                    }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n                        state.values[idx] = oldVal;\n                        return 0;\n                    }\n                }\n                else {\n                    newVal = getter(state);\n                }\n                state.values[idx] = newVal;\n                return 1 /* SlotStatus.Changed */;\n            }\n        };\n    }\n}\nfunction compareArray(a, b, compare) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (!compare(a[i], b[i]))\n            return false;\n    return true;\n}\nfunction ensureAll(state, addrs) {\n    let changed = false;\n    for (let addr of addrs)\n        if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n            changed = true;\n    return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n    let providerAddrs = providers.map(p => addresses[p.id]);\n    let providerTypes = providers.map(p => p.type);\n    let dynamic = providerAddrs.filter(p => !(p & 1));\n    let idx = addresses[facet.id] >> 1;\n    function get(state) {\n        let values = [];\n        for (let i = 0; i < providerAddrs.length; i++) {\n            let value = getAddr(state, providerAddrs[i]);\n            if (providerTypes[i] == 2 /* Provider.Multi */)\n                for (let val of value)\n                    values.push(val);\n            else\n                values.push(value);\n        }\n        return facet.combine(values);\n    }\n    return {\n        create(state) {\n            for (let addr of providerAddrs)\n                ensureAddr(state, addr);\n            state.values[idx] = get(state);\n            return 1 /* SlotStatus.Changed */;\n        },\n        update(state, tr) {\n            if (!ensureAll(state, dynamic))\n                return 0;\n            let value = get(state);\n            if (facet.compare(value, state.values[idx]))\n                return 0;\n            state.values[idx] = value;\n            return 1 /* SlotStatus.Changed */;\n        },\n        reconfigure(state, oldState) {\n            let depChanged = ensureAll(state, providerAddrs);\n            let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n            if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n                state.values[idx] = oldValue;\n                return 0;\n            }\n            let value = get(state);\n            if (facet.compare(value, oldValue)) {\n                state.values[idx] = oldValue;\n                return 0;\n            }\n            state.values[idx] = value;\n            return 1 /* SlotStatus.Changed */;\n        }\n    };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n    constructor(\n    /**\n    @internal\n    */\n    id, createF, updateF, compareF, \n    /**\n    @internal\n    */\n    spec) {\n        this.id = id;\n        this.createF = createF;\n        this.updateF = updateF;\n        this.compareF = compareF;\n        this.spec = spec;\n        /**\n        @internal\n        */\n        this.provides = undefined;\n    }\n    /**\n    Define a state field.\n    */\n    static define(config) {\n        let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n        if (config.provide)\n            field.provides = config.provide(field);\n        return field;\n    }\n    create(state) {\n        let init = state.facet(initField).find(i => i.field == this);\n        return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n    }\n    /**\n    @internal\n    */\n    slot(addresses) {\n        let idx = addresses[this.id] >> 1;\n        return {\n            create: (state) => {\n                state.values[idx] = this.create(state);\n                return 1 /* SlotStatus.Changed */;\n            },\n            update: (state, tr) => {\n                let oldVal = state.values[idx];\n                let value = this.updateF(oldVal, tr);\n                if (this.compareF(oldVal, value))\n                    return 0;\n                state.values[idx] = value;\n                return 1 /* SlotStatus.Changed */;\n            },\n            reconfigure: (state, oldState) => {\n                if (oldState.config.address[this.id] != null) {\n                    state.values[idx] = oldState.field(this);\n                    return 0;\n                }\n                state.values[idx] = this.create(state);\n                return 1 /* SlotStatus.Changed */;\n            }\n        };\n    }\n    /**\n    Returns an extension that enables this field and overrides the\n    way it is initialized. Can be useful when you need to provide a\n    non-default starting value for the field.\n    */\n    init(create) {\n        return [this, initField.of({ field: this, create })];\n    }\n    /**\n    State field instances can be used as\n    [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n    given state.\n    */\n    get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n    return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n    /**\n    The highest precedence level, for extensions that should end up\n    near the start of the precedence ordering.\n    */\n    highest: /*@__PURE__*/prec(Prec_.highest),\n    /**\n    A higher-than-default precedence, for extensions that should\n    come before those with default precedence.\n    */\n    high: /*@__PURE__*/prec(Prec_.high),\n    /**\n    The default precedence, which is also used for extensions\n    without an explicit precedence.\n    */\n    default: /*@__PURE__*/prec(Prec_.default),\n    /**\n    A lower-than-default precedence.\n    */\n    low: /*@__PURE__*/prec(Prec_.low),\n    /**\n    The lowest precedence level. Meant for things that should end up\n    near the end of the extension order.\n    */\n    lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n    constructor(inner, prec) {\n        this.inner = inner;\n        this.prec = prec;\n    }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n    /**\n    Create an instance of this compartment to add to your [state\n    configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n    */\n    of(ext) { return new CompartmentInstance(this, ext); }\n    /**\n    Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n    reconfigures this compartment.\n    */\n    reconfigure(content) {\n        return Compartment.reconfigure.of({ compartment: this, extension: content });\n    }\n    /**\n    Get the current content of the compartment in the state, or\n    `undefined` if it isn't present.\n    */\n    get(state) {\n        return state.config.compartments.get(this);\n    }\n}\nclass CompartmentInstance {\n    constructor(compartment, inner) {\n        this.compartment = compartment;\n        this.inner = inner;\n    }\n}\nclass Configuration {\n    constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n        this.base = base;\n        this.compartments = compartments;\n        this.dynamicSlots = dynamicSlots;\n        this.address = address;\n        this.staticValues = staticValues;\n        this.facets = facets;\n        this.statusTemplate = [];\n        while (this.statusTemplate.length < dynamicSlots.length)\n            this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n    }\n    staticFacet(facet) {\n        let addr = this.address[facet.id];\n        return addr == null ? facet.default : this.staticValues[addr >> 1];\n    }\n    static resolve(base, compartments, oldState) {\n        let fields = [];\n        let facets = Object.create(null);\n        let newCompartments = new Map();\n        for (let ext of flatten(base, compartments, newCompartments)) {\n            if (ext instanceof StateField)\n                fields.push(ext);\n            else\n                (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n        }\n        let address = Object.create(null);\n        let staticValues = [];\n        let dynamicSlots = [];\n        for (let field of fields) {\n            address[field.id] = dynamicSlots.length << 1;\n            dynamicSlots.push(a => field.slot(a));\n        }\n        let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n        for (let id in facets) {\n            let providers = facets[id], facet = providers[0].facet;\n            let oldProviders = oldFacets && oldFacets[id] || [];\n            if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n                address[facet.id] = (staticValues.length << 1) | 1;\n                if (sameArray(oldProviders, providers)) {\n                    staticValues.push(oldState.facet(facet));\n                }\n                else {\n                    let value = facet.combine(providers.map(p => p.value));\n                    staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n                }\n            }\n            else {\n                for (let p of providers) {\n                    if (p.type == 0 /* Provider.Static */) {\n                        address[p.id] = (staticValues.length << 1) | 1;\n                        staticValues.push(p.value);\n                    }\n                    else {\n                        address[p.id] = dynamicSlots.length << 1;\n                        dynamicSlots.push(a => p.dynamicSlot(a));\n                    }\n                }\n                address[facet.id] = dynamicSlots.length << 1;\n                dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n            }\n        }\n        let dynamic = dynamicSlots.map(f => f(address));\n        return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n    }\n}\nfunction flatten(extension, compartments, newCompartments) {\n    let result = [[], [], [], [], []];\n    let seen = new Map();\n    function inner(ext, prec) {\n        let known = seen.get(ext);\n        if (known != null) {\n            if (known <= prec)\n                return;\n            let found = result[known].indexOf(ext);\n            if (found > -1)\n                result[known].splice(found, 1);\n            if (ext instanceof CompartmentInstance)\n                newCompartments.delete(ext.compartment);\n        }\n        seen.set(ext, prec);\n        if (Array.isArray(ext)) {\n            for (let e of ext)\n                inner(e, prec);\n        }\n        else if (ext instanceof CompartmentInstance) {\n            if (newCompartments.has(ext.compartment))\n                throw new RangeError(`Duplicate use of compartment in extensions`);\n            let content = compartments.get(ext.compartment) || ext.inner;\n            newCompartments.set(ext.compartment, content);\n            inner(content, prec);\n        }\n        else if (ext instanceof PrecExtension) {\n            inner(ext.inner, ext.prec);\n        }\n        else if (ext instanceof StateField) {\n            result[prec].push(ext);\n            if (ext.provides)\n                inner(ext.provides, prec);\n        }\n        else if (ext instanceof FacetProvider) {\n            result[prec].push(ext);\n            if (ext.facet.extensions)\n                inner(ext.facet.extensions, Prec_.default);\n        }\n        else {\n            let content = ext.extension;\n            if (!content)\n                throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n            inner(content, prec);\n        }\n    }\n    inner(extension, Prec_.default);\n    return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n    if (addr & 1)\n        return 2 /* SlotStatus.Computed */;\n    let idx = addr >> 1;\n    let status = state.status[idx];\n    if (status == 4 /* SlotStatus.Computing */)\n        throw new Error(\"Cyclic dependency between fields and/or facets\");\n    if (status & 2 /* SlotStatus.Computed */)\n        return status;\n    state.status[idx] = 4 /* SlotStatus.Computing */;\n    let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n    return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n    return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n    combine: values => values.some(v => v),\n    static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : undefined,\n    static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The annotation type.\n    */\n    type, \n    /**\n    The value of this annotation.\n    */\n    value) {\n        this.type = type;\n        this.value = value;\n    }\n    /**\n    Define a new type of annotation.\n    */\n    static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n    /**\n    Create an instance of this annotation.\n    */\n    of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n    /**\n    @internal\n    */\n    constructor(\n    // The `any` types in these function types are there to work\n    // around TypeScript issue #37631, where the type guard on\n    // `StateEffect.is` mysteriously stops working when these properly\n    // have type `Value`.\n    /**\n    @internal\n    */\n    map) {\n        this.map = map;\n    }\n    /**\n    Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n    type.\n    */\n    of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    type, \n    /**\n    The value of this effect.\n    */\n    value) {\n        this.type = type;\n        this.value = value;\n    }\n    /**\n    Map this effect through a position mapping. Will return\n    `undefined` when that ends up deleting the effect.\n    */\n    map(mapping) {\n        let mapped = this.type.map(this.value, mapping);\n        return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n    }\n    /**\n    Tells you whether this effect object is of a given\n    [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n    */\n    is(type) { return this.type == type; }\n    /**\n    Define a new effect type. The type parameter indicates the type\n    of values that his effect holds. It should be a type that\n    doesn't include `undefined`, since that is used in\n    [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n    removed.\n    */\n    static define(spec = {}) {\n        return new StateEffectType(spec.map || (v => v));\n    }\n    /**\n    Map an array of effects through a change set.\n    */\n    static mapEffects(effects, mapping) {\n        if (!effects.length)\n            return effects;\n        let result = [];\n        for (let effect of effects) {\n            let mapped = effect.map(mapping);\n            if (mapped)\n                result.push(mapped);\n        }\n        return result;\n    }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n    constructor(\n    /**\n    The state from which the transaction starts.\n    */\n    startState, \n    /**\n    The document changes made by this transaction.\n    */\n    changes, \n    /**\n    The selection set by this transaction, or undefined if it\n    doesn't explicitly set a selection.\n    */\n    selection, \n    /**\n    The effects added to the transaction.\n    */\n    effects, \n    /**\n    @internal\n    */\n    annotations, \n    /**\n    Whether the selection should be scrolled into view after this\n    transaction is dispatched.\n    */\n    scrollIntoView) {\n        this.startState = startState;\n        this.changes = changes;\n        this.selection = selection;\n        this.effects = effects;\n        this.annotations = annotations;\n        this.scrollIntoView = scrollIntoView;\n        /**\n        @internal\n        */\n        this._doc = null;\n        /**\n        @internal\n        */\n        this._state = null;\n        if (selection)\n            checkSelection(selection, changes.newLength);\n        if (!annotations.some((a) => a.type == Transaction.time))\n            this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n    }\n    /**\n    @internal\n    */\n    static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n        return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n    }\n    /**\n    The new document produced by the transaction. Contrary to\n    [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n    force the entire new state to be computed right away, so it is\n    recommended that [transaction\n    filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n    when they need to look at the new document.\n    */\n    get newDoc() {\n        return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n    }\n    /**\n    The new selection produced by the transaction. If\n    [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n    this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n    current selection through the changes made by the transaction.\n    */\n    get newSelection() {\n        return this.selection || this.startState.selection.map(this.changes);\n    }\n    /**\n    The new state created by the transaction. Computed on demand\n    (but retained for subsequent access), so it is recommended not to\n    access it in [transaction\n    filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n    */\n    get state() {\n        if (!this._state)\n            this.startState.applyTransaction(this);\n        return this._state;\n    }\n    /**\n    Get the value of the given annotation type, if any.\n    */\n    annotation(type) {\n        for (let ann of this.annotations)\n            if (ann.type == type)\n                return ann.value;\n        return undefined;\n    }\n    /**\n    Indicates whether the transaction changed the document.\n    */\n    get docChanged() { return !this.changes.empty; }\n    /**\n    Indicates whether this transaction reconfigures the state\n    (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n    with a top-level configuration\n    [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n    */\n    get reconfigured() { return this.startState.config != this.state.config; }\n    /**\n    Returns true if the transaction has a [user\n    event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n    or more specific than `event`. For example, if the transaction\n    has `\"select.pointer\"` as user event, `\"select\"` and\n    `\"select.pointer\"` will match it.\n    */\n    isUserEvent(event) {\n        let e = this.annotation(Transaction.userEvent);\n        return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n    }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n   - `\"input.type\"` for typed input\n     - `\"input.type.compose\"` for composition\n   - `\"input.paste\"` for pasted input\n   - `\"input.drop\"` when adding content with drag-and-drop\n   - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n   - `\"delete.selection\"` when deleting the selection\n   - `\"delete.forward\"` when deleting forward from the selection\n   - `\"delete.backward\"` when deleting backward from the selection\n   - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n   - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n   - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n    let result = [];\n    for (let iA = 0, iB = 0;;) {\n        let from, to;\n        if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n            from = a[iA++];\n            to = a[iA++];\n        }\n        else if (iB < b.length) {\n            from = b[iB++];\n            to = b[iB++];\n        }\n        else\n            return result;\n        if (!result.length || result[result.length - 1] < from)\n            result.push(from, to);\n        else if (result[result.length - 1] < to)\n            result[result.length - 1] = to;\n    }\n}\nfunction mergeTransaction(a, b, sequential) {\n    var _a;\n    let mapForA, mapForB, changes;\n    if (sequential) {\n        mapForA = b.changes;\n        mapForB = ChangeSet.empty(b.changes.length);\n        changes = a.changes.compose(b.changes);\n    }\n    else {\n        mapForA = b.changes.map(a.changes);\n        mapForB = a.changes.mapDesc(b.changes, true);\n        changes = a.changes.compose(mapForA);\n    }\n    return {\n        changes,\n        selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n        effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n        annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n        scrollIntoView: a.scrollIntoView || b.scrollIntoView\n    };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n    let sel = spec.selection, annotations = asArray(spec.annotations);\n    if (spec.userEvent)\n        annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n    return {\n        changes: spec.changes instanceof ChangeSet ? spec.changes\n            : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n        selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n        effects: asArray(spec.effects),\n        annotations,\n        scrollIntoView: !!spec.scrollIntoView\n    };\n}\nfunction resolveTransaction(state, specs, filter) {\n    let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n    if (specs.length && specs[0].filter === false)\n        filter = false;\n    for (let i = 1; i < specs.length; i++) {\n        if (specs[i].filter === false)\n            filter = false;\n        let seq = !!specs[i].sequential;\n        s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n    }\n    let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n    return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n    let state = tr.startState;\n    // Change filters\n    let result = true;\n    for (let filter of state.facet(changeFilter)) {\n        let value = filter(tr);\n        if (value === false) {\n            result = false;\n            break;\n        }\n        if (Array.isArray(value))\n            result = result === true ? value : joinRanges(result, value);\n    }\n    if (result !== true) {\n        let changes, back;\n        if (result === false) {\n            back = tr.changes.invertedDesc;\n            changes = ChangeSet.empty(state.doc.length);\n        }\n        else {\n            let filtered = tr.changes.filter(result);\n            changes = filtered.changes;\n            back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n        }\n        tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n    }\n    // Transaction filters\n    let filters = state.facet(transactionFilter);\n    for (let i = filters.length - 1; i >= 0; i--) {\n        let filtered = filters[i](tr);\n        if (filtered instanceof Transaction)\n            tr = filtered;\n        else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n            tr = filtered[0];\n        else\n            tr = resolveTransaction(state, asArray(filtered), false);\n    }\n    return tr;\n}\nfunction extendTransaction(tr) {\n    let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n    for (let i = extenders.length - 1; i >= 0; i--) {\n        let extension = extenders[i](tr);\n        if (extension && Object.keys(extension).length)\n            spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n    }\n    return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n    return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n    /**\n    Word characters.\n    */\n    CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n    /**\n    Whitespace.\n    */\n    CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n    /**\n    Anything else.\n    */\n    CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n    wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n    if (wordChar)\n        return wordChar.test(str);\n    for (let i = 0; i < str.length; i++) {\n        let ch = str[i];\n        if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n            return true;\n    }\n    return false;\n}\nfunction makeCategorizer(wordChars) {\n    return (char) => {\n        if (!/\\S/.test(char))\n            return CharCategory.Space;\n        if (hasWordChar(char))\n            return CharCategory.Word;\n        for (let i = 0; i < wordChars.length; i++)\n            if (char.indexOf(wordChars[i]) > -1)\n                return CharCategory.Word;\n        return CharCategory.Other;\n    };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n    constructor(\n    /**\n    @internal\n    */\n    config, \n    /**\n    The current document.\n    */\n    doc, \n    /**\n    The current selection.\n    */\n    selection, \n    /**\n    @internal\n    */\n    values, computeSlot, tr) {\n        this.config = config;\n        this.doc = doc;\n        this.selection = selection;\n        this.values = values;\n        this.status = config.statusTemplate.slice();\n        this.computeSlot = computeSlot;\n        // Fill in the computed state immediately, so that further queries\n        // for it made during the update return this state\n        if (tr)\n            tr._state = this;\n        for (let i = 0; i < this.config.dynamicSlots.length; i++)\n            ensureAddr(this, i << 1);\n        this.computeSlot = null;\n    }\n    field(field, require = true) {\n        let addr = this.config.address[field.id];\n        if (addr == null) {\n            if (require)\n                throw new RangeError(\"Field is not present in this state\");\n            return undefined;\n        }\n        ensureAddr(this, addr);\n        return getAddr(this, addr);\n    }\n    /**\n    Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n    state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n    can be passed. Unless\n    [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n    [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n    are assumed to start in the _current_ document (not the document\n    produced by previous specs), and its\n    [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n    [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n    to the document created by its _own_ changes. The resulting\n    transaction contains the combined effect of all the different\n    specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n    specs take precedence over earlier ones.\n    */\n    update(...specs) {\n        return resolveTransaction(this, specs, true);\n    }\n    /**\n    @internal\n    */\n    applyTransaction(tr) {\n        let conf = this.config, { base, compartments } = conf;\n        for (let effect of tr.effects) {\n            if (effect.is(Compartment.reconfigure)) {\n                if (conf) {\n                    compartments = new Map;\n                    conf.compartments.forEach((val, key) => compartments.set(key, val));\n                    conf = null;\n                }\n                compartments.set(effect.value.compartment, effect.value.extension);\n            }\n            else if (effect.is(StateEffect.reconfigure)) {\n                conf = null;\n                base = effect.value;\n            }\n            else if (effect.is(StateEffect.appendConfig)) {\n                conf = null;\n                base = asArray(base).concat(effect.value);\n            }\n        }\n        let startValues;\n        if (!conf) {\n            conf = Configuration.resolve(base, compartments, this);\n            let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n            startValues = intermediateState.values;\n        }\n        else {\n            startValues = tr.startState.values.slice();\n        }\n        new EditorState(conf, tr.newDoc, tr.newSelection, startValues, (state, slot) => slot.update(state, tr), tr);\n    }\n    /**\n    Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n    replaces every selection range with the given content.\n    */\n    replaceSelection(text) {\n        if (typeof text == \"string\")\n            text = this.toText(text);\n        return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n            range: EditorSelection.cursor(range.from + text.length) }));\n    }\n    /**\n    Create a set of changes and a new selection by running the given\n    function for each range in the active selection. The function\n    can return an optional set of changes (in the coordinate space\n    of the start document), plus an updated range (in the coordinate\n    space of the document produced by the call's own changes). This\n    method will merge all the changes and ranges into a single\n    changeset and selection, and return it as a [transaction\n    spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n    [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n    */\n    changeByRange(f) {\n        let sel = this.selection;\n        let result1 = f(sel.ranges[0]);\n        let changes = this.changes(result1.changes), ranges = [result1.range];\n        let effects = asArray(result1.effects);\n        for (let i = 1; i < sel.ranges.length; i++) {\n            let result = f(sel.ranges[i]);\n            let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n            for (let j = 0; j < i; j++)\n                ranges[j] = ranges[j].map(newMapped);\n            let mapBy = changes.mapDesc(newChanges, true);\n            ranges.push(result.range.map(mapBy));\n            changes = changes.compose(newMapped);\n            effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n        }\n        return {\n            changes,\n            selection: EditorSelection.create(ranges, sel.mainIndex),\n            effects\n        };\n    }\n    /**\n    Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n    description, taking the state's document length and line\n    separator into account.\n    */\n    changes(spec = []) {\n        if (spec instanceof ChangeSet)\n            return spec;\n        return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n    }\n    /**\n    Using the state's [line\n    separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n    [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n    */\n    toText(string) {\n        return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n    }\n    /**\n    Return the given range of the document as a string.\n    */\n    sliceDoc(from = 0, to = this.doc.length) {\n        return this.doc.sliceString(from, to, this.lineBreak);\n    }\n    /**\n    Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n    */\n    facet(facet) {\n        let addr = this.config.address[facet.id];\n        if (addr == null)\n            return facet.default;\n        ensureAddr(this, addr);\n        return getAddr(this, addr);\n    }\n    /**\n    Convert this state to a JSON-serializable object. When custom\n    fields should be serialized, you can pass them in as an object\n    mapping property names (in the resulting object, which should\n    not use `doc` or `selection`) to fields.\n    */\n    toJSON(fields) {\n        let result = {\n            doc: this.sliceDoc(),\n            selection: this.selection.toJSON()\n        };\n        if (fields)\n            for (let prop in fields) {\n                let value = fields[prop];\n                if (value instanceof StateField && this.config.address[value.id] != null)\n                    result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n            }\n        return result;\n    }\n    /**\n    Deserialize a state from its JSON representation. When custom\n    fields should be deserialized, pass the same object you passed\n    to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n    third argument.\n    */\n    static fromJSON(json, config = {}, fields) {\n        if (!json || typeof json.doc != \"string\")\n            throw new RangeError(\"Invalid JSON representation for EditorState\");\n        let fieldInit = [];\n        if (fields)\n            for (let prop in fields) {\n                if (Object.prototype.hasOwnProperty.call(json, prop)) {\n                    let field = fields[prop], value = json[prop];\n                    fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n                }\n            }\n        return EditorState.create({\n            doc: json.doc,\n            selection: EditorSelection.fromJSON(json.selection),\n            extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n        });\n    }\n    /**\n    Create a new state. You'll usually only need this when\n    initializing an editor—updated states are created by applying\n    transactions.\n    */\n    static create(config = {}) {\n        let configuration = Configuration.resolve(config.extensions || [], new Map);\n        let doc = config.doc instanceof Text ? config.doc\n            : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n        let selection = !config.selection ? EditorSelection.single(0)\n            : config.selection instanceof EditorSelection ? config.selection\n                : EditorSelection.single(config.selection.anchor, config.selection.head);\n        checkSelection(selection, doc.length);\n        if (!configuration.staticFacet(allowMultipleSelections))\n            selection = selection.asSingle();\n        return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n    }\n    /**\n    The size (in columns) of a tab in the document, determined by\n    the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n    */\n    get tabSize() { return this.facet(EditorState.tabSize); }\n    /**\n    Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n    string for this state.\n    */\n    get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n    /**\n    Returns true when the editor is\n    [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n    */\n    get readOnly() { return this.facet(readOnly); }\n    /**\n    Look up a translation for the given phrase (via the\n    [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n    original string if no translation is found.\n    \n    If additional arguments are passed, they will be inserted in\n    place of markers like `$1` (for the first value) and `$2`, etc.\n    A single `$` is equivalent to `$1`, and `$$` will produce a\n    literal dollar sign.\n    */\n    phrase(phrase, ...insert) {\n        for (let map of this.facet(EditorState.phrases))\n            if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n                phrase = map[phrase];\n                break;\n            }\n        if (insert.length)\n            phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n                if (i == \"$\")\n                    return \"$\";\n                let n = +(i || 1);\n                return !n || n > insert.length ? m : insert[n - 1];\n            });\n        return phrase;\n    }\n    /**\n    Find the values for a given language data field, provided by the\n    the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n    \n    Examples of language data fields are...\n    \n    - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n      comment syntax.\n    - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n      for providing language-specific completion sources.\n    - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n      characters that should be considered part of words in this\n      language.\n    - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n      bracket closing behavior.\n    */\n    languageDataAt(name, pos, side = -1) {\n        let values = [];\n        for (let provider of this.facet(languageData)) {\n            for (let result of provider(this, pos, side)) {\n                if (Object.prototype.hasOwnProperty.call(result, name))\n                    values.push(result[name]);\n            }\n        }\n        return values;\n    }\n    /**\n    Return a function that can categorize strings (expected to\n    represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n    into one of:\n    \n     - Word (contains an alphanumeric character or a character\n       explicitly listed in the local language's `\"wordChars\"`\n       language data, which should be a string)\n     - Space (contains only whitespace)\n     - Other (anything else)\n    */\n    charCategorizer(at) {\n        return makeCategorizer(this.languageDataAt(\"wordChars\", at).join(\"\"));\n    }\n    /**\n    Find the word at the given position, meaning the range\n    containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n    around it. If no word characters are adjacent to the position,\n    this returns null.\n    */\n    wordAt(pos) {\n        let { text, from, length } = this.doc.lineAt(pos);\n        let cat = this.charCategorizer(pos);\n        let start = pos - from, end = pos - from;\n        while (start > 0) {\n            let prev = findClusterBreak(text, start, false);\n            if (cat(text.slice(prev, start)) != CharCategory.Word)\n                break;\n            start = prev;\n        }\n        while (end < length) {\n            let next = findClusterBreak(text, end);\n            if (cat(text.slice(end, next)) != CharCategory.Word)\n                break;\n            end = next;\n        }\n        return start == end ? null : EditorSelection.range(start + from, end + from);\n    }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n    compare(a, b) {\n        let kA = Object.keys(a), kB = Object.keys(b);\n        return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n    }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n    let result = {};\n    for (let config of configs)\n        for (let key of Object.keys(config)) {\n            let value = config[key], current = result[key];\n            if (current === undefined)\n                result[key] = value;\n            else if (current === value || value === undefined) ; // No conflict\n            else if (Object.hasOwnProperty.call(combine, key))\n                result[key] = combine[key](current, value);\n            else\n                throw new Error(\"Config merge conflict for field \" + key);\n        }\n    for (let key in defaults)\n        if (result[key] === undefined)\n            result[key] = defaults[key];\n    return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n    /**\n    Compare this value with another value. Used when comparing\n    rangesets. The default implementation compares by identity.\n    Unless you are only creating a fixed number of unique instances\n    of your value type, it is a good idea to implement this\n    properly.\n    */\n    eq(other) { return this == other; }\n    /**\n    Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n    */\n    range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n    constructor(\n    /**\n    The range's start position.\n    */\n    from, \n    /**\n    Its end position.\n    */\n    to, \n    /**\n    The value associated with this range.\n    */\n    value) {\n        this.from = from;\n        this.to = to;\n        this.value = value;\n    }\n    /**\n    @internal\n    */\n    static create(from, to, value) {\n        return new Range(from, to, value);\n    }\n}\nfunction cmpRange(a, b) {\n    return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n    constructor(from, to, value, \n    // Chunks are marked with the largest point that occurs\n    // in them (or -1 for no points), so that scans that are\n    // only interested in points (such as the\n    // heightmap-related logic) can skip range-only chunks.\n    maxPoint) {\n        this.from = from;\n        this.to = to;\n        this.value = value;\n        this.maxPoint = maxPoint;\n    }\n    get length() { return this.to[this.to.length - 1]; }\n    // Find the index of the given position and side. Use the ranges'\n    // `from` pos when `end == false`, `to` when `end == true`.\n    findIndex(pos, side, end, startAt = 0) {\n        let arr = end ? this.to : this.from;\n        for (let lo = startAt, hi = arr.length;;) {\n            if (lo == hi)\n                return lo;\n            let mid = (lo + hi) >> 1;\n            let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n            if (mid == lo)\n                return diff >= 0 ? lo : hi;\n            if (diff >= 0)\n                hi = mid;\n            else\n                lo = mid + 1;\n        }\n    }\n    between(offset, from, to, f) {\n        for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n            if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n                return false;\n    }\n    map(offset, changes) {\n        let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n        for (let i = 0; i < this.value.length; i++) {\n            let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n            if (curFrom == curTo) {\n                let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n                if (mapped == null)\n                    continue;\n                newFrom = newTo = mapped;\n                if (val.startSide != val.endSide) {\n                    newTo = changes.mapPos(curFrom, val.endSide);\n                    if (newTo < newFrom)\n                        continue;\n                }\n            }\n            else {\n                newFrom = changes.mapPos(curFrom, val.startSide);\n                newTo = changes.mapPos(curTo, val.endSide);\n                if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n                    continue;\n            }\n            if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n                continue;\n            if (newPos < 0)\n                newPos = newFrom;\n            if (val.point)\n                maxPoint = Math.max(maxPoint, newTo - newFrom);\n            value.push(val);\n            from.push(newFrom - newPos);\n            to.push(newTo - newPos);\n        }\n        return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n    }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n    constructor(\n    /**\n    @internal\n    */\n    chunkPos, \n    /**\n    @internal\n    */\n    chunk, \n    /**\n    @internal\n    */\n    nextLayer, \n    /**\n    @internal\n    */\n    maxPoint) {\n        this.chunkPos = chunkPos;\n        this.chunk = chunk;\n        this.nextLayer = nextLayer;\n        this.maxPoint = maxPoint;\n    }\n    /**\n    @internal\n    */\n    static create(chunkPos, chunk, nextLayer, maxPoint) {\n        return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n    }\n    /**\n    @internal\n    */\n    get length() {\n        let last = this.chunk.length - 1;\n        return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n    }\n    /**\n    The number of ranges in the set.\n    */\n    get size() {\n        if (this.isEmpty)\n            return 0;\n        let size = this.nextLayer.size;\n        for (let chunk of this.chunk)\n            size += chunk.value.length;\n        return size;\n    }\n    /**\n    @internal\n    */\n    chunkEnd(index) {\n        return this.chunkPos[index] + this.chunk[index].length;\n    }\n    /**\n    Update the range set, optionally adding new ranges or filtering\n    out existing ones.\n    \n    (Note: The type parameter is just there as a kludge to work\n    around TypeScript variance issues that prevented `RangeSet`\n    from being a subtype of `RangeSet` when `X` is a subtype of\n    `Y`.)\n    */\n    update(updateSpec) {\n        let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n        let filter = updateSpec.filter;\n        if (add.length == 0 && !filter)\n            return this;\n        if (sort)\n            add = add.slice().sort(cmpRange);\n        if (this.isEmpty)\n            return add.length ? RangeSet.of(add) : this;\n        let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n        let builder = new RangeSetBuilder();\n        while (cur.value || i < add.length) {\n            if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n                let range = add[i++];\n                if (!builder.addInner(range.from, range.to, range.value))\n                    spill.push(range);\n            }\n            else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n                (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n                (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n                builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n                cur.nextChunk();\n            }\n            else {\n                if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n                    if (!builder.addInner(cur.from, cur.to, cur.value))\n                        spill.push(Range.create(cur.from, cur.to, cur.value));\n                }\n                cur.next();\n            }\n        }\n        return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n            : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n    }\n    /**\n    Map this range set through a set of changes, return the new set.\n    */\n    map(changes) {\n        if (changes.empty || this.isEmpty)\n            return this;\n        let chunks = [], chunkPos = [], maxPoint = -1;\n        for (let i = 0; i < this.chunk.length; i++) {\n            let start = this.chunkPos[i], chunk = this.chunk[i];\n            let touch = changes.touchesRange(start, start + chunk.length);\n            if (touch === false) {\n                maxPoint = Math.max(maxPoint, chunk.maxPoint);\n                chunks.push(chunk);\n                chunkPos.push(changes.mapPos(start));\n            }\n            else if (touch === true) {\n                let { mapped, pos } = chunk.map(start, changes);\n                if (mapped) {\n                    maxPoint = Math.max(maxPoint, mapped.maxPoint);\n                    chunks.push(mapped);\n                    chunkPos.push(pos);\n                }\n            }\n        }\n        let next = this.nextLayer.map(changes);\n        return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n    }\n    /**\n    Iterate over the ranges that touch the region `from` to `to`,\n    calling `f` for each. There is no guarantee that the ranges will\n    be reported in any specific order. When the callback returns\n    `false`, iteration stops.\n    */\n    between(from, to, f) {\n        if (this.isEmpty)\n            return;\n        for (let i = 0; i < this.chunk.length; i++) {\n            let start = this.chunkPos[i], chunk = this.chunk[i];\n            if (to >= start && from <= start + chunk.length &&\n                chunk.between(start, from - start, to - start, f) === false)\n                return;\n        }\n        this.nextLayer.between(from, to, f);\n    }\n    /**\n    Iterate over the ranges in this set, in order, including all\n    ranges that end at or after `from`.\n    */\n    iter(from = 0) {\n        return HeapCursor.from([this]).goto(from);\n    }\n    /**\n    @internal\n    */\n    get isEmpty() { return this.nextLayer == this; }\n    /**\n    Iterate over the ranges in a collection of sets, in order,\n    starting from `from`.\n    */\n    static iter(sets, from = 0) {\n        return HeapCursor.from(sets).goto(from);\n    }\n    /**\n    Iterate over two groups of sets, calling methods on `comparator`\n    to notify it of possible differences.\n    */\n    static compare(oldSets, newSets, \n    /**\n    This indicates how the underlying data changed between these\n    ranges, and is needed to synchronize the iteration.\n    */\n    textDiff, comparator, \n    /**\n    Can be used to ignore all non-point ranges, and points below\n    the given size. When -1, all ranges are compared.\n    */\n    minPointSize = -1) {\n        let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n        let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n        let sharedChunks = findSharedChunks(a, b, textDiff);\n        let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n        let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n        textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n        if (textDiff.empty && textDiff.length == 0)\n            compare(sideA, 0, sideB, 0, 0, comparator);\n    }\n    /**\n    Compare the contents of two groups of range sets, returning true\n    if they are equivalent in the given range.\n    */\n    static eq(oldSets, newSets, from = 0, to) {\n        if (to == null)\n            to = 1000000000 /* C.Far */ - 1;\n        let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n        let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n        if (a.length != b.length)\n            return false;\n        if (!a.length)\n            return true;\n        let sharedChunks = findSharedChunks(a, b);\n        let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n        for (;;) {\n            if (sideA.to != sideB.to ||\n                !sameValues(sideA.active, sideB.active) ||\n                sideA.point && (!sideB.point || !sideA.point.eq(sideB.point)))\n                return false;\n            if (sideA.to > to)\n                return true;\n            sideA.next();\n            sideB.next();\n        }\n    }\n    /**\n    Iterate over a group of range sets at the same time, notifying\n    the iterator about the ranges covering every given piece of\n    content. Returns the open count (see\n    [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n    of the iteration.\n    */\n    static spans(sets, from, to, iterator, \n    /**\n    When given and greater than -1, only points of at least this\n    size are taken into account.\n    */\n    minPointSize = -1) {\n        let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n        let openRanges = cursor.openStart;\n        for (;;) {\n            let curTo = Math.min(cursor.to, to);\n            if (cursor.point) {\n                let active = cursor.activeForPoint(cursor.to);\n                let openCount = cursor.pointFrom < from ? active.length + 1 : Math.min(active.length, openRanges);\n                iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n                openRanges = Math.min(cursor.openEnd(curTo), active.length);\n            }\n            else if (curTo > pos) {\n                iterator.span(pos, curTo, cursor.active, openRanges);\n                openRanges = cursor.openEnd(curTo);\n            }\n            if (cursor.to > to)\n                return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n            pos = cursor.to;\n            cursor.next();\n        }\n    }\n    /**\n    Create a range set for the given range or array of ranges. By\n    default, this expects the ranges to be _sorted_ (by start\n    position and, if two start at the same position,\n    `value.startSide`). You can pass `true` as second argument to\n    cause the method to sort them.\n    */\n    static of(ranges, sort = false) {\n        let build = new RangeSetBuilder();\n        for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n            build.add(range.from, range.to, range.value);\n        return build.finish();\n    }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction lazySort(ranges) {\n    if (ranges.length > 1)\n        for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n            let cur = ranges[i];\n            if (cmpRange(prev, cur) > 0)\n                return ranges.slice().sort(cmpRange);\n            prev = cur;\n        }\n    return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n    finishChunk(newArrays) {\n        this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n        this.chunkPos.push(this.chunkStart);\n        this.chunkStart = -1;\n        this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n        this.maxPoint = -1;\n        if (newArrays) {\n            this.from = [];\n            this.to = [];\n            this.value = [];\n        }\n    }\n    /**\n    Create an empty builder.\n    */\n    constructor() {\n        this.chunks = [];\n        this.chunkPos = [];\n        this.chunkStart = -1;\n        this.last = null;\n        this.lastFrom = -1000000000 /* C.Far */;\n        this.lastTo = -1000000000 /* C.Far */;\n        this.from = [];\n        this.to = [];\n        this.value = [];\n        this.maxPoint = -1;\n        this.setMaxPoint = -1;\n        this.nextLayer = null;\n    }\n    /**\n    Add a range. Ranges should be added in sorted (by `from` and\n    `value.startSide`) order.\n    */\n    add(from, to, value) {\n        if (!this.addInner(from, to, value))\n            (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).add(from, to, value);\n    }\n    /**\n    @internal\n    */\n    addInner(from, to, value) {\n        let diff = from - this.lastTo || value.startSide - this.last.endSide;\n        if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n            throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n        if (diff < 0)\n            return false;\n        if (this.from.length == 250 /* C.ChunkSize */)\n            this.finishChunk(true);\n        if (this.chunkStart < 0)\n            this.chunkStart = from;\n        this.from.push(from - this.chunkStart);\n        this.to.push(to - this.chunkStart);\n        this.last = value;\n        this.lastFrom = from;\n        this.lastTo = to;\n        this.value.push(value);\n        if (value.point)\n            this.maxPoint = Math.max(this.maxPoint, to - from);\n        return true;\n    }\n    /**\n    @internal\n    */\n    addChunk(from, chunk) {\n        if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n            return false;\n        if (this.from.length)\n            this.finishChunk(true);\n        this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n        this.chunks.push(chunk);\n        this.chunkPos.push(from);\n        let last = chunk.value.length - 1;\n        this.last = chunk.value[last];\n        this.lastFrom = chunk.from[last] + from;\n        this.lastTo = chunk.to[last] + from;\n        return true;\n    }\n    /**\n    Finish the range set. Returns the new set. The builder can't be\n    used anymore after this has been called.\n    */\n    finish() { return this.finishInner(RangeSet.empty); }\n    /**\n    @internal\n    */\n    finishInner(next) {\n        if (this.from.length)\n            this.finishChunk(false);\n        if (this.chunks.length == 0)\n            return next;\n        let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n        this.from = null; // Make sure further `add` calls produce errors\n        return result;\n    }\n}\nfunction findSharedChunks(a, b, textDiff) {\n    let inA = new Map();\n    for (let set of a)\n        for (let i = 0; i < set.chunk.length; i++)\n            if (set.chunk[i].maxPoint <= 0)\n                inA.set(set.chunk[i], set.chunkPos[i]);\n    let shared = new Set();\n    for (let set of b)\n        for (let i = 0; i < set.chunk.length; i++) {\n            let known = inA.get(set.chunk[i]);\n            if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n                !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n                shared.add(set.chunk[i]);\n        }\n    return shared;\n}\nclass LayerCursor {\n    constructor(layer, skip, minPoint, rank = 0) {\n        this.layer = layer;\n        this.skip = skip;\n        this.minPoint = minPoint;\n        this.rank = rank;\n    }\n    get startSide() { return this.value ? this.value.startSide : 0; }\n    get endSide() { return this.value ? this.value.endSide : 0; }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        this.chunkIndex = this.rangeIndex = 0;\n        this.gotoInner(pos, side, false);\n        return this;\n    }\n    gotoInner(pos, side, forward) {\n        while (this.chunkIndex < this.layer.chunk.length) {\n            let next = this.layer.chunk[this.chunkIndex];\n            if (!(this.skip && this.skip.has(next) ||\n                this.layer.chunkEnd(this.chunkIndex) < pos ||\n                next.maxPoint < this.minPoint))\n                break;\n            this.chunkIndex++;\n            forward = false;\n        }\n        if (this.chunkIndex < this.layer.chunk.length) {\n            let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n            if (!forward || this.rangeIndex < rangeIndex)\n                this.setRangeIndex(rangeIndex);\n        }\n        this.next();\n    }\n    forward(pos, side) {\n        if ((this.to - pos || this.endSide - side) < 0)\n            this.gotoInner(pos, side, true);\n    }\n    next() {\n        for (;;) {\n            if (this.chunkIndex == this.layer.chunk.length) {\n                this.from = this.to = 1000000000 /* C.Far */;\n                this.value = null;\n                break;\n            }\n            else {\n                let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n                let from = chunkPos + chunk.from[this.rangeIndex];\n                this.from = from;\n                this.to = chunkPos + chunk.to[this.rangeIndex];\n                this.value = chunk.value[this.rangeIndex];\n                this.setRangeIndex(this.rangeIndex + 1);\n                if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n                    break;\n            }\n        }\n    }\n    setRangeIndex(index) {\n        if (index == this.layer.chunk[this.chunkIndex].value.length) {\n            this.chunkIndex++;\n            if (this.skip) {\n                while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n                    this.chunkIndex++;\n            }\n            this.rangeIndex = 0;\n        }\n        else {\n            this.rangeIndex = index;\n        }\n    }\n    nextChunk() {\n        this.chunkIndex++;\n        this.rangeIndex = 0;\n        this.next();\n    }\n    compare(other) {\n        return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n            this.to - other.to || this.endSide - other.endSide;\n    }\n}\nclass HeapCursor {\n    constructor(heap) {\n        this.heap = heap;\n    }\n    static from(sets, skip = null, minPoint = -1) {\n        let heap = [];\n        for (let i = 0; i < sets.length; i++) {\n            for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n                if (cur.maxPoint >= minPoint)\n                    heap.push(new LayerCursor(cur, skip, minPoint, i));\n            }\n        }\n        return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n    }\n    get startSide() { return this.value ? this.value.startSide : 0; }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        for (let cur of this.heap)\n            cur.goto(pos, side);\n        for (let i = this.heap.length >> 1; i >= 0; i--)\n            heapBubble(this.heap, i);\n        this.next();\n        return this;\n    }\n    forward(pos, side) {\n        for (let cur of this.heap)\n            cur.forward(pos, side);\n        for (let i = this.heap.length >> 1; i >= 0; i--)\n            heapBubble(this.heap, i);\n        if ((this.to - pos || this.value.endSide - side) < 0)\n            this.next();\n    }\n    next() {\n        if (this.heap.length == 0) {\n            this.from = this.to = 1000000000 /* C.Far */;\n            this.value = null;\n            this.rank = -1;\n        }\n        else {\n            let top = this.heap[0];\n            this.from = top.from;\n            this.to = top.to;\n            this.value = top.value;\n            this.rank = top.rank;\n            if (top.value)\n                top.next();\n            heapBubble(this.heap, 0);\n        }\n    }\n}\nfunction heapBubble(heap, index) {\n    for (let cur = heap[index];;) {\n        let childIndex = (index << 1) + 1;\n        if (childIndex >= heap.length)\n            break;\n        let child = heap[childIndex];\n        if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n            child = heap[childIndex + 1];\n            childIndex++;\n        }\n        if (cur.compare(child) < 0)\n            break;\n        heap[childIndex] = cur;\n        heap[index] = child;\n        index = childIndex;\n    }\n}\nclass SpanCursor {\n    constructor(sets, skip, minPoint) {\n        this.minPoint = minPoint;\n        this.active = [];\n        this.activeTo = [];\n        this.activeRank = [];\n        this.minActive = -1;\n        // A currently active point range, if any\n        this.point = null;\n        this.pointFrom = 0;\n        this.pointRank = 0;\n        this.to = -1000000000 /* C.Far */;\n        this.endSide = 0;\n        // The amount of open active ranges at the start of the iterator.\n        // Not including points.\n        this.openStart = -1;\n        this.cursor = HeapCursor.from(sets, skip, minPoint);\n    }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        this.cursor.goto(pos, side);\n        this.active.length = this.activeTo.length = this.activeRank.length = 0;\n        this.minActive = -1;\n        this.to = pos;\n        this.endSide = side;\n        this.openStart = -1;\n        this.next();\n        return this;\n    }\n    forward(pos, side) {\n        while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n            this.removeActive(this.minActive);\n        this.cursor.forward(pos, side);\n    }\n    removeActive(index) {\n        remove(this.active, index);\n        remove(this.activeTo, index);\n        remove(this.activeRank, index);\n        this.minActive = findMinIndex(this.active, this.activeTo);\n    }\n    addActive(trackOpen) {\n        let i = 0, { value, to, rank } = this.cursor;\n        while (i < this.activeRank.length && this.activeRank[i] <= rank)\n            i++;\n        insert(this.active, i, value);\n        insert(this.activeTo, i, to);\n        insert(this.activeRank, i, rank);\n        if (trackOpen)\n            insert(trackOpen, i, this.cursor.from);\n        this.minActive = findMinIndex(this.active, this.activeTo);\n    }\n    // After calling this, if `this.point` != null, the next range is a\n    // point. Otherwise, it's a regular range, covered by `this.active`.\n    next() {\n        let from = this.to, wasPoint = this.point;\n        this.point = null;\n        let trackOpen = this.openStart < 0 ? [] : null;\n        for (;;) {\n            let a = this.minActive;\n            if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n                if (this.activeTo[a] > from) {\n                    this.to = this.activeTo[a];\n                    this.endSide = this.active[a].endSide;\n                    break;\n                }\n                this.removeActive(a);\n                if (trackOpen)\n                    remove(trackOpen, a);\n            }\n            else if (!this.cursor.value) {\n                this.to = this.endSide = 1000000000 /* C.Far */;\n                break;\n            }\n            else if (this.cursor.from > from) {\n                this.to = this.cursor.from;\n                this.endSide = this.cursor.startSide;\n                break;\n            }\n            else {\n                let nextVal = this.cursor.value;\n                if (!nextVal.point) { // Opening a range\n                    this.addActive(trackOpen);\n                    this.cursor.next();\n                }\n                else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n                    // Ignore any non-empty points that end precisely at the end of the prev point\n                    this.cursor.next();\n                }\n                else { // New point\n                    this.point = nextVal;\n                    this.pointFrom = this.cursor.from;\n                    this.pointRank = this.cursor.rank;\n                    this.to = this.cursor.to;\n                    this.endSide = nextVal.endSide;\n                    this.cursor.next();\n                    this.forward(this.to, this.endSide);\n                    break;\n                }\n            }\n        }\n        if (trackOpen) {\n            this.openStart = 0;\n            for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n                this.openStart++;\n        }\n    }\n    activeForPoint(to) {\n        if (!this.active.length)\n            return this.active;\n        let active = [];\n        for (let i = this.active.length - 1; i >= 0; i--) {\n            if (this.activeRank[i] < this.pointRank)\n                break;\n            if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n                active.push(this.active[i]);\n        }\n        return active.reverse();\n    }\n    openEnd(to) {\n        let open = 0;\n        for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n            open++;\n        return open;\n    }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n    a.goto(startA);\n    b.goto(startB);\n    let endB = startB + length;\n    let pos = startB, dPos = startB - startA;\n    for (;;) {\n        let diff = (a.to + dPos) - b.to || a.endSide - b.endSide;\n        let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n        if (a.point || b.point) {\n            if (!(a.point && b.point && (a.point == b.point || a.point.eq(b.point)) &&\n                sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n                comparator.comparePoint(pos, clipEnd, a.point, b.point);\n        }\n        else {\n            if (clipEnd > pos && !sameValues(a.active, b.active))\n                comparator.compareRange(pos, clipEnd, a.active, b.active);\n        }\n        if (end > endB)\n            break;\n        pos = end;\n        if (diff <= 0)\n            a.next();\n        if (diff >= 0)\n            b.next();\n    }\n}\nfunction sameValues(a, b) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (a[i] != b[i] && !a[i].eq(b[i]))\n            return false;\n    return true;\n}\nfunction remove(array, index) {\n    for (let i = index, e = array.length - 1; i < e; i++)\n        array[i] = array[i + 1];\n    array.pop();\n}\nfunction insert(array, index, value) {\n    for (let i = array.length - 1; i >= index; i--)\n        array[i + 1] = array[i];\n    array[index] = value;\n}\nfunction findMinIndex(value, array) {\n    let found = -1, foundPos = 1000000000 /* C.Far */;\n    for (let i = 0; i < array.length; i++)\n        if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n            found = i;\n            foundPos = array[i];\n        }\n    return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n    let n = 0;\n    for (let i = 0; i < to;) {\n        if (string.charCodeAt(i) == 9) {\n            n += tabSize - (n % tabSize);\n            i++;\n        }\n        else {\n            n++;\n            i = findClusterBreak(string, i);\n        }\n    }\n    return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n    for (let i = 0, n = 0;;) {\n        if (n >= col)\n            return i;\n        if (i == string.length)\n            break;\n        n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n        i = findClusterBreak(string, i);\n    }\n    return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n  // :: (Object