UNPKG

pure-regex

Version:

A brave RegExp engine implemented in pure JS / vanilla JavaScript.

1 lines 57.2 kB
var a=this,b=function(){"use strict";var e,r,t=[[13312,19903],[19968,40959],[131072,173791],[173824,177977],[177984,178205],[178208,183969],[183984,191456],[196608,201546],[201552,205743]],a=[64014,64015,64017,64019,64020,64031,64033,64035,64036,[64039,64041],...t],t=[12294,12295,[12321,12329],[12344,12346],[63744,64109],[64112,64217],94180,[94208,100343],[100352,101589],[101632,101640],[110960,111355],[194560,195101],...t],n=[[48,57],[65,70],[97,102]];const ne={White_Space:[[9,13],32,133,160,5760,[8192,8202],8232,8233,8239,8287,12288],Quotation_Mark:[34,39,171,187,8216,8217,[8218,,8223],8249,8250,11842,[12300,12303],[12317,12319],[65089,65092],65282,65287,65378,65379],Hex_Digit:[...n,[65296,65305],[65313,65318],[65345,65350]],ASCII_Hex_Digit:n,Unified_Ideograph:a,Ideographic:t,Separator:[32,160,5760,8239,8287,12288,[8192,8202],[8232,8233]]};for([e,r]of Object.entries({Han:[[11904,11929],[11931,12019],[12032,12245],12293,12295,[12321,12329],[12344,12347],[13312,19903],[19968,40959],[63744,64109],[64112,64217],94178,94179,[94192,94193],[131072,173791],[173824,177977],[177984,178205],[178208,183969],[183984,191456],[191472,192093],[194560,195101],[196608,201546],[201552,205743]]}))ne["Script="+e]=r;const ie={},G={sc:"Script",WSpace:"White_Space",QMark:"Quotation_Mark",Hex:"Hex_Digit",AHex:"ASCII_Hex_Digit",UIdeo:"Unified_Ideograph",Ideo:"Ideographic",Cc:"Control",N:"Number",P:"Punctuation",Z:"Separator",C:"Other"},Te={d:[["0","9"]],s:[" "," "," ","\f","\n","\r","\t","\v"],w:[["a","z"],["A","Z"],["0","9"],"_"],".":[["a","z"],["A","Z"],["0","9"],"_"]},le={lineBreak:["\n","\r","\u2028","\u2029"]};function se(e){var r,s,o=[[0,1114111]],c=(e,r)=>r[0]<=e&&e<=r[1];for(r of e){let t,a,n=(Array.isArray(r)?[t,a]=r:t=a=r,t>a&&(s=t,t=a,a=s),-1),i=-1,l;for(let r=0;i<0&&r<o.length;r++){let e=o[r];if(n<0&&c(t,e))n=r+1,l=[t,e[1]],e[1]=t-1,e[0]>e[1]&&n--,c(a,l)&&(l[0]=a+1,i=r+1);else if(n<0&&t<e[0]){if(a<e[0])break;n=r,r--}else c(a,e)?(e[0]=a+1,i=r,e[0]>e[1]&&i++):a<e[0]&&(i=r)}0<=n&&i<0&&(i=o.length),0<=n&&o.splice(n,i-n,...l?[l]:[])}return o.map(e=>e[0]===e[1]?e[0]:e)}function i(e="",P,t={}){let n=e;const a=["[","]"];var e=[".","\\d","\\D","\\w","\\W","\\s","\\S","\\b","\\B"],i={n:"\n",r:"\r",f:"\f",t:"\t",v:"\v"},l={edge:["^","$"],bracket:["(",")"],brace:["{","}"],comma:",",repeat:"+",optRepeat:"*",omit:"?",charEcho:a,paramStart:["?"],nameEcho:["<",">"],paramSign:[":","=","!"],branch:"|",const:e},s={num:[["0","9"]],alphabet:[["a","z"],["A","Z"]]};const o={charEcho:a[1],const:e.slice(1)};t.unicodeSets&&(o.charEcho=a,o.charListOpr=["&&","--"]);var c,f,u,h,B=Object.keys(l),$=Object.keys(s);const p=t.unicode||t.unicodeSets,r=[];let d=0,g,m,v=!1,b=0;for(;n;){let e=!1,r=!1;if("charEcho"===m)if(g[1]===a[0]){v=!0,b++;for(u of N("^"))if(h=R(u))break;h&&j("charNegation",h)}else v=v&&0<--b;if(v){if(!([a[0],"^"].includes(g[1])||t.unicodeSets&&L("--"))&&(h=R("-"))){j("rangeBond",h);continue}for(var x of Object.keys(o)){for(c of N(o[x]))if(h=R(c))break;if(h){e=!0,j(x,h);break}}if(e)continue;r=!0}if(!r)for(var k of B){for(f of N(l[k]))if(h=R(f))break;if(h){e=!0,M(h.length),_([k,h]);break}}if(!e)if(L("\\"))if(L("x",n,1)){if(2!==(y=A(n,2,2)).length)throw Error("Invalid escape at "+d);j("unicode",n.slice(0,2+y.length),U(y))}else{if(p&&L("u",n,1)){let e=4,r=2,t=!1;"{"===n[2]&&(e=-1,r++,t=!0);var y,S=U(y=A(n,r,e)),w=(1114111<S&&(y=""),t&&"}"===n[r+y.length]);if(t?y.length&&w:4===y.length){j("unicode",n.slice(0,r+y.length+ +!!w),S);continue}throw Error("Invalid Unicode escape at "+d)}if(p&&(L("p",n,1)||L("P",n,1))){w="Invalid property name at "+d,S="P"===n[1];if("{"!==n[2])throw Error(w);let e=function(t){if("string"!=typeof t)throw Error("Expect a string to search.");var a=[["a","z"],["A","Z"]];let n="";for(let e=3,r=!1;e<t.length;e++){e;var i=z(t,a,e);if(!(i=!i&&3<e?"_"===t[e]&&t[e]:i)&&3<e&&e<t.length-1){if(r)break;(i="="===t[e]&&t[e])&&(r=!0)}if(!i)break;n+=i}return n}(n);var E,C="}"===n[3+e.length],T=e.indexOf("=");let r=e;for(E of Object.keys(G))if(T<0&&E===e||E.length===T&&e.startsWith(E)){r=G[E]+e.slice(E.length);break}var O=r in ne;if(C&&e&&O){j("script",n.slice(0,3+e.length+1),[r,S]);continue}if(C&&e&&!O)throw Error(`Unsupported property name "${e}" at pos `+d);throw Error("Invalid property name at pos "+d)}if(t.unicodeSets&&v&&L("q",n,1)&&!L("{",n,2))throw Error("Invalid escape at pos "+d);C=z(n,Object.keys(i),1);if(C)j("escape",n.slice(0,1+C.length),i[C]);else{O=function(r){if("string"!=typeof r)throw Error("Expect a string to search.");let t="";for(let e=1;e<r.length;e++){var a=r[e];if(!Oe(r,"0","7",e))break;if(3<=(t+=a).length)break}return t}(n);if(O){var F=parseInt(O,8);j("unicode",n.slice(0,1+O.length),F)}else{let e=n.slice(0,2);if(j("escape",e,e.slice(1)),n.length<2)throw new SyntaxError("\\ at end of pattern")}}}else if(!e){for(var I of $)if(h=z(n,s[I])){e=!0,M(h.length),_([I,h]);break}e||_(["char",function(){if(!p)return M(1,void 0);let e="",r=0;for(var t of n){if(1<++r)break;e+=t}return n=n.slice(e.length,void 0),d+=e.length,e}()])}}function j(e,r,t){M(r.length),_([e,r,t])}function A(r,t=0,a=-1){if("string"!=typeof r)throw Error("Expect a string to search.");var n=[["0","9"],["a","f"],["A","F"]];let i="";for(let e=t;e<r.length;e++){e;var l=z(r,n,e);if(!l)break;if(i+=l,0<a&&i.length>=a)break}return i}function U(e){return parseInt(e,16)}function R(e,r=n,t=0){if(e instanceof RegExp){if(e.global&&0!=r.search(e))return null;var a=r.match(e);return!a||a.index?null:a[0]}if("string"!=typeof e)throw Error("Expect a string or regExp for search.");a=r.substr(t,e.length);return a===e?a:null}function L(e,r=n,t=0){if(e instanceof RegExp)return 0==(t?r.slice(t):r).search(e);if("string"!=typeof e)throw Error("Expect a string or regExp for search.");return r.substr(t,e.length)===e}function M(e=0,r){var t=n.slice(0,e);return n=n.slice(e,r),d+=t.length,t}function _(e){r.push(e),g=e,m=e[0]}function N(e,r=[]){return Array.isArray(e)?e:void 0!==e?[e]:r}return r}function z(e,r,t=0){if(!Array.isArray(r))throw Error("Expect a range array for search.");for(var a of r)if("string"==typeof a){var n=e.substr(t,a.length);if(n===a)return n}else if(Oe(e,a[0],a[1],t))return e[t];return null}function Oe(e,r,t,a=0){if("string"!=typeof e)throw Error("Expect a string to search.");var n=e=>"string"==typeof e?e.codePointAt(0):e;if(r=n(r),t=n(t),!l(r)&&!l(t))throw Error("Expect a range for match.");n=e.codePointAt(a);return!(l(r)&&n<r||l(t)&&t<n)}function l(e){return"number"==typeof e&&!isNaN(e)}function s(e,r){let t={type:"root",children:[]},c=t;const a=[t];function u(e,r,t,a,n=c){return{type:"element",tagType:"statement",tag:e,value:r,param:t,parent:n,enclosed:a,children:[]}}function J(e,r){t?c&&c.children.push(e):t={type:"root",children:[]},r||(a.push(e),c=a[a.length-1])}{var[m=[],i,f={}]=[e,{statementStart(e,r,t,a,n,i){J(u(e,r,t,a,c),a)},supplant(e,r,t,a,n,i,l=1){let s=u(e,r,t,a,c);l<0&&(l=0);e=c.children.splice(-l);if(e.length)for(var o of e)s.children.push(o);J(s,a)},statementEnd(e,r){{const t=a.pop();return t.enclosed=!0,void(c=a[a.length-1])}},getPriorBrother(){var e=c.children;return e[e.length-1]}},r];const he=["clause","num","const","escape","char","charList","ref"],pe=["branch"];var H={i:"ignoreCase",m:"multiline",s:"dotAll"};const de=["i","m","s"],F=[];let h=0,p,d,n=1,g=[{}];const ge={get lastEle(){return F.length?F[F.length-1]:null},get lastTag(){return this.lastEle.tag}};var v=e=>m[e]||[];F[0]={name:"root",childrenLimit:1};for(var l,b=0;b<m.length;h+=m[b++][1].length){var x,s=m[b];let[r,u]=s;if("bracket"===r){var k="clause";let c={catchable:!0};var y=h;let e=u.length,f=$(k,u,c,!1,{start:y,offset:e});if(p=k,"("===u){let s=b+1,o=v(s);if("?"===o[1]){o=v(++s);let l=!1;do{if(":"===o[1]){f.param.catchable=!1;break}"<"===o[1]&&(l=!0,o=v(++s));let e=!1,r=!1;if("="===o[1]?e=!0:"!"===o[1]&&(e=!0,r=!0),e){c.catchable=!1,c.assertion=!0,c.forward=!l,c.exclusive=r;break}let[t,a,n,i]=function(e,r=0){if(!Array.isArray(e))throw Error("Expect a tokens array to search.");let t="";for(var a={},n={},i=!1,l=r;l<e.length;l++){var[,s]=e[l];if("-"!==s||i){if(!de.includes(s))break;if(t+=s,n[s]||a[s])throw new SyntaxError("Repeated flag in flag group");i?n[s]=!0:a[s]=!0}else i=!0}return[t,l-r,a,n]}(m,s);if(t){c.catchable=!1,c.flagGroup=!0;for(var Z of Object.keys(i))n[Z]=!1;let e={};for(var[W,q]of Object.entries(n))e[H[W]]=q;c.flagObj=e,s+=a;break}if(!l)throw new SyntaxError("Invalid group at pos "+h);var[S,D]=ne(m,s);if(s+=D,o=v(s),S&&">"===o[1]){if(oe(S))throw Error("Duplicate capture group name at pos "+h);g[g.length-1][S]=!0,c.groupName=S;break}throw Error("Invalid capture group name at pos "+s)}while(0);M(s-b),e=h-y,f.offset=e}c.catchable&&!c.assertion&&(c.captureIndex=n++),F.push(f),le(),d=!1,i.statementStart&&i.statementStart(k,u,c,!1,y,e)}else{if(")"!==u)throw y=u,l=r,Error(`Unrecognized ${l?l+" ":""}token: `+y);{for(let e=F.length;0<e&&!1!==ce();e--);let e=F.pop();for(;e&&F.length&&e.name!==k;){if(!e.enclosed)throw new SyntaxError(`Unexpected closed bracket ")" inside another block at pos ${h}.`);N(e),e=F.pop()}if(!e||e.name!==k)throw new SyntaxError(`Unmatched closed bracket ${l=u,"string"!=typeof l?l:'"'+l.replace(/"/g,'\\"')+'"'} at pos ${h}.`);se(),d=!0,i.statementEnd&&i.statementEnd(k,e)}}}else{if(ce(),"brace"===r){let e=!1;do{if("}"===u)break;let e=b+1;var[o,w]=ie(m,e);if(!o)break;let r=+o,t=r,a=v(e+=w);if(","===a[1]&&(t=null,[o,w]=ie(m,++e),o&&(t=o),e+=w,a=v(e)),"}"!==a[1])break;if((t||0===t)&&r>t)throw Error("Numbers out of order in {} quantifier at pos "+h);M(e-b);o={minTimes:r,maxTimes:t},w=`Expect a value expression before range repeat indicator "${u}", but found `+p}while(fe("repeat",u,o,0,0,w),e=!0,0);if(e)continue;r="char"}if("charEcho"===r){let e=!1;do{if("["!==u)break;let r={},t=[],n=b+1,i=("charNegation"===v(n)[0]&&(r.exclusive=!0,++n),"charList");var V=(e,r,t,a)=>$(i,e,r,!1,{start:t,offset:a});const U=e=>{for(var r of e)_(r)};let l=V(u,r,h,n-h);_(l),l.hiddenChdLen=0;const me="charRange",G=["escape","unicode","script"],z=(e,r)=>("const"!==e&&"charListOpr"!==e||"."===r)&&!G.includes(e);let s=[],o=[],c;for(var K=()=>{U(t),N(l),c=l,t=s.pop(),l=o.pop()},Q=(n--,()=>new SyntaxError("Unterminated character class at pos "+h));;){if(!(x=v(++n))[0])throw Q();for(;l.childrenLimit&&l.childrenLimit<=t.length+(l.hiddenChdLen||0);)K();if("]"===x[1]){if("charListOpr"===l.tag)throw new SyntaxError("Invalid set operation or invalid character in character class");if(K(),t)continue;break}let e=x[0],a=x[1];if(f.unicodeSets&&"["===a)U(t),t.length=0,c=null,s.push(t),o.push(l),l.hiddenChdLen++,r={},"charNegation"===v(n+1)[0]&&(r.exclusive=!0,++n),_(l=V(a,r,n,r.exclusive?2:1)),t=[],l.hiddenChdLen=0;else if(f.unicodeSets&&"charListOpr"===e){var E={name:"charListOpr",value:a,param:null,childrenLimit:2,children:[],...void 0},C=(e,r)=>["char","unicode","charList","charRange","script","charListOpr","clause"].includes(e)||z(e,r)&&"]"!==r,T=t[t.length-1]||c,O=v(n+1);if(!T||!C(T.name,T.value)||!C(O.name,O.value))throw new SyntaxError("Invalid set operation in character class");U(t),t.length=0,c=null,P(E),s.push(t),o.push(l),l.hiddenChdLen++,l=E,t=[],l.hiddenChdLen=1}else if(f.unicodeSets&&"escape"===e&&"\\q"==a.toLowerCase()){n+=1;let r=v(++n);var T=$("clause",a,{},!1),X=(_(T),()=>$("branch",null,null,!1));let t=X();for(_(t);"}"!==r[1];r=v(++n)){if(!r[0])throw Q();let e=r[1];if("|"===e)N(t),_(t=X());else{if(G.includes(r[0]))e=r[2]||e;else if(!z(r[0],e))throw new SyntaxError("Invalid character in character class");_($("char",e,null,!0))}}N(t),N(T),c=T,l.hiddenChdLen++}else{if("rangeBond"===e){C=t[t.length-1]||c,O=v(n+1),E=(e,r)=>"char"===e||z(e,r)&&e!==me&&"]"!==r;if(E(C.name,C.value)&&E(O[0],O[1])){let e=C.value,r=O[1];var I={minChar:e,maxChar:r};if(e.charCodeAt(0)>r.charCodeAt(0))throw new SyntaxError("Range out of order in character class at pos "+h);I=$(me,a,I,!0);t.pop(),t.push(I),n+=1;continue}}z(e,a)?e="char":G.includes(e)&&(a=x[2]||a);I=$(e,a,null,!0);t.push(I)}}M(n-b),p=i,d=e=!0,e=!0}while(0);if(e)continue;r="char"}if("repeat"===r||"optRepeat"===r){y="optRepeat"===r?0:1;fe("repeat",u,{minTimes:y,maxTimes:null}),p="repeat",d=!0}else if("omit"===r){let e=i.getPriorBrother();if("repeat"!==p||e.param.restraint){if(!he.includes(p))throw new SyntaxError(`Nothing to omit, unexpected "${u}" at pos `+h);fe("repeat",u,{minTimes:0,maxTimes:1}),p="repeat",d=!0}else e.param.restraint=!0}else if("branch"===r){var j=$("branch",u,null,!0,{start:h});P(j,-1),_({...j,enclosed:!1}),F.push(j),se(!0),le(),p="branch"}else{if("unicode"===r&&u.startsWith("\\")||"escape"===r&&+s[2]){let a=!1;do{let e=b,r=u.slice(1);for(;r.length<2;){var Y=v(e+1);if("num"!==Y[0])break;r+=Y[1],e++}var ee=r.slice(2),A=+r.slice(0,2);if(A>=n||!A)break;var re,te=h;M(e-b);let t="ref";_(ue(t,A,{},!0,{start:te,offset:h-te}));for(re of ee)_($(t="char",re,null,!0));p=t,d=a=!0}while(0);if(a)continue}if("escape"===r&&"\\k"===u){let e=!1;do{var R=b+1;if("<"!==v(R++)[1])break;var[L,ae]=ne(m,R),ae=v(R+=ae);if(!L||">"!==ae[1])break;if(M(R-b),!oe(L))throw new SyntaxError("Invalid named capture referenced at pos "+h)}while(_(ue("ref",L,{isName:!0},!0,{})),p="ref",d=e=!0,0);if(e)continue;throw new SyntaxError("Invalid named reference at pos "+h)}"script"===r?B(r,s[2],null):"edge"===r||"const"===r?B(r,u,null):"escape"===r?B("char",s[2]||u,null):"unicode"!==r?B("char",u,null):(j=r,s=s[2]||u,p=j,d=!0,i.statementStart&&i.statementStart(j,s,null,!0))}}}if(F[0]&&"root"===F[0].name&&F.shift(),e=function(r,t){for(let e=r.length-1;0<=e;e--)if(t(r[e],e))return e;return-1}(F,e=>!pe.includes(e.name)),F.slice(0,e+1).length)throw new SyntaxError("There is a few unclosed blocks.");function ne(e,r=0,t=-1){if(!Array.isArray(e))throw Error("Expect a tokens array to search.");let a="";for(var n=r;n<e.length;n++){var[i,l]=e[n],s=n===r;if(!["_","$"].includes(l)&&"alphabet"!==i&&(s||"num"!==i))break;if(a+=l,0<t&&a.length>=t)break}return[a,n-r]}function ie(e,r=0,t=-1){if(!Array.isArray(e))throw Error("Expect a tokens array to search.");let a="";for(var n=r;n<e.length;n++){var[i,l]=e[n];if("num"!==i)break;if(a+=l,0<t&&a.length>=t)break}return[a,n-r]}function le(){g.push({})}function se(e){if(g.pop(),!e&&!g[0])throw Error("Unexpected exiting clause")}function oe(r){return g.some(e=>e[r])}function ce(){var e=ge.lastEle,r=e&&e.childrenLimit;if(!(0<r&&e.children&&r<=e.children.length))return!1;N(e),F.pop()}function M(e=0){let r=m.slice(b,b+e);b+=e,h+=r.reduce((e,r)=>e+r[1].length,0),r}function _(e){i.statementStart&&i.statementStart(e.name,e.value,e.param,e.enclosed,e.startPos,e.offset)}function N(e){i.statementEnd&&i.statementEnd(e.name,e)}function P(e,r){i.supplant&&i.supplant(e.name,e.value,e.param,e.enclosed,e.startPos,e.offset,r)}function B(e,r,t,a=!0){p=e,d=a,i.statementStart&&i.statementStart(e,r,t,a)}function fe(e,r,t,a,n,i){let l={name:e,value:r,param:t,childrenLimit:1,...void 0};if(i=i||"Nothing to repeat",!d||!he.includes(p))throw Error(`${i} at pos ${h}.`);p=e,d=l.enclosed=!0,P(l)}function ue(e,r,t,a=!0,n){return{name:e,value:r,param:t,enclosed:a,...n}}function $(e,r,t,a,n){return{type:"element",tagType:"statement",name:e,value:r,param:t,enclosed:a,...n}}F}return t}function oe(e,r){const{enter:a,leave:n}=r;let i;var l=[],s=[],o=!1;void 0!==r.ignoreRoot&&r.ignoreRoot&&"root"==e.type?((i=m(e)).children=i.children.map(m),l[0]=[...i.children]):(i=m(e),l[0]=[i]),s[0]=0;for(var c=l.length-1,f=(e,r=-1)=>e&&e.length?e[e.length+r]:null;l.length;){var u,h,p,d=f(l);let t=s[c];if(o&&(u=d[t++],n&&(p=0<=(p=s[c-1])&&f(l,-2)[p],void 0!==(h=n(u,c,p))&&g(u,h,p,d,t-1)),o=!1,s[c]=t),t>=d.length)l.pop(),s.pop(),c--,o=!0;else{let e=d[t],r=(a&&(h=0<=(u=s[c-1])&&f(l,-2)[u],void 0!==(p=a(e,c,h))&&(g(e,p,h,d,t),e=p)),e&&e.children);r&&0<r.length?(e.children=r.map(e=>m(e)),r=e.children,l.push(r),s.push(0),c++):o=!0}}function g(e,r,t,a,n){e===i?i=r:((t=t||i).children[n]=r,t.children!==a&&(a[n]=r))}function m(e){return{...e}}return i}function Ie(e,r){const{enter:t,leave:a}=r;var n,i=[],l=[],s=[],o=!1,c=(n=e,i[0]=void 0!==r.ignoreRoot&&r.ignoreRoot&&"root"==e.type?n.children:[n],s[l[0]=0]={},i.length-1),f=(e,r=-1)=>e&&e.length?e[e.length+r]:null;const u=()=>s[c];for(var h={skipBrothers(){u().brothersSkipped=!0},skipChildren(){u().childrenSkipped=!0},reenter(){u().needReentrant=!0},fallback(){u().needFallback=!0}};0<=c;){var p=f(i);let r=l[c];if(o){var d=p[r++];a&&(g=0<=(g=l[c-1])&&f(i,-2)[g],a(d,c,g,h)),o=!1;let e=u();e.brothersSkipped&&(r=p.length,e.brothersSkipped=!1),e.needReentrant&&(r--,e.needReentrant=!1),e.needFallback&&(1<r?r-=2:r=p.length,e.needFallback=!1),l[c]=r}if(r>=p.length)i.pop(),l.pop(),s.pop(),c--,o=!0;else{var g,m,d=p[r];t&&(m=0<=(g=l[c-1])&&f(i,-2)[g],t(d,c,m,h));let e=u();e.needFallback&&(e.childrenSkipped=!0),e.brothersSkipped?(l[c]=p.length,e.brothersSkipped=!1):e.childrenSkipped?o=!(e.childrenSkipped=!1):(m=d.children)&&0<m.length?(i.push(m),s.push({}),l.push(0),c++):o=!0}}return n}function o(r,y={}){var J,C,e,T,t,O,I,j=[],c=0,re=[],f=y.ignoreCase,s=oe(r,{enter(e){delete e.parent}}),s=oe(s,{enter(t,e,r){var a=t.tag;if("script"!==t.tag)return"unicode"===t.tag?"unicode"!==t.tag?t:X(t.value):("clause"===a&&t.param.catchable&&c++,"clause"===a&&t.param.groupName&&j.push(t.param.groupName),"clause"===a&&t.param.flagGroup&&(re.push(J),t.param.flagObj.__proto__=J||y,J=t.param.flagObj,f=f||J.ignoreCase),"repeat"===a&&"string"==typeof t.param.maxTimes&&(t.param.maxTimes=+t.param.maxTimes),"escape"===a?X(t.value):J&&"const"===a&&!t._translated?U(t,!1,J):void 0);{a=t;if("script"!==a.tag)return a;let[e,r]=a.value;var t=ne[e],n=ie[e];if(!t)throw Error("Unsupport unicode prop "+a.value);const o=e=>D(Array.isArray(e)?e[0]:e);var i,l=z();n&&r&&(l.param.exclusive=!0,r=!1),r?t=se(t):t.sort((e,r)=>o(e)-o(r)),l.children=w(t);for(i of n||[]){var s=(i="string"==typeof i?[...i]:i).map(e=>G(e)),s=K(Y(),s);l.children.push(s)}return W(l)}},leave(e,P,r){var t,{tag:a,children:n}=e;if("clause"===a&&e.param.flagGroup){if(e.param.flagObj!==J)throw Error("Unexpected leaving of flag group");(J=re.pop())&&e.param.flagObj.ignoreCase===J.ignoreCase&&(e.param.flagObj=e.param.flagGroup=null)}if("charListOpr"===a)return r._needFlat=!0,"charListOpr"!==(r=e).tag?r:("&&"===r.value?function(e){if("charListOpr"!==e.tag&&"&&"===e.value)return e;var[e,r]=e.children,t=q(e),a=q(r),n=(e,r)=>D(e)-D(r),i=e=>"charRange"===e.tag?e.param.maxChar:e.value,l=e=>"charRange"===e.tag?e.param.minChar:e.value,s=[];for(let e=0,r=0;e<t.length&&r<a.length;){var o=t[e],c=a[r],f=i(o),o=l(o),u=l(c),c=i(c);n(f,u)<0?e++:0<n(o,c)?r++:(o=Math.max(D(o),D(u)),u=Math.min(D(f),D(c)),s.push(o==u?X(o):Q(o,u)),0<(o=n(f,c))?r++:o<0?e++:(e++,r++))}s=s.map(e=>V([e]));let h=Y();return h.children=s,h}:function(e){if("charListOpr"!==e.tag&&"--"===e.value)return e;for(var[e,r]=e.children,t=q(e),a=q(r),n=(e,r)=>D(e)-D(r),i=e=>"charRange"===e.tag?e.param.maxChar:e.value,l=e=>"charRange"===e.tag?e.param.minChar:e.value,s=[],o=0,c=0;o<t.length&&c<a.length;){let e=t[o];var f=a[c],u=i(e),h=l(e),p=l(f),f=i(f);n(u,p)<0?(s.push(e),o++):0<n(h,f)?c++:(n(h,p)<0&&(h=h,p=D(p)-1,s.push(h===p?X(h):Q(h,p))),0<n(u,f)&&(e.param.minChar=D(f)+1),0<(h=n(u,f))?c++:h<0?o++:(o++,c++))}for(;o<t.length;o++)s.push(t[o]);s=s.map(e=>V([e]));return K(Y(),s)})(r);if(e._needFlat)return W(e);"charList"===a&&(t=!0,{tag:a,children:n}=e=W(e));var r=n[0],s=!1;if(r&&"branch"===r.tag)te(n),"branch"!==a&&function(a){if(!(a.length<2||"branch"!==a[0].tag)){var n,i,l={};const o=e=>"string"==typeof e?e:String.fromCodePoint(e);for(let t=0;t<a.length;t++){let e=[],r;for(n of a[t].children){if(null===(r=(e=>{var{tag:r,param:t}=e;return"char"===r?e.value:"charRange"===r?"R"+o(t.minChar)+"-"+o(t.maxChar):"const"===r?"S"+e.value:"edge"===r?"E"+e.value:"ref"===r?"F"+e.value:null})(n)))break;e.push(r)}null!==r&&(l[i=JSON.stringify(e)]||(l[i]=[]),l[i].push(t))}var e,r={},t=!1;for(e of Object.values(l))if(!(e.length<2)){for(var s of e.slice(1))r[s]=!0;t=!0}if(t){for(let e=a.length-1;0<=e;e--)r[e]&&a.splice(e,1);return 1}}}(n)&&te(n,!0),s=!0;else if(r){var i=n;for(let e=0;e<i.length;e++){var B,l=i[e];Z(l)?(B=l.children[0])&&"branch"===B.tag||(i.splice(e,1,...l.children),e--):i[e]=function(e){var{tag:r,children:t}=e;if("repeat"===r&&1===t.length){r=t[0];if("clause"!==r.tag||!r.param.assertion)return e;const a=e.param;if(1<=a.minTimes)return r;0===a.minTimes&&0!==a.maxTimes&&(a.maxTimes=1)}return e}(l)||l}}if(r&&!s){var o=n;if(o.length&&o.some(e=>"repeat"===e.tag)){for(let r=0;r<o.length;r++){var c=o[r],f=h,$=p;if(h=p=null,"repeat"===c.tag){var u=c.param;if(!u.restraint&&!function(e){var n,r=e.children;if(r&&r.length)return n=!1,Ie(e="clause"===e.tag?{children:r}:e,{leave:function(e,r,t,a){return n?a.skipBrothers():"clause"===e.tag&&e.param.catchable?(n=!0,a.skipBrothers()):void 0}}),n}(c)){var F=JSON.stringify(c.children),h=c,p=F;if(f&&$===F){let e=f.param;e.minTimes+=u.minTimes||0,"number"==typeof e.maxTimes&&"number"==typeof u.maxTimes?e.maxTimes+=u.maxTimes:e.maxTimes=null,o.splice(r--,1),h=f}}}}h=p=null;var d=[];for(let e=0;e<o.length;e++){var g=o[e],U=h,G=p;if(h=p=null,"repeat"===g.tag){var{param:m,children:v}=g;if(!m.restraint&&!m.minTimes)if(h=g,G===(p=JSON.stringify(1===v.length&&"clause"===v[0].tag?v[0].children:v))){d.length||(d[0]=U),d.push(g);continue}}d.length<2?d.length&&(d.length=0):(m=function(r){let a=r[r.length-1];for(let e=r.length-2;0<=e;e--){var n=r[e];if("repeat"!==n.tag)throw Error("Expect repeat nodes, received "+n.tag);if(1<n.param.maxTimes||n.param.minTimes)a=function(o){let c=o[o.length-1];H(c);for(let s=o.length-2;0<=s;s--){var f=o[s],{minTimes:u,maxTimes:h}=f.param;if("repeat"!==f.tag||u)throw Error("Expect optional repeat nodes, received "+f.tag);H(f);u=f.children,u=1===u.length?u[0]:Object.assign(Y(),{children:u});let e=ee(),r=e.param,t=ee(),a=t.param,n=(r.minTimes=r.maxTimes=h,a.minTimes=0,a.maxTimes=h-1,e.children[0]=u,t.children[0]=u,f.param.isStatic&&(r.isStatic=a.isStatic=!0),ae()),i=ae(),l=(n.children=[e,c],1<h&&(i.children=[t]),Y());l.children=[n,i],c=l}return c}([n,a]);else{let e,r=n.children,t=(1===r.length?e=r[0]:(e=Y()).children=r,ee());t.param.minTimes=0,t.param.maxTimes=1,t.children=[e,a],a=t}}return a}(d),o.splice(e-d.length,d.length,m),h=U,d.length=0)}}var b=n;if(b.length&&b.some(e=>"repeat"===e.tag&&(e.param.minTimes||e.param.maxTimes))){for(let t=0;t<b.length;t++){var x=b[t];let r=x.param;if("repeat"===x.tag&&0<r.minTimes&&(1!==r.minTimes||r.maxTimes)&&r.minTimes!==+r.maxTimes){var k=r.minTimes;r.minTimes=0,r.maxTimes&&(r.maxTimes-=k);let e=ee();e.children=x.children,e.param={minTimes:k,maxTimes:k},b.splice(t,0,e),t+=1}}for(let e=0;e<b.length;e++){var y,S=b[e];"repeat"===S.tag&&(!(y=S.param).minTimes&&1<y.maxTimes?b[e]=function(r){let e=r.param,t=e.maxTimes,a=(e.maxTimes=1,delete e.isStatic,w(r)),n=a;for(let e=t-1;0<e;e--){var i=1===e?r:w(r);n.children.push(i),n=i}return n.param={...n.param},H(n),a}(S):y.minTimes&&y.minTimes===+y.maxTimes&&(y=y.minTimes,H(S=(1===S.children.length?S.children[0]:null)||K(Y(),S.children)),S=function(r,t){let a=[];for(let e=0;e<t;e++)a.push(w(r));return a}(S,y),b.splice(e,1,...S),e+=y-1))}}function w(e){return oe(e,{})}}if(("repeat"!==a&&"branch"!==a||H(e),"clause"===a&&e.param.assertion)&&("clause"===(r=e).tag&&r.param.assertion)){let i=!0,l=!1;if(r.children.length){s={enter:function(e,r,t,a){if(l)return a.skipBrothers();var n=e.tag;if("ref"===n||"clause"===n&&e.param.catchable)return l=!0,i=!1,a.skipBrothers();if("clause"===n&&e.param.assertion){n=e.param;if(!1===n.isAssertSilent&&(i=!1),n._asrtStaticMarked)return n.isAssertSilent?a.skipChildren():(l=!0,a.skipBrothers())}e.param||(e.param={}),e.param.canPass=!0}};const{enter:M,leave:_}=s;var E=[],C=[],T=[],O=!1,I=(n=r,E[0]=void 0!==s.ignoreRoot&&s.ignoreRoot&&"root"==r.type?n.children:[n],T[C[0]=0]={},E.length-1),j=(e,r=-1)=>e&&e.length?e[e.length+r]:null;const N=()=>T[I];for(var z={skipBrothers(){N().brothersSkipped=!0},skipChildren(){N().childrenSkipped=!0},reenter(){N().needReentrant=!0},fallback(){N().needFallback=!0}};0<=I;){var A=j(E);let r=C[I];if(O){var R=A[r--];_&&(L=0<=(L=C[I-1])&&j(E,-2)[L],_(R,I,L,z)),O=!1;let e=N();e.brothersSkipped&&(r=-1,e.brothersSkipped=!1),e.needReentrant&&(r++,e.needReentrant=!1),e.needFallback&&(r<A.length-2?r+=2:r=-1,e.needFallback=!1),C[I]=r}if(r<0)E.pop(),C.pop(),T.pop(),I--,O=!0;else{var L,R=A[r];M&&(A=0<=(L=C[I-1])&&j(E,-2)[L],M(R,I,A,z));let e=N();e.needFallback&&(e.childrenSkipped=!0),e.brothersSkipped?(C[I]=-1,e.brothersSkipped=!1):e.childrenSkipped?O=!(e.childrenSkipped=!1):(A=R.children)&&0<A.length?(E.push(A),T.push({}),C.push(A.length-1),I++):O=!0}}}r.param||(r.param={}),r.param.isAssertSilent=i,r.param._asrtStaticMarked=!0}return t?e:void 0}});let l=[],A=[],R={},o=!1,L=(Ie(s,{enter(e,r,t,a){var{tag:n,param:i}=e;"clause"===n&&i.assertion&&(i.forward?o&&(l.push(r),o=!1):o||(l.push(r),o=!0)),o&&e.children&&(e.children.reverse(),A.push(...e.children))},leave(e,r,t,a){l.length&&r===l[l.length-1]&&(l.pop(),o=!o)}}),0),u={},M={},h,a=[],_=[],p=[],d=[],N={},g={},m=[0],v=[],b=[],x=-1,k={};function P(e){var r=b[x];r<e&&(r=[r,e],v[x].push(r))}Ie(s,{enter(t,e){if(t.serial=h=L++,"clause"===t.tag&&t.param.catchable){let e=u[t.param.captureIndex];e||(u[t.param.captureIndex]=e=[]),e.push([t.serial]),M[t.serial]=!0}if(p.length&&"branch"!==t.tag){var r=d[0]||0;for(let e=p.length-1;0<=e;e--){var a=p[e];if(a<r)break;N[a]=t.serial,p.pop()}}if("ref"===t.tag?p.push(t.serial):"branch"===t.tag&&p.length&&d.unshift(t.serial),c&&-1===x&&(x=0,v[0]=[],b[0]=Math.max(t.serial,1)),0<=x&&"branch"===t.tag&&(m[x]!==e&&(P(h),m[++x]=e,v[x]=[]),b[x]=t.serial),0<=x&&"ref"===t.tag){e=b[x];let r=g[t.serial];r||(g[t.serial]=r=[]);for(let e=0;e<x;e++){var n,i=v[e];r.push(...i);for(n of i)k[n[0]]?k[n[0]]++:k[n[0]]=1}e<t.serial&&r.push([e,t.serial-1]),b[x]=t.serial+1}},leave(r,e){if(r.serial in M){let e=u[r.param.captureIndex];e[e.length-1][1]=h}var t;"repeat"===r.tag&&r.serial<h?a.push([r.serial,h]):"branch"===r.tag&&d.length&&d[0]===r.serial&&d.pop(),m[x]>e?((t=v[x]).length&&v[x-1].push(...t),m.pop(),v.pop(),b.pop(),x--,b[x]=h+1):"branch"===r.tag&&m[x]===e&&P(h)}});let n={};for(let r=0;r<a.length-1;r++){var B=a[r][0];for(let e=r+1;e<a.length;e++)if(B<=a[e][1]&&B>a[e][0]){n[B]=a[e][0];break}}for([C,e]of Object.entries(n))n[e]?n[C]=[e].concat(n[e]):n[C]=[e];for(let t=1;t<=c;t++){let e=u[t];var i=a.findIndex(r=>e.some(e=>e[0]<=r[1]&&r[0]<e[0])),i=a[i];let r;r=i?i[0]:0;i=n[r];i&&(r=[r].concat(i)),_[t]=r}for([T,t]of Object.entries(g))if(t.length){let r=[];for(let e=t.length-1;0<=e;e--){var S=t[e],$=k[S[0]];$&&2<=$?t.splice(e,1):0<e&&S[0]<=t[e-1][1]+1?(t[e-1][1]=S[1],t.splice(e,1)):S[1]<=S[0]+1&&(r.push(S[0]),S[0]!==S[1]&&r.push(S[1]),t.splice(e,1))}r.length&&(t.serials=r)}else delete g[T];let F={};for(O of a)F[O[0]]=O;for(I of A)R[I.serial]=!0;function H(e){if("repeat"===e.tag||"branch"===e.tag||"clause"===e.tag&&e.param.assertion){let l=!0;e.children.length&&Ie({children:e.children},{enter:function(e,r,t,a){if(!l)return a.skipBrothers();var n=e.tag;if("repeat"===n)return(i=e.param).minTimes&&i.minTimes===i.maxTimes?i.isStatic&&a.skipChildren():(l=!1,a.skipBrothers());if("branch"===n)return l=!1,a.skipBrothers();if("clause"===n){var i=e.param;if(i.assertion||i.exclusive&&"charList"===i.origin)return a.skipChildren()}}}),l&&(e.param||(e.param={}),e.param.isStatic=l)}}function Z(e){if("clause"===e.tag){const r=e.param;return!(r.assertion||r.catchable||r.exclusive||r.flagObj&&r.flagObj.hasOwnProperty("ignoreCase"))}}function te(a,e){if(a.length&&"branch"===a[0].tag){for(let t=0;!e&&t<a.length;t++){let e=a[t],r=e.children;var n;"branch"===e.tag&&1===r.length&&Z(n=r[0])&&(e.children=r=n.children),r.length&&r.every(e=>"branch"===e.tag)&&a.splice(t--,1,...r)}1===a.length&&"branch"===a[0].tag&&a.splice(0,1,...a[0].children)}}function W(e){if("charList"!==e.tag)return e;let t=e.children;for(let r=0,e=t.length;y.unicodeSets&&r<e;r++){var a=t[r];if("const"===a.tag){let e=U(a,!0);t[r]=e.pop(),t.push(...e)}}let r=[],n={};var i,l=(e,r)=>D(e)-D(r);for(i of t){var s=i.tag,o=(y.ignoreCase&&"char"===s&&(i.value=i.value.toLowerCase()),"char"===s?i.value:"charRange"===s?i.param.minChar:null);if(null===o){if(Z(i)){var c=i.children[0];if(c&&"branch"===c.tag){for(var f of i.children.map(e=>e.children))1<f.length?(f=K(Y(),f),r.push(f)):t.push(f[0]);continue}}r.push(i)}else{o=D(o);let e=n[o];if(e&&"char"!==e.tag){if("charRange"!==e.tag)throw Error("Internal: unexpected node "+s+" in charList");"char"!==s&&0<l(i.param.maxChar,e.param.maxChar)&&(e.param.maxChar=i.param.maxChar)}else n[o]=i}}var u=!r.length;let h;var p,d=e=>"charRange"===e.tag?e.param.maxChar:e.value,g=e=>"charRange"===e.tag?e.param.minChar:e.value;for(p of Object.keys(n).sort((e,r)=>e-r)){let e=n[p];var m=d(e),v=g(e);h&&l(v,v=d(h))<=1&&(e=Q(g(h),0<l(v,m)?v:m),r.pop()),r.push(e),h=e}let b=Y(),x=b.param;if(x.catchable=!1,x.origin="charList",x.exclusive=e.param.exclusive,y.unicodeSets&&x.exclusive&&u){let e=[];for(var k of r)if("char"===k.tag)e.push(D(k.value));else{if("charRange"!==k.tag)throw Error(`Untackled child element ${k.tag} in charList`);e.push([D(k.param.minChar),D(k.param.maxChar)])}e=se(e),r=w(e),x.exclusive=!1}else u||(r=function(n,e){if(n.length<2||!e&&"branch"!==n[0].tag)return n;let r=[],t=[],i={};for(let a=0;a<n.length;a++){let r=n[a],t=function(r){let t=[];for(let e=0;e<r.length&&t;e++){var a,n=r[e];"char"===n.tag?(a=D(n.value),t.push(a)):"charRange"===n.tag?(a=D(n.param.minChar))===(n=D(n.param.maxChar))?t.push(a):t.push([a,n]):t=null}return t}("branch"===r.tag||Z(r)?r.children:[r]);if(t&&!(t.length<=1)){r.dirty=!0,t.idx=a;let e=i[t.length];e||(i[t.length]=e=[]),e.push(t)}}var a,l,s,o,c,f,u=[];const h=e=>Array.isArray(e)?e[0]:e;for([a,l]of Object.entries(i)){l.sort((r,t)=>{for(let e=0;e<r.length;e++)if(h(r[e])!==h(t[e]))return h(r[e])-h(t[e])});for(let e=0;e<l.length-1;e++){var p=function(r,t){if(r.length!==t.length)return-2;var a=0,n=e=>Array.isArray(e)?e:[e,e];for(let e=0;e<r.length;e++){var[i,l]=n(r[e]),[s,o]=n(t[e]);if(i!==s||l!==o)if(s<=i&&l<=o){if(0<a)return-2;a=-1}else{if(!(i<=s&&o<=l))return-2;if(a<0)return-2;a=1}}return a}(l[e],l[e+1]);0<=p?(l[e+1]=l[e],l[e]=null):-1===p&&(l[e]=null)}u.push(+a)}u.sort((e,r)=>r-e);for(s of n)s.dirty||t.push(s);for(o of u)for(c of i[o])c&&(f=function(e){if(!(0<=e.idx))return(r=Y()).children=w(e),r;var r=n[e.idx];return delete r.dirty,r}(c),r.push(f));return r.concat(t)}(r,!0));return 1!==r.length||x.exclusive?(1<r.length&&(r=r.map(e=>V([e]))),b.children=r,b):b=r[0]}function U(t,a,n={}){if("const"!==t.tag)return a?[t]:t;var i=()=>a?[t]:t,l=t.value;if("."===l){if(n.dotAll===y.dotAll)return i();e=n.dotAll?[[0,1114111]]:se(function(t){var a=e=>"string"==typeof e?e.codePointAt(0):e;for(let r=0;r<t.length;r++){let e=t[r];"number"!=typeof e&&("string"==typeof e?t[r]=a(e):t[r]=e.map(a))}return t}(le.lineBreak))}else{if("^"===l||"$"===l){if(n.multiline===y.multiline||t._translated)return i();if(!n.multiline)return i();let e=E("clause","(",{assertion:!0,forward:"$"===l,exclusive:void 0},!0);e.children=w(le.lineBreak).map(e=>V(e)),t._translated=!0;var s=[V(t),V()];if(a)return s;let r=Y();return r.children=s,r}var e,n=(l="\\"===l[0]?l.slice(1):l).toLowerCase(),l=l!==n;if(!(e=Te[n]))return i();l&&(e=se(e))}if(s=w(e),a)return s;n=z();return n.children=s,W(n)}function q(e){if("char"===e.tag||"charRange"===e.tag)return[e];if("clause"!==e.tag)throw Error(`Unexpected node ${e.tag} in operator`);if(Z(node))return e.children.map(e=>"branch"===e.tag?e.children:e).flat();throw Error(`The node type ${e.tag}-${JSON.stringify(e.param)} errors`)}function w(e){var r,t=[];for(r of e){var a=G(r);t.push(a)}return t}function G(e){return Array.isArray(e)?e[0]===e[1]?X(e[0]):Q(e[0],e[1]):X(e)}function D(e){return"string"==typeof e?e.codePointAt(0):e}function V(e){var r=E("branch","|",null,!0);return r.children=e,r}function K(e,r){return e.children=r,e}function z(){return E("charList","[",{},!0)}function Q(e,r){if(!e&&0!==e||!r)throw Error("Both param minChar and maxChar are required.");return E("charRange","-",{minChar:e,maxChar:r},!0)}function X(e){return E("char",e="number"==typeof e?String.fromCodePoint(e):e,null,!0)}function Y(){return E("clause","(",{},!0)}function ae(){return E("branch","|",null,!0)}function ee(){return E("repeat","{",{},!0)}function E(e,r,t,a){return{type:"element",tagType:"statement",tag:e,value:r,param:t,parent:void 0,enclosed:a,children:[]}}return s.param=s.param||{},s.param.groupNames=j,s.param.groupsBounds=u,s.param.repeatBounds=F,s.param.capInsideRptStarts=_,s.param.refFollowingSerials=N,s.param.refManorSecsMap=g,s.param.captureNum=c,s.param.backwardSerials=R,s.hasIgnoreCase=f,s.includedStrs=function(e){let n=[""],i=0;const l=()=>n[++i]="";Ie(s,{enter(e,r,t,a){if(r){if(-1===i)return a.skipBrothers();r=e.tag;if("branch"===r)return l(),a.skipBrothers();if("repeat"===r&&!+e.param.minTimes)return l(),a.skipChildren();if("char"===r||"unicode"===r)n[i]+=X(e.value).value;else{if("clause"===r)return e.param.assertion?a.skipChildren():e.param.exclusive?(l(),a.skipChildren()):void 0;if("edge"===r){if("$"===e.value&&!y.multiline)return i=-1,a.skipBrothers()}else l()}}}}),-1<i&&n.push("");let r=[],t=!1;for(var a of n)!a&&t||(a&&!t&&r.push(""),t=!a,e&&a&&(a=a.toLowerCase()),r.push(a));return r}(f),s}const je=!0;let d=!1;var c,g=0,Ae=1;function m(t,y,a=0,g={},m={}){let S=y;var e=le({tag:"root"});const w=[null];let E=[e],C=0,T=[],O={};T.groups=Object.create(null);e=t.param||{};T.length=1+~~e.captureNum,T.fill(void 0);const I={},V={},j={},v=m.contTracks||{},b=m.refContTracks||{},x=m.refVals||{},K=m.contFailedEnds||{};let k=m.failedRefs||[],A=m.spareFailedRefs||[],R=m.contExemptedTracks||{},L=m.spareContExeTracks||{},M=m.assertExeTracksMap||{},Q=m.assertExeTracksStack||[],_;var n=m.misTracksGroupMap||{},i=m.exeTracksGroupMap||{},l=m.fastLanesMap||{};const N=m.assertPassesMap||{},P=m.refCombiGroupMap||{},X={},Y=e.backwardSerials||{},B=e.groupsBounds||{},s=e.capInsideRptStarts||{},ee=e.refFollowingSerials||{},$=(Object.assign(m,{contTracks:v,contHistories:m.contHistories||{},contFailedEnds:K,refContTracks:b,refVals:x,refCombiGroupMap:P,matchSymbolMap:m.matchSymbolMap||{},treetopGroupMap:m.treetopGroupMap||{},refTreetopTracksMap:m.refTreetopTracksMap||{}}),g.unicode||g.unicodeSets),re=[];var F=g.ignoreCase;let U=a=Math.trunc(a)||0,G=!1;const z=(e,r=-1)=>e&&e.length?e[e.length+r]:null,te=["repeat","branch","clause"];var r,o,c,J=!1,H=!1,ae=!1,Z=!1,ne=!1,W=!1,q=null,ie=!1;if(Ie(t,{enter:function(n,r,e,t){if("root"!==n.type){var{tag:i,param:l}=n,{tag:i,param:l}=(Re(),n),s=(i in X?X[i]=1:X[i]++,H&&"repeat"!==i&&("clause"!==i||l.assertion));if(H&&(s&&"ref"===i?de(n):(o=ue()).children&&Ie(o,{enter(e,r){"ref"===e.tag&&de(e.node)}}),he()),s)return t.fallback();var o=H,s=!ae&&!H;if(H=ae=!1,J=!1,C===r?s&&E.index++:C<r&&(c=z(E),w[r]=c,(E=c.children).index=0),w,!(s||C<r)||E.index<E.length||E.push(le(n)),r>C&&E.index<E.length-1){let e=E.index;(e=q?Math.max(e,q[r]||0):e)!==E.length-1&&(E.length=e+1)}E;let a=E[E.index];C=r,a,void 0===a.start&&(a.start=U);var c=()=>(J=H=!0,t.fallback());if(null!==q){if(q[r]!==E.index)return t.skipChildren();if(q.length-1!==r)return;if(q=null,ie)return ie=!1,c()}if(a.ended)return Z=!0,("clause"!==i||l.assertion)&&("branch"!==i||l&&l.isStatic)&&t.skipChildren();if(Z=!1,A.foremostCapSerial&&n.serial<A.foremostCapSerial&&(me(),A),s&&!a.reentrant&&oe(n,U)){let e=_&&_[n.serial];if(e&&e[a.start])e[a.start]=!1;else{!k.encore&&k.encore||pe(A,n.serial),A.encore?ge():k.encore||pe(k,n.serial);var f=k.map(e=>[e,D(e.groupIndex)]);JSON.stringify(f)!==k.lastBrief&&Object.defineProperty(k,"lastBrief",{value:JSON.stringify(f),enumerable:!1,writable:!0});let e=R[n.serial];if(!(function(d,l){let i=d.lastRefs;if(i=!i&&d.encore?d:i){let t=d.changedSerials,r=(t=t||(d.changedSerials={}),d.isUnique),a=(d.encore?void 0===r&&(r=d.isUnique=function(){let t={},r=!0;for(var e of d)t[e.groupIndex]=ke(be(e.groupIndex));var a,n,i,l=Object.keys(t);if(1===l.length&&ce(l[0].groupIndex,t[l[0].groupIndex]))return!1;let s=[];for(a of Object.keys(t)){var o=P[a],o=o&&o[t[a]];o&&s.push(o)}let c=P.combiLenMap,f=(void 0===c&&(P.combiLenMap=c={}),{}),u,h=0;for(n of s){for(var p of Object.keys(n)){let e=f[p];if(e||(f[p]=e={len:c[p]||1,count:0}),e.count++,e.count===e.len&&e.len<=l.length){if(e.len===l.length){r=!1;break}e.len>h&&(u=p,h=e.len)}}if(!r)break}if(!r)return r;void 0===u&&(void 0===P.combiIdInc&&(P.combiIdInc=1),u=P.combiIdInc++);for(i of l){let e=P[i],r=(e||(P[i]=e={}),e[t[i]]);r||(e[t[i]]=r={}),r[u]||(r[u]=!0,c[i]?c[i]++:c[i]=1)}return r}()):r=!1,d.validSerial||0),n=[];for(let e=0;r&&e<i.length;e++){var s=i[e];let r=ye(s.groupIndex,!1,l);var o=l<=s.serial&&s.serial>a;if(o&&(t[s.serial]=!0),s.serial>a&&(JSON.stringify(r),ce(s.groupIndex,r),x),o)if(null===r)n.push(s.groupIndex);else{let e=s.serials;o=e.find(e=>e>a&&((i,r)=>{let t=R[r];if(t,t&&Object.keys(t).filter(e=>t[e]).map(e=>y.slice(e)),t){if(!i)return!0;let e=Object.keys(t).filter(e=>t[e]),a=(Y[l]&&(e=e.map(e=>Me(e,y))),{serial:r}),n=ee[r]&&{serial:ee[r]};return e.some(e=>{return fe(a,i),n&&oe(n,e+i.length),r=e,!((t=fe(a,i))&&t[r]||n&&oe(n,e+i.length));var r,t})}})(r,e));if(o){a=o;break}}}if(a&&(d.validSerial=a),a<l&&d.encore&&!A.failureContinued){let t=A;if(!t.length){t.push(...d);for(let r=0;r<t.length;r++){let e=t[r];var c=ye(e.groupIndex,!1,l),f=xe(e.groupIndex,!1);e.valSym!==f&&(t[r]=e=Object.assign({},e),e.refVal=c,e.valSym=f)}let e=L;e.finalSerial=0}A.failureContinued=!0}if(a<l&&!n.length)for(var e of i)if(function(e,r){let t=B[e];e=e=>r<=e[1]&&e[0]<=r;return"object"==typeof t?t.some(e):t&&e(t)}(e.groupIndex,l)){n.push(e.groupIndex);break}return a>=l||n.length}}(k,n.serial,a)&&e&&e[a.start])||void a)return a,a,a,e,ne=!0,c();e[a.start]=!1,a,e}}{f=a;let e=n.serial,r=S===y?v:v["t"+S.length],t=(r=r||(v["t"+S.length]={}))[e];t||(r[e]=t={});f=f.start;f in t||(t[f]=!0)}if(W)return s&&(a.onLane=!0),t.skipBrothers();if((f=a).node&&(("clause"!==n.tag||!n.param.assertion)&&ve(f)))return W=!0,s&&(a.onLane=!0),t.skipBrothers();var s=n.value,u=!1;if("char"===i)return(h=function(r,t,a=0){let n="";if(F&&we(r))return t.substr(a,r.length).toLowerCase()==r.toLowerCase()&&t[a];for(let e=0;e<r.length;e++){if(t[a+e]!==r[e])return"";n+=r[e]}return n}(s,S,U))?void(U+=h.length):c();if("const"===i){let e=function(e,r,t=0){var a=r[t]||"",n=$?Ee(r,t,1):a,i=e.toLowerCase(),l=e!==i,s=e=>l?!e:e;if("."==(e=i))return g.dotAll||!"\n\r\u2028\u2029".includes(a)?n:"";const o=Te.s,c=[["a","z"],["A","Z"],["0","9"],"_"],f=e=>!!Se(e,c);if("\\b"===e)return i=r[t]||"",s(f(r=r[t-1]||"")&&!f(i)||!f(r)&&f(i));if("\\w"===e)return s(f(a))?n:"";if("\\d"===e)return s(Se(a,[["0","9"]]))?n:"";if("\\s"===e)return s(Se(a,o))?n:"";throw Error("Unknown constant "+e)}(s,S,U);return JSON.stringify(e),e?(!0===e&&(e=""),void(U+=e.length)):c()}if("charRange"===i)return h=function(r,e,t=0){e=$?Ee(e,t,1):e[t]||"";const a=[["a","z"],["A","Z"]],n=e=>"string"==typeof e?e.codePointAt(0):e,i=(e,r)=>n(e)-n(r),l=(e,r)=>0<=i(e,r[0])&&i(e,r[1])<=0;var s,[t,o]=r,c=Oe(e,t,o);return c?e:(F&&we(e)&&a.some(e=>((e,r)=>l(e[0],r)||l(r[0],e))(r,e))&&(s=e.toLowerCase(),c=Oe(e===s?e.toUpperCase():s,t,o)),c&&e)}([l.minChar,l.maxChar],S,U),JSON.stringify(h),h?U+=h.length:c();if("unicode"===i)return h=function(e,r,t=0){r=$?Ee(r,t,1):r[t]||"";if(r.codePointAt()===e)return r}(s,S,U),JSON.stringify(h),h?U+=h.length:c();if("edge"===i)return function(e,r){var t=e=>["\r","\n","\u2028","\u2029"].includes(e);if("^"===e)return 0===U||g.multiline&&t(r[U-1]);if("$"===e)return U===r.length||g.multiline&&t(r[U]);throw Error("Unknown position sign "+e)}(s,y,U)?U+=0:c();if("ref"===i){let t=D(s,l.isName);JSON.stringify(t);{var h=n,p=t,d=a;let e=b[h.serial],r=(e=e||(b[h.serial]={}))[p];r=r||(e[p]={});h=d.start;h in r||(r[h]=!0)}p=l.isName?I[s]:s;let e=x[p];if((e=e||(x[p]={}))[t]=!0,G&&t&&(t=Le(t,$)),k.length){l.isName&&I;let e=k.findIndex(e=>e.serial===n.serial);(0<(e=e<0&&n.serial>k[0].serial&&k.encore?0:e)||0===e)&&(k.encore?k.splice(e):k.splice(e,1))}d=G?Me(U,y)-(t||"").length:U;return t&&!function(e,r,t=0){if(e instanceof RegExp)return 0==(t?r.slice(t):r).search(e);if("string"!=typeof e)throw Error("Expect a string or regExp for search.");return r.substr(t,e.length)===e}(t,y,d)?(de(n,t,!0),he(a),c()):U+=(t||"").length}if("repeat"===i&&!a.reentrant&&l.restraint&&l.minTimes<1)return t.skipChildren();if(o&&"clause"===i&&!l.assertion)return l.exclusive?t.skipChildren():void(a.children.length&&se(a,n,r));if("clause"!==i||!l.assertion||l.forward||a.reentrant||G||(a.inverted=!0,S=(S=m.reversedText)||(m.reversedText=Le(y,$)),U=Me(U,y),G=!0),"clause"===i&&l.assertion){h=n;if((s=M[h.serial])&&(Q.push(s),_=s),l.forward&&G&&(a.inverted=!0,a.origText=S,S=y,U=Me(U,y),G=!1),ve(a))return t.skipChildren()}else"clause"===i&&l.flagGroup&&(re.push(F),F=l.flagObj.ignoreCase);if(!(u=!!["clause","branch","repeat"].includes(i)||u))throw Error("Unrecognized node named "+i)}},leave:function(t,a,e,n){if(a||"root"!==t.type){Re(),C!==a&&C>a&&(w.pop(),E=w[a].children,C=a);let c=E[E.index];if(null===q||q[a]===E.index){S.substr(U,20),U;var{tag:r,param:i}=t,l=e=>{J=H=!0,e||he(),E.pop(),E.index--,n.fallback()};if(ne)return l(!(ne=!1));if(H&&!te.includes(r))return l(!0);var s=H;if(H=!1,W)if("clause"===r&&i.assertion)W=!1;else if("repeat"!==r)return n.skipBrothers();if("repeat"===r){const b=(e,r,t)=>{let a={};for(let e=1;e<T.length;e++){var n,i=T[e];t<V[e]&&(n=O[e],a[e]=[n,i],T[e]=O[e]=V[e]=void 0)}let l=[];for(var s of Object.keys(j)){var o;s<t||(o=j[s],l.push(o),delete j[s])}l.length&&(a=Object.assign({},...l,a)),c.matchMaps[r]=a},x=(e,r)=>{var t=e in c.statuses;c.statuses[e]=r;let a=c.avlStatusesKeys;t||r.ended||a.push(e)};var o=r=>{if(r in c.statuses&&c.statuses[r].ended){let e=c.avlStatusesKeys;r=e.indexOf(r);0<=r&&e.splice(r,1)}};const k=e=>{var r;K,e&&c,e||je?e||U===c.lastStart||(b(c.start,c.lastStart,t.serial),x(c.lastStart,c.children),r=c.statuses[U]||[],c.children=r,c.lastStart=U,r=c.matchMaps[U],j[t.serial]=r):c.children.length=0,!e&&c.children.length&&se(c,t,a),c,U,ae=!0,n.reenter()};var f=e=>{let r=null;for(var t of c.avlStatusesKeys)a=+t,(!e||e<=a)&&a<=c.lastStart&&(null===r?a>=r:a>r)&&!c.statuses[a].ended&&(r=+t);var a;let n;if(null!==r&&(U=r,n=c.statuses[r]),!n||n.ended)return!1;k()},u=()=>{var e=c.matchMaps[z(c.backtracks,-2)];j[t.serial]=e};if(!c.reentrant&&(c.times=0,c.backtracks=[c.start],c.lastIndex=c.start,c.lastStart=c.start,c.lastEnd=c.start,c.statuses={[c.start]:c.children},c.avlStatusesKeys=Object.keys(c.statuses),c.matchMaps={},c.reentrant=!0,i.restraint&&i.minTimes<1))return c.ended=!0;if(c.ended&&!i.restraint)return(Z=!1)!==f(z(c.backtracks,-2))?(c.ended=!1,c.backtracks.pop(),c.times--,void c):c.backtracks.length-1<=0||c.times<=i.minTimes?(c,c,j[t.serial]=null,l()):(c.backtracks.pop(),c.times--,U=z(c.backtracks),c.lastStart=U,u(),c.lastEnd=U,c.offset=U-c.start);if(c.ended)return Z=!1,Ce(i.maxTimes)&&c.times>=i.maxTimes||!c.backtracks.length?l():(U=z(c.backtracks),x(c.lastStart,c.children),c.lastEnd=c.lastStart=U,c.children=[],c.tracking=!0,c.ended=!1,void k());if(J||Z){if(J=!1,c.children.ended=!0,o(c.lastStart),c.tracking)return c.backtracks.length&&!1!==f()?i.restraint?(c.ended=!1,c.backtracks.pop(),c.times--,void c):c.times--:l();if(u(),c.ended=!0,U=c.lastStart,c.times<i.minTimes&&i.isStatic)return void l();if(c.times<i.minTimes)return k(!0)}else{c.times++;f=U-c.lastIndex;U,c,c.backtracks.includes(U)||c.backtracks.push(U),i.restraint||c,c.lastIndex=U,(Ce(i.maxTimes)&&c.times>=i.maxTimes||!f)&&(c.ended=!0),i.isStatic&&(c.children.ended=!0,o(c.lastStart))}if(c,!c.ended)if(!i.restraint||c.times<i.minTimes){f=c.statuses[U];if(f&&f.ended)c.ended=!0;else{var o=t.serial;let e=K[o];if(e&&(e.includes(U)||i.empty&&e.includes(U+1)))return c.ended=!0,k();k()}}else c.ended=!0;if(c.ended)return b(c.start,c.lastStart,t.serial),c.times<i.minTimes?l():(u(),c.offset=U-c.start,void(c.lastEnd=U))}if("branch"===r){if(c.ended)return void(U=c.start);f=!J;if(c.ended=!0,s||Z)E,c.failed=!0,U=c.start,J=!0;else if(f)return J=!1,n.skipBrothers()}if("clause"===r&&!i.assertion&&!i.flagGroup){c.reentrant||(c.reentrant=!0);let e=!J&&!Z;if(J=!1,i.exclusive&&((e=!e)?(o=$?Math.max(1,Ee(y,U,1).length):1,(U+=o)>S.length&&(e=!1)):U=c.start),e&&i.catchable){c.offset=U-c.start;var{captureIndex:u,groupName:s}=i,f=G?Me(U,y):c.start,o=f+c.offset,f=y.slice(f,o);T[u]=f,O[u]=o,V[u]=t.serial,s&&(I[s]=u)}else if(!e)return l()}if("clause"===r&&i.assertion){f=c.reentrant,o=(c.reentrant||(c.lastIndex=c.start,c.reentrant=!0),()=>{!i.forward&&c.inverted?(U=c.start,S=y,G=!1):i.forward&&c.inverted&&(U=c.start,c.origText&&(S=c.origText,c.origText=null),G=!0)});let e=!J;if(J=!1,e){s=c;let r=M[s.serial],t=(r||(M[s.serial]=r={}),[]);let a=[s.children],n=[0];for(let e=0;e<a.length;){var h=a[e][n[e]++];if(h){{p=void 0;d=void 0;p=void 0;g=void 0;var p=h;{var d=p.serial,g=r;let e=g[d];(e=e||(g[d]={}))[p.start]=!0,t.push(p)}}if("clause"!==h.tag||!h.node||!h.node.param.assertion){g=h;if(g.node&&("clause"!==g.tag||!g.node.param.assertion))if(g.node.param.canPass){let e=N[g.serial];e||(N[g.serial]=e={}),e[g.start]=!0}var m=h.children;if(m&&m.length&&(a.push(m),n.push(0)),"repeat"===h.tag)for(let e=0,r=h.backtracks;e<r.length-1;e++){var v=h.statuses[r[e]];v&&v!==m&&(a.push(v),n.push(0))}}}else e++}t.map(e=>e.tag+"-"+e.serial+" "+e.start);u=s;if("clause"===u.tag&&u.node.param.assertion&&u.node.param.isAssertSilent){let e=N[u.serial];e||(N[u.serial]=e={}),e[u.start]=!0}}else i.exclusive&&(c.children=[]);if(f||_&&_===M[t.serial]&&(Q.pop(),_=null),(e=i.exclusive?!e:e)||(c.lastFailedEnd=U,U=c.start),!e)return o(),l();o(),U=c.start}else if("clause"===r&&i.flagGroup&&(F=re.pop(),J))return l();c.offset=U-c.start,te.includes(r)||(c.ended=!0)}}else(H||J)&&(U=null)}}),1===A.foremostCapSerial&&me(),m.failedRefs=k,m.spareFailedRefs=A,m.contExemptedTracks=R,m.spareContExeTracks=L,m.assertExeTracksMap=M,m.assertExeTracksStack=Q,Object.assign(m,{misTracksGroupMap:n,exeTracksGroupMap:i,fastLanesMap:l,assertPassesMap:N}),"number"!=typeof U)return null;T[0]=S.slice(a,U);for(r of Object.keys(j)){var f,u=j[r];if(u)for(var[h,p]of Object.entries(u)){let e=s[h];e&&(Array.isArray(e)?e.includes(+r):+r===e)&&([p,f]=p,T[h]=f,O[h]=p)}}for([o,c]of Object.entries(I))T.groups[o]=T[c],O[o]=O[c];return T._indices=O,T;function le(e){var r={tag:e.tag,serial:e.serial};return Object.defineProperty(r,"children",{value:Object.assign([],{index:0}),enumerable:!1,writable:!0}),("ref"===e.tag||"clause"===e.tag&&e.param.assertion||e.param&&e.param.canPass)&&Object.defineProperty(r,"node",{value:e,enumerable:!1,writable:!0}),r}function se(e,r,t){e=function(e,r,t){(q=[])[t]=E.index;let a=e,n=r,i=t+1;for(;;i++){if(a!==e){if(["repeat"].includes(a.tag))break;if("branch"===a.tag&&a.isStatic)break;if("clause"===a.tag&&n.param.exclusive){a=null;break}if("branch"===a.tag&&(a.ended=!1),"ref"===a.tag)break}var l=a.children&&a.children.length-1;if(!(0<=l))break;a=a.children[l],n=n.children[l],q[i]=l}return a}(e,r,t);e&&!["repeat","branch"].includes(e.tag)&&(ie=!0)}function oe(e,r){var t=S===y?v:v["t"+S.length],t=t&&t[e.contId||e.serial];return t&&r in t}function ce(e,r){e=x[e];return e&&e[r]}function fe(e,r){e=b[e.serial];if(e)return e[r]}function d(e,r){let t=L,a=t[e];(a=a||(t[e]={}))[r.start]=!0}function ue(){return E[E.index]}function he(e){if(A.length){e=e||ue();var r=L[e.serial];if(!(r&&e.start in r)){d(e.serial,e);var n=e=>Ie({children:e},{enter(e,r){r&&d(e.serial,e)}});let t=[[e]],a=[0];for(let e=0;e<t.length;){var i=t[e][a[e]++];if(i){var l=i.children;if(l&&l.length&&(n(l),t.push(l),a.push(0)),"repeat"===i.tag)for(let e=0,r=i.backtracks;e<r.length-1;e++){var s=i.statuses[r[e]];s&&s!==l&&(n(s),t.push(s),a.push(0))}}else e++}}}}function pe(e,r){var t;t=r,(r=e).length&&r.some(e=>function(e,r){var e=B[e],t=e=>e[1]<r;return"object"==typeof e?t(e[e.length-1]):!serialRange||t(e)}(e.groupIndex,t)&&D(e.groupIndex)!==e.refVal)&&(e.encore=!0)}function de(t,a,e){let r=t.param.isName?I[t.value]:t.value;void 0===a&&(a=D(r));var n=xe(r),i=!!e;let l=A,s=l.findIndex(e=>e.groupIndex===r),o=(a||0<=s&&(l,s),l.serialMismatchs||(l.serialMismatchs={}),l.serialMismatchs);if((!i&&o[t.serial]||i&&!o[t.serial]&&t.serial in o)&&(l,s),!e&&0<=s){let e=l[s],r=(e.refVal=a,e.valSym=n,e.serial=Math.max(e.serial,t.serial),e.serials);r.includes(t.serial)||r.push(t.serial)}else{s<0&&(s=l.length);e={serial:t.serial,groupIndex:r,refVal:a,valSym:n,serials:[t.serial]};l[s]=e}l.sort((e,r)=>r.serial-e.serial),o[t.serial]=i;a=l[0];if(a){let e=L;e.finalSerial=a.serial}l.foremostCapIndex=l.reduce((e,r)=>!e||r.groupIndex<e?r.groupIndex:e,k.foremostCapIndex);n=B[l.foremostCapIndex][0];l.foremostCapSerial="object"==typeof n?n[0]:n}function ge(){var e;if(0<=(e=L.finalSerial||0))for(var r of Object.keys(R))e<r?(r in L&&Object.assign(R[r],L[r]),L[r]=R[r]):isNaN(r)||(r in L?L[r]=Object.assign(R[r],L[r]):L[r]=R[r]);var t,a,n,i,l=A.reduce((e,r)=>Math.max(e,r.serial),0);A.finalSerial=l;let s={},o={};for(t of A)s[t.groupIndex]=t;if(k.lastRefs)for(i of k.lastRefs){var c=s[i.groupIndex];(!c||c.serial<i.serial)&&(o[i.groupIndex]=i)}for(a of Object.keys(s)){let e=o[a],r=s[a];e?(r.serial>e.serial&&(o[a]=r),n=e.serials.concat(r.serials),o[a].serials=[...new Set(n)]):o[a]=r}A.lastRefs=Object.values(o).sort((e,r)=>r.serial-e.serial),A.foremostCapIndex=A.lastRefs.reduce((e,r)=>0===e||r.groupIndex<e?r.groupIndex:e,0),k=A,A=[],R=L,L={},k.i||(k.i=Ae++),A.i=Ae++}function me(){A.length&&(A,ge())}function ve(e){var r=N[e.serial];return!(!r||!r[e.start]||(e.passed=!0,0))}function D(e,r){r&&(e=I[e]);let t=s[e];if(t)for(var a of Object.keys(j).reverse())if(Array.isArray(t)?t.includes(+a):!(+a<t||+a>t)){var n,a=j[a];if(a&&a[e])return[n,a]=a[e],a}return T[e]}function be(e,r){r&&(e=I[e]);let t=s[e];if(t)for(var a of Object.keys(j).reverse())if(Array.isArray(t)?t.includes(+a):+a===t){var n,a=j[a];if(a&&a[e])return[a,n]=a[e],[a-n.length,n.length]}r=T[e];return"string"!=typeof r?r:[O[e]-r.length,r.length]}function xe(e,r){return ke(be(e,r))}function ke(e){return e&&e[0]+"_"+e[1]}function ye(e,r,t){r&&(e=I[e]);let a=B[e];r=e=>t<=e[1]&&e[0]<=t;return("object"!=typeof a