imba
Version:
7 lines • 87.7 kB
JavaScript
var F=Symbol.for("#__init__"),hr=Symbol.for("#__initor__"),ln=Symbol.for("#__inited__"),ur=Symbol.for("#__hooks__");var an=Symbol.for("#meta"),Oe=Symbol.for("imba");var ps={SUPERCALLS:1<<3,CONSTRUCTOR:1<<4},ge={IsExtension:1<<0,IsTag:1<<1,HasDescriptors:1<<2,HasSuperCalls:1<<3,HasConstructor:1<<4,HasFields:1<<5,HasMixins:1<<6,HasInitor:1<<7,HasDecorators:1<<8,IsObjectExtension:1<<9},re=new Map,cn=globalThis[Oe]||(globalThis[Oe]={counter:0,classes:re});function pe(s,e={}){var t;return re.has(s)||re.set(s,{symbol:Symbol(s.name),parent:(t=Object.getPrototypeOf(s.prototype))==null?void 0:t.constructor,for:s,uses:null,inits:null,id:cn.counter++,...e}),re.get(s)}function R(s,e){var t;return typeof e=="string"?typeof s===e:(t=e==null?void 0:e[Symbol.hasInstance])==null?void 0:t.call(e,s)}function I(s){var e;return((e=s==null?void 0:s.toIterable)==null?void 0:e.call(s))||s}function pn(s,e){if(!s||!e)return!1;if(s.get)return e.get===s.get;if(s.set)return e.set===s.set;if(s.value)return s.value===e.value}function mr(s,e,t,r={}){let n=s.constructor;!t&&e&&(t=Object.getOwnPropertyDescriptors(e),delete t.constructor,t[F]&&(console.warn(`Cannot define plain fields when extending class ${n.name}`),delete t[F]));let i=pe(n);if(i&&i.augments){let l=new Map;for(let o of Object.keys(t)){let p=Object.getOwnPropertyDescriptor(s,o);for(let c of i.augments){let a=l.get(c);a||l.set(c,a={});let f=Object.getOwnPropertyDescriptor(c.prototype,o);f&&!pn(p,f)?console.warn("wont extend",o,f,p):a[o]=t[o]}}for(let[o,p]of l)Object.keys(p).length&&mr(o.prototype,null,p)}return Object.defineProperties(s,t),s}function dr(s,e){let t=pe(s),r=pe(e);if(r.parent&&!(s.prototype instanceof r.parent))throw new Error(`Mixin ${e.name} has superclass not present in target class`);if(!r.augments){r.augments=new Set;let i=r.ref=Symbol(e.name),l=Object[Symbol.hasInstance];e.prototype[i]=!0,Object.defineProperty(e,Symbol.hasInstance,{value:function(o){return this===e?o&&!!o[i]:l.call(this,o)}})}if(s.prototype[r.ref])return s;if(r.uses)for(let i of r.uses)dr(s,i);r.augments.add(s),t.uses||(t.uses=[]),t.uses.push(e);let n=Object.getOwnPropertyDescriptors(e.prototype);return delete n.constructor,n[F]&&(t.inits||(t.inits=[]),t.inits.push(e.prototype[F]),delete n[F]),Object.defineProperties(s.prototype,n),(e==null?void 0:e.mixed)instanceof Function&&e.mixed(s),s}var X={cache:{},self:null,target:null,proxy:new Proxy({},{apply:(s,e,...t)=>X.target[e].apply(X.self,t),get:(s,e)=>Reflect.get(X.target,e,X.self),set:(s,e,t,r)=>Reflect.set(X.target,e,t,X.self)})};function $(s,e,t,r,n=null){var c;let i=Object.getPrototypeOf(s.prototype),l=r&ge.HasMixins,o;if(l&&(re.set(s,re.get(i.constructor)),i=Object.getPrototypeOf(i)),n){let a=r&ge.IsObjectExtension?n:n.prototype,f=pe(s);if(f.uses){n===a&&console.warn("Cannot extend object with mixins");for(let u of f.uses)dr(n,u)}return r&ge.HasSuperCalls&&(X.cache[e]=Object.create(Object.getPrototypeOf(a),Object.getOwnPropertyDescriptors(a))),mr(a,s.prototype),n}let p=i==null?void 0:i.constructor;if(o=pe(s,{symbol:e}),Object.defineProperty(s,an,{value:o,enumerable:!1,configurable:!0}),t&&s.name!==t&&Object.defineProperty(s,"name",{value:t,configurable:!0}),o.flags=r,r&ge.HasConstructor&&(s.prototype[hr]=e),o.uses)for(let a of o.uses)(c=a.mixes)==null||c.call(a,s);return(p==null?void 0:p.inherited)instanceof Function&&p.inherited(s),s}function N(s,e){var t;s[hr]===e&&((t=s[ln])==null||t.call(s),s[ur]&&s[ur].inited(s))}var ne=Symbol.for("#source"),fn=Symbol.for("#lineText"),un=Symbol.for("#version"),gr=new WeakMap,yr=Symbol(),Ae=class{[F](e=null,t=!0,r=!0){this.line=e?e.line:void 0,this.character=e?e.character:void 0,this.offset=e?e.offset:void 0}constructor(e,t,r,n=null){this[F](),this.line=e,this.character=t,this.offset=r,this[un]=n,N(this,yr)}toString(){return""+this.line+":"+this.character}valueOf(){return this.offset}},Q=Ae;(()=>{$(Ae,yr,"Position",16)})();var br=Symbol(),Ee=class{[F](e=null,t=!0,r=!0){this.start=e?e.start:void 0,this.end=e?e.end:void 0}constructor(e,t){this[F](),this.start=e,this.end=t,N(this,br)}get offset(){return this.start.offset}get length(){return this.end.offset-this.start.offset}get 0(){return this.start.offset}get 1(){return this.end.offset}getText(e){return e.slice(this.start,this.end)}equals(e){return e.offset==this.offset&&e.length==this.length}},H=Ee;(()=>{$(Ee,br,"Range",16)})();var hn={Error:1,Warning:2,Information:3,Hint:4,error:1,warning:2,warn:2,info:3,hint:4},_r=Symbol(),Me=class{constructor(e,t=null){this.range=e.range,this.severity=hn[e.severity]||e.severity,this.code=e.code,this.source=e.source,this.message=e.message,gr.set(this,t),N(this,_r)}get[ne](){return gr.get(this)}get[fn](){return this[ne].doc.getLineText(this.range.start.line)}toSnippet(){let e=this.range.start,t=this.range.end,r=""+this[ne].sourcePath+":"+(e.line+1)+":"+(e.character+1)+": "+this.message,n=this[ne].doc.getLineText(e.line),i=[r,n];return i.push(n.replace(/[^\t]/g," ").slice(0,e.character)+"^".repeat(t.character-e.character)),i.join(`
`).replace(/\t/g," ")+`
`}toError(){let e=this.range.start,t=this.range.end,r=""+this[ne].sourcePath+":"+(e.line+1)+":"+(e.character+1)+": "+this.message,n=new SyntaxError(r),i=this[ne].doc.getLineText(e.line),l=[r,i];return l.push(i.replace(/[^\t]/g," ").slice(0,e.character)+"^".repeat(t.character-e.character)),n.stack=`
`+l.join(`
`).replace(/\t/g," ")+`
`,n}raise(){throw this.toError()}},xr=Me;(()=>{$(Me,_r,"Diagnostic",16)})();var kr=Symbol(),Be=class{constructor(e,t){this.cache={},this.rules=e,this.matcher=t,N(this,kr)}convert(e){for(let t=0,r=I(this.rules),n=r.length;t<n;t++){let i=r[t];if(this.matcher&&this.matcher(i[0],e))return e[1]}return 0}},wr=Be;(()=>{$(Be,kr,"Converter",16)})();function ye(s,e,t=1e5){let r=s;for(;r&&t>0;){if(r.match(e))return r;t--,r=r.prev}return null}function ze(s,e,t){t===void 0&&(t=0);for(var r=e?[t]:[],n=0;n<s.length;){var i=s.charCodeAt(n);(i===13||i===10)&&(i===13&&n+1<s.length&&s.charCodeAt(n+1)===10&&n++,r.push(t+n+1)),n++}return r}function $r(s){var e=s.start,t=s.end;return e.line>t.line||e.line===t.line&&e.character>t.character?new H(t,e):R(s,H)?s:new H(e,t)}function vr(s){return s!=null&&typeof s.text=="string"&&s.range===void 0}function Sr(s){let e=s.split(/\n/),t=[],r={indent:-1,children:[]},n=r,i,l=Date.now();for(let o=0,p=I(e),c=p.length;o<c;o++){let a=p[o];if(a.match(/^\s*$/))continue;let f=a.match(/^\t*/)[0].length;for(;r.indent>=f;)r=r.parent||n;if(i=a.match(/^(\t*((?:export )?(?:static )?(?:extend )?)(class|tag|def|get|set|prop|attr) )(\@?[\w\-\$\:]+(?:\.[\w\-\$]+)?)/),i){let u=i[3],h=i[4],v=r.name?r.name+".":"",S=i[2].trim().split(/\s+/),E="",y={start:{line:o,character:i[1].length},end:{line:o,character:i[0].length}},m={kind:u,ownName:h,name:v+h,span:y,indent:f,modifiers:S,children:[],parent:r==n?null:r,type:u,data:{},static:S.indexOf("static")>=0,extends:S.indexOf("extend")>=0};m.static&&(m.containerName="static"),m.containerName=i[2]+i[3],u=="tag"&&(i=a.match(/\<\s+([\w\-\$\:]+(?:\.[\w\-\$]+)?)/))&&(m.superclass=i[1]),r.type=="tag"&&(E="```html\n<"+r.name+" "+h+">\n```\n",m.description={kind:"markdown",value:E}),r.children.push(m),r=m,t.push(m)}}return n.all=t,console.log("fast outline",s.length,Date.now()-l),n}var Le=[/^/,{token:"@rematch",next:"@pop"}],Cr={token:"@rematch",next:"@pop"},Ir={token:"white.indent",next:"@>illegal_indent"};function mn(s,e="#"){typeof s=="string"&&(s=s.split(" "));let t=s.slice().sort(function(r,n){return n.length-r.length});return t=t.map(function(r){let n=r.replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&");return e.replace("#",n)}),new RegExp("(?:"+t.join("|")+")")}function A(s,e,t,r={}){var o;var n;s==null?s=Ir:s==1?s={next:"@>"}:s==2?s={next:"@>_indent&-_indent"}:typeof s=="string"&&(s={next:s}),e==-1&&(e=Cr),t==-1?t=Cr:t==0&&((o=r.comment)!=null||(r.comment=!0),t={}),s=Object.assign({token:"white.tabs"},s||{}),t=Object.assign({token:"white.tabs"},t||{}),e=Object.assign({token:"@rematch",next:"@pop"},e||{});let i={"$1==$S2 ":s,"$1==$S2":{cases:{"$1==$S6":t,"@default":{token:"@rematch",switchTo:"@*$1"}}},"@default":e};n=0;for(let p of["next","switchTo"]){let c=n++;s[p]&&s[p].indexOf("*")==-1&&(s[p]+="*$1")}let l=[/^(\t*)(?=[^ \t\n])/,{cases:i}];if(r.comment){let p={};for(let c=0,a=Object.keys(i),f=a.length,u,h;c<f;c++){u=a[c],h=i[u];let v=Object.assign({},h);!v.next&&!v.switchTo&&(v.next="@>_comment"),p[u]=v}return[[/^(\t*)(?=#\s|#$)/,{cases:p}],l]}return l}var Pe={root:[[/^@comment/,"comment","@>_comment"],[/^(\t+)(?=[^\t\n])/,{cases:{"$1==$S2 ":{token:"white.indent",next:"@>_indent*$1"},"@default":"white.indent"}}],"block_"],_comment:[[/^([\t\s\n]*)$/,"comment"],[/^(\t*)([\S\s]*)/,{cases:{"$1~$S2 *":{token:"comment"},"@default":{token:"@rematch",next:"@pop"}}}],[/[\S\s]+/,"comment"]],illegal_indent:[A()],identifier_:[[/\$\w+\$/,"identifier.env"],[/\$\d+/,"identifier.special"],[/\#+@id/,"identifier.symbol"],[/\¶@id/,"ivar"],[/@id\!?/,{cases:{this:"this",self:"self","@keywords":"keyword.$#","$0~[A-Z].*":"identifier.uppercase.$F","@default":"identifier.$F"}}]],block_:[[/^(\t+)(?=[\r\n]|$)/,"white.tabs"],"class_","tagclass_","var_","func_","import_","export_","flow_","for_","try_","catch_","while_","css_","tag_","do_","block_comment_","expr_",[/[ ]+/,"white"],"common_"],indentable_:[[/^[ ]+/,"white"],A("@>_paren_indent&-_indent",null,null),[/^(\t+)(?=[\r\n]|$)/,"white.tabs"],"whitespace"],_indent:[A(2,-1,0),"block_"],_paren_indent:[A(2,-1,0),"block_",[/\)|\}|\]/,"@rematch","@pop"]],block:[A("@>",-1,0),"block_"],bool_:[[/(true|false|yes|no|undefined|null)(?![\:\-\w\.\_])/,"boolean"]],op_:[[/\s+\:\s+/,"operator.ternary"],[/(@unspaced_ops)/,{cases:{"@spread":"operator.spread","@access":"operator.access","@default":"operator"}}],[/\/(?!\/)/,"operator.math"],[/\&(?=[,\)])/,"operator.special.blockparam"],[/(\s*)(@symbols)(\s*)/,{cases:{"$2@assignments":"operator.assign","$2@math":"operator.math","$2@operators":"operator","$2@logic":"operator.logic","$2@access":"operator.access","@default":"delimiter"}}],[/\&\b/,"operator"]],keyword_:[[/new@B/,"keyword.new"],[/isa@B/,"keyword.isa"],[/is@B/,"keyword.is"],[/(switch|when|throw|continue|break|then|await|typeof|by)@B/,"keyword.$1"],[/delete@B/,"keyword.delete"],[/and@B|or@B/,"operator.flow"]],return_:[[/return@B/,"keyword.new"]],primitive_:["string_","number_","regexp_","bool_"],value_:["primitive_","keyword_","implicit_call_","parens_","key_","access_","identifier_","array_","object_"],expr_:["comment_","inline_var_","return_","value_","tag_","op_","type_","spread_"],attr_expr_:["primitive_","parens_","access_","identifier_","array_","object_","tag_","op_"],access_:[[/(\.\.?)(@propid\!?)/,{cases:{"$2~[A-Z].*":["operator.access","accessor.uppercase"],"$2~#.*":["operator.access","accessor.symbol"],"@default":["operator.access","accessor"]}}]],call_:[[/\(/,"(","@call_body"]],key_:[[/(\#+@id)(\:\s*)/,["key.symbol","operator.assign.key-value"]],[/(@propid)(\:\s*)/,{cases:{"@default":["key","operator.assign.key-value"]}}]],implicit_call_:[[/(\.\.?)(@propid)@implicitCall/,{cases:{"$2~[A-Z].*":["operator.access","accessor.uppercase","@implicit_call_body"],"@default":["operator.access","accessor","@implicit_call_body"]}}],[/(@propid)@implicitCall/,{cases:{"$2~[A-Z].*":["identifier.uppercase","@implicit_call_body"],"@default":["identifier","@implicit_call_body"]}}]],implicit_call_body:[Le,[/\)|\}|\]|\>/,"@rematch","@pop"],"arglist_","whitespace"],arglist_:["do_","expr_",[/\s*\,\s*/,"delimiter.comma"]],params_:[[/\[/,"array.[","@array_var_body=decl-param"],[/\{/,"object.{","@object_body=decl-param"],[/(@variable)/,"identifier.decl-param"],"spread_","type_",[/\s*\=\s*/,"operator","@var_value="],[/\s*\,\s*/,"separator"]],object_:[[/\{/,"object.{","@object_body"]],parens_:[[/\(/,"parens.(","@parens_body"]],parens_body:[[/\)/,")","@pop"],"indentable_","arglist_"],array_:[[/\[/,"array.[","@array_body"]],array_body:[[/\]@implicitCall/,{token:"]",switchTo:"@implicit_call_body="}],[/\]/,"]","@pop"],[/\)|\}/,"invalid"],"indentable_","expr_",[",","delimiter"]],object_body:[[/\}/,"}","@pop"],[/(@id)(\s*:\s*)/,["key","operator.assign.key-value","@object_value"]],[/(@id)/,"identifier.$F"],[/\[/,"[","@object_dynamic_key="],[/\s*=\s*/,"operator.assign","@object_value="],[/:/,"operator.assign.key-value","@object_value="],[/\,/,"delimiter.comma"],"indentable_","expr_"],object_value:[Le,[/,|\}|\]|\)/,"@rematch","@pop"],"expr_"],object_dynamic_key:[["]","]","@pop"],"expr_"],comment_:[[/#(\s.*)?(\n|$)/,"comment"]],block_comment_:[[/###/,"comment.start","@_block_comment"]],_block_comment:[[/###/,"comment.end","@pop"],[/[^#]+/,"comment"],[/#(?!##)/,"comment"]],try_:[[/try@B/,"keyword.try","@>_try&try"]],catch_:[[/(catch\s+)(?=@id(\s|$))/,"keyword.catch","@catch_start&catch"],[/catch@B/,"keyword.catch","@catch_start&catch"]],catch_start:[[/@id/,"identifier.decl-const",{switchTo:"@>_catch"}],[/.?/,"@rematch",{switchTo:"@>_catch"}]],_catch:[A("@>block",-1,0),"block_"],_try:[A("@>block",-1,0),"block_"],do_:[[/do(?=\()/,"keyword.do","@>do_start&do"],[/do(?=\s*\|)/,"keyword.do","@>do_piped&do"],[/do@B/,"keyword.do","@>_do&do"]],do_start:[A(null,-1,-1),[/\(/,"(",{switchTo:"@_do_params"}],[/./,"@rematch",{switchTo:"@_do"}]],do_piped:[A(null,-1,-1),[/\s*\|/,"args.open",{switchTo:"@_do_piped_params"}],[/./,"@rematch",{switchTo:"@_do"}]],_do_piped_params:[[/\|/,"args.close",{switchTo:"@_do"}],"params_"],_do_params:[[/\)/,")",{switchTo:"@_do"}],"params_"],_do:[A(2,-1,0),[/(\}|\)|\])/,"@rematch","@pop"],"block_"],class_:[[/(extend)(?=\s+class )/,"keyword.$1"],[/(global)(?=\s+class )/,"keyword.$1"],[/(class)(\s)(@id)/,["keyword.$1","white.$1name","entity.name.class.decl-const","@class_start="]],[/(class)(?=\n)/,"keyword.$1","@>_class&class="]],class_start:[[/(\s+\<\s+)(@id)/,["keyword.extends","identifier.superclass"]],[/@comment/,"comment"],[/^/,"@rematch",{switchTo:"@>_class&class="}]],tagclass_:[[/(extend)(?=\s+tag )/,"keyword.$1"],[/(global)(?=\s+tag )/,"keyword.$1"],[/(tag)(\s)(@constant)/,["keyword.tag","white.tagname","entity.name.component.local","@tagclass_start="]],[/(tag)(\s)(@id)/,["keyword.tag","white.tagname","entity.name.component.global","@tagclass_start="]]],tagclass_start:[[/(\s+\<\s+)(@id)/,["keyword.extends","identifier.superclass"]],[/@comment/,"comment"],[/^/,"@rematch",{switchTo:"@>_tagclass&component="}]],import_:[[/(import)(?=\s+['"])/,"keyword.import","@>import_source"],[/(import)(\s+type)(?=\s[\w\$\@\{])/,["keyword.import","keyword.type","@>import_body&-_imports=decl-import/part"]],[/(import)@B/,"keyword.import","@>import_body&-_imports=decl-import/part"]],import_body:[A(null,-1,0),[/(@esmIdentifier)( +from)/,["identifier.$F.default","keyword.from",{switchTo:"@import_source"}]],[/(\*)(\s+as\s+)(@esmIdentifier)(\s+from)/,["keyword.star","keyword.as","identifier.$F.ns","keyword.from",{switchTo:"@import_source"}]],[/(@esmIdentifier)(\s*,\s*)(\*)(\s+as\s+)(@esmIdentifier)(from)/,["identifier.$F.default","delimiter.comma","keyword.star","keyword.as","identifier.$F.ns","keyword.from",{switchTo:"@import_source"}]],[/\ *from/,"keyword.from",{switchTo:"@import_source"}],[/\{/,"specifiers.{","@esm_specifiers/part"],[/(@esmIdentifier)/,"identifier.$F",{switchTo:"@/delim"}],[/\s*\,\s*/,"delimiter.comma",{switchTo:"@/part"}],"comma_","common_"],import_source:[A(null,-1,0),[/["']/,"path.open","@_path=$#"],Le],export_:[[/(export)( +)(default)@B/,["keyword.export","white","keyword.default"]],[/(export)(?= +(let|const|var|class|tag)@B)/,"keyword.export"],[/(export)( +)(global)@B/,["keyword.export","white","keyword.global"]],[/(export)(\s+\*\s+)(from)@B/,["keyword.export","operator.star","keyword.from","@>import_source"]],[/(export)@B/,"keyword.export","@>export_body"]],export_body:[A(null,-1,0),[/(\*)(\s+as\s+)(@esmIdentifier)/,["keyword.star","keyword.as","identifier.const.export"]],[/(@esmIdentifier)(\s+as\s+)(default)/,["alias","keyword.as","alias.default"]],[/(@esmIdentifier)(\s+as\s+)(@esmIdentifier)/,["alias","keyword.as","identifier.const.export"]],[/from/,"keyword.from",{switchTo:"@import_source"}],[/\{/,"{","@esm_specifiers=export/part"],[/(@esmIdentifier)/,"identifier.const.export"],[/\*/,"operator.star"],"comma_","common_"],esm_specifiers:[[/\}/,"}","@pop"],[/(@esmIdentifier)(\s+as\s+)(@esmIdentifier)/,["alias","keyword.as","identifier.const.$F",{switchTo:"@/delim"}]],[/@esmIdentifier/,{cases:{"$/==part":{token:"identifier.const.$S4",switchTo:"@/delim"},"@default":{token:"invalid"}}}],[/\s*\,\s*/,"delimiter.comma",{switchTo:"@/part"}],"whitespace"],_path:[[/[^"'\`\{\\]+/,"path"],[/@escapes/,"path.escape"],[/\./,"path.escape.invalid"],[/\{/,"invalid"],[/["'`]/,{cases:{"$#==$F":{token:"path.close",next:"@pop"},"@default":"path"}}]],member_:[[/(constructor)@B/,"entity.name.constructor","@>def_params&def/def"],[/(def|get|set)(\s)(@defid)/,["keyword.$1","white.entity","entity.name.$1","@>def_params&$1/$1"]],[/(def|get|set)(\s)(\[)/,["keyword.$1","white.entity","$$","@>def_dynamic_name/$1"]]],func_:[[/export(?=\s+(get|set|def|global) )/,"keyword.export"],[/global(?=\s+(get|set|def) )/,"keyword.global"],[/(def)(\s)(@id)(\.)(@defid)/,["keyword.$1","white.entity","identifier.target","operator","entity.name.def","@>def_params&$1/$1"]],[/(def)(\s)(@defid)/,["keyword.$1","white.entity","entity.name.function.decl-const-func","@>def_params&$1/$1"]]],flow_:[[/(if|else|elif|unless)(?=\s|$)/,["keyword.$1","@flow_start=$1"]]],flow_start:[A({switchTo:"@>_flow&$F"},-1,-1),[/[ \t]+/,"white"],"expr_"],for_:[[/for(?: own)?@B/,"keyword.$#","@for_start&forscope=decl-for"]],while_:[[/(while|until)@B/,"keyword.$#","@>while_body"]],while_body:[A(2,-1,0),"block_"],for_start:[A({switchTo:"@>for_body"},-1,-1),[/\[/,"array.[","@array_var_body"],[/\{/,"object.{","@object_body"],[/(@variable)/,"identifier.$F"],[/(\s*\,\s*)/,"separator","@=decl-for-index"],[/\s(in|of)@B/,"keyword.$1",{switchTo:"@>for_source="}],[/[ \t]+/,"white"],"type_"],for_source:[A({switchTo:"@>for_body"},-1,{switchTo:"@for_body"}),"expr_",[/[ \t]+/,"white"]],for_body:[A(2,-1,0),"block_"],decorator_:[[/(@decid)(\()/,["decorator","$2","@_decorator_params"]],[/(@decid)/,"decorator"]],_decorator_params:[[/\)/,")","@pop"],"params_"],field_:[[/((?:lazy )?)((?:static )?)(const|let|attr)(?=\s|$)/,["keyword.lazy","keyword.static","keyword.$1","@_vardecl=field-$3"]],[/(static\s+)(?=@fieldid)/,"keyword.static"],[/(@fieldid)(?=$)/,"entity.name.field"],[/(@fieldid)/,["entity.name.field","@_field_1"]]],_field_1:[A(null,-1,-1),"type_",[/(\s*=)(?!\=)/,["operator.assign","@>_field_value&field"]],[/(\s*(?:\@)set\s*)/,["keyword.spy","@>_def&spy"]]],_field_value:[A(2,-1,0),"block_",[/(\s*(?:\@)set\s*)/,["@rematch","@pop"]]],var_:[[/((?:export )?)(const|let)(?=\s[\[\{\$a-zA-Z]|\s*$)/,["keyword.export","keyword.$1","@_vardecl=decl-$2"]],[/((?:export )?)(const|let)(?=\s|$)/,["keyword.export","keyword.$1"]]],inline_var_:[[/(const|let)(?=\s[\[\{\$a-zA-Z]|\s*$)/,["keyword.$1","@inline_var_body=decl-$1"]]],string_:[[/"""/,"string",'@_herestring="""'],[/'''/,"string","@_herestring='''"],[/["'`]/,"string.open","@_string=$#"]],number_:[[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[b][01_]+/,"number.binary"],[/0[o][0-9_]+/,"number.octal"],[/(\d+)([a-z]+|\%)/,["number","unit"]],[/(\d*\.\d+(?:[eE][\-+]?\d+)?)([a-z]+|\%)/,["number.float","unit"]],[/\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d[\d_]*\.\d[\d_]*([eE][\-+]?\d+)?/,"number.float"],[/\d[\d_]*/,"number.integer"],[/0[0-7]+(?!\d)/,"number.octal"],[/\d+/,"number"]],_string:[[/[^"'\`\{\\]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\{/,{cases:{"$F=='":"string","@default":{token:"string.bracket.open",next:"@interpolation_body"}}}],[/["'`]/,{cases:{"$#==$F":{token:"string.close",next:"@pop"},"@default":"string"}}],[/#/,"string"]],_herestring:[[/("""|''')/,{cases:{"$1==$F":{token:"string",next:"@pop"},"@default":"string"}}],[/[^#\\'"\{]+/,"string"],[/['"]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\{/,{cases:{'$F=="""':{token:"string",next:"@interpolation_body"},"@default":"string"}}],[/#/,"string"]],interpolation_body:[[/\}/,"string.bracket.close","@pop"],"expr_"],_class:[A(Ir,-1,0),"css_","member_","comment_","decorator_",[/(get|set|def|static|prop|attr)@B/,"keyword.$0"],"field_","common_"],_tagclass:["_class",[/(?=\<self)/,"entity.name.def.render","@_render&def"]],def_params:[[/\(/,"(","@def_parens"],[/^/,"@rematch",{switchTo:"@_def"}],[/do@B/,"keyword.do",{switchTo:"@_def"}],"params_",[/@comment/,"comment"]],def_parens:[[/\)/,")","@pop"],"params_"],def_dynamic_name:[["]",{token:"square.close",switchTo:"@def_params&$/"}],"expr_"],_render:[A(2,-1,-1),"block_"],_def:[A(2,-1,0),"block_"],_flow:[A(2,-1,0),"block_"],_varblock:[A(1,-1,-1),[/\[/,"array.[","@array_var_body"],[/\{/,"object.{","@object_body"],[/(@variable)/,"identifier.$F"],[/\s*\,\s*/,"separator"],[/(\s*\=\s*)(?=(for|while|until|if|unless|try)\s)/,"operator","@pop"],[/(\s*\=\s*)/,"operator","@var_value="],"type_",[/#(\s.*)?\n?$/,"comment"]],_vardecl:[A(null,-1,-1),[/\[/,"array.[","@array_var_body"],[/\{/,"object.{","@object_body"],[/(@variable)(?=\n|,|$)/,"identifier.$F","@pop"],[/(@variable)/,"identifier.$F"],[/(\s*\=\s*)/,"operator.declval",{switchTo:"@var_value&value="}],"type_"],array_var_body:[[/\]/,"]","@pop"],[/\{/,"object.{","@object_body"],[/\[/,"array.[","@array_var_body"],"spread_",[/(@variable)/,"identifier.$F"],[/(\s*\=\s*)/,"operator.assign","@array_var_body_value="],[",","delimiter"]],array_var_body_value:[[/(?=,|\)|]|})/,"delimiter","@pop"],"expr_"],inline_var_body:[[/\[/,"array.[","@array_var_body"],[/\{/,"object.{","@object_body"],[/(@variable)/,"identifier.$F"],[/(\s*\=\s*)/,"operator","@pop"],"type_"],var_value:[[/(?=,|\)|]|})/,"delimiter","@pop"],A({switchTo:"@>block"},-1,-1),"block_"],common_:[[/^(\t+)(?=\n|$)/,"white.tabs"],"whitespace"],comma_:[[/\s*,\s*/,"delimiter.comma"]],spread_:[[/\.\.\./,"operator.spread"]],type_:[[/\\/,"@rematch","@_type&-_type/0"]],_type:[A(-1,-1,-1),[/\\/,"delimiter.type.prefix"],[/\[/,"delimiter.type","@/]"],[/\(/,"delimiter.type","@/)"],[/\{/,"delimiter.type","@/}"],[/\</,"delimiter.type","@/>"],[/\|/,"delimiter.type.union"],[/\,|\s|\=|\./,{cases:{"$/==0":{token:"@rematch",next:"@pop"},"@default":"type"}}],[/[\]\}\)\>]/,{cases:{"$#==$/":{token:"delimiter.type",next:"@pop"},"@default":{token:"@rematch",next:"@pop"}}}],[/[\w\-\$]+/,"type"]],css_:[[/global(?=\s+css@B)/,"keyword.$#"],[/css(?:\s+)?/,"keyword.css","@>css_selector&rule-_sel"]],sel_:[[/(\%)((?:@id)?)/,["style.selector.mixin.prefix","style.selector.mixin"]],[/(\@)(\.{0,2}[\w\-\<\>\!]*\+?)/,"style.selector.modifier"],[/(\@)(\.{0,2}[\w\-\<\>\!]*)/,"style.selector.modifier"],[/\.([\w\-]+)/,"style.selector.class-name"],[/\#([\w\-]+)/,"style.selector.id"],[/([\w\-]+)/,"style.selector.element"],[/(>+|~|\+)/,"style.selector.operator"],[/(\*+)/,"style.selector.element.any"],[/(\$)((?:@id)?)/,["style.selector.reference.prefix","style.selector.reference"]],[/\&/,"style.selector.context"],[/\(/,"delimiter.selector.parens.open","@css_selector_parens"],[/\[/,"delimiter.selector.attr.open","@css_selector_attr"],[/\s+/,"white"],[/,/,"style.selector.delimiter"],[/#(\s.*)?\n?$/,"comment"]],css_props:[A(null,-1,0),[/(?=@cssPropertyKey)/,"","@css_property&-_styleprop-_stylepropkey"],[/#(\s.*)?\n?$/,"comment"],[/(?=[\%\*\w\&\$\>\.\[\@\!]|\#[\w\-])/,"","@>css_selector&rule-_sel"],[/\s+/,"white"]],css_selector:[A({switchTo:"@css_props"},-1,{token:"@rematch",switchTo:"@css_props&_props"}),[/(\}|\)|\])/,"@rematch","@pop"],[/(?=\s*@cssPropertyKey)/,"",{switchTo:"@css_props&_props"}],[/\s*#\s/,"@rematch",{switchTo:"@css_props&_props"}],"sel_"],css_inline:[[/\]/,"style.close","@pop"],[/(?=@cssPropertyKey)/,"","@css_property&-_styleprop-_stylepropkey"],[/(?=@cssPropertyPath\])/,"","@css_property&-_styleprop-_stylepropkey"]],css_selector_parens:[[/\)/,"delimiter.selector.parens.close","@pop"],"sel_"],css_selector_attr:[[/\]/,"delimiter.selector.parens.close","@pop"],"sel_"],css_property:[A(null,-1,-1),[/\]/,"@rematch","@pop"],[/(\d+)(@id)/,["style.property.unit.number","style.property.unit.name"]],[/((--|\$)@id)/,"style.property.var"],[/(-*@id)/,"style.property.name"],[/@cssModifier/,"style.property.modifier"],[/(\@+|\.+)(@id\-?)/,["style.property.modifier.start","style.property.modifier"]],[/\+(@id)/,"style.property.scope"],[/\s*([\:\=]\s*)(?=@br|$)/,"style.property.operator",{switchTo:"@>css_multiline_value&_stylevalue"}],[/\s*([\:\=]\s*)/,"style.property.operator",{switchTo:"@>css_value&_stylevalue"}]],css_value_:[[/(x?xs|sm\-?|md\-?|lg\-?|xx*l|\dxl|hg|x+h)\b/,"style.value.size"],[/\#[0-9a-fA-F]+/,"style.value.color.hex"],[/((--|\$)@id)/,"style.value.var"],[/(@optid)(\@+|\.+)(@optid)/,["style.property.name","style.property.modifier.prefix","style.property.modifier"]],"op_","string_","number_","comment_",[/\s+/,"style.value.white"],[/\(/,"delimiter.style.parens.open","@css_expressions"],[/\{/,"delimiter.style.curly.open","@css_interpolation&-_styleinterpolation"],[/(@id)/,"style.value"]],css_value:[A({switchTo:"@>css_multiline_value"},-1,-1),[/@cssPropertyKey/,"@rematch","@pop"],[/;/,"style.delimiter","@pop"],[/(\}|\)|\])/,"@rematch","@pop"],"css_value_"],css_multiline_value:[A(null,-1,0),[/@cssPropertyKey/,"invalid"],"css_value_"],css_expressions:[[/\)/,"delimiter.style.parens.close","@pop"],[/\(/,"delimiter.style.parens.open","@css_expressions"],"css_value"],css_interpolation:[[/\}/,"delimiter.style.curly.close","@pop"],"expr_"],expressions:[[/\,/,"delimiter.comma"]],whitespace:[[/[\r\n]+/,"br"],[/[ \t\r\n]+/,"white"]],space:[[/[ \t]+/,"white"]],tag_:[[/(\s*)(<)(?=\.)/,["white","tag.open","@_tag/flag"]],[/(\s*)(<)(?=\w|\{|\[|\%|\#|>)/,["white","tag.open","@_tag/name"]]],tag_content:[A(2,-1,0),[/\)|\}|\]/,"@rematch","@pop"],"common_","flow_","var_","for_","css_","expr_","do_"],tag_children:[],_tag:[[/\/>/,"tag.close","@pop"],[/>/,"tag.close",{switchTo:"@>tag_content=&-_tagcontent"}],[/>/,"tag.close","@pop"],[/(\-?\d+)/,"tag.$S3"],[/(\%)(@id)/,["tag.mixin.prefix","tag.mixin"]],[/\#@id/,"tag.id"],[/\./,{cases:{"$/==event":{token:"tag.event-modifier.start",switchTo:"@/event-modifier"},"$/==event-modifier":{token:"tag.event-modifier.start",switchTo:"@/event-modifier"},"$/==modifier":{token:"tag.modifier.start",switchTo:"@/modifier"},"$/==rule":{token:"tag.rule-modifier.start",switchTo:"@/rule-modifier"},"$/==rule-modifier":{token:"tag.rule-modifier.start",switchTo:"@/rule-modifier"},"@default":{token:"tag.flag.start",switchTo:"@/flag"}}}],[/(\$@id)/,{cases:{"$/==name":"tag.reference","@default":"tag.$/"}}],[/\{/,"tag.$/.interpolation.open","@_tag_interpolation"],[/\[/,"style.open","@css_inline"],[/(\s*\=\s*)/,"operator.equals.tagop.tag-$/","@_tag_value&-value"],[/\:/,{token:"tag.event.start",switchTo:"@/event"}],"tag_event_",[/(\-?@tagIdentifier)(\:@id)?/,{cases:{"$/==attr":{token:"@rematch",next:"@_tag_attr&-_tagattr"},"@default":{token:"tag.$/"}}}],[/\(/,{token:"tag.$/.parens.open",next:"@_tag_parens/0"}],[/\s+/,{token:"tag.white",switchTo:"@/attr"}],"comment_"],tag_event_:[[/(?=\@@optid)/,"","@_tag_event&-_listener"]],_tag_part:[[/\)|\}|\]|\>/,"@rematch","@pop"]],_tag_event:["_tag_part",[/(\@)(@optid)/,["tag.event.start","tag.event.name"]],[/(\.)(@optid)/,["tag.event-modifier.start","tag.event-modifier.name"]],[/\(/,{token:"tag.$/.parens.open",next:"@_tag_parens/0"}],[/(\s*\=\s*)/,"operator.equals.tagop.tag-$/","@_tag_value&handler"],[/\s+/,"@rematch","@pop"]],tag_attr_:[[/(?=@tagIdentifier(\:@id)?)/,"","@_tag_attr&-_attribute"]],_tag_attr:["_tag_part",[/(\-?@tagIdentifier)(\:@id)?/,"tag.attr"],[/\.(@optid)/,"tag.event-modifierzz"],[/\(/,{token:"tag.parens.open.$/",next:"@_tag_parens/0"}],[/(\s*\=\s*)/,"operator.equals.tagop.tag-$/","@_tag_value&-tagattrvalue"],[/\s+/,"@rematch","@pop"]],_tag_interpolation:[[/\}/,"tag.$/.interpolation.close","@pop"],"expr_",[/\)|\]/,"invalid"]],_tag_parens:[[/\)/,"tag.$/.parens.close","@pop"],"arglist_",[/\]|\}/,"invalid"]],_tag_value:[[/(?=(\/?\>|\s))/,"","@pop"],"attr_expr_"],regexp_:[[/\/(?!\ )(?=([^\\\/]|\\.)+\/)/,{token:"regexp.slash.open",bracket:"@open",next:"@_regexp"}],[/\/\/\//,{token:"regexp.slash.open",bracket:"@open",next:"@_hereregexp"}],[/(\/)(\/)/,["regexp.slash.open","regexp.slash.close"]]],_regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@_regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\:/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)(\w+)/,[{token:"regexp.slash.close"},{token:"regexp.flags",next:"@pop"}]],["/",{token:"regexp.slash.close",next:"@pop"}],[/./,"regexp.invalid"]],_regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,"regexp.escape.control","@pop"]],_hereregexp:[[/[^\\\/#]/,"regexp"],[/\\./,"regexp"],[/#.*$/,"comment"],["///[igm]*","regexp","@pop"],[/\//,"regexp"],"comment_"]};function be(s){let e=["$S1","$S2","$S3","$S4","$S5","$S6"];if(s.match(/\@(pop|push|popall)/)||(s[0]=="@"&&(s=s.slice(1)),s.indexOf(".")>=0))return s;s=_e(s),s[0]==">"&&(e[1]="$S6 ",s=s.slice(1));for(let t=0,r=I(s.split(/(?=[\/\&\=\*])/)),n=r.length;t<n;t++){let i=r[t];i[0]=="&"?i[1]=="-"||i[1]=="_"?e[2]="$S3"+i.slice(1):e[2]="$S3-"+i.slice(1):i[0]=="+"?e[3]="$S4-"+i.slice(1):i[0]=="="?e[3]=i.slice(1):i[0]=="/"?e[4]=i.slice(1):i[0]=="*"?e[5]=i.slice(1):e[0]=i}return e.join(".")}function _e(s){let e=s;return s=s.replace("$/","$S5"),s=s.replace("$F","$S4"),s=s.replace("$&","$S3"),s=s.replace("$I","$S2"),s=s.replace("$T","$S2"),s}function Fe(s,e){if(typeof s=="string"&&(s={token:s}),s&&s.token!=null)s.token=_e(s.token),typeof e=="string"?s.next=e:e&&Object.assign(s,e),s.next&&(s.next=be(s.next)),s.switchTo&&(s.switchTo=be(s.switchTo));else if(s&&s.cases){let t={};for(let r=s.cases,n=0,i=Object.keys(r),l=i.length,o,p;n<l;n++){o=i[n],p=r[o];let c=_e(o);t[c]=Fe(p)}s.cases=t}else if(R(s,Array)){let t=[],r=null;for(let n=0,i=I(s),l=i.length;n<l;n++){let o=i[n];o[0]=="@"&&n==s.length-1&&r&&(o={next:o}),typeof o=="object"?o.token!=null||o.cases?t.push(r=Object.assign({},o)):Object.assign(r,o):typeof o=="string"&&t.push(r={token:_e(o)})}s=t}if(R(s,Array))for(let t=0,r=I(s),n=r.length;t<n;t++){let i=r[t];i.token&&i.token.indexOf("$$")>=0&&(i.token=i.token.replace("$$","$"+(t+1))),i.next&&(i.next=be(i.next)),i.switchTo&&(i.switchTo=be(i.switchTo))}return s}for(let s=0,e=Object.keys(Pe),t=e.length,r,n;s<t;s++){r=e[s],n=Pe[r];let i=0;for(;i<n.length;){let l=n[i];if(R(l[0],Array)){n.splice(i,1,...l);continue}else typeof l=="string"?n[i]={include:l}:R(l[1],Array)?l[1]=Fe(l[1]):R(l,Array)&&l.splice(1,2,Fe(l[1],l[2]));i++}}var Re={defaultToken:"invalid",ignoreCase:!1,tokenPostfix:"",brackets:[{open:"{",close:"}",token:"bracket.curly"},{open:"[",close:"]",token:"bracket.square"},{open:"(",close:")",token:"bracket.parenthesis"}],keywords:["def","and","or","is","isnt","not","on","yes","@","no","off","true","false","null","this","self","as","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","elif","else","switch","for","while","do","try","catch","finally","class","extends","super","undefined","then","unless","until","loop","of","by","when","tag","prop","attr","export","import","extend","var","let","const","require","isa","await"],boolean:["true","false","yes","no","undefined","null"],operators:["=","!","~","?",":","!!","??","&","|","^","%","<<","!&",">>",">>>","+=","-=","*=","/=","&=","|=","??=","^=","%=","~=","<<=",">>=",">>>=","..","...","||=","&&=","**=","**","|=?","~=?","^=?","=?","and","or"],assignments:["=","|=?","~=?","^=?","=?","^=","%=","~=","<<=",">>=",">>>=","||=","&&=","??=","+=","-=","*=","/=","&=","|=","**="],logic:[">","<","==","<=",">=","!=","&&","||","===","!=="],ranges:["..","..."],spread:["..."],dot:["."],access:[".",".."],math:["+","-","*","/","++","--"],unspaced_ops:mn("... . .. + * ++ --"),comment:/#(\s.*)?(\n|$)/,symbols:/[=><!~?&%|+\-*\^,]+/,escapes:/\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,postaccess:/(:(?=\w))?/,ivar:/\@[a-zA-Z_]\w*/,B:/(?=\s|$)/,br:/[\r\n]+/,constant:/[A-Z][\w\$]*(?:\-+[\w\$]+)*/,id:/[A-Za-z_\$][\w\$]*(?:\-+[\w\$]+)*\??/,plainid:/[A-Za-z_\$][\w\$]*(?:\-+[\w\$]+)*\??/,fieldid:/[\@\#]*@plainid/,propid:/[\@\#]*@plainid/,defid:/[\@\#]*@plainid/,decid:/\@@plainid/,symid:/\#+@plainid/,symref:/\#\#@plainid/,optid:/(?:@id)?/,esmIdentifier:/[A-Za-z_\$\@][\w\$]*(?:\-+[\w\$]+)*\??/,propertyPath:/(?:[A-Za-z_\$][A-Za-z\d\-\_\$]*\.)?(?:[A-Za-z_\$][A-Za-z\d\-\_\$]*)/,tagNameIdentifier:/(?:[\w\-]+\:)?\w+(?:\-\w+)*/,variable:/[\w\$]+(?:-[\w\$]*)*\??/,varKeyword:/var|let|const/,tagIdentifier:/-*[a-zA-Z][\w\-]*/,implicitCall:/(?!\s(?:and|or|is|isa)\s)(?=\s[\w\'\"\/\[\{])/,cssModifier:/(?:\@+[\<\>\!]?[\w\-]+\+?|\.+@id\-?)/,cssPropertyPath:/[\@\.]*[\w\-\$]+(?:[\@\.]+[\w\-\$]+)*/,cssVariable:/(?:--|\$)[\w\-\$]+/,cssPropertyName:/[\w\-\$]+/,cssPropertyKey:/(?:@cssPropertyName(?:@cssModifier)*|@cssModifier+)(?:\s*[\:\=])/,cssUpModifier:/\.\.[\w\-\$]+/,cssIsModifier:/\.[\w\-\$]+/,regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:Pe};function dn(s){return Array.isArray(s)}function Or(s){return!dn(s)}function je(s){return typeof s=="string"}function Ar(s){return!je(s)}function Er(s){return!s}function Y(s,e){return s.ignoreCase&&e?e.toLowerCase():e}function Ve(s){return s.replace(/[&<>'"_]/g,"-")}function Mr(s,e){console.log(`${s.languageId}: ${e}`)}function M(s,e){return new Error(`${s.languageId}: ${e}`)}var zr={};function gn(s){let e=[],t=0,r=s.length,n="",i=0;for(;t<r;){let l=s[t++];if(l=="$"){let o=s[t++];if(o=="$"){n+="$";continue}n&&e.push(n),n="",o=="#"?e.push(0):o=="S"?e.push(parseInt(s[t++])+100):e.push(parseInt(o)+1)}else n+=l}return n&&e.push(n),zr[s]=e,e}function Z(s,e,t,r,n){let i=null,l=zr[e]||gn(e),o="";for(let p=0;p<l.length;p++){let c=l[p];typeof c=="string"?o+=c:c>100?(i===null&&(i=n.split(".")),o+=i[c-101]||""):c===100?o+=n:c===0?o+=t:c>0&&(o+=r[c-1])}return o}var Ne={};function xe(s,e){let t=e;if(Ne[t])return s.tokenizer[Ne[t]];for(;t&&t.length>0;){let r=s.tokenizer[t];if(r)return Ne[e]=t,r;let n=t.lastIndexOf(".");n<0?t=null:t=t.substr(0,n)}return null}function Br(s,e){let t=e;for(;t&&t.length>0;){if(s.stateNames[t])return!0;let n=t.lastIndexOf(".");n<0?t=null:t=t.substr(0,n)}return!1}function bn(s,e){if(!e||!Array.isArray(e))return!1;for(let t of e)if(!s(t))return!1;return!0}function Pr(s,e){return typeof s=="boolean"?s:e}function Fr(s,e){return typeof s=="string"?s:e}function _n(s){let e={};for(let t of s)e[t]=!0;return e}function Rr(s,e=!1){e&&(s=s.map(function(r){return r.toLowerCase()}));let t=_n(s);return e?function(r){return t[r.toLowerCase()]!==void 0&&t.hasOwnProperty(r.toLowerCase())}:function(r){return t[r]!==void 0&&t.hasOwnProperty(r)}}function De(s,e){let t=0;for(;e.indexOf("@")>=0&&t<5;)t++,e=e.replace(/@(\w+)/g,function(r,n){let i="";if(typeof s[n]=="string")i=s[n];else if(s[n]&&s[n]instanceof RegExp)i=s[n].source;else throw s[n]===void 0?M(s,"language definition does not contain attribute '"+n+"', used at: "+e):M(s,"attribute reference '"+n+"' must be a string, used at: "+e);return Er(i)?"":"(?:"+i+")"});return new RegExp(e,s.ignoreCase?"i":"")}function xn(s,e,t,r){if(r<0)return s;if(r<e.length)return e[r];if(r>=100){r=r-100;let n=t.split(".");if(n.unshift(t),r<n.length)return n[r]}return null}function kn(s,e,t,r){let n=-1,i=t,l=t.match(/^\$(([sS]?)(\d\d?)|#)(.*)$/);l&&(l[3]&&(n=parseInt(l[3]),l[2]&&(n=n+100)),i=l[4]);let o="~",p=i;!i||i.length===0?(o="!=",p=""):/^\w*$/.test(p)?o="==":(l=i.match(/^(@|!@|~|!~|==|!=)(.*)$/),l&&(o=l[1],p=l[2]));let c;if((o==="~"||o==="!~")&&/^(\w|\|)*$/.test(p)){let a=Rr(p.split("|"),s.ignoreCase);c=function(f){return o==="~"?a(f):!a(f)}}else if(o==="@"||o==="!@"){let a=s[p];if(!a)throw M(s,"the @ match target '"+p+"' is not defined, in rule: "+e);if(!bn(function(u){return typeof u=="string"},a))throw M(s,"the @ match target '"+p+"' must be an array of strings, in rule: "+e);let f=Rr(a,s.ignoreCase);c=function(u){return o==="@"?f(u):!f(u)}}else if(o==="~"||o==="!~")if(p.indexOf("$")<0){let a=De(s,"^"+p+"$");c=function(f){return o==="~"?a.test(f):!a.test(f)}}else c=function(a,f,u,h){return De(s,"^"+Z(s,p,f,u,h)+"$").test(a)};else if(p.indexOf("$")<0){let a=Y(s,p);c=function(f){return o==="=="?f===a:f!==a}}else{let a=Y(s,p);c=function(f,u,h,v,S){let E=Z(s,a,u,h,v);return o==="=="?f===E:f!==E}}return n===-1?{name:t,value:r,test:function(a,f,u,h){return c(a,a,f,u,h)}}:{name:t,value:r,test:function(a,f,u,h){let v=xn(a,f,u,n);return c(v||"",a,f,u,h)}}}function Ke(s,e,t){if(t){if(typeof t=="string")return t;if(t.token||t.token===""){if(typeof t.token!="string")throw M(s,"a 'token' attribute must be of type string, in rule: "+e);{let r={token:t.token};if(t.token.indexOf("$")>=0&&(r.tokenSubst=!0),typeof t.bracket=="string")if(t.bracket==="@open")r.bracket=1;else if(t.bracket==="@close")r.bracket=-1;else throw M(s,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+e);if(t.next){if(typeof t.next!="string")throw M(s,"the next state must be a string value in rule: "+e);{let n=t.next;if(!/^(@pop|@push|@popall)$/.test(n)&&(n[0]==="@"&&(n=n.substr(1)),n.indexOf("$")<0&&!Br(s,Z(s,n,"",[],""))))throw M(s,"the next state '"+t.next+"' is not defined in rule: "+e);r.next=n}}return typeof t.goBack=="number"&&(r.goBack=t.goBack),typeof t.switchTo=="string"&&(r.switchTo=t.switchTo),typeof t.log=="string"&&(r.log=t.log),typeof t._push=="string"&&(r._push=t._push),typeof t._pop=="string"&&(r._pop=t._pop),typeof t.mark=="string"&&(r.mark=t.mark),typeof t.fn=="string"&&(r.fn=t.fn),typeof t.nextEmbedded=="string"&&(r.nextEmbedded=t.nextEmbedded,s.usesEmbedded=!0),r}}else if(Array.isArray(t)){let r=[];for(let n=0,i=t.length;n<i;n++)r[n]=Ke(s,e,t[n]);return{group:r}}else if(t.cases){let r=[];for(let i in t.cases)if(t.cases.hasOwnProperty(i)){let l=Ke(s,e,t.cases[i]);i==="@default"||i==="@"||i===""?r.push({test:void 0,value:l,name:i}):i==="@eos"?r.push({test:function(o,p,c,a){return a},value:l,name:i}):r.push(kn(s,e,i,l))}let n=s.defaultToken;return{test:function(i,l,o,p){for(let c of r)if(!c.test||c.test(i,l,o,p))return c.value;return n}}}else throw M(s,"an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: "+e)}else return{token:""}}var qe=class{constructor(e){this.regex=new RegExp("");this.action={token:""};this.matchOnlyAtLineStart=!1;this.name="";this.name=e,this.stats={time:0,count:0,hits:0}}setRegex(e,t){let r;if(typeof t=="string")r=t;else if(t instanceof RegExp)r=t.source;else throw M(e,"rules must start with a match string or regular expression: "+this.name);r.length==2&&r[0]=="\\"&&/[\{\}\(\)\[\]]/.test(r[1])&&(this.string=r[1]),this.matchOnlyAtLineStart=r.length>0&&r[0]==="^",this.name=this.name+": "+r,this.regex=De(e,"^(?:"+(this.matchOnlyAtLineStart?r.substr(1):r)+")")}setAction(e,t){this.action=Ke(e,this.name,t)}};function ke(s,e){if(!e||typeof e!="object")throw new Error("Monarch: expecting a language definition object");let t={};t.languageId=s,t.noThrow=!1,t.maxStack=100,t.start=typeof e.start=="string"?e.start:null,t.ignoreCase=Pr(e.ignoreCase,!1),t.tokenPostfix=Fr(e.tokenPostfix,"."+t.languageId),t.defaultToken=Fr(e.defaultToken,"source"),t.usesEmbedded=!1;let r=e;r.languageId=s,r.ignoreCase=t.ignoreCase,r.noThrow=t.noThrow,r.usesEmbedded=t.usesEmbedded,r.stateNames=e.tokenizer,r.defaultToken=t.defaultToken;function n(l,o,p){for(let c of p){let a=c.include;if(a){if(typeof a!="string")throw M(t,"an 'include' attribute must be a string at: "+l);if(a[0]==="@"&&(a=a.substr(1)),!e.tokenizer[a])throw M(t,"include target '"+a+"' is not defined at: "+l);n(l+"."+a,o,e.tokenizer[a])}else{let f=new qe(l);if(Array.isArray(c)&&c.length>=1&&c.length<=3)if(f.setRegex(r,c[0]),c.length>=3)if(typeof c[1]=="string")f.setAction(r,{token:c[1],next:c[2]});else if(typeof c[1]=="object"){let u=c[1];u.next=c[2],f.setAction(r,u)}else throw M(t,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+l);else f.setAction(r,c[1]);else{if(!c.regex)throw M(t,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+l);c.name&&typeof c.name=="string"&&(f.name=c.name),c.matchOnlyAtStart&&(f.matchOnlyAtLineStart=Pr(c.matchOnlyAtLineStart,!1)),f.setRegex(r,c.regex),f.setAction(r,c.action)}o.push(f)}}}if(!e.tokenizer||typeof e.tokenizer!="object")throw M(t,"a language definition must define the 'tokenizer' attribute as an object");t.tokenizer=[];for(let l in e.tokenizer)if(e.tokenizer.hasOwnProperty(l)){t.start||(t.start=l);let o=e.tokenizer[l];t.tokenizer[l]=new Array,n("tokenizer."+l,t.tokenizer[l],o)}if(t.usesEmbedded=r.usesEmbedded,e.brackets){if(!Array.isArray(e.brackets))throw M(t,"the 'brackets' attribute must be defined as an array")}else e.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];let i=[];for(let l of e.brackets){let o=l;if(o&&Array.isArray(o)&&o.length===3&&(o={token:o[2],open:o[0],close:o[1]}),o.open===o.close)throw M(t,"open and close brackets in a 'brackets' attribute must be different: "+o.open+`
hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof o.open=="string"&&typeof o.token=="string"&&typeof o.close=="string")i.push({token:o.token+t.tokenPostfix,open:Y(t,o.open),close:Y(t,o.close)});else throw M(t,"every element in the 'brackets' array must be a '{open,close,token}' object or array")}return t.brackets=i,t.noThrow=!0,t}var K=class{constructor(e,t,r){this.offset=e|0,this.type=t,this.language=r,this.kind=0,this.mods=0,this.value=null,this.stack=null}toString(){return this.value||""}get span(){return{offset:this.offset,length:this.value?this.value.length:0}}get indent(){return 0}get startOffset(){return this.offset}get endOffset(){return this.offset+(this.value?this.value.length:0)}clone(){let e=new K(this.offset,this.type,this.language);return e.value=this.value,e.stack=this.stack,e}match(e){if(typeof e=="string")if(e.indexOf(" ")>0)e=e.split(" ");else{let t=this.type.indexOf(e);return e[0]=="."?t>=0:t==0}if(e instanceof Array)for(let t of e){let r=this.type.indexOf(t);if(t[0]=="."?r>=0:r==0)return!0}return e instanceof RegExp?e.test(this.type):!1}},we=class{constructor(e,t){this.tokens=e,this.endState=t}};var Nr=10;function fe(s,e){return s.split(".")[e]}var He=class{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(e!==null&&e.depth>=this._maxCacheDepth)return new J(e,t);let r=J.getStackElementId(e);r.length>0&&(r+="|"),r+=t;let n=this._entries[r];return n||(n=new J(e,t),this._entries[r]=n,n)}},se=He;se._INSTANCE=new He(Nr);var J=class{constructor(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(e){let t="";for(;e!==null;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}static _equals(e,t){for(;e!==null&&t!==null;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return e===null&&t===null}get indent(){return this.state.lastIndexOf(" ")-this.state.indexOf(" ")}get scope(){return this.part(2)}get detail(){return this.part(2)}part(e){return this.state.split(".")[e]}equals(e){return J._equals(this,e)}push(e){return se.create(this,e)}pop(){return this.parent}popall(){let e=this;for(;e.parent;)e=e.parent;return e}switchTo(e){return se.create(this.parent,e)}},Ze=class{static create(e){return this._INSTANCE.create(e)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e){if(e!==null&&e.depth>=this._maxCacheDepth)return new oe(e);let t=J.getStackElementId(e),r=this._entries[t];return r||(r=new oe(e),this._entries[t]=r,r)}},ie=Ze;ie._INSTANCE=new Ze(Nr);var oe=class{constructor(e){this.stack=e}clone(){return ie.create(this.stack)}equals(e){return!(!(e instanceof oe)||!this.stack.equals(e.stack))}},Ge=class{constructor(){this._tokens=[],this._language=null,this._lastToken=new K(0,"start","imba"),this._lastTokenType=null}enterMode(e,t){this._language=t}emit(e,t,r){this._lastTokenType;let n=new K(e,t,this._language);return this._lastTokenType=t,this._lastToken=n,this._tokens.push(n),n}finalize(e){return new we(this._tokens,e)}},le=class{constructor(e,t){this._modeId=e,this._lexer=t,this._profile=!1}dispose(){}getLoadStatus(){return{loaded:!0}}getInitialState(){let e=se.create(null,this._lexer.start);return ie.create(e)}tokenize(e,t,r){let n=new Ge,i=this._tokenize(e,t,r,n);return n.finalize(i)}_tokenize(e,t,r,n){return this._myTokenize(e,t,r,n)}_safeRuleName(e){return e?e.name:"(unknown)"}_rescope(e,t,r,n){let i=(e||"").split("-"),l=(t||"").split("-");if(e==t)return;let o=1;for(;i[o]&&i[o]==l[o];)o++;let p=i.length;for(;p>o;)r.push("pop."+i[--p]+"."+p);for(;l.length>o;){let c="push."+l[o++]+"."+(o-1);if(n){let a=fe(n,1);c+="."+a}r.push(c)}}_myTokenize(e,t,r,n){n.enterMode(r,this._modeId);let i=e.length,l=t.stack,o=null,p=0,c=this._profile,a=null,f=!0,u=[],h=0,v=[],S=null,E=-1;for(;f||p<i;){if(h++,h>1e3){if(p==E)throw console.log("infinite recursion",p,i,l,n),"infinite recursion in tokenizer?";E=p,h=0}let y=p,m=l.depth,_=a?a.groups.length:0,w=l.state,x=null,k=null,b=null,z=null;if(a){x=a.matches;let T=a.groups.shift();k=T.matched,b=T.action,z=a.rule,a.groups.length===0&&(a=null)}else{if(!f&&p>=i)break;if(f=!1,v=this._lexer.tokenizer[w],!v&&(v=xe(this._lexer,w),!v))throw M(this._lexer,"tokenizer state is not defined: "+w);let T=e.substr(p);for(let C of v)if(C.string!==void 0){if(T[0]===C.string){x=[C.string],k=C.string,b=C.action;break}}else if(p===0||!C.matchOnlyAtLineStart){if(c){C.stats.count++;let D=performance.now();x=T.match(C.regex),C.stats.time+=performance.now()-D,x&&C.stats.hits++}else x=T.match(C.regex);if(x){k=x[0],b=C.action;break}}}if(x||(x=[""],k=""),b||(p<i&&(x=[e.charAt(p)],k=x[0]),b=this._lexer.defaultToken),k===null)break;for(p+=k.length;Or(b)&&Ar(b)&&b.test;)b=b.test(k,x,w,p===i);let O=null;if(typeof b=="string"||Array.isArray(b))O=b;else if(b.group)O=b.group;else if(b.token!==null&&b.token!==void 0){if(b.tokenSubst?O=Z(this._lexer,b.token,k,x,w):O=b.token,b.goBack&&(p=Math.max(0,p-b.goBack)),b.switchTo&&typeof b.switchTo=="string"){let T=Z(this._lexer,b.switchTo,k,x,w);if(T[0]==="@"&&(T=T.substr(1)),xe(this._lexer,T)){let C=l.scope,D=fe(T,2);C!==D&&this._rescope(C,D,u,T),l=l.switchTo(T)}else throw M(this._lexer,"trying to switch to a state '"+T+"' that is undefined in rule: "+this._safeRuleName(z))}else{if(b.transform&&typeof b.transform=="function")throw M(this._lexer,"action.transform not supported");if(b.next)if(b.next==="@push"){if(l.depth>=this._lexer.maxStack)throw M(this._lexer,"maximum tokenizer stack size reached: ["+l.state+","+l.parent.state+",...]");l=l.push(w)}else if(b.next==="@pop"){if(l.depth<=1)throw M(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(z));{let T=l;l=l.pop();let C=fe(T.state,2),D=fe(l.state,2);C!==D&&this._rescope(C,D,u,l.state)}}else if(b.next==="@popall")l=l.popall();else{let T=Z(this._lexer,b.next,k,x,w);T[0]==="@"&&(T=T.substr(1));let C=fe(T,2);if(xe(this._lexer,T))C!=l.scope&&this._rescope(l.scope||"",C,u,T),l=l.push(T);else throw M(this._lexer,"trying to set a next state '"+T+"' that is undefined in rule: "+this._safeRuleName(z))}}b.log&&typeof b.log=="string"&&Mr(this._lexer,this._lexer.languageId+": "+Z(this._lexer,b.log,k,x,w)),b.mark&&n.emit(y+r,b.mark,l)}if(O===null)throw M(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(z));if(Array.isArray(O)){if(a&&a.groups.length>0)throw M(this._lexer,"groups cannot be nested: "+this._safeRuleName(z));if(x.length!==O.length+1)throw M(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(z));let T=0;for(let C=1;C<x.length;C++)T+=x[C].length;if(T!==k.length)throw M(this._lexer,"with groups, all characters should be matched in consecutive groups in rule: "+this._safeRuleName(z));a={rule:z,matches:x,groups:[]};for(let C=0;C<O.length;C++)a.groups[C]={action:O[C],matched:x[C+1]};p-=k.length;continue}else{if(O==="@rematch"&&(p-=k.length,k="",x=null,O=""),k.length===0)if(i===0||m!==l.depth||w!==l.state||(a?a.groups.length:0)!==_){for(typeof O=="string"&&O&&n.emit(p+r,O,l);u.length>0;)n.emit(p+r,u.shift(),l);continue}else throw M(this._lexer,"no progress in tokenizer in rule: "+this._safeRuleName(z));let T=null;if(je(O)&&O.indexOf("@brackets")===0){let D=O.substr(9),P=wn(this._lexer,k);if(!P)throw M(this._lexer,"@brackets token returned but no bracket defined as: "+k);T=Ve(P.token+D)}else{let D=O===""?"":O+this._lexer.tokenPostfix;T=Ve(D)}let C=n.emit(y+r,T,l);for(C.stack=l,o&&o!=C&&(o.value=e.slice(o.offset-r,y)),o=C;u.length>0;)n.emit(p+r,u.shift(),l)}}return o&&!o.value&&(o.value=e.slice(o.offset-r)),ie.create(l)}};function wn(s,e){if(!e)return null;e=Y(s,e);let t=s.brackets;for(let r of t){if(r.open===e)return{token:r.token,bracketType:1};if(r.close===e)return{token:r.token,bracketType:-1}}return null}var jr=Symbol(),ve=class{constructor(e=null){this[F](e),N(this,jr)}[F](e=null,t=!0,r=!0){this.offset=e?e.offset:void 0,this.text=e?e.text:void 0,this.tokens=e?e.tokens:void 0,this.startState=e?e.startState:void 0,this.endState=e?e.endState:void 0}clone(e=this.offset){let t=[],r=e-this.offset;for(let n=0,i=I(this.tokens),l=i.length;n<l;n++){let o=i[n],p=o.clone();p.offset=o.offset+r,t.push(p)}return new ve({offset:e,startState:this.startState,endState:this.endState,text:this.text,tokens:t})}},$e=ve;(()=>{$(ve,jr,"LexedLine",16)})();var $n=ke("imba",Re),ae=new le("imba",$n);var ue=["comment