!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("prettier/standalone")):"function"==typeof define&&define.amd?define(["prettier/standalone"],e):"object"==typeof exports?exports.prettierPluginSolidity=e(require("prettier/standalone")):(t.prettierPlugins=t.prettierPlugins||{},t.prettierPlugins.solidity=e(t.prettier))}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this||{},(t=>(()=>{var e={121:function(t,e,i){"use strict";var s;"undefined"!=typeof globalThis?globalThis:void 0!==i.g?i.g:"undefined"!=typeof self&&self,s=()=>{var t=(()=>{var t=Object.defineProperty,e={};((e,i)=>{for(var s in i)t(e,s,{get:i[s],enumerable:!0})})(e,{ParserError:()=>ke,parse:()=>Oe,tokenize:()=>De,visit:()=>Pe});var i={92:()=>{}},s={};function r(t){var e=s[t];if(void 0!==e)return e.exports;var n=s[t]={exports:{}};return i[t](n,n.exports,r),n.exports}r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var n={};(()=>{r.d(n,{dx:()=>Y,q2:()=>At,FO:()=>ve,xf:()=>Se,Gy:()=>Ne,s4:()=>Dt,c7:()=>Oe,_7:()=>le,tx:()=>Re,gp:()=>ge,cK:()=>wt,zs:()=>fe,AV:()=>Se,Xp:()=>g,VS:()=>T,ul:()=>W,hW:()=>Ht,x1:()=>Xt,z5:()=>ee,oN:()=>pe,TB:()=>de,u1:()=>me,_b:()=>Fe,$F:()=>se,_T:()=>Me,db:()=>re,Zx:()=>te,_x:()=>Ft,r8:()=>U,JI:()=>k,TP:()=>D,WU:()=>t,Nj:()=>c,ZP:()=>Xe});class t{constructor(){this.source=null,this.type=null,this.channel=null,this.start=null,this.stop=null,this.tokenIndex=null,this.line=null,this.column=null,this._text=null}getTokenSource(){return this.source[0]}getInputStream(){return this.source[1]}get text(){return this._text}set text(t){this._text=t}}function e(t,e){if(!Array.isArray(t)||!Array.isArray(e))return!1;if(t===e)return!0;if(t.length!==e.length)return!1;for(let i=0;i>>16)*h&65535)<<16)&4294967295,n=n<<15|n>>>17,n=(65535&n)*c+(((n>>>16)*c&65535)<<16)&4294967295,l^=n,l=l<<13|l>>>19,r=5*(65535&l)+((5*(l>>>16)&65535)<<16)&4294967295,l=27492+(65535&r)+((58964+(r>>>16)&65535)<<16);switch(n=0,a){case 3:n^=(255&s.charCodeAt(u+2))<<16;case 2:n^=(255&s.charCodeAt(u+1))<<8;case 1:n^=255&s.charCodeAt(u),n=(65535&n)*h+(((n>>>16)*h&65535)<<16)&4294967295,n=n<<15|n>>>17,n=(65535&n)*c+(((n>>>16)*c&65535)<<16)&4294967295,l^=n}return l^=s.length,l^=l>>>16,l=2246822507*(65535&l)+((2246822507*(l>>>16)&65535)<<16)&4294967295,l^=l>>>13,l=3266489909*(65535&l)+((3266489909*(l>>>16)&65535)<<16)&4294967295,l^=l>>>16,l>>>0}class a{constructor(){this.count=0,this.hash=0}update(){for(let t=0;t>>17,t*=461845907,this.count=this.count+1;let i=this.hash^t;i=i<<13|i>>>19,i=5*i+3864292196,this.hash=i}}}finish(){let t=this.hash^4*this.count;return t^=t>>>16,t*=2246822507,t^=t>>>13,t*=3266489909,t^=t>>>16,t}static hashStuff(){const t=new a;return t.update.apply(t,arguments),t.finish()}}function o(t){return t?"string"==typeof t?s(t):t.hashCode():-1}function l(t,e){return t?t.equals(e):t===e}function h(t){return null===t?"null":t}function c(t){return Array.isArray(t)?"["+t.map(h).join(", ")+"]":"null"}const u="h-";class p{constructor(t,e){this.data={},this.hashFunction=t||o,this.equalsFunction=e||l}add(t){const e=u+this.hashFunction(t);if(e in this.data){const i=this.data[e];for(let e=0;et.startsWith(u))).flatMap((t=>this.data[t]),this)}toString(){return c(this.values())}get length(){return Object.keys(this.data).filter((t=>t.startsWith(u))).map((t=>this.data[t].length),this).reduce(((t,e)=>t+e),0)}}class d{hashCode(){const t=new a;return this.updateHashCode(t),t.finish()}evaluate(t,e){}evalPrecedence(t,e){return this}static andContext(t,e){if(null===t||t===d.NONE)return e;if(null===e||e===d.NONE)return t;const i=new m(t,e);return 1===i.opnds.length?i.opnds[0]:i}static orContext(t,e){if(null===t)return e;if(null===e)return t;if(t===d.NONE||e===d.NONE)return d.NONE;const i=new _(t,e);return 1===i.opnds.length?i.opnds[0]:i}}class m extends d{constructor(t,e){super();const i=new p;t instanceof m?t.opnds.map((function(t){i.add(t)})):i.add(t),e instanceof m?e.opnds.map((function(t){i.add(t)})):i.add(e);const s=x(i);if(s.length>0){let t=null;s.map((function(e){(null===t||e.precedencet.toString()));return(t.length>3?t.slice(3):t).join("&&")}}class _ extends d{constructor(t,e){super();const i=new p;t instanceof _?t.opnds.map((function(t){i.add(t)})):i.add(t),e instanceof _?e.opnds.map((function(t){i.add(t)})):i.add(e);const s=x(i);if(s.length>0){const t=s.sort((function(t,e){return t.compareTo(e)})),e=t[t.length-1];i.add(e)}this.opnds=Array.from(i.values())}equals(t){return this===t||t instanceof _&&e(this.opnds,t.opnds)}updateHashCode(t){t.update(this.opnds,"OR")}evaluate(t,e){for(let i=0;it.toString()));return(t.length>3?t.slice(3):t).join("||")}}function x(t){const e=[];return t.values().map((function(t){t instanceof d.PrecedencePredicate&&e.push(t)})),e}function f(t,e){if(null===t){const t={state:null,alt:null,context:null,semanticContext:null};return e&&(t.reachesIntoOuterContext=0),t}{const i={};return i.state=t.state||null,i.alt=void 0===t.alt?null:t.alt,i.context=t.context||null,i.semanticContext=t.semanticContext||null,e&&(i.reachesIntoOuterContext=t.reachesIntoOuterContext||0,i.precedenceFilterSuppressed=t.precedenceFilterSuppressed||!1),i}}class y{constructor(t,e){this.checkContext(t,e),t=f(t),e=f(e,!0),this.state=null!==t.state?t.state:e.state,this.alt=null!==t.alt?t.alt:e.alt,this.context=null!==t.context?t.context:e.context,this.semanticContext=null!==t.semanticContext?t.semanticContext:null!==e.semanticContext?e.semanticContext:d.NONE,this.reachesIntoOuterContext=e.reachesIntoOuterContext,this.precedenceFilterSuppressed=e.precedenceFilterSuppressed}checkContext(t,e){null!==t.context&&void 0!==t.context||null!==e&&null!==e.context&&void 0!==e.context||(this.context=null)}hashCode(){const t=new a;return this.updateHashCode(t),t.finish()}updateHashCode(t){t.update(this.state.stateNumber,this.alt,this.context,this.semanticContext)}equals(t){return this===t||t instanceof y&&this.state.stateNumber===t.state.stateNumber&&this.alt===t.alt&&(null===this.context?null===t.context:this.context.equals(t.context))&&this.semanticContext.equals(t.semanticContext)&&this.precedenceFilterSuppressed===t.precedenceFilterSuppressed}hashCodeForConfigSet(){const t=new a;return t.update(this.state.stateNumber,this.alt,this.semanticContext),t.finish()}equalsForConfigSet(t){return this===t||t instanceof y&&this.state.stateNumber===t.state.stateNumber&&this.alt===t.alt&&this.semanticContext.equals(t.semanticContext)}toString(){return"("+this.state+","+this.alt+(null!==this.context?",["+this.context.toString()+"]":"")+(this.semanticContext!==d.NONE?","+this.semanticContext.toString():"")+(this.reachesIntoOuterContext>0?",up="+this.reachesIntoOuterContext:"")+")"}}class g{constructor(t,e){this.start=t,this.stop=e}clone(){return new g(this.start,this.stop)}contains(t){return t>=this.start&&tthis.addInterval(t)),this),this}reduce(t){if(t=i.stop?(this.intervals.splice(t+1,1),this.reduce(t)):e.stop>=i.start&&(this.intervals[t]=new g(e.start,i.stop),this.intervals.splice(t+1,1))}}complement(t,e){const i=new T;return i.addInterval(new g(t,e+1)),null!==this.intervals&&this.intervals.forEach((t=>i.removeRange(t))),i}contains(t){if(null===this.intervals)return!1;for(let e=0;ei.start&&t.stop=i.stop?(this.intervals.splice(e,1),e-=1):t.start"):e.push("'"+String.fromCharCode(s.start)+"'"):e.push("'"+String.fromCharCode(s.start)+"'..'"+String.fromCharCode(s.stop-1)+"'")}return e.length>1?"{"+e.join(", ")+"}":e[0]}toIndexString(){const e=[];for(let i=0;i"):e.push(s.start.toString()):e.push(s.start.toString()+".."+(s.stop-1).toString())}return e.length>1?"{"+e.join(", ")+"}":e[0]}toTokenString(t,e){const i=[];for(let s=0;s1?"{"+i.join(", ")+"}":i[0]}elementName(e,i,s){return s===t.EOF?"":s===t.EPSILON?"":e[s]||i[s]}get length(){return this.intervals.map((t=>t.length)).reduce(((t,e)=>t+e))}}class E{constructor(){this.atn=null,this.stateNumber=E.INVALID_STATE_NUMBER,this.stateType=null,this.ruleIndex=0,this.epsilonOnlyTransitions=!1,this.transitions=[],this.nextTokenWithinRule=null}toString(){return this.stateNumber}equals(t){return t instanceof E&&this.stateNumber===t.stateNumber}isNonGreedyExitState(){return!1}addTransition(t,e){void 0===e&&(e=-1),0===this.transitions.length?this.epsilonOnlyTransitions=t.isEpsilon:this.epsilonOnlyTransitions!==t.isEpsilon&&(this.epsilonOnlyTransitions=!1),-1===e?this.transitions.push(t):this.transitions.splice(e,1,t)}}E.INVALID_TYPE=0,E.BASIC=1,E.RULE_START=2,E.BLOCK_START=3,E.PLUS_BLOCK_START=4,E.STAR_BLOCK_START=5,E.TOKEN_START=6,E.RULE_STOP=7,E.BLOCK_END=8,E.STAR_LOOP_BACK=9,E.STAR_LOOP_ENTRY=10,E.PLUS_LOOP_BACK=11,E.LOOP_END=12,E.serializationNames=["INVALID","BASIC","RULE_START","BLOCK_START","PLUS_BLOCK_START","STAR_BLOCK_START","TOKEN_START","RULE_STOP","BLOCK_END","STAR_LOOP_BACK","STAR_LOOP_ENTRY","PLUS_LOOP_BACK","LOOP_END"],E.INVALID_STATE_NUMBER=-1;class R extends E{constructor(){return super(),this.stateType=E.RULE_STOP,this}}class v{constructor(t){if(null==t)throw"target cannot be null.";this.target=t,this.isEpsilon=!1,this.label=null}}v.EPSILON=1,v.RANGE=2,v.RULE=3,v.PREDICATE=4,v.ATOM=5,v.ACTION=6,v.SET=7,v.NOT_SET=8,v.WILDCARD=9,v.PRECEDENCE=10,v.serializationNames=["INVALID","EPSILON","RANGE","RULE","PREDICATE","ATOM","ACTION","SET","NOT_SET","WILDCARD","PRECEDENCE"],v.serializationTypes={EpsilonTransition:v.EPSILON,RangeTransition:v.RANGE,RuleTransition:v.RULE,PredicateTransition:v.PREDICATE,AtomTransition:v.ATOM,ActionTransition:v.ACTION,SetTransition:v.SET,NotSetTransition:v.NOT_SET,WildcardTransition:v.WILDCARD,PrecedencePredicateTransition:v.PRECEDENCE};class b extends v{constructor(t,e,i,s){super(t),this.ruleIndex=e,this.precedence=i,this.followState=s,this.serializationType=v.RULE,this.isEpsilon=!0}matches(t,e,i){return!1}}class L extends v{constructor(e,i){super(e),this.serializationType=v.SET,null!=i?this.label=i:(this.label=new T,this.label.addOne(t.INVALID_TYPE))}matches(t,e,i){return this.label.contains(t)}toString(){return this.label.toString()}}class S extends L{constructor(t,e){super(t,e),this.serializationType=v.NOT_SET}matches(t,e,i){return t>=e&&t<=i&&!super.matches(t,e,i)}toString(){return"~"+super.toString()}}class C extends v{constructor(t){super(t),this.serializationType=v.WILDCARD}matches(t,e,i){return t>=e&&t<=i}toString(){return"."}}class A extends v{constructor(t){super(t)}}class w{}class N extends w{}class I extends N{}class k extends I{get ruleContext(){throw new Error("missing interface implementation")}}class D extends I{}class O extends D{}const P={toStringTree:function(t,e,i){e=e||null,null!==(i=i||null)&&(e=i.ruleNames);let s=P.getNodeText(t,e);s=s.replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r");const r=t.getChildCount();if(0===r)return s;let n="("+s+" ";r>0&&(s=P.toStringTree(t.getChild(0),e),n=n.concat(s));for(let i=1;i=0&&e0&&(t+=", "),this.returnStates[e]!==H.EMPTY_RETURN_STATE?(t+=this.returnStates[e],null!==this.parents[e]?t=t+" "+this.parents[e]:t+="null"):t+="$";return t+"]"}}get length(){return this.returnStates.length}}class K extends H{constructor(t,e){let i=0;const s=new a;null!==t?s.update(t,e):s.update(1),i=s.finish(),super(i),this.parentCtx=t,this.returnState=e}getParent(t){return this.parentCtx}getReturnState(t){return this.returnState}equals(t){return this===t||t instanceof K&&this.hashCode()===t.hashCode()&&this.returnState===t.returnState&&(null==this.parentCtx?null==t.parentCtx:this.parentCtx.equals(t.parentCtx))}toString(){const t=null===this.parentCtx?"":this.parentCtx.toString();return 0===t.length?this.returnState===H.EMPTY_RETURN_STATE?"$":""+this.returnState:this.returnState+" "+t}get length(){return 1}static create(t,e){return e===H.EMPTY_RETURN_STATE&&null===t?H.EMPTY:new K(t,e)}}class V extends K{constructor(){super(null,H.EMPTY_RETURN_STATE)}isEmpty(){return!0}getParent(t){return null}getReturnState(t){return this.returnState}equals(t){return this===t}toString(){return"$"}}H.EMPTY=new V;const B="h-";class ${constructor(t,e){this.data={},this.hashFunction=t||o,this.equalsFunction=e||l}set(t,e){const i=B+this.hashFunction(t);if(i in this.data){const s=this.data[i];for(let i=0;it.startsWith(B))).flatMap((t=>this.data[t]),this)}getKeys(){return this.entries().map((t=>t.key))}getValues(){return this.entries().map((t=>t.value))}toString(){return"["+this.entries().map((t=>"{"+t.key+":"+t.value+"}")).join(", ")+"]"}get length(){return Object.keys(this.data).filter((t=>t.startsWith(B))).map((t=>this.data[t].length),this).reduce(((t,e)=>t+e),0)}}function j(t,e){if(null==e&&(e=U.EMPTY),null===e.parentCtx||e===U.EMPTY)return H.EMPTY;const i=j(t,e.parentCtx),s=t.states[e.invokingState].transitions[0];return K.create(i,s.followState.stateNumber)}function G(t,e,i){if(t.isEmpty())return t;let s=i.get(t)||null;if(null!==s)return s;if(s=e.get(t),null!==s)return i.set(t,s),s;let r=!1,n=[];for(let s=0;se.returnState&&(r[0]=e.returnState,r[1]=t.returnState);const n=new M([i,i],r);return null!==s&&s.set(t,e,n),n}const r=[t.returnState,e.returnState];let n=[t.parentCtx,e.parentCtx];t.returnState>e.returnState&&(r[0]=e.returnState,r[1]=t.returnState,n=[e.parentCtx,t.parentCtx]);const a=new M(n,r);return null!==s&&s.set(t,e,a),a}}(t,e,i,s);if(i){if(t instanceof V)return t;if(e instanceof V)return e}return t instanceof K&&(t=new M([t.getParent()],[t.returnState])),e instanceof K&&(e=new M([e.getParent()],[e.returnState])),function(t,e,i,s){if(null!==s){let i=s.get(t,e);if(null!==i)return H.trace_atn_sim&&console.log("mergeArrays a="+t+",b="+e+" -> previous"),i;if(i=s.get(e,t),null!==i)return H.trace_atn_sim&&console.log("mergeArrays a="+t+",b="+e+" -> previous"),i}let r=0,n=0,a=0,o=new Array(t.returnStates.length+e.returnStates.length).fill(0),l=new Array(t.returnStates.length+e.returnStates.length).fill(null);for(;r a"),t):h.equals(e)?(null!==s&&s.set(t,e,e),H.trace_atn_sim&&console.log("mergeArrays a="+t+",b="+e+" -> b"),e):(function(t){const e=new $;for(let i=0;i "+h),h)}(t,e,i,s)}class q{constructor(){this.data=[]}add(t){this.data[t]=!0}or(t){Object.keys(t.data).map((t=>this.add(t)),this)}remove(t){delete this.data[t]}has(t){return!0===this.data[t]}values(){return Object.keys(this.data)}minValue(){return Math.min.apply(null,this.values())}hashCode(){return a.hashStuff(this.values())}equals(t){return t instanceof q&&e(this.data,t.data)}toString(){return"{"+this.values().join(", ")+"}"}get length(){return this.values().length}}class W{constructor(t){this.atn=t}getDecisionLookahead(t){if(null===t)return null;const e=t.transitions.length,i=[];for(let s=0;s=this.states.length)throw"Invalid state number.";const s=this.states[e];let r=this.nextTokens(s);if(!r.contains(t.EPSILON))return r;const n=new T;for(n.addSet(r),n.removeOne(t.EPSILON);null!==i&&i.invokingState>=0&&r.contains(t.EPSILON);){const e=this.states[i.invokingState].transitions[0];r=this.nextTokens(e.followState),n.addSet(r),n.removeOne(t.EPSILON),i=i.parentCtx}return r.contains(t.EPSILON)&&n.addOne(t.EOF),n}}Y.INVALID_ALT_NUMBER=0;class X extends E{constructor(){super(),this.stateType=E.BASIC}}class J extends E{constructor(){return super(),this.decision=-1,this.nonGreedy=!1,this}}class Q extends J{constructor(){return super(),this.endState=null,this}}class Z extends E{constructor(){return super(),this.stateType=E.BLOCK_END,this.startState=null,this}}class tt extends E{constructor(){return super(),this.stateType=E.LOOP_END,this.loopBackState=null,this}}class et extends E{constructor(){return super(),this.stateType=E.RULE_START,this.stopState=null,this.isPrecedenceRule=!1,this}}class it extends J{constructor(){return super(),this.stateType=E.TOKEN_START,this}}class st extends J{constructor(){return super(),this.stateType=E.PLUS_LOOP_BACK,this}}class rt extends E{constructor(){return super(),this.stateType=E.STAR_LOOP_BACK,this}}class nt extends J{constructor(){return super(),this.stateType=E.STAR_LOOP_ENTRY,this.loopBackState=null,this.isPrecedenceDecision=null,this}}class at extends Q{constructor(){return super(),this.stateType=E.PLUS_BLOCK_START,this.loopBackState=null,this}}class ot extends Q{constructor(){return super(),this.stateType=E.STAR_BLOCK_START,this}}class lt extends Q{constructor(){return super(),this.stateType=E.BLOCK_START,this}}class ht extends v{constructor(t,e){super(t),this.label_=e,this.label=this.makeLabel(),this.serializationType=v.ATOM}makeLabel(){const t=new T;return t.addOne(this.label_),t}matches(t,e,i){return this.label_===t}toString(){return this.label_}}class ct extends v{constructor(t,e,i){super(t),this.serializationType=v.RANGE,this.start=e,this.stop=i,this.label=this.makeLabel()}makeLabel(){const t=new T;return t.addRange(this.start,this.stop),t}matches(t,e,i){return t>=this.start&&t<=this.stop}toString(){return"'"+String.fromCharCode(this.start)+"'..'"+String.fromCharCode(this.stop)+"'"}}class ut extends v{constructor(t,e,i,s){super(t),this.serializationType=v.ACTION,this.ruleIndex=e,this.actionIndex=void 0===i?-1:i,this.isCtxDependent=void 0!==s&&s,this.isEpsilon=!0}matches(t,e,i){return!1}toString(){return"action_"+this.ruleIndex+":"+this.actionIndex}}class pt extends v{constructor(t,e){super(t),this.serializationType=v.EPSILON,this.isEpsilon=!0,this.outermostPrecedenceReturn=e}matches(t,e,i){return!1}toString(){return"epsilon"}}class dt extends d{constructor(t,e,i){super(),this.ruleIndex=void 0===t?-1:t,this.predIndex=void 0===e?-1:e,this.isCtxDependent=void 0!==i&&i}evaluate(t,e){const i=this.isCtxDependent?e:null;return t.sempred(i,this.ruleIndex,this.predIndex)}updateHashCode(t){t.update(this.ruleIndex,this.predIndex,this.isCtxDependent)}equals(t){return this===t||t instanceof dt&&this.ruleIndex===t.ruleIndex&&this.predIndex===t.predIndex&&this.isCtxDependent===t.isCtxDependent}toString(){return"{"+this.ruleIndex+":"+this.predIndex+"}?"}}d.NONE=new dt;class mt extends A{constructor(t,e,i,s){super(t),this.serializationType=v.PREDICATE,this.ruleIndex=e,this.predIndex=i,this.isCtxDependent=s,this.isEpsilon=!0}matches(t,e,i){return!1}getPredicate(){return new dt(this.ruleIndex,this.predIndex,this.isCtxDependent)}toString(){return"pred_"+this.ruleIndex+":"+this.predIndex}}class _t extends d{constructor(t){super(),this.precedence=void 0===t?0:t}evaluate(t,e){return t.precpred(e,this.precedence)}evalPrecedence(t,e){return t.precpred(e,this.precedence)?d.NONE:null}compareTo(t){return this.precedence-t.precedence}updateHashCode(t){t.update(this.precedence)}equals(t){return this===t||t instanceof _t&&this.precedence===t.precedence}toString(){return"{"+this.precedence+">=prec}?"}}d.PrecedencePredicate=_t;class xt extends A{constructor(t,e){super(t),this.serializationType=v.PRECEDENCE,this.precedence=e,this.isEpsilon=!0}matches(t,e,i){return!1}getPredicate(){return new _t(this.precedence)}toString(){return this.precedence+" >= _p"}}class ft{constructor(t){void 0===t&&(t=null),this.readOnly=!1,this.verifyATN=null===t||t.verifyATN,this.generateRuleBypassTransitions=null!==t&&t.generateRuleBypassTransitions}}ft.defaultOptions=new ft,ft.defaultOptions.readOnly=!0;class yt{constructor(t){this.actionType=t,this.isPositionDependent=!1}hashCode(){const t=new a;return this.updateHashCode(t),t.finish()}updateHashCode(t){t.update(this.actionType)}equals(t){return this===t}}class gt extends yt{constructor(){super(6)}execute(t){t.skip()}toString(){return"skip"}}gt.INSTANCE=new gt;class Tt extends yt{constructor(t){super(0),this.channel=t}execute(t){t._channel=this.channel}updateHashCode(t){t.update(this.actionType,this.channel)}equals(t){return this===t||t instanceof Tt&&this.channel===t.channel}toString(){return"channel("+this.channel+")"}}class Et extends yt{constructor(t,e){super(1),this.ruleIndex=t,this.actionIndex=e,this.isPositionDependent=!0}execute(t){t.action(null,this.ruleIndex,this.actionIndex)}updateHashCode(t){t.update(this.actionType,this.ruleIndex,this.actionIndex)}equals(t){return this===t||t instanceof Et&&this.ruleIndex===t.ruleIndex&&this.actionIndex===t.actionIndex}}class Rt extends yt{constructor(){super(3)}execute(t){t.more()}toString(){return"more"}}Rt.INSTANCE=new Rt;class vt extends yt{constructor(t){super(7),this.type=t}execute(t){t.type=this.type}updateHashCode(t){t.update(this.actionType,this.type)}equals(t){return this===t||t instanceof vt&&this.type===t.type}toString(){return"type("+this.type+")"}}class bt extends yt{constructor(t){super(5),this.mode=t}execute(t){t.pushMode(this.mode)}updateHashCode(t){t.update(this.actionType,this.mode)}equals(t){return this===t||t instanceof bt&&this.mode===t.mode}toString(){return"pushMode("+this.mode+")"}}class Lt extends yt{constructor(){super(4)}execute(t){t.popMode()}toString(){return"popMode"}}Lt.INSTANCE=new Lt;class St extends yt{constructor(t){super(2),this.mode=t}execute(t){t.mode(this.mode)}updateHashCode(t){t.update(this.actionType,this.mode)}equals(t){return this===t||t instanceof St&&this.mode===t.mode}toString(){return"mode("+this.mode+")"}}function Ct(t,e){const i=[];return i[t-1]=e,i.map((function(t){return e}))}class At{constructor(t){null==t&&(t=ft.defaultOptions),this.deserializationOptions=t,this.stateFactories=null,this.actionFactories=null}deserialize(t){const e=this.reset(t);this.checkVersion(e),e&&this.skipUUID();const i=this.readATN();this.readStates(i,e),this.readRules(i,e),this.readModes(i);const s=[];return this.readSets(i,s,this.readInt.bind(this)),e&&this.readSets(i,s,this.readInt32.bind(this)),this.readEdges(i,s),this.readDecisions(i),this.readLexerActions(i,e),this.markPrecedenceDecisions(i),this.verifyATN(i),this.deserializationOptions.generateRuleBypassTransitions&&1===i.grammarType&&(this.generateRuleBypassTransitions(i),this.verifyATN(i)),i}reset(t){if(3===(t.charCodeAt?t.charCodeAt(0):t[0])){const e=function(t){const e=t.charCodeAt(0);return e>1?e-2:e+65534},i=t.split("").map(e);return i[0]=t.charCodeAt(0),this.data=i,this.pos=0,!0}return this.data=t,this.pos=0,!1}skipUUID(){let t=0;for(;t++<8;)this.readInt()}checkVersion(t){const e=this.readInt();if(!t&&4!==e)throw"Could not deserialize ATN with version "+e+" (expected 4)."}readATN(){const t=this.readInt(),e=this.readInt();return new Y(t,e)}readStates(t,e){let i,s,r;const n=[],a=[],o=this.readInt();for(let i=0;i0;)r.addTransition(l.transitions[h-1]),l.transitions=l.transitions.slice(-1);t.ruleToStartState[e].addTransition(new pt(r)),n.addTransition(new pt(o));const c=new X;t.addState(c),c.addTransition(new ht(n,t.ruleToTokenType[e])),r.addTransition(new pt(c))}stateIsEndStateFor(t,e){if(t.ruleIndex!==e)return null;if(!(t instanceof nt))return null;const i=t.transitions[t.transitions.length-1].target;return i instanceof tt&&i.epsilonOnlyTransitions&&i.transitions[0].target instanceof R?t:null}markPrecedenceDecisions(t){for(let e=0;e=0):this.checkCondition(i.transitions.length<=1||i instanceof R)}}checkCondition(t,e){if(!t)throw null==e&&(e="IllegalState"),e}readInt(){return this.data[this.pos++]}readInt32(){return this.readInt()|this.readInt()<<16}edgeFactory(e,i,s,r,n,a,o,l){const h=e.states[r];switch(i){case v.EPSILON:return new pt(h);case v.RANGE:return new ct(h,0!==o?t.EOF:n,a);case v.RULE:return new b(e.states[n],a,o,h);case v.PREDICATE:return new mt(h,n,a,0!==o);case v.PRECEDENCE:return new xt(h,n);case v.ATOM:return new ht(h,0!==o?t.EOF:n);case v.ACTION:return new ut(h,n,a,0!==o);case v.SET:return new L(h,l[n]);case v.NOT_SET:return new S(h,l[n]);case v.WILDCARD:return new C(h);default:throw"The specified transition type: "+i+" is not valid."}}stateFactory(t,e){if(null===this.stateFactories){const t=[];t[E.INVALID_TYPE]=null,t[E.BASIC]=()=>new X,t[E.RULE_START]=()=>new et,t[E.BLOCK_START]=()=>new lt,t[E.PLUS_BLOCK_START]=()=>new at,t[E.STAR_BLOCK_START]=()=>new ot,t[E.TOKEN_START]=()=>new it,t[E.RULE_STOP]=()=>new R,t[E.BLOCK_END]=()=>new Z,t[E.STAR_LOOP_BACK]=()=>new rt,t[E.STAR_LOOP_ENTRY]=()=>new nt,t[E.PLUS_LOOP_BACK]=()=>new st,t[E.LOOP_END]=()=>new tt,this.stateFactories=t}if(t>this.stateFactories.length||null===this.stateFactories[t])throw"The specified state type "+t+" is not valid.";{const i=this.stateFactories[t]();if(null!==i)return i.ruleIndex=e,i}}lexerActionFactory(t,e,i){if(null===this.actionFactories){const t=[];t[0]=(t,e)=>new Tt(t),t[1]=(t,e)=>new Et(t,e),t[2]=(t,e)=>new St(t),t[3]=(t,e)=>Rt.INSTANCE,t[4]=(t,e)=>Lt.INSTANCE,t[5]=(t,e)=>new bt(t),t[6]=(t,e)=>gt.INSTANCE,t[7]=(t,e)=>new vt(t),this.actionFactories=t}if(t>this.actionFactories.length||null===this.actionFactories[t])throw"The specified lexer action type "+t+" is not valid.";return this.actionFactories[t](e,i)}}class wt{syntaxError(t,e,i,s,r,n){}reportAmbiguity(t,e,i,s,r,n,a){}reportAttemptingFullContext(t,e,i,s,r,n){}reportContextSensitivity(t,e,i,s,r,n){}}class Nt extends wt{constructor(){super()}syntaxError(t,e,i,s,r,n){console.error("line "+i+":"+s+" "+r)}}Nt.INSTANCE=new Nt;class It extends wt{constructor(t){if(super(),null===t)throw"delegates";return this.delegates=t,this}syntaxError(t,e,i,s,r,n){this.delegates.map((a=>a.syntaxError(t,e,i,s,r,n)))}reportAmbiguity(t,e,i,s,r,n,a){this.delegates.map((o=>o.reportAmbiguity(t,e,i,s,r,n,a)))}reportAttemptingFullContext(t,e,i,s,r,n){this.delegates.map((a=>a.reportAttemptingFullContext(t,e,i,s,r,n)))}reportContextSensitivity(t,e,i,s,r,n){this.delegates.map((a=>a.reportContextSensitivity(t,e,i,s,r,n)))}}class kt{constructor(){this._listeners=[Nt.INSTANCE],this._interp=null,this._stateNumber=-1}checkVersion(t){const e="4.13.1";e!==t&&console.log("ANTLR runtime and generated code versions disagree: "+e+"!="+t)}addErrorListener(t){this._listeners.push(t)}removeErrorListeners(){this._listeners=[]}getLiteralNames(){return Object.getPrototypeOf(this).constructor.literalNames||[]}getSymbolicNames(){return Object.getPrototypeOf(this).constructor.symbolicNames||[]}getTokenNames(){if(!this.tokenNames){const t=this.getLiteralNames(),e=this.getSymbolicNames(),i=t.length>e.length?t.length:e.length;this.tokenNames=[];for(let s=0;s";let i=e.text;return null===i&&(i=e.type===t.EOF?"":"<"+e.type+">"),i=i.replace("\n","\\n").replace("\r","\\r").replace("\t","\\t"),"'"+i+"'"}getErrorListenerDispatch(){return new It(this._listeners)}sempred(t,e,i){return!0}precpred(t,e){return!0}get atn(){return this._interp.atn}get state(){return this._stateNumber}set state(t){this._stateNumber=t}}kt.tokenTypeMapCache={},kt.ruleIndexMapCache={};class Dt extends t{constructor(e,i,s,r,n){super(),this.source=void 0!==e?e:Dt.EMPTY_SOURCE,this.type=void 0!==i?i:null,this.channel=void 0!==s?s:t.DEFAULT_CHANNEL,this.start=void 0!==r?r:-1,this.stop=void 0!==n?n:-1,this.tokenIndex=-1,null!==this.source[0]?(this.line=e[0].line,this.column=e[0].column):this.column=-1}clone(){const t=new Dt(this.source,this.type,this.channel,this.start,this.stop);return t.tokenIndex=this.tokenIndex,t.line=this.line,t.column=this.column,t.text=this.text,t}cloneWithType(e){const i=new Dt(this.source,e,this.channel,this.start,this.stop);return i.tokenIndex=this.tokenIndex,i.line=this.line,i.column=this.column,e===t.EOF&&(i.text=""),i}toString(){let t=this.text;return t=null!==t?t.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t"):"","[@"+this.tokenIndex+","+this.start+":"+this.stop+"='"+t+"',<"+this.type+">"+(this.channel>0?",channel="+this.channel:"")+","+this.line+":"+this.column+"]"}get text(){if(null!==this._text)return this._text;const t=this.getInputStream();if(null===t)return null;const e=t.size;return this.start"}set text(t){this._text=t}}Dt.EMPTY_SOURCE=[null,null];class Ot{}class Pt extends Ot{constructor(t){super(),this.copyText=void 0!==t&&t}create(t,e,i,s,r,n,a,o){const l=new Dt(t,e,s,r,n);return l.line=a,l.column=o,null!==i?l.text=i:this.copyText&&null!==t[1]&&(l.text=t[1].getText(r,n)),l}createThin(t,e){const i=new Dt(null,t);return i.text=e,i}}Pt.DEFAULT=new Pt;class Ft extends Error{constructor(t){super(t.message),Error.captureStackTrace&&Error.captureStackTrace(this,Ft),this.message=t.message,this.recognizer=t.recognizer,this.input=t.input,this.ctx=t.ctx,this.offendingToken=null,this.offendingState=-1,null!==this.recognizer&&(this.offendingState=this.recognizer.state)}getExpectedTokens(){return null!==this.recognizer?this.recognizer.atn.getExpectedTokens(this.offendingState,this.ctx):null}toString(){return this.message}}class Ut extends Ft{constructor(t,e,i,s){super({message:"",recognizer:t,input:e,ctx:null}),this.startIndex=i,this.deadEndConfigs=s}toString(){let t="";return this.startIndex>=0&&this.startIndex":"\n"===e?"\\n":"\t"===e?"\\t":"\r"===e?"\\r":e}getCharErrorDisplay(t){return"'"+this.getErrorDisplayForChar(t)+"'"}recover(e){this._input.LA(1)!==t.EOF&&(e instanceof Ut?this._interp.consume(this._input):this._input.consume())}get inputStream(){return this._input}set inputStream(t){this._input=null,this._tokenFactorySourcePair=[this,this._input],this.reset(),this._input=t,this._tokenFactorySourcePair=[this,this._input]}get sourceName(){return this._input.sourceName}get type(){return this._type}set type(t){this._type=t}get line(){return this._interp.line}set line(t){this._interp.line=t}get column(){return this._interp.column}set column(t){this._interp.column=t}get text(){return null!==this._text?this._text:this._interp.getText(this._input)}set text(t){this._text=t}}function Mt(t){return t.hashCodeForConfigSet()}function Kt(t,e){return t===e||null!==t&&null!==e&&t.equalsForConfigSet(e)}Ht.DEFAULT_MODE=0,Ht.MORE=-2,Ht.SKIP=-3,Ht.DEFAULT_TOKEN_CHANNEL=t.DEFAULT_CHANNEL,Ht.HIDDEN=t.HIDDEN_CHANNEL,Ht.MIN_CHAR_VALUE=0,Ht.MAX_CHAR_VALUE=1114111;class Vt{constructor(t){this.configLookup=new p(Mt,Kt),this.fullCtx=void 0===t||t,this.readOnly=!1,this.configs=[],this.uniqueAlt=0,this.conflictingAlts=null,this.hasSemanticContext=!1,this.dipsIntoOuterContext=!1,this.cachedHashCode=-1}add(t,e){if(void 0===e&&(e=null),this.readOnly)throw"This set is readonly";t.semanticContext!==d.NONE&&(this.hasSemanticContext=!0),t.reachesIntoOuterContext>0&&(this.dipsIntoOuterContext=!0);const i=this.configLookup.add(t);if(i===t)return this.cachedHashCode=-1,this.configs.push(t),!0;const s=!this.fullCtx,r=z(i.context,t.context,s,e);return i.reachesIntoOuterContext=Math.max(i.reachesIntoOuterContext,t.reachesIntoOuterContext),t.precedenceFilterSuppressed&&(i.precedenceFilterSuppressed=!0),i.context=r,!0}getStates(){const t=new p;for(let e=0;eXt.MAX_DFA_EDGE)return null;let i=t.edges[e-Xt.MIN_DFA_EDGE];return void 0===i&&(i=null),Xt.debug&&null!==i&&console.log("reuse state "+t.stateNumber+" edge to "+i.stateNumber),i}computeTargetState(t,e,i){const s=new jt;return this.getReachableConfigSet(t,e.configs,s,i),0===s.items.length?(s.hasSemanticContext||this.addDFAEdge(e,i,$t.ERROR),$t.ERROR):this.addDFAEdge(e,i,null,s)}failOrAccept(e,i,s,r){if(null!==this.prevAccept.dfaState){const t=e.dfaState.lexerActionExecutor;return this.accept(i,t,this.startIndex,e.index,e.line,e.column),e.dfaState.prediction}if(r===t.EOF&&i.index===this.startIndex)return t.EOF;throw new Ut(this.recog,i,this.startIndex,s)}getReachableConfigSet(e,i,s,r){let n=Y.INVALID_ALT_NUMBER;for(let a=0;aXt.MAX_DFA_EDGE||(Xt.debug&&console.log("EDGE "+t+" -> "+i+" upon "+e),null===t.edges&&(t.edges=[]),t.edges[e-Xt.MIN_DFA_EDGE]=i),i}addDFAState(t){const e=new Bt(null,t);let i=null;for(let e=0;et.startsWith("k-"))).map((t=>this.data[t]),this)}}const Zt={SLL:0,LL:1,LL_EXACT_AMBIG_DETECTION:2,hasSLLConflictTerminatingPrediction:function(t,e){if(Zt.allConfigsInRuleStopStates(e))return!0;if(t===Zt.SLL&&e.hasSemanticContext){const t=new Vt;for(let i=0;i1)return!0;return!1},allSubsetsEqual:function(t){let e=null;for(let i=0;i "+a),0===a.items.length?null:a}removeAllConfigsNotInRuleStopState(e,i){if(te.allConfigsInRuleStopStates(e))return e;const s=new Vt(e.fullCtx);for(let r=0;r0&&(n=this.getAltThatFinishedDecisionEntryRule(r),n!==Y.INVALID_ALT_NUMBER)?n:Y.INVALID_ALT_NUMBER}getAltThatFinishedDecisionEntryRule(t){const e=[];for(let i=0;i0||s.state instanceof R&&s.context.hasEmptyPath())&&e.indexOf(s.alt)<0&&e.push(s.alt)}return 0===e.length?Y.INVALID_ALT_NUMBER:Math.min.apply(null,e)}splitAccordingToSemanticValidity(t,e){const i=new Vt(t.fullCtx),s=new Vt(t.fullCtx);for(let r=0;r=0&&(s+=1)}this.closureCheckingStopState(u,e,i,c,r,s,a)}}}canDropLoopEntryEdgeInLeftRecursiveRule(t){const e=t.state;if(e.stateType!==E.STAR_LOOP_ENTRY)return!1;if(e.stateType!==E.STAR_LOOP_ENTRY||!e.isPrecedenceDecision||t.context.isEmpty()||t.context.hasEmptyPath())return!1;const i=t.context.length;for(let s=0;s=0?this.parser.ruleNames[t]:""}getEpsilonTarget(e,i,s,r,n,a){switch(i.serializationType){case v.RULE:return this.ruleTransition(e,i);case v.PRECEDENCE:return this.precedenceTransition(e,i,s,r,n);case v.PREDICATE:return this.predTransition(e,i,s,r,n);case v.ACTION:return this.actionTransition(e,i);case v.EPSILON:return new y({state:i.target},e);case v.ATOM:case v.RANGE:case v.SET:return a&&i.matches(t.EOF,0,1)?new y({state:i.target},e):null;default:return null}}actionTransition(t,e){if(this.debug){const t=-1===e.actionIndex?65535:e.actionIndex;console.log("ACTION edge "+e.ruleIndex+":"+t)}return new y({state:e.target},t)}precedenceTransition(t,e,i,s,r){this.debug&&(console.log("PRED (collectPredicates="+i+") "+e.precedence+">=_p, ctx dependent=true"),null!==this.parser&&console.log("context surrounding pred is "+c(this.parser.getRuleInvocationStack())));let n=null;if(i&&s)if(r){const i=this._input.index;this._input.seek(this._startIndex);const s=e.getPredicate().evaluate(this.parser,this._outerContext);this._input.seek(i),s&&(n=new y({state:e.target},t))}else{const i=d.andContext(t.semanticContext,e.getPredicate());n=new y({state:e.target,semanticContext:i},t)}else n=new y({state:e.target},t);return this.debug&&console.log("config from pred transition="+n),n}predTransition(t,e,i,s,r){this.debug&&(console.log("PRED (collectPredicates="+i+") "+e.ruleIndex+":"+e.predIndex+", ctx dependent="+e.isCtxDependent),null!==this.parser&&console.log("context surrounding pred is "+c(this.parser.getRuleInvocationStack())));let n=null;if(i&&(e.isCtxDependent&&s||!e.isCtxDependent))if(r){const i=this._input.index;this._input.seek(this._startIndex);const s=e.getPredicate().evaluate(this.parser,this._outerContext);this._input.seek(i),s&&(n=new y({state:e.target},t))}else{const i=d.andContext(t.semanticContext,e.getPredicate());n=new y({state:e.target,semanticContext:i},t)}else n=new y({state:e.target},t);return this.debug&&console.log("config from pred transition="+n),n}ruleTransition(t,e){this.debug&&console.log("CALL rule "+this.getRuleName(e.target.ruleIndex)+", ctx="+t.context);const i=e.followState,s=K.create(t.context,i.stateNumber);return new y({state:e.target,context:s},t)}getConflictingAlts(t){const e=te.getConflictingAltSubsets(t);return te.getAlts(e)}getConflictingAltsOrUniqueAlt(t){let e=null;return t.uniqueAlt!==Y.INVALID_ALT_NUMBER?(e=new q,e.add(t.uniqueAlt)):e=t.conflictingAlts,e}getTokenName(e){if(e===t.EOF)return"EOF";if(null!==this.parser&&null!==this.parser.literalNames){if(!(e>=this.parser.literalNames.length&&e>=this.parser.symbolicNames.length))return(this.parser.literalNames[e]||this.parser.symbolicNames[e])+"<"+e+">";console.log(e+" ttype out of range: "+this.parser.literalNames),console.log(""+this.parser.getInputStream().getTokens())}return""+e}getLookaheadName(t){return this.getTokenName(t.LA(1))}dumpDeadEndConfigs(t){console.log("dead end configs: ");const e=t.getDeadEndConfigs();for(let t=0;t0){const t=i.state.transitions[0];t instanceof ht?s="Atom "+this.getTokenName(t.label):t instanceof L&&(s=(t instanceof S?"~":"")+"Set "+t.set)}console.error(i.toString(this.parser,!0)+":"+s)}}noViableAlt(t,e,i,s){return new ee(this.parser,t,t.get(s),t.LT(1),i,e)}getUniqueAlt(t){let e=Y.INVALID_ALT_NUMBER;for(let i=0;i "+s+" upon "+this.getTokenName(i)),null===s)return null;if(s=this.addDFAState(t,s),null===e||i<-1||i>this.atn.maxTokenType)return s;if(null===e.edges&&(e.edges=[]),e.edges[i+1]=s,this.debug){const e=null===this.parser?null:this.parser.literalNames,i=null===this.parser?null:this.parser.symbolicNames;console.log("DFA=\n"+t.toString(e,i))}return s}addDFAState(t,e){if(e===$t.ERROR)return e;const i=t.states.get(e);return null!==i?(this.trace_atn_sim&&console.log("addDFAState "+e+" exists"),i):(e.stateNumber=t.states.length,e.configs.readOnly||(e.configs.optimizeConfigs(this),e.configs.setReadonly(!0)),this.trace_atn_sim&&console.log("addDFAState new "+e),t.states.add(e),this.debug&&console.log("adding new DFA state: "+e),e)}reportAttemptingFullContext(t,e,i,s,r){if(this.debug||this.retry_debug){const e=new g(s,r+1);console.log("reportAttemptingFullContext decision="+t.decision+":"+i+", input="+this.parser.getTokenStream().getText(e))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser,t,s,r,e,i)}reportContextSensitivity(t,e,i,s,r){if(this.debug||this.retry_debug){const e=new g(s,r+1);console.log("reportContextSensitivity decision="+t.decision+":"+i+", input="+this.parser.getTokenStream().getText(e))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser,t,s,r,e,i)}reportAmbiguity(t,e,i,s,r,n,a){if(this.debug||this.retry_debug){const t=new g(i,s+1);console.log("reportAmbiguity "+n+":"+a+", input="+this.parser.getTokenStream().getText(t))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser,t,i,s,r,n,a)}}class re{constructor(){this.cache=new $}add(t){if(t===H.EMPTY)return H.EMPTY;const e=this.cache.get(t)||null;return null!==e?e:(this.cache.set(t,t),t)}get(t){return this.cache.get(t)||null}get length(){return this.cache.length}}const ne={ATN:Y,ATNDeserializer:At,LexerATNSimulator:Xt,ParserATNSimulator:se,PredictionMode:te,PredictionContextCache:re};class ae{constructor(t,e,i){this.dfa=t,this.literalNames=e||[],this.symbolicNames=i||[]}toString(){if(null===this.dfa.s0)return null;let t="";const e=this.dfa.sortedStates();for(let i=0;i"),t=t.concat(this.getStateString(e)),t=t.concat("\n"))}}}return 0===t.length?null:t}getEdgeLabel(t){return 0===t?"EOF":null!==this.literalNames||null!==this.symbolicNames?this.literalNames[t-1]||this.symbolicNames[t-1]:String.fromCharCode(t-1)}getStateString(t){const e=(t.isAcceptState?":":"")+"s"+t.stateNumber+(t.requiresFullContext?"^":"");return t.isAcceptState?null!==t.predicates?e+"=>"+c(t.predicates):e+"=>"+t.prediction.toString():e}}class oe extends ae{constructor(t){super(t,null)}getEdgeLabel(t){return"'"+String.fromCharCode(t)+"'"}}class le{constructor(t,e){if(void 0===e&&(e=0),this.atnStartState=t,this.decision=e,this._states=new p,this.s0=null,this.precedenceDfa=!1,t instanceof nt&&t.isPrecedenceDecision){this.precedenceDfa=!0;const t=new Bt(null,new Vt);t.edges=[],t.isAcceptState=!1,t.requiresFullContext=!1,this.s0=t}}getPrecedenceStartState(t){if(!this.precedenceDfa)throw"Only precedence DFAs may contain a precedence start state.";return t<0||t>=this.s0.edges.length?null:this.s0.edges[t]||null}setPrecedenceStartState(t,e){if(!this.precedenceDfa)throw"Only precedence DFAs may contain a precedence start state.";t<0||(this.s0.edges[t]=e)}setPrecedenceDfa(t){if(this.precedenceDfa!==t){if(this._states=new p,t){const t=new Bt(null,new Vt);t.edges=[],t.isAcceptState=!1,t.requiresFullContext=!1,this.s0=t}else this.s0=null;this.precedenceDfa=t}}sortedStates(){return this._states.values().sort((function(t,e){return t.stateNumber-e.stateNumber}))}toString(t,e){return t=t||null,e=e||null,null===this.s0?"":new ae(this,t,e).toString()}toLexerString(){return null===this.s0?"":new oe(this).toString()}get states(){return this._states}}const he={DFA:le,DFASerializer:ae,LexerDFASerializer:oe,PredPrediction:Jt},ce={PredictionContext:H},ue={Interval:g,IntervalSet:T};class pe{visitTerminal(t){}visitErrorNode(t){}enterEveryRule(t){}exitEveryRule(t){}}class de{visit(t){return Array.isArray(t)?t.map((function(t){return t.accept(this)}),this):t.accept(this)}visitChildren(t){return t.children?this.visit(t.children):null}visitTerminal(t){}visitErrorNode(t){}}class me{walk(t,e){if(e instanceof O||void 0!==e.isErrorNode&&e.isErrorNode())t.visitErrorNode(e);else if(e instanceof D)t.visitTerminal(e);else{this.enterRule(t,e);for(let i=0;i=r.length)return""+i;const n=r[s]||null;return null===n||0===n.length?""+i:`${i} (${n})`}getConflictingAlts(t,e){if(null!==t)return t;const i=new q;for(let t=0;t=0&&t.consume(),this.lastErrorIndex=t._input.index,null===this.lastErrorStates&&(this.lastErrorStates=[]),this.lastErrorStates.push(t.state);const i=this.getErrorRecoverySet(t);this.consumeUntil(t,i)}sync(e){if(this.inErrorRecoveryMode(e))return;const i=e._interp.atn.states[e.state],s=e.getTokenStream().LA(1),r=e.atn.nextTokens(i);if(r.contains(s))return this.nextTokensContext=null,void(this.nextTokenState=E.INVALID_STATE_NUMBER);if(r.contains(t.EPSILON))null===this.nextTokensContext&&(this.nextTokensContext=e._ctx,this.nextTokensState=e._stateNumber);else switch(i.stateType){case E.BLOCK_START:case E.STAR_BLOCK_START:case E.PLUS_BLOCK_START:case E.STAR_LOOP_ENTRY:if(null!==this.singleTokenDeletion(e))return;throw new xe(e);case E.PLUS_LOOP_BACK:case E.STAR_LOOP_BACK:{this.reportUnwantedToken(e);const t=new T;t.addSet(e.getExpectedTokens());const i=t.addSet(this.getErrorRecoverySet(e));this.consumeUntil(e,i)}}}reportNoViableAlternative(e,i){const s=e.getTokenStream();let r;r=null!==s?i.startToken.type===t.EOF?"":s.getText(new g(i.startToken.tokenIndex,i.offendingToken.tokenIndex)):"";const n="no viable alternative at input "+this.escapeWSAndQuote(r);e.notifyErrorListeners(n,i.offendingToken,i)}reportInputMismatch(t,e){const i="mismatched input "+this.getTokenErrorDisplay(e.offendingToken)+" expecting "+e.getExpectedTokens().toString(t.literalNames,t.symbolicNames);t.notifyErrorListeners(i,e.offendingToken,e)}reportFailedPredicate(t,e){const i="rule "+t.ruleNames[t._ctx.ruleIndex]+" "+e.message;t.notifyErrorListeners(i,e.offendingToken,e)}reportUnwantedToken(t){if(this.inErrorRecoveryMode(t))return;this.beginErrorCondition(t);const e=t.getCurrentToken(),i="extraneous input "+this.getTokenErrorDisplay(e)+" expecting "+this.getExpectedTokens(t).toString(t.literalNames,t.symbolicNames);t.notifyErrorListeners(i,e,null)}reportMissingToken(t){if(this.inErrorRecoveryMode(t))return;this.beginErrorCondition(t);const e=t.getCurrentToken(),i="missing "+this.getExpectedTokens(t).toString(t.literalNames,t.symbolicNames)+" at "+this.getTokenErrorDisplay(e);t.notifyErrorListeners(i,e,null)}recoverInline(t){const e=this.singleTokenDeletion(t);if(null!==e)return t.consume(),e;if(this.singleTokenInsertion(t))return this.getMissingSymbol(t);throw new xe(t)}singleTokenInsertion(t){const e=t.getTokenStream().LA(1),i=t._interp.atn,s=i.states[t.state].transitions[0].target;return!!i.nextTokens(s,t._ctx).contains(e)&&(this.reportMissingToken(t),!0)}singleTokenDeletion(t){const e=t.getTokenStream().LA(2);if(this.getExpectedTokens(t).contains(e)){this.reportUnwantedToken(t),t.consume();const e=t.getCurrentToken();return this.reportMatch(t),e}return null}getMissingSymbol(e){const i=e.getCurrentToken(),s=this.getExpectedTokens(e).first();let r;r=s===t.EOF?"":"";let n=i;const a=e.getTokenStream().LT(-1);return n.type===t.EOF&&null!==a&&(n=a),e.getTokenFactory().create(n.source,s,r,t.DEFAULT_CHANNEL,-1,-1,n.line,n.column)}getExpectedTokens(t){return t.getExpectedTokens()}getTokenErrorDisplay(e){if(null===e)return"";let i=e.text;return null===i&&(i=e.type===t.EOF?"":"<"+e.type+">"),this.escapeWSAndQuote(i)}escapeWSAndQuote(t){return"'"+(t=(t=(t=t.replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/\t/g,"\\t"))+"'"}getErrorRecoverySet(e){const i=e._interp.atn;let s=e._ctx;const r=new T;for(;null!==s&&s.invokingState>=0;){const t=i.states[s.invokingState].transitions[0],e=i.nextTokens(t.followState);r.addSet(e),s=s.parentCtx}return r.removeOne(t.EPSILON),r}consumeUntil(e,i){let s=e.getTokenStream().LA(1);for(;s!==t.EOF&&!i.contains(s);)e.consume(),s=e.getTokenStream().LA(1)}}class ve extends Re{constructor(){super()}recover(t,e){let i=t._ctx;for(;null!==i;)i.exception=e,i=i.parentCtx;throw new Te(e)}recoverInline(t){this.recover(t,new xe(t))}sync(t){}}const be={RecognitionException:Ft,NoViableAltException:ee,LexerNoViableAltException:Ut,InputMismatchException:xe,FailedPredicateException:fe,DiagnosticErrorListener:ge,BailErrorStrategy:ve,DefaultErrorStrategy:Re,ErrorListener:wt};class Le{constructor(t,e){if(this.name="",this.strdata=t,this.decodeToUnicodeCodePoints=e||!1,this._index=0,this.data=[],this.decodeToUnicodeCodePoints)for(let t=0;t=this._size)throw"cannot consume EOF";this._index+=1}LA(e){if(0===e)return 0;e<0&&(e+=1);const i=this._index+e-1;return i<0||i>=this._size?t.EOF:this.data[i]}LT(t){return this.LA(t)}mark(){return-1}release(t){}seek(t){t<=this._index?this._index=t:this._index=Math.min(t,this._size)}getText(t,e){if(e>=this._size&&(e=this._size-1),t>=this._size)return"";if(this.decodeToUnicodeCodePoints){let i="";for(let s=t;s<=e;s++)i+=String.fromCodePoint(this.data[s]);return i}return this.strdata.slice(t,e+1)}toString(){return this.strdata}get index(){return this._index}get size(){return this._size}}class Se extends Le{constructor(t,e){super(t,e)}}var Ce=r(92);const Ae="undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node;class we extends Se{static fromPath(t,e,i){if(!Ae)throw new Error("FileStream is only available when running in Node!");Ce.readFile(t,e,(function(t,e){let s=null;null!==e&&(s=new Le(e,!0)),i(t,s)}))}constructor(t,e,i){if(!Ae)throw new Error("FileStream is only available when running in Node!");super(Ce.readFileSync(t,e||"utf-8"),i),this.fileName=t}}const Ne={fromString:function(t){return new Le(t,!0)},fromBlob:function(t,e,i,s){const r=new window.FileReader;r.onload=function(t){const e=new Le(t.target.result,!0);i(e)},r.onerror=s,r.readAsText(t,e)},fromBuffer:function(t,e){return new Le(t.toString(e),!0)},fromPath:function(t,e,i){we.fromPath(t,e,i)},fromPathSync:function(t,e){return new we(t,e)}},Ie={arrayToString:c,stringToCharArray:function(t){let e=new Uint16Array(t.length);for(let i=0;i=0&&(this.fetchedEOF?this.index0)||this.fetch(e)>=e}fetch(e){if(this.fetchedEOF)return 0;for(let i=0;i=this.tokens.length&&(i=this.tokens.length-1);for(let n=e;n=this.tokens.length?this.tokens[this.tokens.length-1]:this.tokens[e]}adjustSeekIndex(t){return t}lazyInit(){-1===this.index&&this.setup()}setup(){this.sync(0),this.index=this.adjustSeekIndex(0)}setTokenSource(t){this.tokenSource=t,this.tokens=[],this.index=-1,this.fetchedEOF=!1}nextTokenOnChannel(e,i){if(this.sync(e),e>=this.tokens.length)return-1;let s=this.tokens[e];for(;s.channel!==this.channel;){if(s.type===t.EOF)return-1;e+=1,this.sync(e),s=this.tokens[e]}return e}previousTokenOnChannel(t,e){for(;t>=0&&this.tokens[t].channel!==e;)t-=1;return t}getHiddenTokensToRight(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw t+" not in 0.."+this.tokens.length-1;const i=this.nextTokenOnChannel(t+1,Ht.DEFAULT_TOKEN_CHANNEL),s=t+1,r=-1===i?this.tokens.length-1:i;return this.filterForChannel(s,r,e)}getHiddenTokensToLeft(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw t+" not in 0.."+this.tokens.length-1;const i=this.previousTokenOnChannel(t-1,Ht.DEFAULT_TOKEN_CHANNEL);if(i===t-1)return null;const s=i+1,r=t-1;return this.filterForChannel(s,r,e)}filterForChannel(t,e,i){const s=[];for(let r=t;r=this.tokens.length&&(s=this.tokens.length-1);let r="";for(let e=i;e=0&&this._parseListeners.splice(e,1),0===this._parseListeners.length&&(this._parseListeners=null)}}removeParseListeners(){this._parseListeners=null}triggerEnterRuleEvent(){if(null!==this._parseListeners){const t=this._ctx;this._parseListeners.forEach((function(e){e.enterEveryRule(t),t.enterRule(e)}))}}triggerExitRuleEvent(){if(null!==this._parseListeners){const t=this._ctx;this._parseListeners.slice(0).reverse().forEach((function(e){t.exitRule(e),e.exitEveryRule(t)}))}}getTokenFactory(){return this._input.tokenSource._factory}setTokenFactory(t){this._input.tokenSource._factory=t}getATNWithBypassAlts(){const t=this.getSerializedATN();if(null===t)throw"The current parser does not support an ATN with bypass alternatives.";let e=this.bypassAltsAtnCache[t];if(null===e){const i=new ft;i.generateRuleBypassTransitions=!0,e=new At(i).deserialize(t),this.bypassAltsAtnCache[t]=e}return e}getInputStream(){return this.getTokenStream()}setInputStream(t){this.setTokenStream(t)}getTokenStream(){return this._input}setTokenStream(t){this._input=null,this.reset(),this._input=t}get syntaxErrorsCount(){return this._syntaxErrors}getCurrentToken(){return this._input.LT(1)}notifyErrorListeners(t,e,i){i=i||null,null===(e=e||null)&&(e=this.getCurrentToken()),this._syntaxErrors+=1;const s=e.line,r=e.column;this.getErrorListenerDispatch().syntaxError(this,e,s,r,t,i)}consume(){const e=this.getCurrentToken();e.type!==t.EOF&&this.getInputStream().consume();const i=null!==this._parseListeners&&this._parseListeners.length>0;if(this.buildParseTrees||i){let t;t=this._errHandler.inErrorRecoveryMode(this)?this._ctx.addErrorNode(e):this._ctx.addTokenNode(e),t.invokingState=this.state,i&&this._parseListeners.forEach((function(e){t instanceof O||void 0!==t.isErrorNode&&t.isErrorNode()?e.visitErrorNode(t):t instanceof D&&e.visitTerminal(t)}))}return e}addContextToParseTree(){null!==this._ctx.parentCtx&&this._ctx.parentCtx.addChild(this._ctx)}enterRule(t,e,i){this.state=e,this._ctx=t,this._ctx.start=this._input.LT(1),this.buildParseTrees&&this.addContextToParseTree(),this.triggerEnterRuleEvent()}exitRule(){this._ctx.stop=this._input.LT(-1),this.triggerExitRuleEvent(),this.state=this._ctx.invokingState,this._ctx=this._ctx.parentCtx}enterOuterAlt(t,e){t.setAltNumber(e),this.buildParseTrees&&this._ctx!==t&&null!==this._ctx.parentCtx&&(this._ctx.parentCtx.removeLastChild(),this._ctx.parentCtx.addChild(t)),this._ctx=t}getPrecedence(){return 0===this._precedenceStack.length?-1:this._precedenceStack[this._precedenceStack.length-1]}enterRecursionRule(t,e,i,s){this.state=e,this._precedenceStack.push(s),this._ctx=t,this._ctx.start=this._input.LT(1),this.triggerEnterRuleEvent()}pushNewRecursionContext(t,e,i){const s=this._ctx;s.parentCtx=t,s.invokingState=e,s.stop=this._input.LT(-1),this._ctx=t,this._ctx.start=s.start,this.buildParseTrees&&this._ctx.addChild(s),this.triggerEnterRuleEvent()}unrollRecursionContexts(t){this._precedenceStack.pop(),this._ctx.stop=this._input.LT(-1);const e=this._ctx,i=this.getParseListeners();if(null!==i&&i.length>0)for(;this._ctx!==t;)this.triggerExitRuleEvent(),this._ctx=this._ctx.parentCtx;else this._ctx=t;e.parentCtx=t,this.buildParseTrees&&null!==t&&t.addChild(e)}getInvokingContext(t){let e=this._ctx;for(;null!==e;){if(e.ruleIndex===t)return e;e=e.parentCtx}return null}precpred(t,e){return e>=this._precedenceStack[this._precedenceStack.length-1]}inContext(t){return!1}isExpectedToken(e){const i=this._interp.atn;let s=this._ctx;const r=i.states[this.state];let n=i.nextTokens(r);if(n.contains(e))return!0;if(!n.contains(t.EPSILON))return!1;for(;null!==s&&s.invokingState>=0&&n.contains(t.EPSILON);){const t=i.states[s.invokingState].transitions[0];if(n=i.nextTokens(t.followState),n.contains(e))return!0;s=s.parentCtx}return!(!n.contains(t.EPSILON)||e!==t.EOF)}getExpectedTokens(){return this._interp.atn.getExpectedTokens(this.state,this._ctx)}getExpectedTokensWithinCurrentRule(){const t=this._interp.atn,e=t.states[this.state];return t.nextTokens(e)}getRuleIndex(t){const e=this.getRuleIndexMap()[t];return null!==e?e:-1}getRuleInvocationStack(t){null===(t=t||null)&&(t=this._ctx);const e=[];for(;null!==t;){const i=t.ruleIndex;i<0?e.push("n/a"):e.push(this.ruleNames[i]),t=t.parentCtx}return e}getDFAStrings(){return this._interp.decisionToDFA.toString()}dumpDFA(){let t=!1;for(let e=0;e0&&(t&&console.log(),this.printer.println("Decision "+i.decision+":"),this.printer.print(i.toString(this.literalNames,this.symbolicNames)),t=!0)}}getSourceName(){return this._input.sourceName}setTrace(t){t?(null!==this._tracer&&this.removeParseListener(this._tracer),this._tracer=new Pe(this),this.addParseListener(this._tracer)):(this.removeParseListener(this._tracer),this._tracer=null)}}Fe.bypassAltsAtnCache={};class Ue extends D{constructor(t){super(),this.parentCtx=null,this.symbol=t}getChild(t){return null}getSymbol(){return this.symbol}getParent(){return this.parentCtx}getPayload(){return this.symbol}getSourceInterval(){if(null===this.symbol)return g.INVALID_INTERVAL;const t=this.symbol.tokenIndex;return new g(t,t)}getChildCount(){return 0}accept(t){return t.visitTerminal(this)}getText(){return this.symbol.text}toString(){return this.symbol.type===t.EOF?"":this.symbol.text}}class He extends Ue{constructor(t){super(t)}isErrorNode(){return!0}accept(t){return t.visitErrorNode(this)}}class Me extends U{constructor(t,e){super(t,e),this.children=null,this.start=null,this.stop=null,this.exception=null}copyFrom(t){this.parentCtx=t.parentCtx,this.invokingState=t.invokingState,this.children=null,this.start=t.start,this.stop=t.stop,t.children&&(this.children=[],t.children.map((function(t){t instanceof He&&(this.children.push(t),t.parentCtx=this)}),this))}enterRule(t){}exitRule(t){}addChild(t){return null===this.children&&(this.children=[]),this.children.push(t),t}removeLastChild(){null!==this.children&&this.children.pop()}addTokenNode(t){const e=new Ue(t);return this.addChild(e),e.parentCtx=this,e}addErrorNode(t){const e=new He(t);return this.addChild(e),e.parentCtx=this,e}getChild(t,e){if(e=e||null,null===this.children||t<0||t>=this.children.length)return null;if(null===e)return this.children[t];for(let i=0;i=this.children.length)return null;for(let i=0;i2&&void 0!==arguments[2]?arguments[2]:Ke.DEFAULT_PROGRAM_NAME;i="number"==typeof t?t:t.tokenIndex;let r=this.getProgram(s),n=new We(this.tokens,i,r.length,e);r.push(n)}insertBefore(t,e){let i,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ke.DEFAULT_PROGRAM_NAME;i="number"==typeof t?t:t.tokenIndex;const r=this.getProgram(s),n=new qe(this.tokens,i,r.length,e);r.push(n)}replaceSingle(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ke.DEFAULT_PROGRAM_NAME;this.replace(t,t,e,i)}replace(t,e,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Ke.DEFAULT_PROGRAM_NAME;if("number"!=typeof t&&(t=t.tokenIndex),"number"!=typeof e&&(e=e.tokenIndex),t>e||t<0||e<0||e>=this.tokens.size)throw new RangeError(`replace: range invalid: ${t}..${e}(size=${this.tokens.size})`);let r=this.getProgram(s),n=new Ye(this.tokens,t,e,r.length,i);r.push(n)}delete(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ke.DEFAULT_PROGRAM_NAME;void 0===e&&(e=t),this.replace(t,e,null,i)}getProgram(t){let e=this.programs.get(t);return null==e&&(e=this.initializeProgram(t)),e}initializeProgram(t){const e=[];return this.programs.set(t,e),e}getText(e){let i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ke.DEFAULT_PROGRAM_NAME;i=e instanceof g?e:new g(0,this.tokens.size-1),"string"==typeof e&&(s=e);const r=this.programs.get(s);let n=i.start,a=i.stop;if(a>this.tokens.size-1&&(a=this.tokens.size-1),n<0&&(n=0),null==r||0===r.length)return this.tokens.getText(new g(n,a));let o=[],l=this.reduceToSingleOperationPerIndex(r),h=n;for(;h<=a&&h=this.tokens.size-1&&o.push(t.text.toString());return o.join("")}reduceToSingleOperationPerIndex(t){for(let e=0;es.index&&e.index<=s.lastIndex&&(t[e.instructionIndex]=void 0);let n=this.getKindOfOps(t,Ye,e);for(let e of n){if(e.index>=s.index&&e.lastIndex<=s.lastIndex){t[e.instructionIndex]=void 0;continue}let i=e.lastIndexs.lastIndex;if(null!=e.text||null!=s.text||i){if(!i)throw new Error(`replace op boundaries of ${s} overlap with previous ${e}`)}else t[e.instructionIndex]=void 0,s.index=Math.min(e.index,s.index),s.lastIndex=Math.max(e.lastIndex,s.lastIndex)}}for(let e=0;e=i.index&&s.index<=i.lastIndex)throw new Error(`insert op ${s} within boundaries of previous ${i}`)}else i.text=this.catOpText(s.text,i.text),t[e]=void 0}let e=new Map;for(let i of t)if(null!=i){if(null!=e.get(i.index))throw new Error("should only be one op per index");e.set(i.index,i)}return e}catOpText(t,e){let i="",s="";return null!=t&&(i=t.toString()),null!=e&&(s=e.toString()),i+s}getKindOfOps(t,e,i){return t.slice(0,i).filter((t=>t&&t instanceof e))}}var Ve,Be,$e,je,Ge;Ve=Ke,$e="default",je="DEFAULT_PROGRAM_NAME",(Be="symbol"==typeof(Ge=function(t,e){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var s=i.call(t,"string");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(je))?Ge:String(Ge))in Ve?Object.defineProperty(Ve,Be,{value:$e,enumerable:!0,configurable:!0,writable:!0}):Ve[Be]=$e;class ze{constructor(t,e,i,s){this.tokens=t,this.instructionIndex=i,this.index=e,this.text=void 0===s?"":s}toString(){let t=this.constructor.name;const e=t.indexOf("$");return t=t.substring(e+1,t.length),"<"+t+"@"+this.tokens.get(this.index)+':"'+this.text+'">'}}class qe extends ze{constructor(t,e,i,s){super(t,e,i,s)}execute(e){return this.text&&e.push(this.text.toString()),this.tokens.get(this.index).type!==t.EOF&&e.push(String(this.tokens.get(this.index).text)),this.index+1}}class We extends qe{constructor(t,e,i,s){super(t,e+1,i,s)}}class Ye extends ze{constructor(t,e,i,s,r){super(t,e,s,r),this.lastIndex=i}execute(t){return this.text&&t.push(this.text.toString()),this.lastIndex+1}toString(){return null==this.text?"":"'}}const Xe={atn:ne,dfa:he,context:ce,misc:ue,tree:_e,error:be,Token:t,CommonToken:Dt,CharStreams:Ne,CharStream:Se,InputStream:Se,CommonTokenStream:Oe,Lexer:Ht,Parser:Fe,ParserRuleContext:Me,Interval:g,IntervalSet:T,LL1Analyzer:W,Utils:Ie,TokenStreamRewriter:Ke}})();var a=n.dx,o=n.q2,l=n.xf,h=n.c7,c=n._7,u=n.cK,p=n.zs,d=n.hW,m=n.x1,_=n.z5,x=n.TB,f=n._b,y=n.$F,g=n._T,T=n.db,E=n._x,R=n.WU,v=class extends d{constructor(t){super(t),this._interp=new m(this,v._ATN,v.DecisionsToDFA,new T)}get grammarFileName(){return"Solidity.g4"}get literalNames(){return v.literalNames}get symbolicNames(){return v.symbolicNames}get ruleNames(){return v.ruleNames}get serializedATN(){return v._serializedATN}get channelNames(){return v.channelNames}get modeNames(){return v.modeNames}static get _ATN(){return v.__ATN||(v.__ATN=(new o).deserialize(v._serializedATN)),v.__ATN}},b=v;b.T__0=1,b.T__1=2,b.T__2=3,b.T__3=4,b.T__4=5,b.T__5=6,b.T__6=7,b.T__7=8,b.T__8=9,b.T__9=10,b.T__10=11,b.T__11=12,b.T__12=13,b.T__13=14,b.T__14=15,b.T__15=16,b.T__16=17,b.T__17=18,b.T__18=19,b.T__19=20,b.T__20=21,b.T__21=22,b.T__22=23,b.T__23=24,b.T__24=25,b.T__25=26,b.T__26=27,b.T__27=28,b.T__28=29,b.T__29=30,b.T__30=31,b.T__31=32,b.T__32=33,b.T__33=34,b.T__34=35,b.T__35=36,b.T__36=37,b.T__37=38,b.T__38=39,b.T__39=40,b.T__40=41,b.T__41=42,b.T__42=43,b.T__43=44,b.T__44=45,b.T__45=46,b.T__46=47,b.T__47=48,b.T__48=49,b.T__49=50,b.T__50=51,b.T__51=52,b.T__52=53,b.T__53=54,b.T__54=55,b.T__55=56,b.T__56=57,b.T__57=58,b.T__58=59,b.T__59=60,b.T__60=61,b.T__61=62,b.T__62=63,b.T__63=64,b.T__64=65,b.T__65=66,b.T__66=67,b.T__67=68,b.T__68=69,b.T__69=70,b.T__70=71,b.T__71=72,b.T__72=73,b.T__73=74,b.T__74=75,b.T__75=76,b.T__76=77,b.T__77=78,b.T__78=79,b.T__79=80,b.T__80=81,b.T__81=82,b.T__82=83,b.T__83=84,b.T__84=85,b.T__85=86,b.T__86=87,b.T__87=88,b.T__88=89,b.T__89=90,b.T__90=91,b.T__91=92,b.T__92=93,b.T__93=94,b.T__94=95,b.T__95=96,b.Int=97,b.Uint=98,b.Byte=99,b.Fixed=100,b.Ufixed=101,b.BooleanLiteral=102,b.DecimalNumber=103,b.HexNumber=104,b.NumberUnit=105,b.HexLiteralFragment=106,b.ReservedKeyword=107,b.AnonymousKeyword=108,b.BreakKeyword=109,b.ConstantKeyword=110,b.ImmutableKeyword=111,b.ContinueKeyword=112,b.LeaveKeyword=113,b.ExternalKeyword=114,b.IndexedKeyword=115,b.InternalKeyword=116,b.PayableKeyword=117,b.PrivateKeyword=118,b.PublicKeyword=119,b.VirtualKeyword=120,b.PureKeyword=121,b.TypeKeyword=122,b.ViewKeyword=123,b.GlobalKeyword=124,b.ConstructorKeyword=125,b.FallbackKeyword=126,b.ReceiveKeyword=127,b.Identifier=128,b.StringLiteralFragment=129,b.VersionLiteral=130,b.WS=131,b.COMMENT=132,b.LINE_COMMENT=133,b.EOF=R.EOF,b.channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"],b.literalNames=[null,"'pragma'","';'","'*'","'||'","'^'","'~'","'>='","'>'","'<'","'<='","'='","'as'","'import'","'from'","'{'","','","'}'","'abstract'","'contract'","'interface'","'library'","'is'","'('","')'","'error'","'using'","'for'","'|'","'&'","'+'","'-'","'/'","'%'","'=='","'!='","'struct'","'modifier'","'function'","'returns'","'event'","'enum'","'['","']'","'address'","'.'","'mapping'","'=>'","'memory'","'storage'","'calldata'","'if'","'else'","'try'","'catch'","'while'","'unchecked'","'assembly'","'do'","'return'","'throw'","'emit'","'revert'","'var'","'bool'","'string'","'byte'","'++'","'--'","'new'","':'","'delete'","'!'","'**'","'<<'","'>>'","'&&'","'?'","'|='","'^='","'&='","'<<='","'>>='","'+='","'-='","'*='","'/='","'%='","'let'","':='","'=:'","'switch'","'case'","'default'","'->'","'callback'","'override'",null,null,null,null,null,null,null,null,null,null,null,"'anonymous'","'break'","'constant'","'immutable'","'continue'","'leave'","'external'","'indexed'","'internal'","'payable'","'private'","'public'","'virtual'","'pure'","'type'","'view'","'global'","'constructor'","'fallback'","'receive'"],b.symbolicNames=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Int","Uint","Byte","Fixed","Ufixed","BooleanLiteral","DecimalNumber","HexNumber","NumberUnit","HexLiteralFragment","ReservedKeyword","AnonymousKeyword","BreakKeyword","ConstantKeyword","ImmutableKeyword","ContinueKeyword","LeaveKeyword","ExternalKeyword","IndexedKeyword","InternalKeyword","PayableKeyword","PrivateKeyword","PublicKeyword","VirtualKeyword","PureKeyword","TypeKeyword","ViewKeyword","GlobalKeyword","ConstructorKeyword","FallbackKeyword","ReceiveKeyword","Identifier","StringLiteralFragment","VersionLiteral","WS","COMMENT","LINE_COMMENT"],b.modeNames=["DEFAULT_MODE"],b.ruleNames=["T__0","T__1","T__2","T__3","T__4","T__5","T__6","T__7","T__8","T__9","T__10","T__11","T__12","T__13","T__14","T__15","T__16","T__17","T__18","T__19","T__20","T__21","T__22","T__23","T__24","T__25","T__26","T__27","T__28","T__29","T__30","T__31","T__32","T__33","T__34","T__35","T__36","T__37","T__38","T__39","T__40","T__41","T__42","T__43","T__44","T__45","T__46","T__47","T__48","T__49","T__50","T__51","T__52","T__53","T__54","T__55","T__56","T__57","T__58","T__59","T__60","T__61","T__62","T__63","T__64","T__65","T__66","T__67","T__68","T__69","T__70","T__71","T__72","T__73","T__74","T__75","T__76","T__77","T__78","T__79","T__80","T__81","T__82","T__83","T__84","T__85","T__86","T__87","T__88","T__89","T__90","T__91","T__92","T__93","T__94","T__95","Int","Uint","Byte","Fixed","Ufixed","NumberOfBits","NumberOfBytes","BooleanLiteral","DecimalNumber","DecimalDigits","HexNumber","HexDigits","NumberUnit","HexLiteralFragment","HexCharacter","ReservedKeyword","AnonymousKeyword","BreakKeyword","ConstantKeyword","ImmutableKeyword","ContinueKeyword","LeaveKeyword","ExternalKeyword","IndexedKeyword","InternalKeyword","PayableKeyword","PrivateKeyword","PublicKeyword","VirtualKeyword","PureKeyword","TypeKeyword","ViewKeyword","GlobalKeyword","ConstructorKeyword","FallbackKeyword","ReceiveKeyword","Identifier","IdentifierStart","IdentifierPart","StringLiteralFragment","DoubleQuotedStringCharacter","SingleQuotedStringCharacter","VersionLiteral","WS","COMMENT","LINE_COMMENT"],b._serializedATN=[4,0,133,1336,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,73,1,74,1,74,1,74,1,75,1,75,1,75,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,83,1,84,1,84,1,84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,3,96,722,8,96,1,97,1,97,1,97,1,97,1,97,1,97,3,97,730,8,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,739,8,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,4,99,750,8,99,11,99,12,99,751,3,99,754,8,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,4,100,766,8,100,11,100,12,100,767,3,100,770,8,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,3,101,855,8,101,1,102,1,102,1,102,1,102,1,102,3,102,862,8,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,3,103,873,8,103,1,104,1,104,3,104,877,8,104,1,104,1,104,3,104,881,8,104,1,104,1,104,3,104,885,8,104,1,104,3,104,888,8,104,1,105,1,105,3,105,892,8,105,1,105,5,105,895,8,105,10,105,12,105,898,9,105,1,106,1,106,1,106,1,106,1,107,1,107,3,107,906,8,107,1,107,5,107,909,8,107,10,107,12,107,912,9,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,970,8,108,1,109,1,109,1,109,1,109,1,109,1,109,3,109,978,8,109,1,109,1,109,1,109,3,109,983,8,109,1,109,3,109,986,8,109,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,1078,8,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,5,132,1240,8,132,10,132,12,132,1243,9,132,1,133,1,133,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,1256,8,135,1,135,1,135,5,135,1260,8,135,10,135,12,135,1263,9,135,1,135,1,135,1,135,5,135,1268,8,135,10,135,12,135,1271,9,135,1,135,3,135,1274,8,135,1,136,1,136,1,136,3,136,1279,8,136,1,137,1,137,1,137,3,137,1284,8,137,1,138,4,138,1287,8,138,11,138,12,138,1288,1,138,1,138,4,138,1293,8,138,11,138,12,138,1294,1,138,1,138,4,138,1299,8,138,11,138,12,138,1300,3,138,1303,8,138,1,139,4,139,1306,8,139,11,139,12,139,1307,1,139,1,139,1,140,1,140,1,140,1,140,5,140,1316,8,140,10,140,12,140,1319,9,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,5,141,1330,8,141,10,141,12,141,1333,9,141,1,141,1,141,1,1317,0,142,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,0,205,0,207,102,209,103,211,0,213,104,215,0,217,105,219,106,221,0,223,107,225,108,227,109,229,110,231,111,233,112,235,113,237,114,239,115,241,116,243,117,245,118,247,119,249,120,251,121,253,122,255,123,257,124,259,125,261,126,263,127,265,128,267,0,269,0,271,129,273,0,275,0,277,130,279,131,281,132,283,133,1,0,13,1,0,48,57,1,0,49,57,1,0,49,50,1,0,48,50,2,0,69,69,101,101,2,0,88,88,120,120,3,0,48,57,65,70,97,102,4,0,36,36,65,90,95,95,97,122,5,0,36,36,48,57,65,90,95,95,97,122,4,0,10,10,13,13,34,34,92,92,4,0,10,10,13,13,39,39,92,92,3,0,9,10,12,13,32,32,2,0,10,10,13,13,1418,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,213,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,271,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,1,285,1,0,0,0,3,292,1,0,0,0,5,294,1,0,0,0,7,296,1,0,0,0,9,299,1,0,0,0,11,301,1,0,0,0,13,303,1,0,0,0,15,306,1,0,0,0,17,308,1,0,0,0,19,310,1,0,0,0,21,313,1,0,0,0,23,315,1,0,0,0,25,318,1,0,0,0,27,325,1,0,0,0,29,330,1,0,0,0,31,332,1,0,0,0,33,334,1,0,0,0,35,336,1,0,0,0,37,345,1,0,0,0,39,354,1,0,0,0,41,364,1,0,0,0,43,372,1,0,0,0,45,375,1,0,0,0,47,377,1,0,0,0,49,379,1,0,0,0,51,385,1,0,0,0,53,391,1,0,0,0,55,395,1,0,0,0,57,397,1,0,0,0,59,399,1,0,0,0,61,401,1,0,0,0,63,403,1,0,0,0,65,405,1,0,0,0,67,407,1,0,0,0,69,410,1,0,0,0,71,413,1,0,0,0,73,420,1,0,0,0,75,429,1,0,0,0,77,438,1,0,0,0,79,446,1,0,0,0,81,452,1,0,0,0,83,457,1,0,0,0,85,459,1,0,0,0,87,461,1,0,0,0,89,469,1,0,0,0,91,471,1,0,0,0,93,479,1,0,0,0,95,482,1,0,0,0,97,489,1,0,0,0,99,497,1,0,0,0,101,506,1,0,0,0,103,509,1,0,0,0,105,514,1,0,0,0,107,518,1,0,0,0,109,524,1,0,0,0,111,530,1,0,0,0,113,540,1,0,0,0,115,549,1,0,0,0,117,552,1,0,0,0,119,559,1,0,0,0,121,565,1,0,0,0,123,570,1,0,0,0,125,577,1,0,0,0,127,581,1,0,0,0,129,586,1,0,0,0,131,593,1,0,0,0,133,598,1,0,0,0,135,601,1,0,0,0,137,604,1,0,0,0,139,608,1,0,0,0,141,610,1,0,0,0,143,617,1,0,0,0,145,619,1,0,0,0,147,622,1,0,0,0,149,625,1,0,0,0,151,628,1,0,0,0,153,631,1,0,0,0,155,633,1,0,0,0,157,636,1,0,0,0,159,639,1,0,0,0,161,642,1,0,0,0,163,646,1,0,0,0,165,650,1,0,0,0,167,653,1,0,0,0,169,656,1,0,0,0,171,659,1,0,0,0,173,662,1,0,0,0,175,665,1,0,0,0,177,669,1,0,0,0,179,672,1,0,0,0,181,675,1,0,0,0,183,682,1,0,0,0,185,687,1,0,0,0,187,695,1,0,0,0,189,698,1,0,0,0,191,707,1,0,0,0,193,716,1,0,0,0,195,723,1,0,0,0,197,731,1,0,0,0,199,740,1,0,0,0,201,755,1,0,0,0,203,854,1,0,0,0,205,861,1,0,0,0,207,872,1,0,0,0,209,880,1,0,0,0,211,889,1,0,0,0,213,899,1,0,0,0,215,903,1,0,0,0,217,969,1,0,0,0,219,971,1,0,0,0,221,987,1,0,0,0,223,1077,1,0,0,0,225,1079,1,0,0,0,227,1089,1,0,0,0,229,1095,1,0,0,0,231,1104,1,0,0,0,233,1114,1,0,0,0,235,1123,1,0,0,0,237,1129,1,0,0,0,239,1138,1,0,0,0,241,1146,1,0,0,0,243,1155,1,0,0,0,245,1163,1,0,0,0,247,1171,1,0,0,0,249,1178,1,0,0,0,251,1186,1,0,0,0,253,1191,1,0,0,0,255,1196,1,0,0,0,257,1201,1,0,0,0,259,1208,1,0,0,0,261,1220,1,0,0,0,263,1229,1,0,0,0,265,1237,1,0,0,0,267,1244,1,0,0,0,269,1246,1,0,0,0,271,1255,1,0,0,0,273,1278,1,0,0,0,275,1283,1,0,0,0,277,1286,1,0,0,0,279,1305,1,0,0,0,281,1311,1,0,0,0,283,1325,1,0,0,0,285,286,5,112,0,0,286,287,5,114,0,0,287,288,5,97,0,0,288,289,5,103,0,0,289,290,5,109,0,0,290,291,5,97,0,0,291,2,1,0,0,0,292,293,5,59,0,0,293,4,1,0,0,0,294,295,5,42,0,0,295,6,1,0,0,0,296,297,5,124,0,0,297,298,5,124,0,0,298,8,1,0,0,0,299,300,5,94,0,0,300,10,1,0,0,0,301,302,5,126,0,0,302,12,1,0,0,0,303,304,5,62,0,0,304,305,5,61,0,0,305,14,1,0,0,0,306,307,5,62,0,0,307,16,1,0,0,0,308,309,5,60,0,0,309,18,1,0,0,0,310,311,5,60,0,0,311,312,5,61,0,0,312,20,1,0,0,0,313,314,5,61,0,0,314,22,1,0,0,0,315,316,5,97,0,0,316,317,5,115,0,0,317,24,1,0,0,0,318,319,5,105,0,0,319,320,5,109,0,0,320,321,5,112,0,0,321,322,5,111,0,0,322,323,5,114,0,0,323,324,5,116,0,0,324,26,1,0,0,0,325,326,5,102,0,0,326,327,5,114,0,0,327,328,5,111,0,0,328,329,5,109,0,0,329,28,1,0,0,0,330,331,5,123,0,0,331,30,1,0,0,0,332,333,5,44,0,0,333,32,1,0,0,0,334,335,5,125,0,0,335,34,1,0,0,0,336,337,5,97,0,0,337,338,5,98,0,0,338,339,5,115,0,0,339,340,5,116,0,0,340,341,5,114,0,0,341,342,5,97,0,0,342,343,5,99,0,0,343,344,5,116,0,0,344,36,1,0,0,0,345,346,5,99,0,0,346,347,5,111,0,0,347,348,5,110,0,0,348,349,5,116,0,0,349,350,5,114,0,0,350,351,5,97,0,0,351,352,5,99,0,0,352,353,5,116,0,0,353,38,1,0,0,0,354,355,5,105,0,0,355,356,5,110,0,0,356,357,5,116,0,0,357,358,5,101,0,0,358,359,5,114,0,0,359,360,5,102,0,0,360,361,5,97,0,0,361,362,5,99,0,0,362,363,5,101,0,0,363,40,1,0,0,0,364,365,5,108,0,0,365,366,5,105,0,0,366,367,5,98,0,0,367,368,5,114,0,0,368,369,5,97,0,0,369,370,5,114,0,0,370,371,5,121,0,0,371,42,1,0,0,0,372,373,5,105,0,0,373,374,5,115,0,0,374,44,1,0,0,0,375,376,5,40,0,0,376,46,1,0,0,0,377,378,5,41,0,0,378,48,1,0,0,0,379,380,5,101,0,0,380,381,5,114,0,0,381,382,5,114,0,0,382,383,5,111,0,0,383,384,5,114,0,0,384,50,1,0,0,0,385,386,5,117,0,0,386,387,5,115,0,0,387,388,5,105,0,0,388,389,5,110,0,0,389,390,5,103,0,0,390,52,1,0,0,0,391,392,5,102,0,0,392,393,5,111,0,0,393,394,5,114,0,0,394,54,1,0,0,0,395,396,5,124,0,0,396,56,1,0,0,0,397,398,5,38,0,0,398,58,1,0,0,0,399,400,5,43,0,0,400,60,1,0,0,0,401,402,5,45,0,0,402,62,1,0,0,0,403,404,5,47,0,0,404,64,1,0,0,0,405,406,5,37,0,0,406,66,1,0,0,0,407,408,5,61,0,0,408,409,5,61,0,0,409,68,1,0,0,0,410,411,5,33,0,0,411,412,5,61,0,0,412,70,1,0,0,0,413,414,5,115,0,0,414,415,5,116,0,0,415,416,5,114,0,0,416,417,5,117,0,0,417,418,5,99,0,0,418,419,5,116,0,0,419,72,1,0,0,0,420,421,5,109,0,0,421,422,5,111,0,0,422,423,5,100,0,0,423,424,5,105,0,0,424,425,5,102,0,0,425,426,5,105,0,0,426,427,5,101,0,0,427,428,5,114,0,0,428,74,1,0,0,0,429,430,5,102,0,0,430,431,5,117,0,0,431,432,5,110,0,0,432,433,5,99,0,0,433,434,5,116,0,0,434,435,5,105,0,0,435,436,5,111,0,0,436,437,5,110,0,0,437,76,1,0,0,0,438,439,5,114,0,0,439,440,5,101,0,0,440,441,5,116,0,0,441,442,5,117,0,0,442,443,5,114,0,0,443,444,5,110,0,0,444,445,5,115,0,0,445,78,1,0,0,0,446,447,5,101,0,0,447,448,5,118,0,0,448,449,5,101,0,0,449,450,5,110,0,0,450,451,5,116,0,0,451,80,1,0,0,0,452,453,5,101,0,0,453,454,5,110,0,0,454,455,5,117,0,0,455,456,5,109,0,0,456,82,1,0,0,0,457,458,5,91,0,0,458,84,1,0,0,0,459,460,5,93,0,0,460,86,1,0,0,0,461,462,5,97,0,0,462,463,5,100,0,0,463,464,5,100,0,0,464,465,5,114,0,0,465,466,5,101,0,0,466,467,5,115,0,0,467,468,5,115,0,0,468,88,1,0,0,0,469,470,5,46,0,0,470,90,1,0,0,0,471,472,5,109,0,0,472,473,5,97,0,0,473,474,5,112,0,0,474,475,5,112,0,0,475,476,5,105,0,0,476,477,5,110,0,0,477,478,5,103,0,0,478,92,1,0,0,0,479,480,5,61,0,0,480,481,5,62,0,0,481,94,1,0,0,0,482,483,5,109,0,0,483,484,5,101,0,0,484,485,5,109,0,0,485,486,5,111,0,0,486,487,5,114,0,0,487,488,5,121,0,0,488,96,1,0,0,0,489,490,5,115,0,0,490,491,5,116,0,0,491,492,5,111,0,0,492,493,5,114,0,0,493,494,5,97,0,0,494,495,5,103,0,0,495,496,5,101,0,0,496,98,1,0,0,0,497,498,5,99,0,0,498,499,5,97,0,0,499,500,5,108,0,0,500,501,5,108,0,0,501,502,5,100,0,0,502,503,5,97,0,0,503,504,5,116,0,0,504,505,5,97,0,0,505,100,1,0,0,0,506,507,5,105,0,0,507,508,5,102,0,0,508,102,1,0,0,0,509,510,5,101,0,0,510,511,5,108,0,0,511,512,5,115,0,0,512,513,5,101,0,0,513,104,1,0,0,0,514,515,5,116,0,0,515,516,5,114,0,0,516,517,5,121,0,0,517,106,1,0,0,0,518,519,5,99,0,0,519,520,5,97,0,0,520,521,5,116,0,0,521,522,5,99,0,0,522,523,5,104,0,0,523,108,1,0,0,0,524,525,5,119,0,0,525,526,5,104,0,0,526,527,5,105,0,0,527,528,5,108,0,0,528,529,5,101,0,0,529,110,1,0,0,0,530,531,5,117,0,0,531,532,5,110,0,0,532,533,5,99,0,0,533,534,5,104,0,0,534,535,5,101,0,0,535,536,5,99,0,0,536,537,5,107,0,0,537,538,5,101,0,0,538,539,5,100,0,0,539,112,1,0,0,0,540,541,5,97,0,0,541,542,5,115,0,0,542,543,5,115,0,0,543,544,5,101,0,0,544,545,5,109,0,0,545,546,5,98,0,0,546,547,5,108,0,0,547,548,5,121,0,0,548,114,1,0,0,0,549,550,5,100,0,0,550,551,5,111,0,0,551,116,1,0,0,0,552,553,5,114,0,0,553,554,5,101,0,0,554,555,5,116,0,0,555,556,5,117,0,0,556,557,5,114,0,0,557,558,5,110,0,0,558,118,1,0,0,0,559,560,5,116,0,0,560,561,5,104,0,0,561,562,5,114,0,0,562,563,5,111,0,0,563,564,5,119,0,0,564,120,1,0,0,0,565,566,5,101,0,0,566,567,5,109,0,0,567,568,5,105,0,0,568,569,5,116,0,0,569,122,1,0,0,0,570,571,5,114,0,0,571,572,5,101,0,0,572,573,5,118,0,0,573,574,5,101,0,0,574,575,5,114,0,0,575,576,5,116,0,0,576,124,1,0,0,0,577,578,5,118,0,0,578,579,5,97,0,0,579,580,5,114,0,0,580,126,1,0,0,0,581,582,5,98,0,0,582,583,5,111,0,0,583,584,5,111,0,0,584,585,5,108,0,0,585,128,1,0,0,0,586,587,5,115,0,0,587,588,5,116,0,0,588,589,5,114,0,0,589,590,5,105,0,0,590,591,5,110,0,0,591,592,5,103,0,0,592,130,1,0,0,0,593,594,5,98,0,0,594,595,5,121,0,0,595,596,5,116,0,0,596,597,5,101,0,0,597,132,1,0,0,0,598,599,5,43,0,0,599,600,5,43,0,0,600,134,1,0,0,0,601,602,5,45,0,0,602,603,5,45,0,0,603,136,1,0,0,0,604,605,5,110,0,0,605,606,5,101,0,0,606,607,5,119,0,0,607,138,1,0,0,0,608,609,5,58,0,0,609,140,1,0,0,0,610,611,5,100,0,0,611,612,5,101,0,0,612,613,5,108,0,0,613,614,5,101,0,0,614,615,5,116,0,0,615,616,5,101,0,0,616,142,1,0,0,0,617,618,5,33,0,0,618,144,1,0,0,0,619,620,5,42,0,0,620,621,5,42,0,0,621,146,1,0,0,0,622,623,5,60,0,0,623,624,5,60,0,0,624,148,1,0,0,0,625,626,5,62,0,0,626,627,5,62,0,0,627,150,1,0,0,0,628,629,5,38,0,0,629,630,5,38,0,0,630,152,1,0,0,0,631,632,5,63,0,0,632,154,1,0,0,0,633,634,5,124,0,0,634,635,5,61,0,0,635,156,1,0,0,0,636,637,5,94,0,0,637,638,5,61,0,0,638,158,1,0,0,0,639,640,5,38,0,0,640,641,5,61,0,0,641,160,1,0,0,0,642,643,5,60,0,0,643,644,5,60,0,0,644,645,5,61,0,0,645,162,1,0,0,0,646,647,5,62,0,0,647,648,5,62,0,0,648,649,5,61,0,0,649,164,1,0,0,0,650,651,5,43,0,0,651,652,5,61,0,0,652,166,1,0,0,0,653,654,5,45,0,0,654,655,5,61,0,0,655,168,1,0,0,0,656,657,5,42,0,0,657,658,5,61,0,0,658,170,1,0,0,0,659,660,5,47,0,0,660,661,5,61,0,0,661,172,1,0,0,0,662,663,5,37,0,0,663,664,5,61,0,0,664,174,1,0,0,0,665,666,5,108,0,0,666,667,5,101,0,0,667,668,5,116,0,0,668,176,1,0,0,0,669,670,5,58,0,0,670,671,5,61,0,0,671,178,1,0,0,0,672,673,5,61,0,0,673,674,5,58,0,0,674,180,1,0,0,0,675,676,5,115,0,0,676,677,5,119,0,0,677,678,5,105,0,0,678,679,5,116,0,0,679,680,5,99,0,0,680,681,5,104,0,0,681,182,1,0,0,0,682,683,5,99,0,0,683,684,5,97,0,0,684,685,5,115,0,0,685,686,5,101,0,0,686,184,1,0,0,0,687,688,5,100,0,0,688,689,5,101,0,0,689,690,5,102,0,0,690,691,5,97,0,0,691,692,5,117,0,0,692,693,5,108,0,0,693,694,5,116,0,0,694,186,1,0,0,0,695,696,5,45,0,0,696,697,5,62,0,0,697,188,1,0,0,0,698,699,5,99,0,0,699,700,5,97,0,0,700,701,5,108,0,0,701,702,5,108,0,0,702,703,5,98,0,0,703,704,5,97,0,0,704,705,5,99,0,0,705,706,5,107,0,0,706,190,1,0,0,0,707,708,5,111,0,0,708,709,5,118,0,0,709,710,5,101,0,0,710,711,5,114,0,0,711,712,5,114,0,0,712,713,5,105,0,0,713,714,5,100,0,0,714,715,5,101,0,0,715,192,1,0,0,0,716,717,5,105,0,0,717,718,5,110,0,0,718,719,5,116,0,0,719,721,1,0,0,0,720,722,3,203,101,0,721,720,1,0,0,0,721,722,1,0,0,0,722,194,1,0,0,0,723,724,5,117,0,0,724,725,5,105,0,0,725,726,5,110,0,0,726,727,5,116,0,0,727,729,1,0,0,0,728,730,3,203,101,0,729,728,1,0,0,0,729,730,1,0,0,0,730,196,1,0,0,0,731,732,5,98,0,0,732,733,5,121,0,0,733,734,5,116,0,0,734,735,5,101,0,0,735,736,5,115,0,0,736,738,1,0,0,0,737,739,3,205,102,0,738,737,1,0,0,0,738,739,1,0,0,0,739,198,1,0,0,0,740,741,5,102,0,0,741,742,5,105,0,0,742,743,5,120,0,0,743,744,5,101,0,0,744,745,5,100,0,0,745,753,1,0,0,0,746,747,3,203,101,0,747,749,5,120,0,0,748,750,7,0,0,0,749,748,1,0,0,0,750,751,1,0,0,0,751,749,1,0,0,0,751,752,1,0,0,0,752,754,1,0,0,0,753,746,1,0,0,0,753,754,1,0,0,0,754,200,1,0,0,0,755,756,5,117,0,0,756,757,5,102,0,0,757,758,5,105,0,0,758,759,5,120,0,0,759,760,5,101,0,0,760,761,5,100,0,0,761,769,1,0,0,0,762,763,3,203,101,0,763,765,5,120,0,0,764,766,7,0,0,0,765,764,1,0,0,0,766,767,1,0,0,0,767,765,1,0,0,0,767,768,1,0,0,0,768,770,1,0,0,0,769,762,1,0,0,0,769,770,1,0,0,0,770,202,1,0,0,0,771,855,5,56,0,0,772,773,5,49,0,0,773,855,5,54,0,0,774,775,5,50,0,0,775,855,5,52,0,0,776,777,5,51,0,0,777,855,5,50,0,0,778,779,5,52,0,0,779,855,5,48,0,0,780,781,5,52,0,0,781,855,5,56,0,0,782,783,5,53,0,0,783,855,5,54,0,0,784,785,5,54,0,0,785,855,5,52,0,0,786,787,5,55,0,0,787,855,5,50,0,0,788,789,5,56,0,0,789,855,5,48,0,0,790,791,5,56,0,0,791,855,5,56,0,0,792,793,5,57,0,0,793,855,5,54,0,0,794,795,5,49,0,0,795,796,5,48,0,0,796,855,5,52,0,0,797,798,5,49,0,0,798,799,5,49,0,0,799,855,5,50,0,0,800,801,5,49,0,0,801,802,5,50,0,0,802,855,5,48,0,0,803,804,5,49,0,0,804,805,5,50,0,0,805,855,5,56,0,0,806,807,5,49,0,0,807,808,5,51,0,0,808,855,5,54,0,0,809,810,5,49,0,0,810,811,5,52,0,0,811,855,5,52,0,0,812,813,5,49,0,0,813,814,5,53,0,0,814,855,5,50,0,0,815,816,5,49,0,0,816,817,5,54,0,0,817,855,5,48,0,0,818,819,5,49,0,0,819,820,5,54,0,0,820,855,5,56,0,0,821,822,5,49,0,0,822,823,5,55,0,0,823,855,5,54,0,0,824,825,5,49,0,0,825,826,5,56,0,0,826,855,5,52,0,0,827,828,5,49,0,0,828,829,5,57,0,0,829,855,5,50,0,0,830,831,5,50,0,0,831,832,5,48,0,0,832,855,5,48,0,0,833,834,5,50,0,0,834,835,5,48,0,0,835,855,5,56,0,0,836,837,5,50,0,0,837,838,5,49,0,0,838,855,5,54,0,0,839,840,5,50,0,0,840,841,5,50,0,0,841,855,5,52,0,0,842,843,5,50,0,0,843,844,5,51,0,0,844,855,5,50,0,0,845,846,5,50,0,0,846,847,5,52,0,0,847,855,5,48,0,0,848,849,5,50,0,0,849,850,5,52,0,0,850,855,5,56,0,0,851,852,5,50,0,0,852,853,5,53,0,0,853,855,5,54,0,0,854,771,1,0,0,0,854,772,1,0,0,0,854,774,1,0,0,0,854,776,1,0,0,0,854,778,1,0,0,0,854,780,1,0,0,0,854,782,1,0,0,0,854,784,1,0,0,0,854,786,1,0,0,0,854,788,1,0,0,0,854,790,1,0,0,0,854,792,1,0,0,0,854,794,1,0,0,0,854,797,1,0,0,0,854,800,1,0,0,0,854,803,1,0,0,0,854,806,1,0,0,0,854,809,1,0,0,0,854,812,1,0,0,0,854,815,1,0,0,0,854,818,1,0,0,0,854,821,1,0,0,0,854,824,1,0,0,0,854,827,1,0,0,0,854,830,1,0,0,0,854,833,1,0,0,0,854,836,1,0,0,0,854,839,1,0,0,0,854,842,1,0,0,0,854,845,1,0,0,0,854,848,1,0,0,0,854,851,1,0,0,0,855,204,1,0,0,0,856,862,7,1,0,0,857,858,7,2,0,0,858,862,7,0,0,0,859,860,5,51,0,0,860,862,7,3,0,0,861,856,1,0,0,0,861,857,1,0,0,0,861,859,1,0,0,0,862,206,1,0,0,0,863,864,5,116,0,0,864,865,5,114,0,0,865,866,5,117,0,0,866,873,5,101,0,0,867,868,5,102,0,0,868,869,5,97,0,0,869,870,5,108,0,0,870,871,5,115,0,0,871,873,5,101,0,0,872,863,1,0,0,0,872,867,1,0,0,0,873,208,1,0,0,0,874,881,3,211,105,0,875,877,3,211,105,0,876,875,1,0,0,0,876,877,1,0,0,0,877,878,1,0,0,0,878,879,5,46,0,0,879,881,3,211,105,0,880,874,1,0,0,0,880,876,1,0,0,0,881,887,1,0,0,0,882,884,7,4,0,0,883,885,5,45,0,0,884,883,1,0,0,0,884,885,1,0,0,0,885,886,1,0,0,0,886,888,3,211,105,0,887,882,1,0,0,0,887,888,1,0,0,0,888,210,1,0,0,0,889,896,7,0,0,0,890,892,5,95,0,0,891,890,1,0,0,0,891,892,1,0,0,0,892,893,1,0,0,0,893,895,7,0,0,0,894,891,1,0,0,0,895,898,1,0,0,0,896,894,1,0,0,0,896,897,1,0,0,0,897,212,1,0,0,0,898,896,1,0,0,0,899,900,5,48,0,0,900,901,7,5,0,0,901,902,3,215,107,0,902,214,1,0,0,0,903,910,3,221,110,0,904,906,5,95,0,0,905,904,1,0,0,0,905,906,1,0,0,0,906,907,1,0,0,0,907,909,3,221,110,0,908,905,1,0,0,0,909,912,1,0,0,0,910,908,1,0,0,0,910,911,1,0,0,0,911,216,1,0,0,0,912,910,1,0,0,0,913,914,5,119,0,0,914,915,5,101,0,0,915,970,5,105,0,0,916,917,5,103,0,0,917,918,5,119,0,0,918,919,5,101,0,0,919,970,5,105,0,0,920,921,5,115,0,0,921,922,5,122,0,0,922,923,5,97,0,0,923,924,5,98,0,0,924,970,5,111,0,0,925,926,5,102,0,0,926,927,5,105,0,0,927,928,5,110,0,0,928,929,5,110,0,0,929,930,5,101,0,0,930,970,5,121,0,0,931,932,5,101,0,0,932,933,5,116,0,0,933,934,5,104,0,0,934,935,5,101,0,0,935,970,5,114,0,0,936,937,5,115,0,0,937,938,5,101,0,0,938,939,5,99,0,0,939,940,5,111,0,0,940,941,5,110,0,0,941,942,5,100,0,0,942,970,5,115,0,0,943,944,5,109,0,0,944,945,5,105,0,0,945,946,5,110,0,0,946,947,5,117,0,0,947,948,5,116,0,0,948,949,5,101,0,0,949,970,5,115,0,0,950,951,5,104,0,0,951,952,5,111,0,0,952,953,5,117,0,0,953,954,5,114,0,0,954,970,5,115,0,0,955,956,5,100,0,0,956,957,5,97,0,0,957,958,5,121,0,0,958,970,5,115,0,0,959,960,5,119,0,0,960,961,5,101,0,0,961,962,5,101,0,0,962,963,5,107,0,0,963,970,5,115,0,0,964,965,5,121,0,0,965,966,5,101,0,0,966,967,5,97,0,0,967,968,5,114,0,0,968,970,5,115,0,0,969,913,1,0,0,0,969,916,1,0,0,0,969,920,1,0,0,0,969,925,1,0,0,0,969,931,1,0,0,0,969,936,1,0,0,0,969,943,1,0,0,0,969,950,1,0,0,0,969,955,1,0,0,0,969,959,1,0,0,0,969,964,1,0,0,0,970,218,1,0,0,0,971,972,5,104,0,0,972,973,5,101,0,0,973,974,5,120,0,0,974,985,1,0,0,0,975,977,5,34,0,0,976,978,3,215,107,0,977,976,1,0,0,0,977,978,1,0,0,0,978,979,1,0,0,0,979,986,5,34,0,0,980,982,5,39,0,0,981,983,3,215,107,0,982,981,1,0,0,0,982,983,1,0,0,0,983,984,1,0,0,0,984,986,5,39,0,0,985,975,1,0,0,0,985,980,1,0,0,0,986,220,1,0,0,0,987,988,7,6,0,0,988,222,1,0,0,0,989,990,5,97,0,0,990,991,5,98,0,0,991,992,5,115,0,0,992,993,5,116,0,0,993,994,5,114,0,0,994,995,5,97,0,0,995,996,5,99,0,0,996,1078,5,116,0,0,997,998,5,97,0,0,998,999,5,102,0,0,999,1e3,5,116,0,0,1e3,1001,5,101,0,0,1001,1078,5,114,0,0,1002,1003,5,99,0,0,1003,1004,5,97,0,0,1004,1005,5,115,0,0,1005,1078,5,101,0,0,1006,1007,5,99,0,0,1007,1008,5,97,0,0,1008,1009,5,116,0,0,1009,1010,5,99,0,0,1010,1078,5,104,0,0,1011,1012,5,100,0,0,1012,1013,5,101,0,0,1013,1014,5,102,0,0,1014,1015,5,97,0,0,1015,1016,5,117,0,0,1016,1017,5,108,0,0,1017,1078,5,116,0,0,1018,1019,5,102,0,0,1019,1020,5,105,0,0,1020,1021,5,110,0,0,1021,1022,5,97,0,0,1022,1078,5,108,0,0,1023,1024,5,105,0,0,1024,1078,5,110,0,0,1025,1026,5,105,0,0,1026,1027,5,110,0,0,1027,1028,5,108,0,0,1028,1029,5,105,0,0,1029,1030,5,110,0,0,1030,1078,5,101,0,0,1031,1032,5,108,0,0,1032,1033,5,101,0,0,1033,1078,5,116,0,0,1034,1035,5,109,0,0,1035,1036,5,97,0,0,1036,1037,5,116,0,0,1037,1038,5,99,0,0,1038,1078,5,104,0,0,1039,1040,5,110,0,0,1040,1041,5,117,0,0,1041,1042,5,108,0,0,1042,1078,5,108,0,0,1043,1044,5,111,0,0,1044,1078,5,102,0,0,1045,1046,5,114,0,0,1046,1047,5,101,0,0,1047,1048,5,108,0,0,1048,1049,5,111,0,0,1049,1050,5,99,0,0,1050,1051,5,97,0,0,1051,1052,5,116,0,0,1052,1053,5,97,0,0,1053,1054,5,98,0,0,1054,1055,5,108,0,0,1055,1078,5,101,0,0,1056,1057,5,115,0,0,1057,1058,5,116,0,0,1058,1059,5,97,0,0,1059,1060,5,116,0,0,1060,1061,5,105,0,0,1061,1078,5,99,0,0,1062,1063,5,115,0,0,1063,1064,5,119,0,0,1064,1065,5,105,0,0,1065,1066,5,116,0,0,1066,1067,5,99,0,0,1067,1078,5,104,0,0,1068,1069,5,116,0,0,1069,1070,5,114,0,0,1070,1078,5,121,0,0,1071,1072,5,116,0,0,1072,1073,5,121,0,0,1073,1074,5,112,0,0,1074,1075,5,101,0,0,1075,1076,5,111,0,0,1076,1078,5,102,0,0,1077,989,1,0,0,0,1077,997,1,0,0,0,1077,1002,1,0,0,0,1077,1006,1,0,0,0,1077,1011,1,0,0,0,1077,1018,1,0,0,0,1077,1023,1,0,0,0,1077,1025,1,0,0,0,1077,1031,1,0,0,0,1077,1034,1,0,0,0,1077,1039,1,0,0,0,1077,1043,1,0,0,0,1077,1045,1,0,0,0,1077,1056,1,0,0,0,1077,1062,1,0,0,0,1077,1068,1,0,0,0,1077,1071,1,0,0,0,1078,224,1,0,0,0,1079,1080,5,97,0,0,1080,1081,5,110,0,0,1081,1082,5,111,0,0,1082,1083,5,110,0,0,1083,1084,5,121,0,0,1084,1085,5,109,0,0,1085,1086,5,111,0,0,1086,1087,5,117,0,0,1087,1088,5,115,0,0,1088,226,1,0,0,0,1089,1090,5,98,0,0,1090,1091,5,114,0,0,1091,1092,5,101,0,0,1092,1093,5,97,0,0,1093,1094,5,107,0,0,1094,228,1,0,0,0,1095,1096,5,99,0,0,1096,1097,5,111,0,0,1097,1098,5,110,0,0,1098,1099,5,115,0,0,1099,1100,5,116,0,0,1100,1101,5,97,0,0,1101,1102,5,110,0,0,1102,1103,5,116,0,0,1103,230,1,0,0,0,1104,1105,5,105,0,0,1105,1106,5,109,0,0,1106,1107,5,109,0,0,1107,1108,5,117,0,0,1108,1109,5,116,0,0,1109,1110,5,97,0,0,1110,1111,5,98,0,0,1111,1112,5,108,0,0,1112,1113,5,101,0,0,1113,232,1,0,0,0,1114,1115,5,99,0,0,1115,1116,5,111,0,0,1116,1117,5,110,0,0,1117,1118,5,116,0,0,1118,1119,5,105,0,0,1119,1120,5,110,0,0,1120,1121,5,117,0,0,1121,1122,5,101,0,0,1122,234,1,0,0,0,1123,1124,5,108,0,0,1124,1125,5,101,0,0,1125,1126,5,97,0,0,1126,1127,5,118,0,0,1127,1128,5,101,0,0,1128,236,1,0,0,0,1129,1130,5,101,0,0,1130,1131,5,120,0,0,1131,1132,5,116,0,0,1132,1133,5,101,0,0,1133,1134,5,114,0,0,1134,1135,5,110,0,0,1135,1136,5,97,0,0,1136,1137,5,108,0,0,1137,238,1,0,0,0,1138,1139,5,105,0,0,1139,1140,5,110,0,0,1140,1141,5,100,0,0,1141,1142,5,101,0,0,1142,1143,5,120,0,0,1143,1144,5,101,0,0,1144,1145,5,100,0,0,1145,240,1,0,0,0,1146,1147,5,105,0,0,1147,1148,5,110,0,0,1148,1149,5,116,0,0,1149,1150,5,101,0,0,1150,1151,5,114,0,0,1151,1152,5,110,0,0,1152,1153,5,97,0,0,1153,1154,5,108,0,0,1154,242,1,0,0,0,1155,1156,5,112,0,0,1156,1157,5,97,0,0,1157,1158,5,121,0,0,1158,1159,5,97,0,0,1159,1160,5,98,0,0,1160,1161,5,108,0,0,1161,1162,5,101,0,0,1162,244,1,0,0,0,1163,1164,5,112,0,0,1164,1165,5,114,0,0,1165,1166,5,105,0,0,1166,1167,5,118,0,0,1167,1168,5,97,0,0,1168,1169,5,116,0,0,1169,1170,5,101,0,0,1170,246,1,0,0,0,1171,1172,5,112,0,0,1172,1173,5,117,0,0,1173,1174,5,98,0,0,1174,1175,5,108,0,0,1175,1176,5,105,0,0,1176,1177,5,99,0,0,1177,248,1,0,0,0,1178,1179,5,118,0,0,1179,1180,5,105,0,0,1180,1181,5,114,0,0,1181,1182,5,116,0,0,1182,1183,5,117,0,0,1183,1184,5,97,0,0,1184,1185,5,108,0,0,1185,250,1,0,0,0,1186,1187,5,112,0,0,1187,1188,5,117,0,0,1188,1189,5,114,0,0,1189,1190,5,101,0,0,1190,252,1,0,0,0,1191,1192,5,116,0,0,1192,1193,5,121,0,0,1193,1194,5,112,0,0,1194,1195,5,101,0,0,1195,254,1,0,0,0,1196,1197,5,118,0,0,1197,1198,5,105,0,0,1198,1199,5,101,0,0,1199,1200,5,119,0,0,1200,256,1,0,0,0,1201,1202,5,103,0,0,1202,1203,5,108,0,0,1203,1204,5,111,0,0,1204,1205,5,98,0,0,1205,1206,5,97,0,0,1206,1207,5,108,0,0,1207,258,1,0,0,0,1208,1209,5,99,0,0,1209,1210,5,111,0,0,1210,1211,5,110,0,0,1211,1212,5,115,0,0,1212,1213,5,116,0,0,1213,1214,5,114,0,0,1214,1215,5,117,0,0,1215,1216,5,99,0,0,1216,1217,5,116,0,0,1217,1218,5,111,0,0,1218,1219,5,114,0,0,1219,260,1,0,0,0,1220,1221,5,102,0,0,1221,1222,5,97,0,0,1222,1223,5,108,0,0,1223,1224,5,108,0,0,1224,1225,5,98,0,0,1225,1226,5,97,0,0,1226,1227,5,99,0,0,1227,1228,5,107,0,0,1228,262,1,0,0,0,1229,1230,5,114,0,0,1230,1231,5,101,0,0,1231,1232,5,99,0,0,1232,1233,5,101,0,0,1233,1234,5,105,0,0,1234,1235,5,118,0,0,1235,1236,5,101,0,0,1236,264,1,0,0,0,1237,1241,3,267,133,0,1238,1240,3,269,134,0,1239,1238,1,0,0,0,1240,1243,1,0,0,0,1241,1239,1,0,0,0,1241,1242,1,0,0,0,1242,266,1,0,0,0,1243,1241,1,0,0,0,1244,1245,7,7,0,0,1245,268,1,0,0,0,1246,1247,7,8,0,0,1247,270,1,0,0,0,1248,1249,5,117,0,0,1249,1250,5,110,0,0,1250,1251,5,105,0,0,1251,1252,5,99,0,0,1252,1253,5,111,0,0,1253,1254,5,100,0,0,1254,1256,5,101,0,0,1255,1248,1,0,0,0,1255,1256,1,0,0,0,1256,1273,1,0,0,0,1257,1261,5,34,0,0,1258,1260,3,273,136,0,1259,1258,1,0,0,0,1260,1263,1,0,0,0,1261,1259,1,0,0,0,1261,1262,1,0,0,0,1262,1264,1,0,0,0,1263,1261,1,0,0,0,1264,1274,5,34,0,0,1265,1269,5,39,0,0,1266,1268,3,275,137,0,1267,1266,1,0,0,0,1268,1271,1,0,0,0,1269,1267,1,0,0,0,1269,1270,1,0,0,0,1270,1272,1,0,0,0,1271,1269,1,0,0,0,1272,1274,5,39,0,0,1273,1257,1,0,0,0,1273,1265,1,0,0,0,1274,272,1,0,0,0,1275,1279,8,9,0,0,1276,1277,5,92,0,0,1277,1279,9,0,0,0,1278,1275,1,0,0,0,1278,1276,1,0,0,0,1279,274,1,0,0,0,1280,1284,8,10,0,0,1281,1282,5,92,0,0,1282,1284,9,0,0,0,1283,1280,1,0,0,0,1283,1281,1,0,0,0,1284,276,1,0,0,0,1285,1287,7,0,0,0,1286,1285,1,0,0,0,1287,1288,1,0,0,0,1288,1286,1,0,0,0,1288,1289,1,0,0,0,1289,1290,1,0,0,0,1290,1292,5,46,0,0,1291,1293,7,0,0,0,1292,1291,1,0,0,0,1293,1294,1,0,0,0,1294,1292,1,0,0,0,1294,1295,1,0,0,0,1295,1302,1,0,0,0,1296,1298,5,46,0,0,1297,1299,7,0,0,0,1298,1297,1,0,0,0,1299,1300,1,0,0,0,1300,1298,1,0,0,0,1300,1301,1,0,0,0,1301,1303,1,0,0,0,1302,1296,1,0,0,0,1302,1303,1,0,0,0,1303,278,1,0,0,0,1304,1306,7,11,0,0,1305,1304,1,0,0,0,1306,1307,1,0,0,0,1307,1305,1,0,0,0,1307,1308,1,0,0,0,1308,1309,1,0,0,0,1309,1310,6,139,0,0,1310,280,1,0,0,0,1311,1312,5,47,0,0,1312,1313,5,42,0,0,1313,1317,1,0,0,0,1314,1316,9,0,0,0,1315,1314,1,0,0,0,1316,1319,1,0,0,0,1317,1318,1,0,0,0,1317,1315,1,0,0,0,1318,1320,1,0,0,0,1319,1317,1,0,0,0,1320,1321,5,42,0,0,1321,1322,5,47,0,0,1322,1323,1,0,0,0,1323,1324,6,140,1,0,1324,282,1,0,0,0,1325,1326,5,47,0,0,1326,1327,5,47,0,0,1327,1331,1,0,0,0,1328,1330,8,12,0,0,1329,1328,1,0,0,0,1330,1333,1,0,0,0,1331,1329,1,0,0,0,1331,1332,1,0,0,0,1332,1334,1,0,0,0,1333,1331,1,0,0,0,1334,1335,6,141,1,0,1335,284,1,0,0,0,38,0,721,729,738,751,753,767,769,854,861,872,876,880,884,887,891,896,905,910,969,977,982,985,1077,1241,1255,1261,1269,1273,1278,1283,1288,1294,1300,1302,1307,1317,1331,2,6,0,0,0,1,0],b.DecisionsToDFA=v._ATN.decisionToState.map(((t,e)=>new c(t,e)));var L=b,S=class extends f{get grammarFileName(){return"Solidity.g4"}get literalNames(){return S.literalNames}get symbolicNames(){return S.symbolicNames}get ruleNames(){return S.ruleNames}get serializedATN(){return S._serializedATN}createFailedPredicateException(t,e){return new p(this,t,e)}constructor(t){super(t),this._interp=new y(this,S._ATN,S.DecisionsToDFA,new T)}sourceUnit(){let t,e=new w(this,this._ctx,this.state);this.enterRule(e,0,S.RULE_sourceUnit);try{for(this.enterOuterAlt(e,1),this.state=215,this._errHandler.sync(this),t=this._input.LA(1);0==(-32&t)&&0!=(1<='","'>'","'<'","'<='","'='","'as'","'import'","'from'","'{'","','","'}'","'abstract'","'contract'","'interface'","'library'","'is'","'('","')'","'error'","'using'","'for'","'|'","'&'","'+'","'-'","'/'","'%'","'=='","'!='","'struct'","'modifier'","'function'","'returns'","'event'","'enum'","'['","']'","'address'","'.'","'mapping'","'=>'","'memory'","'storage'","'calldata'","'if'","'else'","'try'","'catch'","'while'","'unchecked'","'assembly'","'do'","'return'","'throw'","'emit'","'revert'","'var'","'bool'","'string'","'byte'","'++'","'--'","'new'","':'","'delete'","'!'","'**'","'<<'","'>>'","'&&'","'?'","'|='","'^='","'&='","'<<='","'>>='","'+='","'-='","'*='","'/='","'%='","'let'","':='","'=:'","'switch'","'case'","'default'","'->'","'callback'","'override'",null,null,null,null,null,null,null,null,null,null,null,"'anonymous'","'break'","'constant'","'immutable'","'continue'","'leave'","'external'","'indexed'","'internal'","'payable'","'private'","'public'","'virtual'","'pure'","'type'","'view'","'global'","'constructor'","'fallback'","'receive'"],C.symbolicNames=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Int","Uint","Byte","Fixed","Ufixed","BooleanLiteral","DecimalNumber","HexNumber","NumberUnit","HexLiteralFragment","ReservedKeyword","AnonymousKeyword","BreakKeyword","ConstantKeyword","ImmutableKeyword","ContinueKeyword","LeaveKeyword","ExternalKeyword","IndexedKeyword","InternalKeyword","PayableKeyword","PrivateKeyword","PublicKeyword","VirtualKeyword","PureKeyword","TypeKeyword","ViewKeyword","GlobalKeyword","ConstructorKeyword","FallbackKeyword","ReceiveKeyword","Identifier","StringLiteralFragment","VersionLiteral","WS","COMMENT","LINE_COMMENT"],C.ruleNames=["sourceUnit","pragmaDirective","pragmaName","pragmaValue","version","versionOperator","versionConstraint","importDeclaration","importDirective","importPath","contractDefinition","inheritanceSpecifier","contractPart","stateVariableDeclaration","fileLevelConstant","customErrorDefinition","typeDefinition","usingForDeclaration","usingForObject","usingForObjectDirective","userDefinableOperators","structDefinition","modifierDefinition","modifierInvocation","functionDefinition","functionDescriptor","returnParameters","modifierList","eventDefinition","enumValue","enumDefinition","parameterList","parameter","eventParameterList","eventParameter","functionTypeParameterList","functionTypeParameter","variableDeclaration","typeName","userDefinedTypeName","mappingKey","mapping","mappingKeyName","mappingValueName","functionTypeName","storageLocation","stateMutability","block","statement","expressionStatement","ifStatement","tryStatement","catchClause","whileStatement","simpleStatement","uncheckedStatement","forStatement","inlineAssemblyStatement","inlineAssemblyStatementFlag","doWhileStatement","continueStatement","breakStatement","returnStatement","throwStatement","emitStatement","revertStatement","variableDeclarationStatement","variableDeclarationList","identifierList","elementaryTypeName","expression","primaryExpression","expressionList","nameValueList","nameValue","functionCallArguments","functionCall","assemblyBlock","assemblyItem","assemblyExpression","assemblyMember","assemblyCall","assemblyLocalDefinition","assemblyAssignment","assemblyIdentifierOrList","assemblyIdentifierList","assemblyStackAssignment","labelDefinition","assemblySwitch","assemblyCase","assemblyFunctionDefinition","assemblyFunctionReturns","assemblyFor","assemblyIf","assemblyLiteral","tupleExpression","numberLiteral","identifier","hexLiteral","overrideSpecifier","stringLiteral"],C._serializedATN=[4,1,133,1170,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,5,0,214,8,0,10,0,12,0,217,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,3,1,3,1,3,3,3,231,8,3,1,4,1,4,3,4,235,8,4,1,4,5,4,238,8,4,10,4,12,4,241,9,4,1,5,1,5,1,6,3,6,246,8,6,1,6,1,6,3,6,250,8,6,1,6,3,6,253,8,6,1,7,1,7,1,7,3,7,258,8,7,1,8,1,8,1,8,1,8,3,8,264,8,8,1,8,1,8,1,8,1,8,1,8,3,8,271,8,8,1,8,1,8,3,8,275,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,286,8,8,10,8,12,8,289,9,8,1,8,1,8,1,8,1,8,1,8,3,8,296,8,8,1,9,1,9,1,10,3,10,301,8,10,1,10,1,10,1,10,1,10,1,10,1,10,5,10,309,8,10,10,10,12,10,312,9,10,3,10,314,8,10,1,10,1,10,5,10,318,8,10,10,10,12,10,321,9,10,1,10,1,10,1,11,1,11,1,11,3,11,328,8,11,1,11,3,11,331,8,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,342,8,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,5,13,351,8,13,10,13,12,13,354,9,13,1,13,1,13,1,13,3,13,359,8,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,3,17,386,8,17,1,17,3,17,389,8,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,5,18,398,8,18,10,18,12,18,401,9,18,1,18,1,18,3,18,405,8,18,1,19,1,19,1,19,3,19,410,8,19,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,5,21,422,8,21,10,21,12,21,425,9,21,3,21,427,8,21,1,21,1,21,1,22,1,22,1,22,3,22,434,8,22,1,22,1,22,5,22,438,8,22,10,22,12,22,441,9,22,1,22,1,22,3,22,445,8,22,1,23,1,23,1,23,3,23,450,8,23,1,23,3,23,453,8,23,1,24,1,24,1,24,1,24,3,24,459,8,24,1,24,1,24,3,24,463,8,24,1,25,1,25,3,25,467,8,25,1,25,1,25,1,25,3,25,472,8,25,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,5,27,485,8,27,10,27,12,27,488,9,27,1,28,1,28,1,28,1,28,3,28,494,8,28,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,30,3,30,504,8,30,1,30,1,30,5,30,508,8,30,10,30,12,30,511,9,30,1,30,1,30,1,31,1,31,1,31,1,31,5,31,519,8,31,10,31,12,31,522,9,31,3,31,524,8,31,1,31,1,31,1,32,1,32,3,32,530,8,32,1,32,3,32,533,8,32,1,33,1,33,1,33,1,33,5,33,539,8,33,10,33,12,33,542,9,33,3,33,544,8,33,1,33,1,33,1,34,1,34,3,34,550,8,34,1,34,3,34,553,8,34,1,35,1,35,1,35,1,35,5,35,559,8,35,10,35,12,35,562,9,35,3,35,564,8,35,1,35,1,35,1,36,1,36,3,36,570,8,36,1,37,1,37,3,37,574,8,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,585,8,38,1,38,1,38,1,38,3,38,590,8,38,1,38,5,38,593,8,38,10,38,12,38,596,9,38,1,39,1,39,1,39,5,39,601,8,39,10,39,12,39,604,9,39,1,40,1,40,3,40,608,8,40,1,41,1,41,1,41,1,41,3,41,614,8,41,1,41,1,41,1,41,3,41,619,8,41,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,44,1,44,5,44,632,8,44,10,44,12,44,635,9,44,1,44,1,44,3,44,639,8,44,1,45,1,45,1,46,1,46,1,47,1,47,5,47,647,8,47,10,47,12,47,650,9,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,669,8,48,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,681,8,50,1,51,1,51,1,51,3,51,686,8,51,1,51,1,51,4,51,690,8,51,11,51,12,51,691,1,52,1,52,3,52,696,8,52,1,52,3,52,699,8,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,3,54,711,8,54,1,55,1,55,1,55,1,56,1,56,1,56,1,56,3,56,720,8,56,1,56,1,56,3,56,724,8,56,1,56,3,56,727,8,56,1,56,1,56,1,56,1,57,1,57,3,57,734,8,57,1,57,1,57,1,57,1,57,3,57,740,8,57,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61,1,62,1,62,3,62,762,8,62,1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,784,8,66,1,66,1,66,3,66,788,8,66,1,66,1,66,1,67,3,67,793,8,67,1,67,1,67,3,67,797,8,67,5,67,799,8,67,10,67,12,67,802,9,67,1,68,1,68,3,68,806,8,68,1,68,5,68,809,8,68,10,68,12,68,812,9,68,1,68,3,68,815,8,68,1,68,1,68,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,839,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,893,8,70,1,70,1,70,3,70,897,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,5,70,913,8,70,10,70,12,70,916,9,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,927,8,71,1,72,1,72,1,72,5,72,932,8,72,10,72,12,72,935,9,72,1,73,1,73,1,73,5,73,940,8,73,10,73,12,73,943,9,73,1,73,3,73,946,8,73,1,74,1,74,1,74,1,74,1,75,1,75,3,75,954,8,75,1,75,1,75,3,75,958,8,75,3,75,960,8,75,1,76,1,76,1,76,1,76,1,76,1,77,1,77,5,77,969,8,77,10,77,12,77,972,9,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3,78,993,8,78,1,79,1,79,1,79,3,79,998,8,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,3,81,1008,8,81,1,81,1,81,3,81,1012,8,81,1,81,1,81,5,81,1016,8,81,10,81,12,81,1019,9,81,1,81,3,81,1022,8,81,1,82,1,82,1,82,1,82,3,82,1028,8,82,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,1041,8,84,1,85,1,85,1,85,5,85,1046,8,85,10,85,12,85,1049,9,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,5,88,1061,8,88,10,88,12,88,1064,9,88,1,89,1,89,1,89,1,89,1,89,1,89,3,89,1072,8,89,1,90,1,90,1,90,1,90,3,90,1078,8,90,1,90,1,90,3,90,1082,8,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,3,92,1092,8,92,1,92,1,92,1,92,3,92,1097,8,92,1,92,1,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,3,94,1110,8,94,1,95,1,95,3,95,1114,8,95,1,95,1,95,3,95,1118,8,95,5,95,1120,8,95,10,95,12,95,1123,9,95,1,95,1,95,1,95,1,95,1,95,5,95,1130,8,95,10,95,12,95,1133,9,95,3,95,1135,8,95,1,95,3,95,1138,8,95,1,96,1,96,3,96,1142,8,96,1,97,1,97,1,98,4,98,1147,8,98,11,98,12,98,1148,1,99,1,99,1,99,1,99,1,99,5,99,1156,8,99,10,99,12,99,1159,9,99,1,99,1,99,3,99,1163,8,99,1,100,4,100,1166,8,100,11,100,12,100,1167,1,100,0,2,76,140,101,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,0,15,1,0,5,11,1,0,19,21,3,0,3,3,5,10,28,35,1,0,48,50,4,0,110,110,117,117,121,121,123,123,3,0,44,44,63,66,97,101,1,0,67,68,1,0,30,31,2,0,3,3,32,33,1,0,74,75,1,0,7,10,1,0,34,35,2,0,11,11,78,87,1,0,103,104,10,0,14,14,25,25,44,44,50,50,62,62,95,95,113,113,117,117,124,125,127,128,1299,0,215,1,0,0,0,2,220,1,0,0,0,4,225,1,0,0,0,6,230,1,0,0,0,8,232,1,0,0,0,10,242,1,0,0,0,12,252,1,0,0,0,14,254,1,0,0,0,16,295,1,0,0,0,18,297,1,0,0,0,20,300,1,0,0,0,22,324,1,0,0,0,24,341,1,0,0,0,26,343,1,0,0,0,28,362,1,0,0,0,30,369,1,0,0,0,32,374,1,0,0,0,34,380,1,0,0,0,36,404,1,0,0,0,38,406,1,0,0,0,40,411,1,0,0,0,42,413,1,0,0,0,44,430,1,0,0,0,46,446,1,0,0,0,48,454,1,0,0,0,50,471,1,0,0,0,52,473,1,0,0,0,54,486,1,0,0,0,56,489,1,0,0,0,58,497,1,0,0,0,60,499,1,0,0,0,62,514,1,0,0,0,64,527,1,0,0,0,66,534,1,0,0,0,68,547,1,0,0,0,70,554,1,0,0,0,72,567,1,0,0,0,74,571,1,0,0,0,76,584,1,0,0,0,78,597,1,0,0,0,80,607,1,0,0,0,82,609,1,0,0,0,84,622,1,0,0,0,86,624,1,0,0,0,88,626,1,0,0,0,90,640,1,0,0,0,92,642,1,0,0,0,94,644,1,0,0,0,96,668,1,0,0,0,98,670,1,0,0,0,100,673,1,0,0,0,102,682,1,0,0,0,104,693,1,0,0,0,106,702,1,0,0,0,108,710,1,0,0,0,110,712,1,0,0,0,112,715,1,0,0,0,114,731,1,0,0,0,116,743,1,0,0,0,118,745,1,0,0,0,120,753,1,0,0,0,122,756,1,0,0,0,124,759,1,0,0,0,126,765,1,0,0,0,128,768,1,0,0,0,130,772,1,0,0,0,132,783,1,0,0,0,134,792,1,0,0,0,136,803,1,0,0,0,138,818,1,0,0,0,140,838,1,0,0,0,142,926,1,0,0,0,144,928,1,0,0,0,146,936,1,0,0,0,148,947,1,0,0,0,150,959,1,0,0,0,152,961,1,0,0,0,154,966,1,0,0,0,156,992,1,0,0,0,158,997,1,0,0,0,160,999,1,0,0,0,162,1007,1,0,0,0,164,1023,1,0,0,0,166,1029,1,0,0,0,168,1040,1,0,0,0,170,1042,1,0,0,0,172,1050,1,0,0,0,174,1054,1,0,0,0,176,1057,1,0,0,0,178,1071,1,0,0,0,180,1073,1,0,0,0,182,1085,1,0,0,0,184,1088,1,0,0,0,186,1100,1,0,0,0,188,1109,1,0,0,0,190,1137,1,0,0,0,192,1139,1,0,0,0,194,1143,1,0,0,0,196,1146,1,0,0,0,198,1150,1,0,0,0,200,1165,1,0,0,0,202,214,3,2,1,0,203,214,3,16,8,0,204,214,3,20,10,0,205,214,3,60,30,0,206,214,3,56,28,0,207,214,3,42,21,0,208,214,3,48,24,0,209,214,3,28,14,0,210,214,3,30,15,0,211,214,3,32,16,0,212,214,3,34,17,0,213,202,1,0,0,0,213,203,1,0,0,0,213,204,1,0,0,0,213,205,1,0,0,0,213,206,1,0,0,0,213,207,1,0,0,0,213,208,1,0,0,0,213,209,1,0,0,0,213,210,1,0,0,0,213,211,1,0,0,0,213,212,1,0,0,0,214,217,1,0,0,0,215,213,1,0,0,0,215,216,1,0,0,0,216,218,1,0,0,0,217,215,1,0,0,0,218,219,5,0,0,1,219,1,1,0,0,0,220,221,5,1,0,0,221,222,3,4,2,0,222,223,3,6,3,0,223,224,5,2,0,0,224,3,1,0,0,0,225,226,3,194,97,0,226,5,1,0,0,0,227,231,5,3,0,0,228,231,3,8,4,0,229,231,3,140,70,0,230,227,1,0,0,0,230,228,1,0,0,0,230,229,1,0,0,0,231,7,1,0,0,0,232,239,3,12,6,0,233,235,5,4,0,0,234,233,1,0,0,0,234,235,1,0,0,0,235,236,1,0,0,0,236,238,3,12,6,0,237,234,1,0,0,0,238,241,1,0,0,0,239,237,1,0,0,0,239,240,1,0,0,0,240,9,1,0,0,0,241,239,1,0,0,0,242,243,7,0,0,0,243,11,1,0,0,0,244,246,3,10,5,0,245,244,1,0,0,0,245,246,1,0,0,0,246,247,1,0,0,0,247,253,5,130,0,0,248,250,3,10,5,0,249,248,1,0,0,0,249,250,1,0,0,0,250,251,1,0,0,0,251,253,5,103,0,0,252,245,1,0,0,0,252,249,1,0,0,0,253,13,1,0,0,0,254,257,3,194,97,0,255,256,5,12,0,0,256,258,3,194,97,0,257,255,1,0,0,0,257,258,1,0,0,0,258,15,1,0,0,0,259,260,5,13,0,0,260,263,3,18,9,0,261,262,5,12,0,0,262,264,3,194,97,0,263,261,1,0,0,0,263,264,1,0,0,0,264,265,1,0,0,0,265,266,5,2,0,0,266,296,1,0,0,0,267,270,5,13,0,0,268,271,5,3,0,0,269,271,3,194,97,0,270,268,1,0,0,0,270,269,1,0,0,0,271,274,1,0,0,0,272,273,5,12,0,0,273,275,3,194,97,0,274,272,1,0,0,0,274,275,1,0,0,0,275,276,1,0,0,0,276,277,5,14,0,0,277,278,3,18,9,0,278,279,5,2,0,0,279,296,1,0,0,0,280,281,5,13,0,0,281,282,5,15,0,0,282,287,3,14,7,0,283,284,5,16,0,0,284,286,3,14,7,0,285,283,1,0,0,0,286,289,1,0,0,0,287,285,1,0,0,0,287,288,1,0,0,0,288,290,1,0,0,0,289,287,1,0,0,0,290,291,5,17,0,0,291,292,5,14,0,0,292,293,3,18,9,0,293,294,5,2,0,0,294,296,1,0,0,0,295,259,1,0,0,0,295,267,1,0,0,0,295,280,1,0,0,0,296,17,1,0,0,0,297,298,5,129,0,0,298,19,1,0,0,0,299,301,5,18,0,0,300,299,1,0,0,0,300,301,1,0,0,0,301,302,1,0,0,0,302,303,7,1,0,0,303,313,3,194,97,0,304,305,5,22,0,0,305,310,3,22,11,0,306,307,5,16,0,0,307,309,3,22,11,0,308,306,1,0,0,0,309,312,1,0,0,0,310,308,1,0,0,0,310,311,1,0,0,0,311,314,1,0,0,0,312,310,1,0,0,0,313,304,1,0,0,0,313,314,1,0,0,0,314,315,1,0,0,0,315,319,5,15,0,0,316,318,3,24,12,0,317,316,1,0,0,0,318,321,1,0,0,0,319,317,1,0,0,0,319,320,1,0,0,0,320,322,1,0,0,0,321,319,1,0,0,0,322,323,5,17,0,0,323,21,1,0,0,0,324,330,3,78,39,0,325,327,5,23,0,0,326,328,3,144,72,0,327,326,1,0,0,0,327,328,1,0,0,0,328,329,1,0,0,0,329,331,5,24,0,0,330,325,1,0,0,0,330,331,1,0,0,0,331,23,1,0,0,0,332,342,3,26,13,0,333,342,3,34,17,0,334,342,3,42,21,0,335,342,3,44,22,0,336,342,3,48,24,0,337,342,3,56,28,0,338,342,3,60,30,0,339,342,3,30,15,0,340,342,3,32,16,0,341,332,1,0,0,0,341,333,1,0,0,0,341,334,1,0,0,0,341,335,1,0,0,0,341,336,1,0,0,0,341,337,1,0,0,0,341,338,1,0,0,0,341,339,1,0,0,0,341,340,1,0,0,0,342,25,1,0,0,0,343,352,3,76,38,0,344,351,5,119,0,0,345,351,5,116,0,0,346,351,5,118,0,0,347,351,5,110,0,0,348,351,5,111,0,0,349,351,3,198,99,0,350,344,1,0,0,0,350,345,1,0,0,0,350,346,1,0,0,0,350,347,1,0,0,0,350,348,1,0,0,0,350,349,1,0,0,0,351,354,1,0,0,0,352,350,1,0,0,0,352,353,1,0,0,0,353,355,1,0,0,0,354,352,1,0,0,0,355,358,3,194,97,0,356,357,5,11,0,0,357,359,3,140,70,0,358,356,1,0,0,0,358,359,1,0,0,0,359,360,1,0,0,0,360,361,5,2,0,0,361,27,1,0,0,0,362,363,3,76,38,0,363,364,5,110,0,0,364,365,3,194,97,0,365,366,5,11,0,0,366,367,3,140,70,0,367,368,5,2,0,0,368,29,1,0,0,0,369,370,5,25,0,0,370,371,3,194,97,0,371,372,3,62,31,0,372,373,5,2,0,0,373,31,1,0,0,0,374,375,5,122,0,0,375,376,3,194,97,0,376,377,5,22,0,0,377,378,3,138,69,0,378,379,5,2,0,0,379,33,1,0,0,0,380,381,5,26,0,0,381,382,3,36,18,0,382,385,5,27,0,0,383,386,5,3,0,0,384,386,3,76,38,0,385,383,1,0,0,0,385,384,1,0,0,0,386,388,1,0,0,0,387,389,5,124,0,0,388,387,1,0,0,0,388,389,1,0,0,0,389,390,1,0,0,0,390,391,5,2,0,0,391,35,1,0,0,0,392,405,3,78,39,0,393,394,5,15,0,0,394,399,3,38,19,0,395,396,5,16,0,0,396,398,3,38,19,0,397,395,1,0,0,0,398,401,1,0,0,0,399,397,1,0,0,0,399,400,1,0,0,0,400,402,1,0,0,0,401,399,1,0,0,0,402,403,5,17,0,0,403,405,1,0,0,0,404,392,1,0,0,0,404,393,1,0,0,0,405,37,1,0,0,0,406,409,3,78,39,0,407,408,5,12,0,0,408,410,3,40,20,0,409,407,1,0,0,0,409,410,1,0,0,0,410,39,1,0,0,0,411,412,7,2,0,0,412,41,1,0,0,0,413,414,5,36,0,0,414,415,3,194,97,0,415,426,5,15,0,0,416,417,3,74,37,0,417,423,5,2,0,0,418,419,3,74,37,0,419,420,5,2,0,0,420,422,1,0,0,0,421,418,1,0,0,0,422,425,1,0,0,0,423,421,1,0,0,0,423,424,1,0,0,0,424,427,1,0,0,0,425,423,1,0,0,0,426,416,1,0,0,0,426,427,1,0,0,0,427,428,1,0,0,0,428,429,5,17,0,0,429,43,1,0,0,0,430,431,5,37,0,0,431,433,3,194,97,0,432,434,3,62,31,0,433,432,1,0,0,0,433,434,1,0,0,0,434,439,1,0,0,0,435,438,5,120,0,0,436,438,3,198,99,0,437,435,1,0,0,0,437,436,1,0,0,0,438,441,1,0,0,0,439,437,1,0,0,0,439,440,1,0,0,0,440,444,1,0,0,0,441,439,1,0,0,0,442,445,5,2,0,0,443,445,3,94,47,0,444,442,1,0,0,0,444,443,1,0,0,0,445,45,1,0,0,0,446,452,3,194,97,0,447,449,5,23,0,0,448,450,3,144,72,0,449,448,1,0,0,0,449,450,1,0,0,0,450,451,1,0,0,0,451,453,5,24,0,0,452,447,1,0,0,0,452,453,1,0,0,0,453,47,1,0,0,0,454,455,3,50,25,0,455,456,3,62,31,0,456,458,3,54,27,0,457,459,3,52,26,0,458,457,1,0,0,0,458,459,1,0,0,0,459,462,1,0,0,0,460,463,5,2,0,0,461,463,3,94,47,0,462,460,1,0,0,0,462,461,1,0,0,0,463,49,1,0,0,0,464,466,5,38,0,0,465,467,3,194,97,0,466,465,1,0,0,0,466,467,1,0,0,0,467,472,1,0,0,0,468,472,5,125,0,0,469,472,5,126,0,0,470,472,5,127,0,0,471,464,1,0,0,0,471,468,1,0,0,0,471,469,1,0,0,0,471,470,1,0,0,0,472,51,1,0,0,0,473,474,5,39,0,0,474,475,3,62,31,0,475,53,1,0,0,0,476,485,5,114,0,0,477,485,5,119,0,0,478,485,5,116,0,0,479,485,5,118,0,0,480,485,5,120,0,0,481,485,3,92,46,0,482,485,3,46,23,0,483,485,3,198,99,0,484,476,1,0,0,0,484,477,1,0,0,0,484,478,1,0,0,0,484,479,1,0,0,0,484,480,1,0,0,0,484,481,1,0,0,0,484,482,1,0,0,0,484,483,1,0,0,0,485,488,1,0,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487,55,1,0,0,0,488,486,1,0,0,0,489,490,5,40,0,0,490,491,3,194,97,0,491,493,3,66,33,0,492,494,5,108,0,0,493,492,1,0,0,0,493,494,1,0,0,0,494,495,1,0,0,0,495,496,5,2,0,0,496,57,1,0,0,0,497,498,3,194,97,0,498,59,1,0,0,0,499,500,5,41,0,0,500,501,3,194,97,0,501,503,5,15,0,0,502,504,3,58,29,0,503,502,1,0,0,0,503,504,1,0,0,0,504,509,1,0,0,0,505,506,5,16,0,0,506,508,3,58,29,0,507,505,1,0,0,0,508,511,1,0,0,0,509,507,1,0,0,0,509,510,1,0,0,0,510,512,1,0,0,0,511,509,1,0,0,0,512,513,5,17,0,0,513,61,1,0,0,0,514,523,5,23,0,0,515,520,3,64,32,0,516,517,5,16,0,0,517,519,3,64,32,0,518,516,1,0,0,0,519,522,1,0,0,0,520,518,1,0,0,0,520,521,1,0,0,0,521,524,1,0,0,0,522,520,1,0,0,0,523,515,1,0,0,0,523,524,1,0,0,0,524,525,1,0,0,0,525,526,5,24,0,0,526,63,1,0,0,0,527,529,3,76,38,0,528,530,3,90,45,0,529,528,1,0,0,0,529,530,1,0,0,0,530,532,1,0,0,0,531,533,3,194,97,0,532,531,1,0,0,0,532,533,1,0,0,0,533,65,1,0,0,0,534,543,5,23,0,0,535,540,3,68,34,0,536,537,5,16,0,0,537,539,3,68,34,0,538,536,1,0,0,0,539,542,1,0,0,0,540,538,1,0,0,0,540,541,1,0,0,0,541,544,1,0,0,0,542,540,1,0,0,0,543,535,1,0,0,0,543,544,1,0,0,0,544,545,1,0,0,0,545,546,5,24,0,0,546,67,1,0,0,0,547,549,3,76,38,0,548,550,5,115,0,0,549,548,1,0,0,0,549,550,1,0,0,0,550,552,1,0,0,0,551,553,3,194,97,0,552,551,1,0,0,0,552,553,1,0,0,0,553,69,1,0,0,0,554,563,5,23,0,0,555,560,3,72,36,0,556,557,5,16,0,0,557,559,3,72,36,0,558,556,1,0,0,0,559,562,1,0,0,0,560,558,1,0,0,0,560,561,1,0,0,0,561,564,1,0,0,0,562,560,1,0,0,0,563,555,1,0,0,0,563,564,1,0,0,0,564,565,1,0,0,0,565,566,5,24,0,0,566,71,1,0,0,0,567,569,3,76,38,0,568,570,3,90,45,0,569,568,1,0,0,0,569,570,1,0,0,0,570,73,1,0,0,0,571,573,3,76,38,0,572,574,3,90,45,0,573,572,1,0,0,0,573,574,1,0,0,0,574,575,1,0,0,0,575,576,3,194,97,0,576,75,1,0,0,0,577,578,6,38,-1,0,578,585,3,138,69,0,579,585,3,78,39,0,580,585,3,82,41,0,581,585,3,88,44,0,582,583,5,44,0,0,583,585,5,117,0,0,584,577,1,0,0,0,584,579,1,0,0,0,584,580,1,0,0,0,584,581,1,0,0,0,584,582,1,0,0,0,585,594,1,0,0,0,586,587,10,3,0,0,587,589,5,42,0,0,588,590,3,140,70,0,589,588,1,0,0,0,589,590,1,0,0,0,590,591,1,0,0,0,591,593,5,43,0,0,592,586,1,0,0,0,593,596,1,0,0,0,594,592,1,0,0,0,594,595,1,0,0,0,595,77,1,0,0,0,596,594,1,0,0,0,597,602,3,194,97,0,598,599,5,45,0,0,599,601,3,194,97,0,600,598,1,0,0,0,601,604,1,0,0,0,602,600,1,0,0,0,602,603,1,0,0,0,603,79,1,0,0,0,604,602,1,0,0,0,605,608,3,138,69,0,606,608,3,78,39,0,607,605,1,0,0,0,607,606,1,0,0,0,608,81,1,0,0,0,609,610,5,46,0,0,610,611,5,23,0,0,611,613,3,80,40,0,612,614,3,84,42,0,613,612,1,0,0,0,613,614,1,0,0,0,614,615,1,0,0,0,615,616,5,47,0,0,616,618,3,76,38,0,617,619,3,86,43,0,618,617,1,0,0,0,618,619,1,0,0,0,619,620,1,0,0,0,620,621,5,24,0,0,621,83,1,0,0,0,622,623,3,194,97,0,623,85,1,0,0,0,624,625,3,194,97,0,625,87,1,0,0,0,626,627,5,38,0,0,627,633,3,70,35,0,628,632,5,116,0,0,629,632,5,114,0,0,630,632,3,92,46,0,631,628,1,0,0,0,631,629,1,0,0,0,631,630,1,0,0,0,632,635,1,0,0,0,633,631,1,0,0,0,633,634,1,0,0,0,634,638,1,0,0,0,635,633,1,0,0,0,636,637,5,39,0,0,637,639,3,70,35,0,638,636,1,0,0,0,638,639,1,0,0,0,639,89,1,0,0,0,640,641,7,3,0,0,641,91,1,0,0,0,642,643,7,4,0,0,643,93,1,0,0,0,644,648,5,15,0,0,645,647,3,96,48,0,646,645,1,0,0,0,647,650,1,0,0,0,648,646,1,0,0,0,648,649,1,0,0,0,649,651,1,0,0,0,650,648,1,0,0,0,651,652,5,17,0,0,652,95,1,0,0,0,653,669,3,100,50,0,654,669,3,102,51,0,655,669,3,106,53,0,656,669,3,112,56,0,657,669,3,94,47,0,658,669,3,114,57,0,659,669,3,118,59,0,660,669,3,120,60,0,661,669,3,122,61,0,662,669,3,124,62,0,663,669,3,126,63,0,664,669,3,128,64,0,665,669,3,108,54,0,666,669,3,110,55,0,667,669,3,130,65,0,668,653,1,0,0,0,668,654,1,0,0,0,668,655,1,0,0,0,668,656,1,0,0,0,668,657,1,0,0,0,668,658,1,0,0,0,668,659,1,0,0,0,668,660,1,0,0,0,668,661,1,0,0,0,668,662,1,0,0,0,668,663,1,0,0,0,668,664,1,0,0,0,668,665,1,0,0,0,668,666,1,0,0,0,668,667,1,0,0,0,669,97,1,0,0,0,670,671,3,140,70,0,671,672,5,2,0,0,672,99,1,0,0,0,673,674,5,51,0,0,674,675,5,23,0,0,675,676,3,140,70,0,676,677,5,24,0,0,677,680,3,96,48,0,678,679,5,52,0,0,679,681,3,96,48,0,680,678,1,0,0,0,680,681,1,0,0,0,681,101,1,0,0,0,682,683,5,53,0,0,683,685,3,140,70,0,684,686,3,52,26,0,685,684,1,0,0,0,685,686,1,0,0,0,686,687,1,0,0,0,687,689,3,94,47,0,688,690,3,104,52,0,689,688,1,0,0,0,690,691,1,0,0,0,691,689,1,0,0,0,691,692,1,0,0,0,692,103,1,0,0,0,693,698,5,54,0,0,694,696,3,194,97,0,695,694,1,0,0,0,695,696,1,0,0,0,696,697,1,0,0,0,697,699,3,62,31,0,698,695,1,0,0,0,698,699,1,0,0,0,699,700,1,0,0,0,700,701,3,94,47,0,701,105,1,0,0,0,702,703,5,55,0,0,703,704,5,23,0,0,704,705,3,140,70,0,705,706,5,24,0,0,706,707,3,96,48,0,707,107,1,0,0,0,708,711,3,132,66,0,709,711,3,98,49,0,710,708,1,0,0,0,710,709,1,0,0,0,711,109,1,0,0,0,712,713,5,56,0,0,713,714,3,94,47,0,714,111,1,0,0,0,715,716,5,27,0,0,716,719,5,23,0,0,717,720,3,108,54,0,718,720,5,2,0,0,719,717,1,0,0,0,719,718,1,0,0,0,720,723,1,0,0,0,721,724,3,98,49,0,722,724,5,2,0,0,723,721,1,0,0,0,723,722,1,0,0,0,724,726,1,0,0,0,725,727,3,140,70,0,726,725,1,0,0,0,726,727,1,0,0,0,727,728,1,0,0,0,728,729,5,24,0,0,729,730,3,96,48,0,730,113,1,0,0,0,731,733,5,57,0,0,732,734,5,129,0,0,733,732,1,0,0,0,733,734,1,0,0,0,734,739,1,0,0,0,735,736,5,23,0,0,736,737,3,116,58,0,737,738,5,24,0,0,738,740,1,0,0,0,739,735,1,0,0,0,739,740,1,0,0,0,740,741,1,0,0,0,741,742,3,154,77,0,742,115,1,0,0,0,743,744,3,200,100,0,744,117,1,0,0,0,745,746,5,58,0,0,746,747,3,96,48,0,747,748,5,55,0,0,748,749,5,23,0,0,749,750,3,140,70,0,750,751,5,24,0,0,751,752,5,2,0,0,752,119,1,0,0,0,753,754,5,112,0,0,754,755,5,2,0,0,755,121,1,0,0,0,756,757,5,109,0,0,757,758,5,2,0,0,758,123,1,0,0,0,759,761,5,59,0,0,760,762,3,140,70,0,761,760,1,0,0,0,761,762,1,0,0,0,762,763,1,0,0,0,763,764,5,2,0,0,764,125,1,0,0,0,765,766,5,60,0,0,766,767,5,2,0,0,767,127,1,0,0,0,768,769,5,61,0,0,769,770,3,152,76,0,770,771,5,2,0,0,771,129,1,0,0,0,772,773,5,62,0,0,773,774,3,152,76,0,774,775,5,2,0,0,775,131,1,0,0,0,776,777,5,63,0,0,777,784,3,136,68,0,778,784,3,74,37,0,779,780,5,23,0,0,780,781,3,134,67,0,781,782,5,24,0,0,782,784,1,0,0,0,783,776,1,0,0,0,783,778,1,0,0,0,783,779,1,0,0,0,784,787,1,0,0,0,785,786,5,11,0,0,786,788,3,140,70,0,787,785,1,0,0,0,787,788,1,0,0,0,788,789,1,0,0,0,789,790,5,2,0,0,790,133,1,0,0,0,791,793,3,74,37,0,792,791,1,0,0,0,792,793,1,0,0,0,793,800,1,0,0,0,794,796,5,16,0,0,795,797,3,74,37,0,796,795,1,0,0,0,796,797,1,0,0,0,797,799,1,0,0,0,798,794,1,0,0,0,799,802,1,0,0,0,800,798,1,0,0,0,800,801,1,0,0,0,801,135,1,0,0,0,802,800,1,0,0,0,803,810,5,23,0,0,804,806,3,194,97,0,805,804,1,0,0,0,805,806,1,0,0,0,806,807,1,0,0,0,807,809,5,16,0,0,808,805,1,0,0,0,809,812,1,0,0,0,810,808,1,0,0,0,810,811,1,0,0,0,811,814,1,0,0,0,812,810,1,0,0,0,813,815,3,194,97,0,814,813,1,0,0,0,814,815,1,0,0,0,815,816,1,0,0,0,816,817,5,24,0,0,817,137,1,0,0,0,818,819,7,5,0,0,819,139,1,0,0,0,820,821,6,70,-1,0,821,822,5,69,0,0,822,839,3,76,38,0,823,824,5,23,0,0,824,825,3,140,70,0,825,826,5,24,0,0,826,839,1,0,0,0,827,828,7,6,0,0,828,839,3,140,70,19,829,830,7,7,0,0,830,839,3,140,70,18,831,832,5,71,0,0,832,839,3,140,70,17,833,834,5,72,0,0,834,839,3,140,70,16,835,836,5,6,0,0,836,839,3,140,70,15,837,839,3,142,71,0,838,820,1,0,0,0,838,823,1,0,0,0,838,827,1,0,0,0,838,829,1,0,0,0,838,831,1,0,0,0,838,833,1,0,0,0,838,835,1,0,0,0,838,837,1,0,0,0,839,914,1,0,0,0,840,841,10,14,0,0,841,842,5,73,0,0,842,913,3,140,70,14,843,844,10,13,0,0,844,845,7,8,0,0,845,913,3,140,70,14,846,847,10,12,0,0,847,848,7,7,0,0,848,913,3,140,70,13,849,850,10,11,0,0,850,851,7,9,0,0,851,913,3,140,70,12,852,853,10,10,0,0,853,854,5,29,0,0,854,913,3,140,70,11,855,856,10,9,0,0,856,857,5,5,0,0,857,913,3,140,70,10,858,859,10,8,0,0,859,860,5,28,0,0,860,913,3,140,70,9,861,862,10,7,0,0,862,863,7,10,0,0,863,913,3,140,70,8,864,865,10,6,0,0,865,866,7,11,0,0,866,913,3,140,70,7,867,868,10,5,0,0,868,869,5,76,0,0,869,913,3,140,70,6,870,871,10,4,0,0,871,872,5,4,0,0,872,913,3,140,70,5,873,874,10,3,0,0,874,875,5,77,0,0,875,876,3,140,70,0,876,877,5,70,0,0,877,878,3,140,70,3,878,913,1,0,0,0,879,880,10,2,0,0,880,881,7,12,0,0,881,913,3,140,70,3,882,883,10,27,0,0,883,913,7,6,0,0,884,885,10,25,0,0,885,886,5,42,0,0,886,887,3,140,70,0,887,888,5,43,0,0,888,913,1,0,0,0,889,890,10,24,0,0,890,892,5,42,0,0,891,893,3,140,70,0,892,891,1,0,0,0,892,893,1,0,0,0,893,894,1,0,0,0,894,896,5,70,0,0,895,897,3,140,70,0,896,895,1,0,0,0,896,897,1,0,0,0,897,898,1,0,0,0,898,913,5,43,0,0,899,900,10,23,0,0,900,901,5,45,0,0,901,913,3,194,97,0,902,903,10,22,0,0,903,904,5,15,0,0,904,905,3,146,73,0,905,906,5,17,0,0,906,913,1,0,0,0,907,908,10,21,0,0,908,909,5,23,0,0,909,910,3,150,75,0,910,911,5,24,0,0,911,913,1,0,0,0,912,840,1,0,0,0,912,843,1,0,0,0,912,846,1,0,0,0,912,849,1,0,0,0,912,852,1,0,0,0,912,855,1,0,0,0,912,858,1,0,0,0,912,861,1,0,0,0,912,864,1,0,0,0,912,867,1,0,0,0,912,870,1,0,0,0,912,873,1,0,0,0,912,879,1,0,0,0,912,882,1,0,0,0,912,884,1,0,0,0,912,889,1,0,0,0,912,899,1,0,0,0,912,902,1,0,0,0,912,907,1,0,0,0,913,916,1,0,0,0,914,912,1,0,0,0,914,915,1,0,0,0,915,141,1,0,0,0,916,914,1,0,0,0,917,927,5,102,0,0,918,927,3,192,96,0,919,927,3,196,98,0,920,927,3,200,100,0,921,927,3,194,97,0,922,927,5,122,0,0,923,927,5,117,0,0,924,927,3,190,95,0,925,927,3,76,38,0,926,917,1,0,0,0,926,918,1,0,0,0,926,919,1,0,0,0,926,920,1,0,0,0,926,921,1,0,0,0,926,922,1,0,0,0,926,923,1,0,0,0,926,924,1,0,0,0,926,925,1,0,0,0,927,143,1,0,0,0,928,933,3,140,70,0,929,930,5,16,0,0,930,932,3,140,70,0,931,929,1,0,0,0,932,935,1,0,0,0,933,931,1,0,0,0,933,934,1,0,0,0,934,145,1,0,0,0,935,933,1,0,0,0,936,941,3,148,74,0,937,938,5,16,0,0,938,940,3,148,74,0,939,937,1,0,0,0,940,943,1,0,0,0,941,939,1,0,0,0,941,942,1,0,0,0,942,945,1,0,0,0,943,941,1,0,0,0,944,946,5,16,0,0,945,944,1,0,0,0,945,946,1,0,0,0,946,147,1,0,0,0,947,948,3,194,97,0,948,949,5,70,0,0,949,950,3,140,70,0,950,149,1,0,0,0,951,953,5,15,0,0,952,954,3,146,73,0,953,952,1,0,0,0,953,954,1,0,0,0,954,955,1,0,0,0,955,960,5,17,0,0,956,958,3,144,72,0,957,956,1,0,0,0,957,958,1,0,0,0,958,960,1,0,0,0,959,951,1,0,0,0,959,957,1,0,0,0,960,151,1,0,0,0,961,962,3,140,70,0,962,963,5,23,0,0,963,964,3,150,75,0,964,965,5,24,0,0,965,153,1,0,0,0,966,970,5,15,0,0,967,969,3,156,78,0,968,967,1,0,0,0,969,972,1,0,0,0,970,968,1,0,0,0,970,971,1,0,0,0,971,973,1,0,0,0,972,970,1,0,0,0,973,974,5,17,0,0,974,155,1,0,0,0,975,993,3,194,97,0,976,993,3,154,77,0,977,993,3,158,79,0,978,993,3,164,82,0,979,993,3,166,83,0,980,993,3,172,86,0,981,993,3,174,87,0,982,993,3,176,88,0,983,993,3,180,90,0,984,993,3,184,92,0,985,993,3,186,93,0,986,993,5,109,0,0,987,993,5,112,0,0,988,993,5,113,0,0,989,993,3,192,96,0,990,993,3,200,100,0,991,993,3,196,98,0,992,975,1,0,0,0,992,976,1,0,0,0,992,977,1,0,0,0,992,978,1,0,0,0,992,979,1,0,0,0,992,980,1,0,0,0,992,981,1,0,0,0,992,982,1,0,0,0,992,983,1,0,0,0,992,984,1,0,0,0,992,985,1,0,0,0,992,986,1,0,0,0,992,987,1,0,0,0,992,988,1,0,0,0,992,989,1,0,0,0,992,990,1,0,0,0,992,991,1,0,0,0,993,157,1,0,0,0,994,998,3,162,81,0,995,998,3,188,94,0,996,998,3,160,80,0,997,994,1,0,0,0,997,995,1,0,0,0,997,996,1,0,0,0,998,159,1,0,0,0,999,1e3,3,194,97,0,1e3,1001,5,45,0,0,1001,1002,3,194,97,0,1002,161,1,0,0,0,1003,1008,5,59,0,0,1004,1008,5,44,0,0,1005,1008,5,66,0,0,1006,1008,3,194,97,0,1007,1003,1,0,0,0,1007,1004,1,0,0,0,1007,1005,1,0,0,0,1007,1006,1,0,0,0,1008,1021,1,0,0,0,1009,1011,5,23,0,0,1010,1012,3,158,79,0,1011,1010,1,0,0,0,1011,1012,1,0,0,0,1012,1017,1,0,0,0,1013,1014,5,16,0,0,1014,1016,3,158,79,0,1015,1013,1,0,0,0,1016,1019,1,0,0,0,1017,1015,1,0,0,0,1017,1018,1,0,0,0,1018,1020,1,0,0,0,1019,1017,1,0,0,0,1020,1022,5,24,0,0,1021,1009,1,0,0,0,1021,1022,1,0,0,0,1022,163,1,0,0,0,1023,1024,5,88,0,0,1024,1027,3,168,84,0,1025,1026,5,89,0,0,1026,1028,3,158,79,0,1027,1025,1,0,0,0,1027,1028,1,0,0,0,1028,165,1,0,0,0,1029,1030,3,168,84,0,1030,1031,5,89,0,0,1031,1032,3,158,79,0,1032,167,1,0,0,0,1033,1041,3,194,97,0,1034,1041,3,160,80,0,1035,1041,3,170,85,0,1036,1037,5,23,0,0,1037,1038,3,170,85,0,1038,1039,5,24,0,0,1039,1041,1,0,0,0,1040,1033,1,0,0,0,1040,1034,1,0,0,0,1040,1035,1,0,0,0,1040,1036,1,0,0,0,1041,169,1,0,0,0,1042,1047,3,194,97,0,1043,1044,5,16,0,0,1044,1046,3,194,97,0,1045,1043,1,0,0,0,1046,1049,1,0,0,0,1047,1045,1,0,0,0,1047,1048,1,0,0,0,1048,171,1,0,0,0,1049,1047,1,0,0,0,1050,1051,3,158,79,0,1051,1052,5,90,0,0,1052,1053,3,194,97,0,1053,173,1,0,0,0,1054,1055,3,194,97,0,1055,1056,5,70,0,0,1056,175,1,0,0,0,1057,1058,5,91,0,0,1058,1062,3,158,79,0,1059,1061,3,178,89,0,1060,1059,1,0,0,0,1061,1064,1,0,0,0,1062,1060,1,0,0,0,1062,1063,1,0,0,0,1063,177,1,0,0,0,1064,1062,1,0,0,0,1065,1066,5,92,0,0,1066,1067,3,188,94,0,1067,1068,3,154,77,0,1068,1072,1,0,0,0,1069,1070,5,93,0,0,1070,1072,3,154,77,0,1071,1065,1,0,0,0,1071,1069,1,0,0,0,1072,179,1,0,0,0,1073,1074,5,38,0,0,1074,1075,3,194,97,0,1075,1077,5,23,0,0,1076,1078,3,170,85,0,1077,1076,1,0,0,0,1077,1078,1,0,0,0,1078,1079,1,0,0,0,1079,1081,5,24,0,0,1080,1082,3,182,91,0,1081,1080,1,0,0,0,1081,1082,1,0,0,0,1082,1083,1,0,0,0,1083,1084,3,154,77,0,1084,181,1,0,0,0,1085,1086,5,94,0,0,1086,1087,3,170,85,0,1087,183,1,0,0,0,1088,1091,5,27,0,0,1089,1092,3,154,77,0,1090,1092,3,158,79,0,1091,1089,1,0,0,0,1091,1090,1,0,0,0,1092,1093,1,0,0,0,1093,1096,3,158,79,0,1094,1097,3,154,77,0,1095,1097,3,158,79,0,1096,1094,1,0,0,0,1096,1095,1,0,0,0,1097,1098,1,0,0,0,1098,1099,3,154,77,0,1099,185,1,0,0,0,1100,1101,5,51,0,0,1101,1102,3,158,79,0,1102,1103,3,154,77,0,1103,187,1,0,0,0,1104,1110,3,200,100,0,1105,1110,5,103,0,0,1106,1110,5,104,0,0,1107,1110,3,196,98,0,1108,1110,5,102,0,0,1109,1104,1,0,0,0,1109,1105,1,0,0,0,1109,1106,1,0,0,0,1109,1107,1,0,0,0,1109,1108,1,0,0,0,1110,189,1,0,0,0,1111,1113,5,23,0,0,1112,1114,3,140,70,0,1113,1112,1,0,0,0,1113,1114,1,0,0,0,1114,1121,1,0,0,0,1115,1117,5,16,0,0,1116,1118,3,140,70,0,1117,1116,1,0,0,0,1117,1118,1,0,0,0,1118,1120,1,0,0,0,1119,1115,1,0,0,0,1120,1123,1,0,0,0,1121,1119,1,0,0,0,1121,1122,1,0,0,0,1122,1124,1,0,0,0,1123,1121,1,0,0,0,1124,1138,5,24,0,0,1125,1134,5,42,0,0,1126,1131,3,140,70,0,1127,1128,5,16,0,0,1128,1130,3,140,70,0,1129,1127,1,0,0,0,1130,1133,1,0,0,0,1131,1129,1,0,0,0,1131,1132,1,0,0,0,1132,1135,1,0,0,0,1133,1131,1,0,0,0,1134,1126,1,0,0,0,1134,1135,1,0,0,0,1135,1136,1,0,0,0,1136,1138,5,43,0,0,1137,1111,1,0,0,0,1137,1125,1,0,0,0,1138,191,1,0,0,0,1139,1141,7,13,0,0,1140,1142,5,105,0,0,1141,1140,1,0,0,0,1141,1142,1,0,0,0,1142,193,1,0,0,0,1143,1144,7,14,0,0,1144,195,1,0,0,0,1145,1147,5,106,0,0,1146,1145,1,0,0,0,1147,1148,1,0,0,0,1148,1146,1,0,0,0,1148,1149,1,0,0,0,1149,197,1,0,0,0,1150,1162,5,96,0,0,1151,1152,5,23,0,0,1152,1157,3,78,39,0,1153,1154,5,16,0,0,1154,1156,3,78,39,0,1155,1153,1,0,0,0,1156,1159,1,0,0,0,1157,1155,1,0,0,0,1157,1158,1,0,0,0,1158,1160,1,0,0,0,1159,1157,1,0,0,0,1160,1161,5,24,0,0,1161,1163,1,0,0,0,1162,1151,1,0,0,0,1162,1163,1,0,0,0,1163,199,1,0,0,0,1164,1166,5,129,0,0,1165,1164,1,0,0,0,1166,1167,1,0,0,0,1167,1165,1,0,0,0,1167,1168,1,0,0,0,1168,201,1,0,0,0,130,213,215,230,234,239,245,249,252,257,263,270,274,287,295,300,310,313,319,327,330,341,350,352,358,385,388,399,404,409,423,426,433,437,439,444,449,452,458,462,466,471,484,486,493,503,509,520,523,529,532,540,543,549,552,560,563,569,573,584,589,594,602,607,613,618,631,633,638,648,668,680,685,691,695,698,710,719,723,726,733,739,761,783,787,792,796,800,805,810,814,838,892,896,912,914,926,933,941,945,953,957,959,970,992,997,1007,1011,1017,1021,1027,1040,1047,1062,1071,1077,1081,1091,1096,1109,1113,1117,1121,1131,1134,1137,1141,1148,1157,1162,1167],C.DecisionsToDFA=S._ATN.decisionToState.map(((t,e)=>new c(t,e)));var A=C,w=class extends g{constructor(t,e,i){super(e,i),this.parser=t}EOF(){return this.getToken(C.EOF,0)}pragmaDirective_list(){return this.getTypedRuleContexts(N)}pragmaDirective(t){return this.getTypedRuleContext(N,t)}importDirective_list(){return this.getTypedRuleContexts(U)}importDirective(t){return this.getTypedRuleContext(U,t)}contractDefinition_list(){return this.getTypedRuleContexts(M)}contractDefinition(t){return this.getTypedRuleContext(M,t)}enumDefinition_list(){return this.getTypedRuleContexts(nt)}enumDefinition(t){return this.getTypedRuleContext(nt,t)}eventDefinition_list(){return this.getTypedRuleContexts(st)}eventDefinition(t){return this.getTypedRuleContext(st,t)}structDefinition_list(){return this.getTypedRuleContexts(X)}structDefinition(t){return this.getTypedRuleContext(X,t)}functionDefinition_list(){return this.getTypedRuleContexts(Z)}functionDefinition(t){return this.getTypedRuleContext(Z,t)}fileLevelConstant_list(){return this.getTypedRuleContexts($)}fileLevelConstant(t){return this.getTypedRuleContext($,t)}customErrorDefinition_list(){return this.getTypedRuleContexts(j)}customErrorDefinition(t){return this.getTypedRuleContext(j,t)}typeDefinition_list(){return this.getTypedRuleContexts(G)}typeDefinition(t){return this.getTypedRuleContext(G,t)}usingForDeclaration_list(){return this.getTypedRuleContexts(z)}usingForDeclaration(t){return this.getTypedRuleContext(z,t)}get ruleIndex(){return C.RULE_sourceUnit}enterRule(t){t.enterSourceUnit&&t.enterSourceUnit(this)}exitRule(t){t.exitSourceUnit&&t.exitSourceUnit(this)}accept(t){return t.visitSourceUnit?t.visitSourceUnit(this):t.visitChildren(this)}},N=class extends g{constructor(t,e,i){super(e,i),this.parser=t}pragmaName(){return this.getTypedRuleContext(I,0)}pragmaValue(){return this.getTypedRuleContext(k,0)}get ruleIndex(){return C.RULE_pragmaDirective}enterRule(t){t.enterPragmaDirective&&t.enterPragmaDirective(this)}exitRule(t){t.exitPragmaDirective&&t.exitPragmaDirective(this)}accept(t){return t.visitPragmaDirective?t.visitPragmaDirective(this):t.visitChildren(this)}},I=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_pragmaName}enterRule(t){t.enterPragmaName&&t.enterPragmaName(this)}exitRule(t){t.exitPragmaName&&t.exitPragmaName(this)}accept(t){return t.visitPragmaName?t.visitPragmaName(this):t.visitChildren(this)}},k=class extends g{constructor(t,e,i){super(e,i),this.parser=t}version(){return this.getTypedRuleContext(D,0)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_pragmaValue}enterRule(t){t.enterPragmaValue&&t.enterPragmaValue(this)}exitRule(t){t.exitPragmaValue&&t.exitPragmaValue(this)}accept(t){return t.visitPragmaValue?t.visitPragmaValue(this):t.visitChildren(this)}},D=class extends g{constructor(t,e,i){super(e,i),this.parser=t}versionConstraint_list(){return this.getTypedRuleContexts(P)}versionConstraint(t){return this.getTypedRuleContext(P,t)}get ruleIndex(){return C.RULE_version}enterRule(t){t.enterVersion&&t.enterVersion(this)}exitRule(t){t.exitVersion&&t.exitVersion(this)}accept(t){return t.visitVersion?t.visitVersion(this):t.visitChildren(this)}},O=class extends g{constructor(t,e,i){super(e,i),this.parser=t}get ruleIndex(){return C.RULE_versionOperator}enterRule(t){t.enterVersionOperator&&t.enterVersionOperator(this)}exitRule(t){t.exitVersionOperator&&t.exitVersionOperator(this)}accept(t){return t.visitVersionOperator?t.visitVersionOperator(this):t.visitChildren(this)}},P=class extends g{constructor(t,e,i){super(e,i),this.parser=t}VersionLiteral(){return this.getToken(C.VersionLiteral,0)}versionOperator(){return this.getTypedRuleContext(O,0)}DecimalNumber(){return this.getToken(C.DecimalNumber,0)}get ruleIndex(){return C.RULE_versionConstraint}enterRule(t){t.enterVersionConstraint&&t.enterVersionConstraint(this)}exitRule(t){t.exitVersionConstraint&&t.exitVersionConstraint(this)}accept(t){return t.visitVersionConstraint?t.visitVersionConstraint(this):t.visitChildren(this)}},F=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier_list(){return this.getTypedRuleContexts(ye)}identifier(t){return this.getTypedRuleContext(ye,t)}get ruleIndex(){return C.RULE_importDeclaration}enterRule(t){t.enterImportDeclaration&&t.enterImportDeclaration(this)}exitRule(t){t.exitImportDeclaration&&t.exitImportDeclaration(this)}accept(t){return t.visitImportDeclaration?t.visitImportDeclaration(this):t.visitChildren(this)}},U=class extends g{constructor(t,e,i){super(e,i),this.parser=t}importPath(){return this.getTypedRuleContext(H,0)}identifier_list(){return this.getTypedRuleContexts(ye)}identifier(t){return this.getTypedRuleContext(ye,t)}importDeclaration_list(){return this.getTypedRuleContexts(F)}importDeclaration(t){return this.getTypedRuleContext(F,t)}get ruleIndex(){return C.RULE_importDirective}enterRule(t){t.enterImportDirective&&t.enterImportDirective(this)}exitRule(t){t.exitImportDirective&&t.exitImportDirective(this)}accept(t){return t.visitImportDirective?t.visitImportDirective(this):t.visitChildren(this)}},H=class extends g{constructor(t,e,i){super(e,i),this.parser=t}StringLiteralFragment(){return this.getToken(C.StringLiteralFragment,0)}get ruleIndex(){return C.RULE_importPath}enterRule(t){t.enterImportPath&&t.enterImportPath(this)}exitRule(t){t.exitImportPath&&t.exitImportPath(this)}accept(t){return t.visitImportPath?t.visitImportPath(this):t.visitChildren(this)}},M=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}inheritanceSpecifier_list(){return this.getTypedRuleContexts(K)}inheritanceSpecifier(t){return this.getTypedRuleContext(K,t)}contractPart_list(){return this.getTypedRuleContexts(V)}contractPart(t){return this.getTypedRuleContext(V,t)}get ruleIndex(){return C.RULE_contractDefinition}enterRule(t){t.enterContractDefinition&&t.enterContractDefinition(this)}exitRule(t){t.exitContractDefinition&&t.exitContractDefinition(this)}accept(t){return t.visitContractDefinition?t.visitContractDefinition(this):t.visitChildren(this)}},K=class extends g{constructor(t,e,i){super(e,i),this.parser=t}userDefinedTypeName(){return this.getTypedRuleContext(mt,0)}expressionList(){return this.getTypedRuleContext(qt,0)}get ruleIndex(){return C.RULE_inheritanceSpecifier}enterRule(t){t.enterInheritanceSpecifier&&t.enterInheritanceSpecifier(this)}exitRule(t){t.exitInheritanceSpecifier&&t.exitInheritanceSpecifier(this)}accept(t){return t.visitInheritanceSpecifier?t.visitInheritanceSpecifier(this):t.visitChildren(this)}},V=class extends g{constructor(t,e,i){super(e,i),this.parser=t}stateVariableDeclaration(){return this.getTypedRuleContext(B,0)}usingForDeclaration(){return this.getTypedRuleContext(z,0)}structDefinition(){return this.getTypedRuleContext(X,0)}modifierDefinition(){return this.getTypedRuleContext(J,0)}functionDefinition(){return this.getTypedRuleContext(Z,0)}eventDefinition(){return this.getTypedRuleContext(st,0)}enumDefinition(){return this.getTypedRuleContext(nt,0)}customErrorDefinition(){return this.getTypedRuleContext(j,0)}typeDefinition(){return this.getTypedRuleContext(G,0)}get ruleIndex(){return C.RULE_contractPart}enterRule(t){t.enterContractPart&&t.enterContractPart(this)}exitRule(t){t.exitContractPart&&t.exitContractPart(this)}accept(t){return t.visitContractPart?t.visitContractPart(this):t.visitChildren(this)}},B=class extends g{constructor(t,e,i){super(e,i),this.parser=t}typeName(){return this.getTypedRuleContext(dt,0)}identifier(){return this.getTypedRuleContext(ye,0)}PublicKeyword_list(){return this.getTokens(C.PublicKeyword)}PublicKeyword(t){return this.getToken(C.PublicKeyword,t)}InternalKeyword_list(){return this.getTokens(C.InternalKeyword)}InternalKeyword(t){return this.getToken(C.InternalKeyword,t)}PrivateKeyword_list(){return this.getTokens(C.PrivateKeyword)}PrivateKeyword(t){return this.getToken(C.PrivateKeyword,t)}ConstantKeyword_list(){return this.getTokens(C.ConstantKeyword)}ConstantKeyword(t){return this.getToken(C.ConstantKeyword,t)}ImmutableKeyword_list(){return this.getTokens(C.ImmutableKeyword)}ImmutableKeyword(t){return this.getToken(C.ImmutableKeyword,t)}overrideSpecifier_list(){return this.getTypedRuleContexts(Te)}overrideSpecifier(t){return this.getTypedRuleContext(Te,t)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_stateVariableDeclaration}enterRule(t){t.enterStateVariableDeclaration&&t.enterStateVariableDeclaration(this)}exitRule(t){t.exitStateVariableDeclaration&&t.exitStateVariableDeclaration(this)}accept(t){return t.visitStateVariableDeclaration?t.visitStateVariableDeclaration(this):t.visitChildren(this)}},$=class extends g{constructor(t,e,i){super(e,i),this.parser=t}typeName(){return this.getTypedRuleContext(dt,0)}ConstantKeyword(){return this.getToken(C.ConstantKeyword,0)}identifier(){return this.getTypedRuleContext(ye,0)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_fileLevelConstant}enterRule(t){t.enterFileLevelConstant&&t.enterFileLevelConstant(this)}exitRule(t){t.exitFileLevelConstant&&t.exitFileLevelConstant(this)}accept(t){return t.visitFileLevelConstant?t.visitFileLevelConstant(this):t.visitChildren(this)}},j=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}parameterList(){return this.getTypedRuleContext(at,0)}get ruleIndex(){return C.RULE_customErrorDefinition}enterRule(t){t.enterCustomErrorDefinition&&t.enterCustomErrorDefinition(this)}exitRule(t){t.exitCustomErrorDefinition&&t.exitCustomErrorDefinition(this)}accept(t){return t.visitCustomErrorDefinition?t.visitCustomErrorDefinition(this):t.visitChildren(this)}},G=class extends g{constructor(t,e,i){super(e,i),this.parser=t}TypeKeyword(){return this.getToken(C.TypeKeyword,0)}identifier(){return this.getTypedRuleContext(ye,0)}elementaryTypeName(){return this.getTypedRuleContext(jt,0)}get ruleIndex(){return C.RULE_typeDefinition}enterRule(t){t.enterTypeDefinition&&t.enterTypeDefinition(this)}exitRule(t){t.exitTypeDefinition&&t.exitTypeDefinition(this)}accept(t){return t.visitTypeDefinition?t.visitTypeDefinition(this):t.visitChildren(this)}},z=class extends g{constructor(t,e,i){super(e,i),this.parser=t}usingForObject(){return this.getTypedRuleContext(q,0)}typeName(){return this.getTypedRuleContext(dt,0)}GlobalKeyword(){return this.getToken(C.GlobalKeyword,0)}get ruleIndex(){return C.RULE_usingForDeclaration}enterRule(t){t.enterUsingForDeclaration&&t.enterUsingForDeclaration(this)}exitRule(t){t.exitUsingForDeclaration&&t.exitUsingForDeclaration(this)}accept(t){return t.visitUsingForDeclaration?t.visitUsingForDeclaration(this):t.visitChildren(this)}},q=class extends g{constructor(t,e,i){super(e,i),this.parser=t}userDefinedTypeName(){return this.getTypedRuleContext(mt,0)}usingForObjectDirective_list(){return this.getTypedRuleContexts(W)}usingForObjectDirective(t){return this.getTypedRuleContext(W,t)}get ruleIndex(){return C.RULE_usingForObject}enterRule(t){t.enterUsingForObject&&t.enterUsingForObject(this)}exitRule(t){t.exitUsingForObject&&t.exitUsingForObject(this)}accept(t){return t.visitUsingForObject?t.visitUsingForObject(this):t.visitChildren(this)}},W=class extends g{constructor(t,e,i){super(e,i),this.parser=t}userDefinedTypeName(){return this.getTypedRuleContext(mt,0)}userDefinableOperators(){return this.getTypedRuleContext(Y,0)}get ruleIndex(){return C.RULE_usingForObjectDirective}enterRule(t){t.enterUsingForObjectDirective&&t.enterUsingForObjectDirective(this)}exitRule(t){t.exitUsingForObjectDirective&&t.exitUsingForObjectDirective(this)}accept(t){return t.visitUsingForObjectDirective?t.visitUsingForObjectDirective(this):t.visitChildren(this)}},Y=class extends g{constructor(t,e,i){super(e,i),this.parser=t}get ruleIndex(){return C.RULE_userDefinableOperators}enterRule(t){t.enterUserDefinableOperators&&t.enterUserDefinableOperators(this)}exitRule(t){t.exitUserDefinableOperators&&t.exitUserDefinableOperators(this)}accept(t){return t.visitUserDefinableOperators?t.visitUserDefinableOperators(this):t.visitChildren(this)}},X=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}variableDeclaration_list(){return this.getTypedRuleContexts(pt)}variableDeclaration(t){return this.getTypedRuleContext(pt,t)}get ruleIndex(){return C.RULE_structDefinition}enterRule(t){t.enterStructDefinition&&t.enterStructDefinition(this)}exitRule(t){t.exitStructDefinition&&t.exitStructDefinition(this)}accept(t){return t.visitStructDefinition?t.visitStructDefinition(this):t.visitChildren(this)}},J=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}block(){return this.getTypedRuleContext(Rt,0)}parameterList(){return this.getTypedRuleContext(at,0)}VirtualKeyword_list(){return this.getTokens(C.VirtualKeyword)}VirtualKeyword(t){return this.getToken(C.VirtualKeyword,t)}overrideSpecifier_list(){return this.getTypedRuleContexts(Te)}overrideSpecifier(t){return this.getTypedRuleContext(Te,t)}get ruleIndex(){return C.RULE_modifierDefinition}enterRule(t){t.enterModifierDefinition&&t.enterModifierDefinition(this)}exitRule(t){t.exitModifierDefinition&&t.exitModifierDefinition(this)}accept(t){return t.visitModifierDefinition?t.visitModifierDefinition(this):t.visitChildren(this)}},Q=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}expressionList(){return this.getTypedRuleContext(qt,0)}get ruleIndex(){return C.RULE_modifierInvocation}enterRule(t){t.enterModifierInvocation&&t.enterModifierInvocation(this)}exitRule(t){t.exitModifierInvocation&&t.exitModifierInvocation(this)}accept(t){return t.visitModifierInvocation?t.visitModifierInvocation(this):t.visitChildren(this)}},Z=class extends g{constructor(t,e,i){super(e,i),this.parser=t}functionDescriptor(){return this.getTypedRuleContext(tt,0)}parameterList(){return this.getTypedRuleContext(at,0)}modifierList(){return this.getTypedRuleContext(it,0)}block(){return this.getTypedRuleContext(Rt,0)}returnParameters(){return this.getTypedRuleContext(et,0)}get ruleIndex(){return C.RULE_functionDefinition}enterRule(t){t.enterFunctionDefinition&&t.enterFunctionDefinition(this)}exitRule(t){t.exitFunctionDefinition&&t.exitFunctionDefinition(this)}accept(t){return t.visitFunctionDefinition?t.visitFunctionDefinition(this):t.visitChildren(this)}},tt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}ConstructorKeyword(){return this.getToken(C.ConstructorKeyword,0)}FallbackKeyword(){return this.getToken(C.FallbackKeyword,0)}ReceiveKeyword(){return this.getToken(C.ReceiveKeyword,0)}get ruleIndex(){return C.RULE_functionDescriptor}enterRule(t){t.enterFunctionDescriptor&&t.enterFunctionDescriptor(this)}exitRule(t){t.exitFunctionDescriptor&&t.exitFunctionDescriptor(this)}accept(t){return t.visitFunctionDescriptor?t.visitFunctionDescriptor(this):t.visitChildren(this)}},et=class extends g{constructor(t,e,i){super(e,i),this.parser=t}parameterList(){return this.getTypedRuleContext(at,0)}get ruleIndex(){return C.RULE_returnParameters}enterRule(t){t.enterReturnParameters&&t.enterReturnParameters(this)}exitRule(t){t.exitReturnParameters&&t.exitReturnParameters(this)}accept(t){return t.visitReturnParameters?t.visitReturnParameters(this):t.visitChildren(this)}},it=class extends g{constructor(t,e,i){super(e,i),this.parser=t}ExternalKeyword_list(){return this.getTokens(C.ExternalKeyword)}ExternalKeyword(t){return this.getToken(C.ExternalKeyword,t)}PublicKeyword_list(){return this.getTokens(C.PublicKeyword)}PublicKeyword(t){return this.getToken(C.PublicKeyword,t)}InternalKeyword_list(){return this.getTokens(C.InternalKeyword)}InternalKeyword(t){return this.getToken(C.InternalKeyword,t)}PrivateKeyword_list(){return this.getTokens(C.PrivateKeyword)}PrivateKeyword(t){return this.getToken(C.PrivateKeyword,t)}VirtualKeyword_list(){return this.getTokens(C.VirtualKeyword)}VirtualKeyword(t){return this.getToken(C.VirtualKeyword,t)}stateMutability_list(){return this.getTypedRuleContexts(Et)}stateMutability(t){return this.getTypedRuleContext(Et,t)}modifierInvocation_list(){return this.getTypedRuleContexts(Q)}modifierInvocation(t){return this.getTypedRuleContext(Q,t)}overrideSpecifier_list(){return this.getTypedRuleContexts(Te)}overrideSpecifier(t){return this.getTypedRuleContext(Te,t)}get ruleIndex(){return C.RULE_modifierList}enterRule(t){t.enterModifierList&&t.enterModifierList(this)}exitRule(t){t.exitModifierList&&t.exitModifierList(this)}accept(t){return t.visitModifierList?t.visitModifierList(this):t.visitChildren(this)}},st=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}eventParameterList(){return this.getTypedRuleContext(lt,0)}AnonymousKeyword(){return this.getToken(C.AnonymousKeyword,0)}get ruleIndex(){return C.RULE_eventDefinition}enterRule(t){t.enterEventDefinition&&t.enterEventDefinition(this)}exitRule(t){t.exitEventDefinition&&t.exitEventDefinition(this)}accept(t){return t.visitEventDefinition?t.visitEventDefinition(this):t.visitChildren(this)}},rt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_enumValue}enterRule(t){t.enterEnumValue&&t.enterEnumValue(this)}exitRule(t){t.exitEnumValue&&t.exitEnumValue(this)}accept(t){return t.visitEnumValue?t.visitEnumValue(this):t.visitChildren(this)}},nt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}enumValue_list(){return this.getTypedRuleContexts(rt)}enumValue(t){return this.getTypedRuleContext(rt,t)}get ruleIndex(){return C.RULE_enumDefinition}enterRule(t){t.enterEnumDefinition&&t.enterEnumDefinition(this)}exitRule(t){t.exitEnumDefinition&&t.exitEnumDefinition(this)}accept(t){return t.visitEnumDefinition?t.visitEnumDefinition(this):t.visitChildren(this)}},at=class extends g{constructor(t,e,i){super(e,i),this.parser=t}parameter_list(){return this.getTypedRuleContexts(ot)}parameter(t){return this.getTypedRuleContext(ot,t)}get ruleIndex(){return C.RULE_parameterList}enterRule(t){t.enterParameterList&&t.enterParameterList(this)}exitRule(t){t.exitParameterList&&t.exitParameterList(this)}accept(t){return t.visitParameterList?t.visitParameterList(this):t.visitChildren(this)}},ot=class extends g{constructor(t,e,i){super(e,i),this.parser=t}typeName(){return this.getTypedRuleContext(dt,0)}storageLocation(){return this.getTypedRuleContext(Tt,0)}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_parameter}enterRule(t){t.enterParameter&&t.enterParameter(this)}exitRule(t){t.exitParameter&&t.exitParameter(this)}accept(t){return t.visitParameter?t.visitParameter(this):t.visitChildren(this)}},lt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}eventParameter_list(){return this.getTypedRuleContexts(ht)}eventParameter(t){return this.getTypedRuleContext(ht,t)}get ruleIndex(){return C.RULE_eventParameterList}enterRule(t){t.enterEventParameterList&&t.enterEventParameterList(this)}exitRule(t){t.exitEventParameterList&&t.exitEventParameterList(this)}accept(t){return t.visitEventParameterList?t.visitEventParameterList(this):t.visitChildren(this)}},ht=class extends g{constructor(t,e,i){super(e,i),this.parser=t}typeName(){return this.getTypedRuleContext(dt,0)}IndexedKeyword(){return this.getToken(C.IndexedKeyword,0)}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_eventParameter}enterRule(t){t.enterEventParameter&&t.enterEventParameter(this)}exitRule(t){t.exitEventParameter&&t.exitEventParameter(this)}accept(t){return t.visitEventParameter?t.visitEventParameter(this):t.visitChildren(this)}},ct=class extends g{constructor(t,e,i){super(e,i),this.parser=t}functionTypeParameter_list(){return this.getTypedRuleContexts(ut)}functionTypeParameter(t){return this.getTypedRuleContext(ut,t)}get ruleIndex(){return C.RULE_functionTypeParameterList}enterRule(t){t.enterFunctionTypeParameterList&&t.enterFunctionTypeParameterList(this)}exitRule(t){t.exitFunctionTypeParameterList&&t.exitFunctionTypeParameterList(this)}accept(t){return t.visitFunctionTypeParameterList?t.visitFunctionTypeParameterList(this):t.visitChildren(this)}},ut=class extends g{constructor(t,e,i){super(e,i),this.parser=t}typeName(){return this.getTypedRuleContext(dt,0)}storageLocation(){return this.getTypedRuleContext(Tt,0)}get ruleIndex(){return C.RULE_functionTypeParameter}enterRule(t){t.enterFunctionTypeParameter&&t.enterFunctionTypeParameter(this)}exitRule(t){t.exitFunctionTypeParameter&&t.exitFunctionTypeParameter(this)}accept(t){return t.visitFunctionTypeParameter?t.visitFunctionTypeParameter(this):t.visitChildren(this)}},pt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}typeName(){return this.getTypedRuleContext(dt,0)}identifier(){return this.getTypedRuleContext(ye,0)}storageLocation(){return this.getTypedRuleContext(Tt,0)}get ruleIndex(){return C.RULE_variableDeclaration}enterRule(t){t.enterVariableDeclaration&&t.enterVariableDeclaration(this)}exitRule(t){t.exitVariableDeclaration&&t.exitVariableDeclaration(this)}accept(t){return t.visitVariableDeclaration?t.visitVariableDeclaration(this):t.visitChildren(this)}},dt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}elementaryTypeName(){return this.getTypedRuleContext(jt,0)}userDefinedTypeName(){return this.getTypedRuleContext(mt,0)}mapping(){return this.getTypedRuleContext(xt,0)}functionTypeName(){return this.getTypedRuleContext(gt,0)}PayableKeyword(){return this.getToken(C.PayableKeyword,0)}typeName(){return this.getTypedRuleContext(dt,0)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_typeName}enterRule(t){t.enterTypeName&&t.enterTypeName(this)}exitRule(t){t.exitTypeName&&t.exitTypeName(this)}accept(t){return t.visitTypeName?t.visitTypeName(this):t.visitChildren(this)}},mt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier_list(){return this.getTypedRuleContexts(ye)}identifier(t){return this.getTypedRuleContext(ye,t)}get ruleIndex(){return C.RULE_userDefinedTypeName}enterRule(t){t.enterUserDefinedTypeName&&t.enterUserDefinedTypeName(this)}exitRule(t){t.exitUserDefinedTypeName&&t.exitUserDefinedTypeName(this)}accept(t){return t.visitUserDefinedTypeName?t.visitUserDefinedTypeName(this):t.visitChildren(this)}},_t=class extends g{constructor(t,e,i){super(e,i),this.parser=t}elementaryTypeName(){return this.getTypedRuleContext(jt,0)}userDefinedTypeName(){return this.getTypedRuleContext(mt,0)}get ruleIndex(){return C.RULE_mappingKey}enterRule(t){t.enterMappingKey&&t.enterMappingKey(this)}exitRule(t){t.exitMappingKey&&t.exitMappingKey(this)}accept(t){return t.visitMappingKey?t.visitMappingKey(this):t.visitChildren(this)}},xt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}mappingKey(){return this.getTypedRuleContext(_t,0)}typeName(){return this.getTypedRuleContext(dt,0)}mappingKeyName(){return this.getTypedRuleContext(ft,0)}mappingValueName(){return this.getTypedRuleContext(yt,0)}get ruleIndex(){return C.RULE_mapping}enterRule(t){t.enterMapping&&t.enterMapping(this)}exitRule(t){t.exitMapping&&t.exitMapping(this)}accept(t){return t.visitMapping?t.visitMapping(this):t.visitChildren(this)}},ft=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_mappingKeyName}enterRule(t){t.enterMappingKeyName&&t.enterMappingKeyName(this)}exitRule(t){t.exitMappingKeyName&&t.exitMappingKeyName(this)}accept(t){return t.visitMappingKeyName?t.visitMappingKeyName(this):t.visitChildren(this)}},yt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_mappingValueName}enterRule(t){t.enterMappingValueName&&t.enterMappingValueName(this)}exitRule(t){t.exitMappingValueName&&t.exitMappingValueName(this)}accept(t){return t.visitMappingValueName?t.visitMappingValueName(this):t.visitChildren(this)}},gt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}functionTypeParameterList_list(){return this.getTypedRuleContexts(ct)}functionTypeParameterList(t){return this.getTypedRuleContext(ct,t)}InternalKeyword_list(){return this.getTokens(C.InternalKeyword)}InternalKeyword(t){return this.getToken(C.InternalKeyword,t)}ExternalKeyword_list(){return this.getTokens(C.ExternalKeyword)}ExternalKeyword(t){return this.getToken(C.ExternalKeyword,t)}stateMutability_list(){return this.getTypedRuleContexts(Et)}stateMutability(t){return this.getTypedRuleContext(Et,t)}get ruleIndex(){return C.RULE_functionTypeName}enterRule(t){t.enterFunctionTypeName&&t.enterFunctionTypeName(this)}exitRule(t){t.exitFunctionTypeName&&t.exitFunctionTypeName(this)}accept(t){return t.visitFunctionTypeName?t.visitFunctionTypeName(this):t.visitChildren(this)}},Tt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}get ruleIndex(){return C.RULE_storageLocation}enterRule(t){t.enterStorageLocation&&t.enterStorageLocation(this)}exitRule(t){t.exitStorageLocation&&t.exitStorageLocation(this)}accept(t){return t.visitStorageLocation?t.visitStorageLocation(this):t.visitChildren(this)}},Et=class extends g{constructor(t,e,i){super(e,i),this.parser=t}PureKeyword(){return this.getToken(C.PureKeyword,0)}ConstantKeyword(){return this.getToken(C.ConstantKeyword,0)}ViewKeyword(){return this.getToken(C.ViewKeyword,0)}PayableKeyword(){return this.getToken(C.PayableKeyword,0)}get ruleIndex(){return C.RULE_stateMutability}enterRule(t){t.enterStateMutability&&t.enterStateMutability(this)}exitRule(t){t.exitStateMutability&&t.exitStateMutability(this)}accept(t){return t.visitStateMutability?t.visitStateMutability(this):t.visitChildren(this)}},Rt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}statement_list(){return this.getTypedRuleContexts(vt)}statement(t){return this.getTypedRuleContext(vt,t)}get ruleIndex(){return C.RULE_block}enterRule(t){t.enterBlock&&t.enterBlock(this)}exitRule(t){t.exitBlock&&t.exitBlock(this)}accept(t){return t.visitBlock?t.visitBlock(this):t.visitChildren(this)}},vt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}ifStatement(){return this.getTypedRuleContext(Lt,0)}tryStatement(){return this.getTypedRuleContext(St,0)}whileStatement(){return this.getTypedRuleContext(At,0)}forStatement(){return this.getTypedRuleContext(It,0)}block(){return this.getTypedRuleContext(Rt,0)}inlineAssemblyStatement(){return this.getTypedRuleContext(kt,0)}doWhileStatement(){return this.getTypedRuleContext(Ot,0)}continueStatement(){return this.getTypedRuleContext(Pt,0)}breakStatement(){return this.getTypedRuleContext(Ft,0)}returnStatement(){return this.getTypedRuleContext(Ut,0)}throwStatement(){return this.getTypedRuleContext(Ht,0)}emitStatement(){return this.getTypedRuleContext(Mt,0)}simpleStatement(){return this.getTypedRuleContext(wt,0)}uncheckedStatement(){return this.getTypedRuleContext(Nt,0)}revertStatement(){return this.getTypedRuleContext(Kt,0)}get ruleIndex(){return C.RULE_statement}enterRule(t){t.enterStatement&&t.enterStatement(this)}exitRule(t){t.exitStatement&&t.exitStatement(this)}accept(t){return t.visitStatement?t.visitStatement(this):t.visitChildren(this)}},bt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_expressionStatement}enterRule(t){t.enterExpressionStatement&&t.enterExpressionStatement(this)}exitRule(t){t.exitExpressionStatement&&t.exitExpressionStatement(this)}accept(t){return t.visitExpressionStatement?t.visitExpressionStatement(this):t.visitChildren(this)}},Lt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression(){return this.getTypedRuleContext(Gt,0)}statement_list(){return this.getTypedRuleContexts(vt)}statement(t){return this.getTypedRuleContext(vt,t)}get ruleIndex(){return C.RULE_ifStatement}enterRule(t){t.enterIfStatement&&t.enterIfStatement(this)}exitRule(t){t.exitIfStatement&&t.exitIfStatement(this)}accept(t){return t.visitIfStatement?t.visitIfStatement(this):t.visitChildren(this)}},St=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression(){return this.getTypedRuleContext(Gt,0)}block(){return this.getTypedRuleContext(Rt,0)}returnParameters(){return this.getTypedRuleContext(et,0)}catchClause_list(){return this.getTypedRuleContexts(Ct)}catchClause(t){return this.getTypedRuleContext(Ct,t)}get ruleIndex(){return C.RULE_tryStatement}enterRule(t){t.enterTryStatement&&t.enterTryStatement(this)}exitRule(t){t.exitTryStatement&&t.exitTryStatement(this)}accept(t){return t.visitTryStatement?t.visitTryStatement(this):t.visitChildren(this)}},Ct=class extends g{constructor(t,e,i){super(e,i),this.parser=t}block(){return this.getTypedRuleContext(Rt,0)}parameterList(){return this.getTypedRuleContext(at,0)}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_catchClause}enterRule(t){t.enterCatchClause&&t.enterCatchClause(this)}exitRule(t){t.exitCatchClause&&t.exitCatchClause(this)}accept(t){return t.visitCatchClause?t.visitCatchClause(this):t.visitChildren(this)}},At=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression(){return this.getTypedRuleContext(Gt,0)}statement(){return this.getTypedRuleContext(vt,0)}get ruleIndex(){return C.RULE_whileStatement}enterRule(t){t.enterWhileStatement&&t.enterWhileStatement(this)}exitRule(t){t.exitWhileStatement&&t.exitWhileStatement(this)}accept(t){return t.visitWhileStatement?t.visitWhileStatement(this):t.visitChildren(this)}},wt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}variableDeclarationStatement(){return this.getTypedRuleContext(Vt,0)}expressionStatement(){return this.getTypedRuleContext(bt,0)}get ruleIndex(){return C.RULE_simpleStatement}enterRule(t){t.enterSimpleStatement&&t.enterSimpleStatement(this)}exitRule(t){t.exitSimpleStatement&&t.exitSimpleStatement(this)}accept(t){return t.visitSimpleStatement?t.visitSimpleStatement(this):t.visitChildren(this)}},Nt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}block(){return this.getTypedRuleContext(Rt,0)}get ruleIndex(){return C.RULE_uncheckedStatement}enterRule(t){t.enterUncheckedStatement&&t.enterUncheckedStatement(this)}exitRule(t){t.exitUncheckedStatement&&t.exitUncheckedStatement(this)}accept(t){return t.visitUncheckedStatement?t.visitUncheckedStatement(this):t.visitChildren(this)}},It=class extends g{constructor(t,e,i){super(e,i),this.parser=t}statement(){return this.getTypedRuleContext(vt,0)}simpleStatement(){return this.getTypedRuleContext(wt,0)}expressionStatement(){return this.getTypedRuleContext(bt,0)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_forStatement}enterRule(t){t.enterForStatement&&t.enterForStatement(this)}exitRule(t){t.exitForStatement&&t.exitForStatement(this)}accept(t){return t.visitForStatement?t.visitForStatement(this):t.visitChildren(this)}},kt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyBlock(){return this.getTypedRuleContext(Qt,0)}StringLiteralFragment(){return this.getToken(C.StringLiteralFragment,0)}inlineAssemblyStatementFlag(){return this.getTypedRuleContext(Dt,0)}get ruleIndex(){return C.RULE_inlineAssemblyStatement}enterRule(t){t.enterInlineAssemblyStatement&&t.enterInlineAssemblyStatement(this)}exitRule(t){t.exitInlineAssemblyStatement&&t.exitInlineAssemblyStatement(this)}accept(t){return t.visitInlineAssemblyStatement?t.visitInlineAssemblyStatement(this):t.visitChildren(this)}},Dt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}stringLiteral(){return this.getTypedRuleContext(Ee,0)}get ruleIndex(){return C.RULE_inlineAssemblyStatementFlag}enterRule(t){t.enterInlineAssemblyStatementFlag&&t.enterInlineAssemblyStatementFlag(this)}exitRule(t){t.exitInlineAssemblyStatementFlag&&t.exitInlineAssemblyStatementFlag(this)}accept(t){return t.visitInlineAssemblyStatementFlag?t.visitInlineAssemblyStatementFlag(this):t.visitChildren(this)}},Ot=class extends g{constructor(t,e,i){super(e,i),this.parser=t}statement(){return this.getTypedRuleContext(vt,0)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_doWhileStatement}enterRule(t){t.enterDoWhileStatement&&t.enterDoWhileStatement(this)}exitRule(t){t.exitDoWhileStatement&&t.exitDoWhileStatement(this)}accept(t){return t.visitDoWhileStatement?t.visitDoWhileStatement(this):t.visitChildren(this)}},Pt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}ContinueKeyword(){return this.getToken(C.ContinueKeyword,0)}get ruleIndex(){return C.RULE_continueStatement}enterRule(t){t.enterContinueStatement&&t.enterContinueStatement(this)}exitRule(t){t.exitContinueStatement&&t.exitContinueStatement(this)}accept(t){return t.visitContinueStatement?t.visitContinueStatement(this):t.visitChildren(this)}},Ft=class extends g{constructor(t,e,i){super(e,i),this.parser=t}BreakKeyword(){return this.getToken(C.BreakKeyword,0)}get ruleIndex(){return C.RULE_breakStatement}enterRule(t){t.enterBreakStatement&&t.enterBreakStatement(this)}exitRule(t){t.exitBreakStatement&&t.exitBreakStatement(this)}accept(t){return t.visitBreakStatement?t.visitBreakStatement(this):t.visitChildren(this)}},Ut=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_returnStatement}enterRule(t){t.enterReturnStatement&&t.enterReturnStatement(this)}exitRule(t){t.exitReturnStatement&&t.exitReturnStatement(this)}accept(t){return t.visitReturnStatement?t.visitReturnStatement(this):t.visitChildren(this)}},Ht=class extends g{constructor(t,e,i){super(e,i),this.parser=t}get ruleIndex(){return C.RULE_throwStatement}enterRule(t){t.enterThrowStatement&&t.enterThrowStatement(this)}exitRule(t){t.exitThrowStatement&&t.exitThrowStatement(this)}accept(t){return t.visitThrowStatement?t.visitThrowStatement(this):t.visitChildren(this)}},Mt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}functionCall(){return this.getTypedRuleContext(Jt,0)}get ruleIndex(){return C.RULE_emitStatement}enterRule(t){t.enterEmitStatement&&t.enterEmitStatement(this)}exitRule(t){t.exitEmitStatement&&t.exitEmitStatement(this)}accept(t){return t.visitEmitStatement?t.visitEmitStatement(this):t.visitChildren(this)}},Kt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}functionCall(){return this.getTypedRuleContext(Jt,0)}get ruleIndex(){return C.RULE_revertStatement}enterRule(t){t.enterRevertStatement&&t.enterRevertStatement(this)}exitRule(t){t.exitRevertStatement&&t.exitRevertStatement(this)}accept(t){return t.visitRevertStatement?t.visitRevertStatement(this):t.visitChildren(this)}},Vt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifierList(){return this.getTypedRuleContext($t,0)}variableDeclaration(){return this.getTypedRuleContext(pt,0)}variableDeclarationList(){return this.getTypedRuleContext(Bt,0)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_variableDeclarationStatement}enterRule(t){t.enterVariableDeclarationStatement&&t.enterVariableDeclarationStatement(this)}exitRule(t){t.exitVariableDeclarationStatement&&t.exitVariableDeclarationStatement(this)}accept(t){return t.visitVariableDeclarationStatement?t.visitVariableDeclarationStatement(this):t.visitChildren(this)}},Bt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}variableDeclaration_list(){return this.getTypedRuleContexts(pt)}variableDeclaration(t){return this.getTypedRuleContext(pt,t)}get ruleIndex(){return C.RULE_variableDeclarationList}enterRule(t){t.enterVariableDeclarationList&&t.enterVariableDeclarationList(this)}exitRule(t){t.exitVariableDeclarationList&&t.exitVariableDeclarationList(this)}accept(t){return t.visitVariableDeclarationList?t.visitVariableDeclarationList(this):t.visitChildren(this)}},$t=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier_list(){return this.getTypedRuleContexts(ye)}identifier(t){return this.getTypedRuleContext(ye,t)}get ruleIndex(){return C.RULE_identifierList}enterRule(t){t.enterIdentifierList&&t.enterIdentifierList(this)}exitRule(t){t.exitIdentifierList&&t.exitIdentifierList(this)}accept(t){return t.visitIdentifierList?t.visitIdentifierList(this):t.visitChildren(this)}},jt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}Int(){return this.getToken(C.Int,0)}Uint(){return this.getToken(C.Uint,0)}Byte(){return this.getToken(C.Byte,0)}Fixed(){return this.getToken(C.Fixed,0)}Ufixed(){return this.getToken(C.Ufixed,0)}get ruleIndex(){return C.RULE_elementaryTypeName}enterRule(t){t.enterElementaryTypeName&&t.enterElementaryTypeName(this)}exitRule(t){t.exitElementaryTypeName&&t.exitElementaryTypeName(this)}accept(t){return t.visitElementaryTypeName?t.visitElementaryTypeName(this):t.visitChildren(this)}},Gt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}typeName(){return this.getTypedRuleContext(dt,0)}expression_list(){return this.getTypedRuleContexts(Gt)}expression(t){return this.getTypedRuleContext(Gt,t)}primaryExpression(){return this.getTypedRuleContext(zt,0)}identifier(){return this.getTypedRuleContext(ye,0)}nameValueList(){return this.getTypedRuleContext(Wt,0)}functionCallArguments(){return this.getTypedRuleContext(Xt,0)}get ruleIndex(){return C.RULE_expression}enterRule(t){t.enterExpression&&t.enterExpression(this)}exitRule(t){t.exitExpression&&t.exitExpression(this)}accept(t){return t.visitExpression?t.visitExpression(this):t.visitChildren(this)}},zt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}BooleanLiteral(){return this.getToken(C.BooleanLiteral,0)}numberLiteral(){return this.getTypedRuleContext(fe,0)}hexLiteral(){return this.getTypedRuleContext(ge,0)}stringLiteral(){return this.getTypedRuleContext(Ee,0)}identifier(){return this.getTypedRuleContext(ye,0)}TypeKeyword(){return this.getToken(C.TypeKeyword,0)}PayableKeyword(){return this.getToken(C.PayableKeyword,0)}tupleExpression(){return this.getTypedRuleContext(xe,0)}typeName(){return this.getTypedRuleContext(dt,0)}get ruleIndex(){return C.RULE_primaryExpression}enterRule(t){t.enterPrimaryExpression&&t.enterPrimaryExpression(this)}exitRule(t){t.exitPrimaryExpression&&t.exitPrimaryExpression(this)}accept(t){return t.visitPrimaryExpression?t.visitPrimaryExpression(this):t.visitChildren(this)}},qt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression_list(){return this.getTypedRuleContexts(Gt)}expression(t){return this.getTypedRuleContext(Gt,t)}get ruleIndex(){return C.RULE_expressionList}enterRule(t){t.enterExpressionList&&t.enterExpressionList(this)}exitRule(t){t.exitExpressionList&&t.exitExpressionList(this)}accept(t){return t.visitExpressionList?t.visitExpressionList(this):t.visitChildren(this)}},Wt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}nameValue_list(){return this.getTypedRuleContexts(Yt)}nameValue(t){return this.getTypedRuleContext(Yt,t)}get ruleIndex(){return C.RULE_nameValueList}enterRule(t){t.enterNameValueList&&t.enterNameValueList(this)}exitRule(t){t.exitNameValueList&&t.exitNameValueList(this)}accept(t){return t.visitNameValueList?t.visitNameValueList(this):t.visitChildren(this)}},Yt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}expression(){return this.getTypedRuleContext(Gt,0)}get ruleIndex(){return C.RULE_nameValue}enterRule(t){t.enterNameValue&&t.enterNameValue(this)}exitRule(t){t.exitNameValue&&t.exitNameValue(this)}accept(t){return t.visitNameValue?t.visitNameValue(this):t.visitChildren(this)}},Xt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}nameValueList(){return this.getTypedRuleContext(Wt,0)}expressionList(){return this.getTypedRuleContext(qt,0)}get ruleIndex(){return C.RULE_functionCallArguments}enterRule(t){t.enterFunctionCallArguments&&t.enterFunctionCallArguments(this)}exitRule(t){t.exitFunctionCallArguments&&t.exitFunctionCallArguments(this)}accept(t){return t.visitFunctionCallArguments?t.visitFunctionCallArguments(this):t.visitChildren(this)}},Jt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression(){return this.getTypedRuleContext(Gt,0)}functionCallArguments(){return this.getTypedRuleContext(Xt,0)}get ruleIndex(){return C.RULE_functionCall}enterRule(t){t.enterFunctionCall&&t.enterFunctionCall(this)}exitRule(t){t.exitFunctionCall&&t.exitFunctionCall(this)}accept(t){return t.visitFunctionCall?t.visitFunctionCall(this):t.visitChildren(this)}},Qt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyItem_list(){return this.getTypedRuleContexts(Zt)}assemblyItem(t){return this.getTypedRuleContext(Zt,t)}get ruleIndex(){return C.RULE_assemblyBlock}enterRule(t){t.enterAssemblyBlock&&t.enterAssemblyBlock(this)}exitRule(t){t.exitAssemblyBlock&&t.exitAssemblyBlock(this)}accept(t){return t.visitAssemblyBlock?t.visitAssemblyBlock(this):t.visitChildren(this)}},Zt=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}assemblyBlock(){return this.getTypedRuleContext(Qt,0)}assemblyExpression(){return this.getTypedRuleContext(te,0)}assemblyLocalDefinition(){return this.getTypedRuleContext(se,0)}assemblyAssignment(){return this.getTypedRuleContext(re,0)}assemblyStackAssignment(){return this.getTypedRuleContext(oe,0)}labelDefinition(){return this.getTypedRuleContext(le,0)}assemblySwitch(){return this.getTypedRuleContext(he,0)}assemblyFunctionDefinition(){return this.getTypedRuleContext(ue,0)}assemblyFor(){return this.getTypedRuleContext(de,0)}assemblyIf(){return this.getTypedRuleContext(me,0)}BreakKeyword(){return this.getToken(C.BreakKeyword,0)}ContinueKeyword(){return this.getToken(C.ContinueKeyword,0)}LeaveKeyword(){return this.getToken(C.LeaveKeyword,0)}numberLiteral(){return this.getTypedRuleContext(fe,0)}stringLiteral(){return this.getTypedRuleContext(Ee,0)}hexLiteral(){return this.getTypedRuleContext(ge,0)}get ruleIndex(){return C.RULE_assemblyItem}enterRule(t){t.enterAssemblyItem&&t.enterAssemblyItem(this)}exitRule(t){t.exitAssemblyItem&&t.exitAssemblyItem(this)}accept(t){return t.visitAssemblyItem?t.visitAssemblyItem(this):t.visitChildren(this)}},te=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyCall(){return this.getTypedRuleContext(ie,0)}assemblyLiteral(){return this.getTypedRuleContext(_e,0)}assemblyMember(){return this.getTypedRuleContext(ee,0)}get ruleIndex(){return C.RULE_assemblyExpression}enterRule(t){t.enterAssemblyExpression&&t.enterAssemblyExpression(this)}exitRule(t){t.exitAssemblyExpression&&t.exitAssemblyExpression(this)}accept(t){return t.visitAssemblyExpression?t.visitAssemblyExpression(this):t.visitChildren(this)}},ee=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier_list(){return this.getTypedRuleContexts(ye)}identifier(t){return this.getTypedRuleContext(ye,t)}get ruleIndex(){return C.RULE_assemblyMember}enterRule(t){t.enterAssemblyMember&&t.enterAssemblyMember(this)}exitRule(t){t.exitAssemblyMember&&t.exitAssemblyMember(this)}accept(t){return t.visitAssemblyMember?t.visitAssemblyMember(this):t.visitChildren(this)}},ie=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}assemblyExpression_list(){return this.getTypedRuleContexts(te)}assemblyExpression(t){return this.getTypedRuleContext(te,t)}get ruleIndex(){return C.RULE_assemblyCall}enterRule(t){t.enterAssemblyCall&&t.enterAssemblyCall(this)}exitRule(t){t.exitAssemblyCall&&t.exitAssemblyCall(this)}accept(t){return t.visitAssemblyCall?t.visitAssemblyCall(this):t.visitChildren(this)}},se=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyIdentifierOrList(){return this.getTypedRuleContext(ne,0)}assemblyExpression(){return this.getTypedRuleContext(te,0)}get ruleIndex(){return C.RULE_assemblyLocalDefinition}enterRule(t){t.enterAssemblyLocalDefinition&&t.enterAssemblyLocalDefinition(this)}exitRule(t){t.exitAssemblyLocalDefinition&&t.exitAssemblyLocalDefinition(this)}accept(t){return t.visitAssemblyLocalDefinition?t.visitAssemblyLocalDefinition(this):t.visitChildren(this)}},re=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyIdentifierOrList(){return this.getTypedRuleContext(ne,0)}assemblyExpression(){return this.getTypedRuleContext(te,0)}get ruleIndex(){return C.RULE_assemblyAssignment}enterRule(t){t.enterAssemblyAssignment&&t.enterAssemblyAssignment(this)}exitRule(t){t.exitAssemblyAssignment&&t.exitAssemblyAssignment(this)}accept(t){return t.visitAssemblyAssignment?t.visitAssemblyAssignment(this):t.visitChildren(this)}},ne=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}assemblyMember(){return this.getTypedRuleContext(ee,0)}assemblyIdentifierList(){return this.getTypedRuleContext(ae,0)}get ruleIndex(){return C.RULE_assemblyIdentifierOrList}enterRule(t){t.enterAssemblyIdentifierOrList&&t.enterAssemblyIdentifierOrList(this)}exitRule(t){t.exitAssemblyIdentifierOrList&&t.exitAssemblyIdentifierOrList(this)}accept(t){return t.visitAssemblyIdentifierOrList?t.visitAssemblyIdentifierOrList(this):t.visitChildren(this)}},ae=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier_list(){return this.getTypedRuleContexts(ye)}identifier(t){return this.getTypedRuleContext(ye,t)}get ruleIndex(){return C.RULE_assemblyIdentifierList}enterRule(t){t.enterAssemblyIdentifierList&&t.enterAssemblyIdentifierList(this)}exitRule(t){t.exitAssemblyIdentifierList&&t.exitAssemblyIdentifierList(this)}accept(t){return t.visitAssemblyIdentifierList?t.visitAssemblyIdentifierList(this):t.visitChildren(this)}},oe=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyExpression(){return this.getTypedRuleContext(te,0)}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_assemblyStackAssignment}enterRule(t){t.enterAssemblyStackAssignment&&t.enterAssemblyStackAssignment(this)}exitRule(t){t.exitAssemblyStackAssignment&&t.exitAssemblyStackAssignment(this)}accept(t){return t.visitAssemblyStackAssignment?t.visitAssemblyStackAssignment(this):t.visitChildren(this)}},le=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}get ruleIndex(){return C.RULE_labelDefinition}enterRule(t){t.enterLabelDefinition&&t.enterLabelDefinition(this)}exitRule(t){t.exitLabelDefinition&&t.exitLabelDefinition(this)}accept(t){return t.visitLabelDefinition?t.visitLabelDefinition(this):t.visitChildren(this)}},he=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyExpression(){return this.getTypedRuleContext(te,0)}assemblyCase_list(){return this.getTypedRuleContexts(ce)}assemblyCase(t){return this.getTypedRuleContext(ce,t)}get ruleIndex(){return C.RULE_assemblySwitch}enterRule(t){t.enterAssemblySwitch&&t.enterAssemblySwitch(this)}exitRule(t){t.exitAssemblySwitch&&t.exitAssemblySwitch(this)}accept(t){return t.visitAssemblySwitch?t.visitAssemblySwitch(this):t.visitChildren(this)}},ce=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyLiteral(){return this.getTypedRuleContext(_e,0)}assemblyBlock(){return this.getTypedRuleContext(Qt,0)}get ruleIndex(){return C.RULE_assemblyCase}enterRule(t){t.enterAssemblyCase&&t.enterAssemblyCase(this)}exitRule(t){t.exitAssemblyCase&&t.exitAssemblyCase(this)}accept(t){return t.visitAssemblyCase?t.visitAssemblyCase(this):t.visitChildren(this)}},ue=class extends g{constructor(t,e,i){super(e,i),this.parser=t}identifier(){return this.getTypedRuleContext(ye,0)}assemblyBlock(){return this.getTypedRuleContext(Qt,0)}assemblyIdentifierList(){return this.getTypedRuleContext(ae,0)}assemblyFunctionReturns(){return this.getTypedRuleContext(pe,0)}get ruleIndex(){return C.RULE_assemblyFunctionDefinition}enterRule(t){t.enterAssemblyFunctionDefinition&&t.enterAssemblyFunctionDefinition(this)}exitRule(t){t.exitAssemblyFunctionDefinition&&t.exitAssemblyFunctionDefinition(this)}accept(t){return t.visitAssemblyFunctionDefinition?t.visitAssemblyFunctionDefinition(this):t.visitChildren(this)}},pe=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyIdentifierList(){return this.getTypedRuleContext(ae,0)}get ruleIndex(){return C.RULE_assemblyFunctionReturns}enterRule(t){t.enterAssemblyFunctionReturns&&t.enterAssemblyFunctionReturns(this)}exitRule(t){t.exitAssemblyFunctionReturns&&t.exitAssemblyFunctionReturns(this)}accept(t){return t.visitAssemblyFunctionReturns?t.visitAssemblyFunctionReturns(this):t.visitChildren(this)}},de=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyExpression_list(){return this.getTypedRuleContexts(te)}assemblyExpression(t){return this.getTypedRuleContext(te,t)}assemblyBlock_list(){return this.getTypedRuleContexts(Qt)}assemblyBlock(t){return this.getTypedRuleContext(Qt,t)}get ruleIndex(){return C.RULE_assemblyFor}enterRule(t){t.enterAssemblyFor&&t.enterAssemblyFor(this)}exitRule(t){t.exitAssemblyFor&&t.exitAssemblyFor(this)}accept(t){return t.visitAssemblyFor?t.visitAssemblyFor(this):t.visitChildren(this)}},me=class extends g{constructor(t,e,i){super(e,i),this.parser=t}assemblyExpression(){return this.getTypedRuleContext(te,0)}assemblyBlock(){return this.getTypedRuleContext(Qt,0)}get ruleIndex(){return C.RULE_assemblyIf}enterRule(t){t.enterAssemblyIf&&t.enterAssemblyIf(this)}exitRule(t){t.exitAssemblyIf&&t.exitAssemblyIf(this)}accept(t){return t.visitAssemblyIf?t.visitAssemblyIf(this):t.visitChildren(this)}},_e=class extends g{constructor(t,e,i){super(e,i),this.parser=t}stringLiteral(){return this.getTypedRuleContext(Ee,0)}DecimalNumber(){return this.getToken(C.DecimalNumber,0)}HexNumber(){return this.getToken(C.HexNumber,0)}hexLiteral(){return this.getTypedRuleContext(ge,0)}BooleanLiteral(){return this.getToken(C.BooleanLiteral,0)}get ruleIndex(){return C.RULE_assemblyLiteral}enterRule(t){t.enterAssemblyLiteral&&t.enterAssemblyLiteral(this)}exitRule(t){t.exitAssemblyLiteral&&t.exitAssemblyLiteral(this)}accept(t){return t.visitAssemblyLiteral?t.visitAssemblyLiteral(this):t.visitChildren(this)}},xe=class extends g{constructor(t,e,i){super(e,i),this.parser=t}expression_list(){return this.getTypedRuleContexts(Gt)}expression(t){return this.getTypedRuleContext(Gt,t)}get ruleIndex(){return C.RULE_tupleExpression}enterRule(t){t.enterTupleExpression&&t.enterTupleExpression(this)}exitRule(t){t.exitTupleExpression&&t.exitTupleExpression(this)}accept(t){return t.visitTupleExpression?t.visitTupleExpression(this):t.visitChildren(this)}},fe=class extends g{constructor(t,e,i){super(e,i),this.parser=t}DecimalNumber(){return this.getToken(C.DecimalNumber,0)}HexNumber(){return this.getToken(C.HexNumber,0)}NumberUnit(){return this.getToken(C.NumberUnit,0)}get ruleIndex(){return C.RULE_numberLiteral}enterRule(t){t.enterNumberLiteral&&t.enterNumberLiteral(this)}exitRule(t){t.exitNumberLiteral&&t.exitNumberLiteral(this)}accept(t){return t.visitNumberLiteral?t.visitNumberLiteral(this):t.visitChildren(this)}},ye=class extends g{constructor(t,e,i){super(e,i),this.parser=t}ReceiveKeyword(){return this.getToken(C.ReceiveKeyword,0)}GlobalKeyword(){return this.getToken(C.GlobalKeyword,0)}ConstructorKeyword(){return this.getToken(C.ConstructorKeyword,0)}PayableKeyword(){return this.getToken(C.PayableKeyword,0)}LeaveKeyword(){return this.getToken(C.LeaveKeyword,0)}Identifier(){return this.getToken(C.Identifier,0)}get ruleIndex(){return C.RULE_identifier}enterRule(t){t.enterIdentifier&&t.enterIdentifier(this)}exitRule(t){t.exitIdentifier&&t.exitIdentifier(this)}accept(t){return t.visitIdentifier?t.visitIdentifier(this):t.visitChildren(this)}},ge=class extends g{constructor(t,e,i){super(e,i),this.parser=t}HexLiteralFragment_list(){return this.getTokens(C.HexLiteralFragment)}HexLiteralFragment(t){return this.getToken(C.HexLiteralFragment,t)}get ruleIndex(){return C.RULE_hexLiteral}enterRule(t){t.enterHexLiteral&&t.enterHexLiteral(this)}exitRule(t){t.exitHexLiteral&&t.exitHexLiteral(this)}accept(t){return t.visitHexLiteral?t.visitHexLiteral(this):t.visitChildren(this)}},Te=class extends g{constructor(t,e,i){super(e,i),this.parser=t}userDefinedTypeName_list(){return this.getTypedRuleContexts(mt)}userDefinedTypeName(t){return this.getTypedRuleContext(mt,t)}get ruleIndex(){return C.RULE_overrideSpecifier}enterRule(t){t.enterOverrideSpecifier&&t.enterOverrideSpecifier(this)}exitRule(t){t.exitOverrideSpecifier&&t.exitOverrideSpecifier(this)}accept(t){return t.visitOverrideSpecifier?t.visitOverrideSpecifier(this):t.visitChildren(this)}},Ee=class extends g{constructor(t,e,i){super(e,i),this.parser=t}StringLiteralFragment_list(){return this.getTokens(C.StringLiteralFragment)}StringLiteralFragment(t){return this.getToken(C.StringLiteralFragment,t)}get ruleIndex(){return C.RULE_stringLiteral}enterRule(t){t.enterStringLiteral&&t.enterStringLiteral(this)}exitRule(t){t.exitStringLiteral&&t.exitStringLiteral(this)}accept(t){return t.visitStringLiteral?t.visitStringLiteral(this):t.visitChildren(this)}},Re=["SourceUnit","PragmaDirective","ImportDirective","ContractDefinition","InheritanceSpecifier","StateVariableDeclaration","UsingForDeclaration","StructDefinition","ModifierDefinition","ModifierInvocation","FunctionDefinition","EventDefinition","CustomErrorDefinition","RevertStatement","EnumValue","EnumDefinition","VariableDeclaration","UserDefinedTypeName","Mapping","ArrayTypeName","FunctionTypeName","Block","ExpressionStatement","IfStatement","WhileStatement","ForStatement","InlineAssemblyStatement","DoWhileStatement","ContinueStatement","Break","Continue","BreakStatement","ReturnStatement","EmitStatement","ThrowStatement","VariableDeclarationStatement","ElementaryTypeName","FunctionCall","AssemblyBlock","AssemblyCall","AssemblyLocalDefinition","AssemblyAssignment","AssemblyStackAssignment","LabelDefinition","AssemblySwitch","AssemblyCase","AssemblyFunctionDefinition","AssemblyFor","AssemblyIf","TupleExpression","NameValueExpression","BooleanLiteral","NumberLiteral","Identifier","BinaryOperation","UnaryOperation","NewExpression","Conditional","StringLiteral","HexLiteral","HexNumber","DecimalNumber","MemberAccess","IndexAccess","IndexRangeAccess","NameValueList","UncheckedStatement","TryStatement","CatchClause","FileLevelConstant","AssemblyMemberAccess","TypeDefinition"],ve=["+","-","*","/","**","%","<<",">>","&&","||","&","^","<",">","<=",">=","==","!=","=","^=","&=","<<=",">>=","+=","-=","*=","/=","%=","|","|="],be=["-","+","++","--","~","after","delete","!"],Le=class extends x{constructor(t){super(),this.options=t,this.result=null}defaultResult(){throw new Error("Unknown node")}aggregateResult(){return{type:""}}visitSourceUnit(t){const e={type:"SourceUnit",children:(t.children??[]).slice(0,-1).map((t=>this.visit(t)))},i=this._addMeta(e,t);return this.result=i,i}visitContractPart(t){return this.visit(t.getChild(0))}visitContractDefinition(t){const e=this._toText(t.identifier()),i=this._toText(t.getChild(0));this._currentContract=e;const s={type:"ContractDefinition",name:e,baseContracts:t.inheritanceSpecifier_list().map((t=>this.visitInheritanceSpecifier(t))),subNodes:t.contractPart_list().map((t=>this.visit(t))),kind:i};return this._addMeta(s,t)}visitStateVariableDeclaration(t){const e=this.visitTypeName(t.typeName()),i=t.identifier(),s=this._toText(i);let r=null;const n=t.expression();n&&(r=this.visitExpression(n));let a="default";t.InternalKeyword_list().length>0?a="internal":t.PublicKeyword_list().length>0?a="public":t.PrivateKeyword_list().length>0&&(a="private");let o,l=!1;t.ConstantKeyword_list().length>0&&(l=!0);const h=t.overrideSpecifier_list();o=0===h.length?null:h[0].userDefinedTypeName_list().map((t=>this.visitUserDefinedTypeName(t)));let c=!1;t.ImmutableKeyword_list().length>0&&(c=!0);const u={type:"VariableDeclaration",typeName:e,name:s,identifier:this.visitIdentifier(i),expression:r,visibility:a,isStateVar:!0,isDeclaredConst:l,isIndexed:!1,isImmutable:c,override:o,storageLocation:null},p={type:"StateVariableDeclaration",variables:[this._addMeta(u,t)],initialValue:r};return this._addMeta(p,t)}visitVariableDeclaration(t){let e=null;const i=t.storageLocation();i&&(e=this._toText(i));const s=t.identifier(),r={type:"VariableDeclaration",typeName:this.visitTypeName(t.typeName()),name:this._toText(s),identifier:this.visitIdentifier(s),storageLocation:e,isStateVar:!1,isIndexed:!1,expression:null};return this._addMeta(r,t)}visitVariableDeclarationStatement(t){let e=[];const i=t.variableDeclaration(),s=t.identifierList(),r=t.variableDeclarationList();i?e=[this.visitVariableDeclaration(i)]:s?e=this.buildIdentifierList(s):r&&(e=this.buildVariableDeclarationList(r));let n=null;const a=t.expression();a&&(n=this.visitExpression(a));const o={type:"VariableDeclarationStatement",variables:e,initialValue:n};return this._addMeta(o,t)}visitStatement(t){return this.visit(t.getChild(0))}visitSimpleStatement(t){return this.visit(t.getChild(0))}visitEventDefinition(t){const e=t.eventParameterList().eventParameter_list().map((t=>{const e=this.visitTypeName(t.typeName());let i=null;const s=t.identifier();s&&(i=this._toText(s));const r={type:"VariableDeclaration",typeName:e,name:i,identifier:s?this.visitIdentifier(s):null,isStateVar:!1,isIndexed:Boolean(t.IndexedKeyword()),storageLocation:null,expression:null};return this._addMeta(r,t)})),i={type:"EventDefinition",name:this._toText(t.identifier()),parameters:e,isAnonymous:Boolean(t.AnonymousKeyword())};return this._addMeta(i,t)}visitBlock(t){const e={type:"Block",statements:t.statement_list().map((t=>this.visitStatement(t)))};return this._addMeta(e,t)}visitParameter(t){let e=null;const i=t.storageLocation();i&&(e=this._toText(i));let s=null;const r=t.identifier();r&&(s=this._toText(r));const n={type:"VariableDeclaration",typeName:this.visitTypeName(t.typeName()),name:s,identifier:r?this.visitIdentifier(r):null,storageLocation:e,isStateVar:!1,isIndexed:!1,expression:null};return this._addMeta(n,t)}visitFunctionDefinition(t){let e=!1,i=!1,s=!1,r=!1,n=null,a=[],o=null,l="default",h=null;const c=t.block();c&&(h=this.visitBlock(c));const u=t.modifierList().modifierInvocation_list().map((t=>this.visitModifierInvocation(t)));let p=null;t.modifierList().stateMutability_list().length>0&&(p=this._stateMutabilityToText(t.modifierList().stateMutability(0)));const d=t.returnParameters();switch(this._toText(t.functionDescriptor().getChild(0))){case"constructor":a=t.parameterList().parameter_list().map((t=>this.visit(t))),l=t.modifierList().InternalKeyword_list().length>0?"internal":t.modifierList().PublicKeyword_list().length>0?"public":"default",e=!0;break;case"fallback":a=t.parameterList().parameter_list().map((t=>this.visit(t))),o=d?this.visitReturnParameters(d):null,l="external",i=!0;break;case"receive":l="external",s=!0;break;case"function":{const s=t.functionDescriptor().identifier();n=s?this._toText(s):"",a=t.parameterList().parameter_list().map((t=>this.visit(t))),o=d?this.visitReturnParameters(d):null,t.modifierList().ExternalKeyword_list().length>0?l="external":t.modifierList().InternalKeyword_list().length>0?l="internal":t.modifierList().PublicKeyword_list().length>0?l="public":t.modifierList().PrivateKeyword_list().length>0&&(l="private"),e=n===this._currentContract,i=""===n;break}}let m;t.modifierList().VirtualKeyword_list().length>0&&(r=!0);const _=t.modifierList().overrideSpecifier_list();m=0===_.length?null:_[0].userDefinedTypeName_list().map((t=>this.visitUserDefinedTypeName(t)));const x={type:"FunctionDefinition",name:n,parameters:a,returnParameters:o,body:h,visibility:l,modifiers:u,override:m,isConstructor:e,isReceiveEther:s,isFallback:i,isVirtual:r,stateMutability:p};return this._addMeta(x,t)}visitEnumDefinition(t){const e={type:"EnumDefinition",name:this._toText(t.identifier()),members:t.enumValue_list().map((t=>this.visitEnumValue(t)))};return this._addMeta(e,t)}visitEnumValue(t){const e={type:"EnumValue",name:this._toText(t.identifier())};return this._addMeta(e,t)}visitElementaryTypeName(t){const e={type:"ElementaryTypeName",name:this._toText(t),stateMutability:null};return this._addMeta(e,t)}visitIdentifier(t){const e={type:"Identifier",name:this._toText(t)};return this._addMeta(e,t)}visitTypeName(t){if(t.children&&t.children.length>2){let e=null;if(4===t.children.length){const i=t.expression();if(null==i)throw new Error("Assertion error: a typeName with 4 children should have an expression");e=this.visitExpression(i)}const i={type:"ArrayTypeName",baseTypeName:this.visitTypeName(t.typeName()),length:e};return this._addMeta(i,t)}if(2===t.children?.length){const e={type:"ElementaryTypeName",name:this._toText(t.getChild(0)),stateMutability:this._toText(t.getChild(1))};return this._addMeta(e,t)}if(t.elementaryTypeName())return this.visitElementaryTypeName(t.elementaryTypeName());if(t.userDefinedTypeName())return this.visitUserDefinedTypeName(t.userDefinedTypeName());if(t.mapping())return this.visitMapping(t.mapping());if(t.functionTypeName())return this.visitFunctionTypeName(t.functionTypeName());throw new Error("Assertion error: unhandled type name case")}visitUserDefinedTypeName(t){const e={type:"UserDefinedTypeName",namePath:this._toText(t)};return this._addMeta(e,t)}visitUsingForDeclaration(t){let e=null;const i=t.typeName();i&&(e=this.visitTypeName(i));const s=Boolean(t.GlobalKeyword()),r=t.usingForObject(),n=r.userDefinedTypeName();let a;if(n)a={type:"UsingForDeclaration",isGlobal:s,typeName:e,libraryName:this._toText(n),functions:[],operators:[]};else{const t=r.usingForObjectDirective_list(),i=[],n=[];for(const e of t){i.push(this._toText(e.userDefinedTypeName()));const t=e.userDefinableOperators();t?n.push(this._toText(t)):n.push(null)}a={type:"UsingForDeclaration",isGlobal:s,typeName:e,libraryName:null,functions:i,operators:n}}return this._addMeta(a,t)}visitPragmaDirective(t){const e=t.pragmaValue().version();let i=this._toText(t.pragmaValue());e?.children&&(i=e.children.map((t=>this._toText(t))).join(" "));const s={type:"PragmaDirective",name:this._toText(t.pragmaName()),value:i};return this._addMeta(s,t)}visitInheritanceSpecifier(t){const e=t.expressionList(),i=e?e.expression_list().map((t=>this.visitExpression(t))):[],s={type:"InheritanceSpecifier",baseName:this.visitUserDefinedTypeName(t.userDefinedTypeName()),arguments:i};return this._addMeta(s,t)}visitModifierInvocation(t){const e=t.expressionList();let i;i=null!=e?e.expression_list().map((t=>this.visit(t))):t.children&&t.children.length>1?[]:null;const s={type:"ModifierInvocation",name:this._toText(t.identifier()),arguments:i};return this._addMeta(s,t)}visitFunctionTypeName(t){const e=t.functionTypeParameterList(0).functionTypeParameter_list().map((t=>this.visitFunctionTypeParameter(t)));let i=[];t.functionTypeParameterList_list().length>1&&(i=t.functionTypeParameterList(1).functionTypeParameter_list().map((t=>this.visitFunctionTypeParameter(t))));let s="default";t.InternalKeyword_list().length>0?s="internal":t.ExternalKeyword_list().length>0&&(s="external");let r=null;t.stateMutability_list().length>0&&(r=this._toText(t.stateMutability(0)));const n={type:"FunctionTypeName",parameterTypes:e,returnTypes:i,visibility:s,stateMutability:r};return this._addMeta(n,t)}visitFunctionTypeParameter(t){let e=null;t.storageLocation()&&(e=this._toText(t.storageLocation()));const i={type:"VariableDeclaration",typeName:this.visitTypeName(t.typeName()),name:null,identifier:null,storageLocation:e,isStateVar:!1,isIndexed:!1,expression:null};return this._addMeta(i,t)}visitThrowStatement(t){return this._addMeta({type:"ThrowStatement"},t)}visitReturnStatement(t){let e=null;const i=t.expression();i&&(e=this.visitExpression(i));const s={type:"ReturnStatement",expression:e};return this._addMeta(s,t)}visitEmitStatement(t){const e={type:"EmitStatement",eventCall:this.visitFunctionCall(t.functionCall())};return this._addMeta(e,t)}visitCustomErrorDefinition(t){const e={type:"CustomErrorDefinition",name:this._toText(t.identifier()),parameters:this.visitParameterList(t.parameterList())};return this._addMeta(e,t)}visitTypeDefinition(t){const e={type:"TypeDefinition",name:this._toText(t.identifier()),definition:this.visitElementaryTypeName(t.elementaryTypeName())};return this._addMeta(e,t)}visitRevertStatement(t){const e={type:"RevertStatement",revertCall:this.visitFunctionCall(t.functionCall())};return this._addMeta(e,t)}visitFunctionCall(t){let e=[];const i=[],s=[],r=t.functionCallArguments(),n=r.expressionList(),a=r.nameValueList();if(n)e=n.expression_list().map((t=>this.visitExpression(t)));else if(a)for(const t of a.nameValue_list())e.push(this.visitExpression(t.expression())),i.push(this._toText(t.identifier())),s.push(this.visitIdentifier(t.identifier()));const o={type:"FunctionCall",expression:this.visitExpression(t.expression()),arguments:e,names:i,identifiers:s};return this._addMeta(o,t)}visitStructDefinition(t){const e={type:"StructDefinition",name:this._toText(t.identifier()),members:t.variableDeclaration_list().map((t=>this.visitVariableDeclaration(t)))};return this._addMeta(e,t)}visitWhileStatement(t){const e={type:"WhileStatement",condition:this.visitExpression(t.expression()),body:this.visitStatement(t.statement())};return this._addMeta(e,t)}visitDoWhileStatement(t){const e={type:"DoWhileStatement",condition:this.visitExpression(t.expression()),body:this.visitStatement(t.statement())};return this._addMeta(e,t)}visitIfStatement(t){const e=this.visitStatement(t.statement(0));let i=null;t.statement_list().length>1&&(i=this.visitStatement(t.statement(1)));const s={type:"IfStatement",condition:this.visitExpression(t.expression()),trueBody:e,falseBody:i};return this._addMeta(s,t)}visitTryStatement(t){let e=null;const i=t.returnParameters();i&&(e=this.visitReturnParameters(i));const s=t.catchClause_list().map((t=>this.visitCatchClause(t))),r={type:"TryStatement",expression:this.visitExpression(t.expression()),returnParameters:e,body:this.visitBlock(t.block()),catchClauses:s};return this._addMeta(r,t)}visitCatchClause(t){let e=null;if(t.parameterList()&&(e=this.visitParameterList(t.parameterList())),t.identifier()&&"Error"!==this._toText(t.identifier())&&"Panic"!==this._toText(t.identifier()))throw new Error('Expected "Error" or "Panic" identifier in catch clause');let i=null;const s=t.identifier();s&&(i=this._toText(s));const r={type:"CatchClause",isReasonStringType:"Error"===i,kind:i,parameters:e,body:this.visitBlock(t.block())};return this._addMeta(r,t)}visitExpressionStatement(t){if(!t)return null;const e={type:"ExpressionStatement",expression:this.visitExpression(t.expression())};return this._addMeta(e,t)}visitNumberLiteral(t){const e=this._toText(t.getChild(0));let i=null;2===t.children?.length&&(i=this._toText(t.getChild(1)));const s={type:"NumberLiteral",number:e,subdenomination:i};return this._addMeta(s,t)}visitMappingKey(t){if(t.elementaryTypeName())return this.visitElementaryTypeName(t.elementaryTypeName());if(t.userDefinedTypeName())return this.visitUserDefinedTypeName(t.userDefinedTypeName());throw new Error("Expected MappingKey to have either elementaryTypeName or userDefinedTypeName")}visitMapping(t){const e=t.mappingKeyName(),i=t.mappingValueName(),s={type:"Mapping",keyType:this.visitMappingKey(t.mappingKey()),keyName:e?this.visitIdentifier(e.identifier()):null,valueType:this.visitTypeName(t.typeName()),valueName:i?this.visitIdentifier(i.identifier()):null};return this._addMeta(s,t)}visitModifierDefinition(t){let e=null;t.parameterList()&&(e=this.visitParameterList(t.parameterList()));let i,s=!1;t.VirtualKeyword_list().length>0&&(s=!0);const r=t.overrideSpecifier_list();i=0===r.length?null:r[0].userDefinedTypeName_list().map((t=>this.visitUserDefinedTypeName(t)));let n=null;const a=t.block();a&&(n=this.visitBlock(a));const o={type:"ModifierDefinition",name:this._toText(t.identifier()),parameters:e,body:n,isVirtual:s,override:i};return this._addMeta(o,t)}visitUncheckedStatement(t){const e={type:"UncheckedStatement",block:this.visitBlock(t.block())};return this._addMeta(e,t)}visitExpression(t){let e;switch(t.children.length){case 1:{const e=t.primaryExpression();if(null==e)throw new Error("Assertion error: primary expression should exist when children length is 1");return this.visitPrimaryExpression(e)}case 2:if(e=this._toText(t.getChild(0)),"new"===e){const e={type:"NewExpression",typeName:this.visitTypeName(t.typeName())};return this._addMeta(e,t)}if(be.includes(e)){const i={type:"UnaryOperation",operator:e,subExpression:this.visitExpression(t.expression(0)),isPrefix:!0};return this._addMeta(i,t)}if(e=this._toText(t.getChild(1)),["++","--"].includes(e)){const i={type:"UnaryOperation",operator:e,subExpression:this.visitExpression(t.expression(0)),isPrefix:!1};return this._addMeta(i,t)}break;case 3:if("("===this._toText(t.getChild(0))&&")"===this._toText(t.getChild(2))){const e={type:"TupleExpression",components:[this.visitExpression(t.expression(0))],isArray:!1};return this._addMeta(e,t)}if(e=this._toText(t.getChild(1)),"."===e){const e={type:"MemberAccess",expression:this.visitExpression(t.expression(0)),memberName:this._toText(t.identifier())};return this._addMeta(e,t)}if(function(t){return ve.includes(t)}(e)){const i={type:"BinaryOperation",operator:e,left:this.visitExpression(t.expression(0)),right:this.visitExpression(t.expression(1))};return this._addMeta(i,t)}break;case 4:if("("===this._toText(t.getChild(1))&&")"===this._toText(t.getChild(3))){let e=[];const i=[],s=[],r=t.functionCallArguments();if(r.expressionList())e=r.expressionList().expression_list().map((t=>this.visitExpression(t)));else if(r.nameValueList())for(const t of r.nameValueList().nameValue_list())e.push(this.visitExpression(t.expression())),i.push(this._toText(t.identifier())),s.push(this.visitIdentifier(t.identifier()));const n={type:"FunctionCall",expression:this.visitExpression(t.expression(0)),arguments:e,names:i,identifiers:s};return this._addMeta(n,t)}if("["===this._toText(t.getChild(1))&&"]"===this._toText(t.getChild(3))){if(":"===t.getChild(2).getText()){const e={type:"IndexRangeAccess",base:this.visitExpression(t.expression(0))};return this._addMeta(e,t)}const e={type:"IndexAccess",base:this.visitExpression(t.expression(0)),index:this.visitExpression(t.expression(1))};return this._addMeta(e,t)}if("{"===this._toText(t.getChild(1))&&"}"===this._toText(t.getChild(3))){const e={type:"NameValueExpression",expression:this.visitExpression(t.expression(0)),arguments:this.visitNameValueList(t.nameValueList())};return this._addMeta(e,t)}break;case 5:if("?"===this._toText(t.getChild(1))&&":"===this._toText(t.getChild(3))){const e={type:"Conditional",condition:this.visitExpression(t.expression(0)),trueExpression:this.visitExpression(t.expression(1)),falseExpression:this.visitExpression(t.expression(2))};return this._addMeta(e,t)}if("["===this._toText(t.getChild(1))&&":"===this._toText(t.getChild(2))&&"]"===this._toText(t.getChild(4))){const e={type:"IndexRangeAccess",base:this.visitExpression(t.expression(0)),indexEnd:this.visitExpression(t.expression(1))};return this._addMeta(e,t)}if("["===this._toText(t.getChild(1))&&":"===this._toText(t.getChild(3))&&"]"===this._toText(t.getChild(4))){const e={type:"IndexRangeAccess",base:this.visitExpression(t.expression(0)),indexStart:this.visitExpression(t.expression(1))};return this._addMeta(e,t)}break;case 6:if("["===this._toText(t.getChild(1))&&":"===this._toText(t.getChild(3))&&"]"===this._toText(t.getChild(5))){const e={type:"IndexRangeAccess",base:this.visitExpression(t.expression(0)),indexStart:this.visitExpression(t.expression(1)),indexEnd:this.visitExpression(t.expression(2))};return this._addMeta(e,t)}}throw new Error("Unrecognized expression")}visitNameValueList(t){const e=[],i=[],s=[];for(const r of t.nameValue_list())e.push(this._toText(r.identifier())),i.push(this.visitIdentifier(r.identifier())),s.push(this.visitExpression(r.expression()));const r={type:"NameValueList",names:e,identifiers:i,arguments:s};return this._addMeta(r,t)}visitFileLevelConstant(t){const e={type:"FileLevelConstant",typeName:this.visitTypeName(t.typeName()),name:this._toText(t.identifier()),initialValue:this.visitExpression(t.expression()),isDeclaredConst:!0,isImmutable:!1};return this._addMeta(e,t)}visitForStatement(t){let e=this.visitExpressionStatement(t.expressionStatement());e&&(e=e.expression);const i={type:"ForStatement",initExpression:t.simpleStatement()?this.visitSimpleStatement(t.simpleStatement()):null,conditionExpression:e,loopExpression:{type:"ExpressionStatement",expression:t.expression()?this.visitExpression(t.expression()):null},body:this.visitStatement(t.statement())};return this._addMeta(i,t)}visitHexLiteral(t){const e=t.HexLiteralFragment_list().map((t=>this._toText(t))).map((t=>t.substring(4,t.length-1))),i={type:"HexLiteral",value:e.join(""),parts:e};return this._addMeta(i,t)}visitPrimaryExpression(t){if(t.BooleanLiteral()){const e={type:"BooleanLiteral",value:"true"===this._toText(t.BooleanLiteral())};return this._addMeta(e,t)}if(t.hexLiteral())return this.visitHexLiteral(t.hexLiteral());if(t.stringLiteral()){const e=t.stringLiteral().StringLiteralFragment_list().map((t=>{let e=this._toText(t);const i="unicode"===e.slice(0,7);i&&(e=e.slice(7));const s="'"===e[0],r=e.substring(1,e.length-1);return{value:s?r.replace(new RegExp("\\\\'","g"),"'"):r.replace(new RegExp('\\\\"',"g"),'"'),isUnicode:i}})),i=e.map((t=>t.value)),s={type:"StringLiteral",value:i.join(""),parts:i,isUnicode:e.map((t=>t.isUnicode))};return this._addMeta(s,t)}if(t.numberLiteral())return this.visitNumberLiteral(t.numberLiteral());if(t.TypeKeyword()){const e={type:"Identifier",name:"type"};return this._addMeta(e,t)}return t.typeName()?this.visitTypeName(t.typeName()):this.visit(t.getChild(0))}visitTupleExpression(t){const e=t.children.slice(1,-1),i={type:"TupleExpression",components:this._mapCommasToNulls(e).map((t=>null===t?null:this.visit(t))),isArray:"["===this._toText(t.getChild(0))};return this._addMeta(i,t)}buildIdentifierList(t){const e=t.children.slice(1,-1),i=t.identifier_list();let s=0;return this._mapCommasToNulls(e).map((t=>{if(null===t)return null;const e=i[s];s++;const r={type:"VariableDeclaration",name:this._toText(e),identifier:this.visitIdentifier(e),isStateVar:!1,isIndexed:!1,typeName:null,storageLocation:null,expression:null};return this._addMeta(r,e)}))}buildVariableDeclarationList(t){const e=t.variableDeclaration_list();let i=0;return this._mapCommasToNulls(t.children??[]).map((t=>{if(!t)return null;const s=e[i];i++;let r=null;s.storageLocation()&&(r=this._toText(s.storageLocation()));const n=s.identifier(),a={type:"VariableDeclaration",name:this._toText(n),identifier:this.visitIdentifier(n),typeName:this.visitTypeName(s.typeName()),storageLocation:r,isStateVar:!1,isIndexed:!1,expression:null};return this._addMeta(a,s)}))}visitImportDirective(t){const e=this._toText(t.importPath());let i=null,s=null,r=null,n=null;if(t.importDeclaration_list().length>0)r=t.importDeclaration_list().map((t=>{const e=this._toText(t.identifier(0));let i=null;return t.identifier_list().length>1&&(i=this._toText(t.identifier(1))),[e,i]})),n=t.importDeclaration_list().map((t=>{const e=this.visitIdentifier(t.identifier(0));let i=null;return t.identifier_list().length>1&&(i=this.visitIdentifier(t.identifier(1))),[e,i]}));else{const e=t.identifier_list();if(0===e.length);else if(1===e.length){const e=t.identifier(0);i=this._toText(e),s=this.visitIdentifier(e)}else{if(2!==e.length)throw new Error("Assertion error: an import should have one or two identifiers");{const e=t.identifier(1);i=this._toText(e),s=this.visitIdentifier(e)}}}const a=e.substring(1,e.length-1),o={type:"StringLiteral",value:a,parts:[a],isUnicode:[!1]},l={type:"ImportDirective",path:a,pathLiteral:this._addMeta(o,t.importPath()),unitAlias:i,unitAliasIdentifier:s,symbolAliases:r,symbolAliasesIdentifiers:n};return this._addMeta(l,t)}buildEventParameterList(t){return t.eventParameter_list().map((t=>{const e=this.visit(t.typeName()),i=t.identifier();return{type:"VariableDeclaration",typeName:e,name:i?this._toText(i):null,isStateVar:!1,isIndexed:!!t.IndexedKeyword()}}))}visitReturnParameters(t){return this.visitParameterList(t.parameterList())}visitParameterList(t){return t.parameter_list().map((t=>this.visitParameter(t)))}visitInlineAssemblyStatement(t){let e=null;t.StringLiteralFragment()&&(e=this._toText(t.StringLiteralFragment()),e=e.substring(1,e.length-1));const i=[],s=t.inlineAssemblyStatementFlag();if(s){const t=this._toText(s.stringLiteral());i.push(t.slice(1,t.length-1))}const r={type:"InlineAssemblyStatement",language:e,flags:i,body:this.visitAssemblyBlock(t.assemblyBlock())};return this._addMeta(r,t)}visitAssemblyBlock(t){const e={type:"AssemblyBlock",operations:t.assemblyItem_list().map((t=>this.visitAssemblyItem(t)))};return this._addMeta(e,t)}visitAssemblyItem(t){let e;if(t.hexLiteral())return this.visitHexLiteral(t.hexLiteral());if(t.stringLiteral()){e=this._toText(t.stringLiteral());const i=e.substring(1,e.length-1),s={type:"StringLiteral",value:i,parts:[i],isUnicode:[!1]};return this._addMeta(s,t)}if(t.BreakKeyword()){const e={type:"Break"};return this._addMeta(e,t)}if(t.ContinueKeyword()){const e={type:"Continue"};return this._addMeta(e,t)}return this.visit(t.getChild(0))}visitAssemblyExpression(t){return this.visit(t.getChild(0))}visitAssemblyCall(t){const e={type:"AssemblyCall",functionName:this._toText(t.getChild(0)),arguments:t.assemblyExpression_list().map((t=>this.visitAssemblyExpression(t)))};return this._addMeta(e,t)}visitAssemblyLiteral(t){let e;if(t.stringLiteral()){e=this._toText(t);const i=e.substring(1,e.length-1),s={type:"StringLiteral",value:i,parts:[i],isUnicode:[!1]};return this._addMeta(s,t)}if(t.BooleanLiteral()){const e={type:"BooleanLiteral",value:"true"===this._toText(t.BooleanLiteral())};return this._addMeta(e,t)}if(t.DecimalNumber()){const e={type:"DecimalNumber",value:this._toText(t)};return this._addMeta(e,t)}if(t.HexNumber()){const e={type:"HexNumber",value:this._toText(t)};return this._addMeta(e,t)}if(t.hexLiteral())return this.visitHexLiteral(t.hexLiteral());throw new Error("Should never reach here")}visitAssemblySwitch(t){const e={type:"AssemblySwitch",expression:this.visitAssemblyExpression(t.assemblyExpression()),cases:t.assemblyCase_list().map((t=>this.visitAssemblyCase(t)))};return this._addMeta(e,t)}visitAssemblyCase(t){let e=null;"case"===this._toText(t.getChild(0))&&(e=this.visitAssemblyLiteral(t.assemblyLiteral()));const i={type:"AssemblyCase",block:this.visitAssemblyBlock(t.assemblyBlock()),value:e,default:null===e};return this._addMeta(i,t)}visitAssemblyLocalDefinition(t){const e=t.assemblyIdentifierOrList();let i;i=e.identifier()?[this.visitIdentifier(e.identifier())]:e.assemblyMember()?[this.visitAssemblyMember(e.assemblyMember())]:e.assemblyIdentifierList().identifier_list().map((t=>this.visitIdentifier(t)));let s=null;t.assemblyExpression()&&(s=this.visitAssemblyExpression(t.assemblyExpression()));const r={type:"AssemblyLocalDefinition",names:i,expression:s};return this._addMeta(r,t)}visitAssemblyFunctionDefinition(t){const e=t.assemblyIdentifierList(),i=e?e.identifier_list().map((t=>this.visitIdentifier(t))):[],s=t.assemblyFunctionReturns(),r=s?s.assemblyIdentifierList().identifier_list().map((t=>this.visitIdentifier(t))):[],n={type:"AssemblyFunctionDefinition",name:this._toText(t.identifier()),arguments:i,returnArguments:r,body:this.visitAssemblyBlock(t.assemblyBlock())};return this._addMeta(n,t)}visitAssemblyAssignment(t){const e=t.assemblyIdentifierOrList();let i;i=e.identifier()?[this.visitIdentifier(e.identifier())]:e.assemblyMember()?[this.visitAssemblyMember(e.assemblyMember())]:e.assemblyIdentifierList().identifier_list().map((t=>this.visitIdentifier(t)));const s={type:"AssemblyAssignment",names:i,expression:this.visitAssemblyExpression(t.assemblyExpression())};return this._addMeta(s,t)}visitAssemblyMember(t){const[e,i]=t.identifier_list(),s={type:"AssemblyMemberAccess",expression:this.visitIdentifier(e),memberName:this.visitIdentifier(i)};return this._addMeta(s,t)}visitLabelDefinition(t){const e={type:"LabelDefinition",name:this._toText(t.identifier())};return this._addMeta(e,t)}visitAssemblyStackAssignment(t){const e={type:"AssemblyStackAssignment",name:this._toText(t.identifier()),expression:this.visitAssemblyExpression(t.assemblyExpression())};return this._addMeta(e,t)}visitAssemblyFor(t){const e={type:"AssemblyFor",pre:this.visit(t.getChild(1)),condition:this.visit(t.getChild(2)),post:this.visit(t.getChild(3)),body:this.visit(t.getChild(4))};return this._addMeta(e,t)}visitAssemblyIf(t){const e={type:"AssemblyIf",condition:this.visitAssemblyExpression(t.assemblyExpression()),body:this.visitAssemblyBlock(t.assemblyBlock())};return this._addMeta(e,t)}visitContinueStatement(t){return this._addMeta({type:"ContinueStatement"},t)}visitBreakStatement(t){return this._addMeta({type:"BreakStatement"},t)}_toText(t){const e=t.getText();if(null==e)throw new Error("Assertion error: text should never be undefined");return e}_stateMutabilityToText(t){if(t.PureKeyword())return"pure";if(t.ConstantKeyword())return"constant";if(t.PayableKeyword())return"payable";if(t.ViewKeyword())return"view";throw new Error("Assertion error: non-exhaustive stateMutability check")}_loc(t){return{start:{line:t.start.line,column:t.start.column},end:{line:t.stop?t.stop.line:t.start.line,column:t.stop?t.stop.column:t.start.column}}}_range(t){return[t.start.start,t.stop?.stop??t.start.start]}_addMeta(t,e){const i={type:t.type};return!0===this.options.loc&&(t.loc=this._loc(e)),!0===this.options.range&&(t.range=this._range(e)),{...i,...t}}_mapCommasToNulls(t){if(0===t.length)return[];const e=[];let i=!0;for(const s of t)if(i)","===this._toText(s)?e.push(null):(e.push(s),i=!1);else{if(","!==this._toText(s))throw new Error("expected comma");i=!0}return i&&e.push(null),e}},Se=class extends u{constructor(){super(),this._errors=[]}syntaxError(t,e,i,s,r){this._errors.push({message:r,line:i,column:s})}getErrors(){return this._errors}hasErrors(){return this._errors.length>0}},Ce={1:"pragma",2:";",3:"*",4:"||",5:"^",6:"~",7:">=",8:">",9:"<",10:"<=",11:"=",12:"as",13:"import",14:"from",15:"{",16:",",17:"}",18:"abstract",19:"contract",20:"interface",21:"library",22:"is",23:"(",24:")",25:"error",26:"using",27:"for",28:"|",29:"&",30:"+",31:"-",32:"/",33:"%",34:"==",35:"!=",36:"struct",37:"modifier",38:"function",39:"returns",40:"event",41:"enum",42:"[",43:"]",44:"address",45:".",46:"mapping",47:"=>",48:"memory",49:"storage",50:"calldata",51:"if",52:"else",53:"try",54:"catch",55:"while",56:"unchecked",57:"assembly",58:"do",59:"return",60:"throw",61:"emit",62:"revert",63:"var",64:"bool",65:"string",66:"byte",67:"++",68:"--",69:"new",70:":",71:"delete",72:"!",73:"**",74:"<<",75:">>",76:"&&",77:"?",78:"|=",79:"^=",80:"&=",81:"<<=",82:">>=",83:"+=",84:"-=",85:"*=",86:"/=",87:"%=",88:"let",89:":=",90:"=:",91:"switch",92:"case",93:"default",94:"->",95:"callback",96:"override",97:"Int",98:"Uint",99:"Byte",100:"Fixed",101:"Ufixed",102:"BooleanLiteral",103:"DecimalNumber",104:"HexNumber",105:"NumberUnit",106:"HexLiteralFragment",107:"ReservedKeyword",108:"anonymous",109:"break",110:"constant",111:"immutable",112:"continue",113:"leave",114:"external",115:"indexed",116:"internal",117:"payable",118:"private",119:"public",120:"virtual",121:"pure",122:"type",123:"view",124:"global",125:"constructor",126:"fallback",127:"receive",128:"Identifier",129:"StringLiteralFragment",130:"VersionLiteral",131:"WS",132:"COMMENT",133:"LINE_COMMENT"},Ae=["var","bool","address","string","Int","Uint","Byte","Fixed","UFixed"];function we(t){return[t.start,t.stop+1]}function Ne(t){const e=(t.text??"").split(/\r?\n/),i=e.length-1;return{start:{line:t.line,column:t.column},end:{line:t.line+i,column:e[i].length+(0===i?t.column:0)}}}function Ie(t,e){return t.map((t=>{var i;const s={type:"Identifier"===(i=Ce[t.type.toString()])||"from"===i?"Identifier":"TrueLiteral"===i||"FalseLiteral"===i?"Boolean":"VersionLiteral"===i?"Version":"StringLiteral"===i?"String":Ae.includes(i)?"Type":"NumberUnit"===i?"Subdenomination":"DecimalNumber"===i?"Numeric":"HexLiteral"===i?"Hex":"ReservedKeyword"===i?"Reserved":/^\W+$/.test(i)?"Punctuator":"Keyword",value:t.text};return!0===e.range&&(s.range=we(t)),!0===e.loc&&(s.loc=Ne(t)),s}))}var ke=class extends Error{constructor(t){super();const{message:e,line:i,column:s}=t.errors[0];this.message=`${e} (${i}:${s})`,this.errors=t.errors,void 0!==Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack}};function De(t,e={}){const i=new l(t);return Ie(new L(i).getAllTokens(),e)}function Oe(t,e={}){const i=new l(t),s=new L(i),r=new h(s),n=new A(r),a=new Se;s.removeErrorListeners(),s.addErrorListener(a),n.removeErrorListeners(),n.addErrorListener(a),n.buildParseTrees=!0;const o=n.sourceUnit(),c=new Le(e);c.visit(o);const u=c.result;if(null===u)throw new Error("ast should never be null");if(!0===e.tokens&&(u.tokens=Ie(r.tokens,e)),!0===e.comments&&(u.comments=function(t,e,i){return t.filter((t=>t.channel===e)).map((t=>{const e=t.text.startsWith("//")?{type:"LineComment",value:t.text.slice(2)}:{type:"BlockComment",value:t.text.slice(2,-2)};return!0===i.range&&(e.range=we(t)),!0===i.loc&&(e.loc=Ne(t)),e}))}(r.tokens,s.channelNames.indexOf("HIDDEN"),e)),a.hasErrors()){if(!0!==e.tolerant)throw new ke({errors:a.getErrors()});u.errors=a.getErrors()}return u}function Pe(t,e,i){if(Array.isArray(t)&&t.forEach((t=>Pe(t,e,i))),!function(t){if("object"!=typeof t||null===t)return!1;const e=t;return!(!Object.prototype.hasOwnProperty.call(e,"type")||"string"!=typeof e.type)&&Re.includes(e.type)}(t))return;let s=!0;if(void 0!==e[t.type]&&(s=e[t.type](t,i)),!1===s)return;for(const i in t)Object.prototype.hasOwnProperty.call(t,i)&&Pe(t[i],e,t);const r=t.type+":exit";void 0!==e[r]&&e[r](t,i)}return e})();return t},t.exports=s()},904:(t,e,i)=>{const s=Symbol("SemVer ANY");class r{static get ANY(){return s}constructor(t,e){if(e=n(e),t instanceof r){if(t.loose===!!e.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),h("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===s?this.value="":this.value=this.operator+this.semver.version,h("comp",this)}parse(t){const e=this.options.loose?a[o.COMPARATORLOOSE]:a[o.COMPARATOR],i=t.match(e);if(!i)throw new TypeError(`Invalid comparator: ${t}`);this.operator=void 0!==i[1]?i[1]:"","="===this.operator&&(this.operator=""),i[2]?this.semver=new c(i[2],this.options.loose):this.semver=s}toString(){return this.value}test(t){if(h("Comparator.test",t,this.options.loose),this.semver===s||t===s)return!0;if("string"==typeof t)try{t=new c(t,this.options)}catch(t){return!1}return l(t,this.operator,this.semver,this.options)}intersects(t,e){if(!(t instanceof r))throw new TypeError("a Comparator is required");return""===this.operator?""===this.value||new u(t.value,e).test(this.value):""===t.operator?""===t.value||new u(this.value,e).test(t.semver):!((e=n(e)).includePrerelease&&("<0.0.0-0"===this.value||"<0.0.0-0"===t.value)||!e.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))||(!this.operator.startsWith(">")||!t.operator.startsWith(">"))&&(!this.operator.startsWith("<")||!t.operator.startsWith("<"))&&(this.semver.version!==t.semver.version||!this.operator.includes("=")||!t.operator.includes("="))&&!(l(this.semver,"<",t.semver,e)&&this.operator.startsWith(">")&&t.operator.startsWith("<"))&&!(l(this.semver,">",t.semver,e)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}}t.exports=r;const n=i(587),{safeRe:a,t:o}=i(718),l=i(111),h=i(272),c=i(908),u=i(311)},311:(t,e,i)=>{const s=/\s+/g;class r{constructor(t,e){if(e=a(e),t instanceof r)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new r(t.raw,e);if(t instanceof o)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t.trim().replace(s," "),this.set=this.raw.split("||").map((t=>this.parseRange(t.trim()))).filter((t=>t.length)),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const t=this.set[0];if(this.set=this.set.filter((t=>!f(t[0]))),0===this.set.length)this.set=[t];else if(this.set.length>1)for(const t of this.set)if(1===t.length&&y(t[0])){this.set=[t];break}}this.formatted=void 0}get range(){if(void 0===this.formatted){this.formatted="";for(let t=0;t0&&(this.formatted+="||");const e=this.set[t];for(let t=0;t0&&(this.formatted+=" "),this.formatted+=e[t].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){const e=((this.options.includePrerelease&&_)|(this.options.loose&&x))+":"+t,i=n.get(e);if(i)return i;const s=this.options.loose,r=s?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];t=t.replace(r,N(this.options.includePrerelease)),l("hyphen replace",t),t=t.replace(c[u.COMPARATORTRIM],p),l("comparator trim",t),t=t.replace(c[u.TILDETRIM],d),l("tilde trim",t),t=t.replace(c[u.CARETTRIM],m),l("caret trim",t);let a=t.split(" ").map((t=>T(t,this.options))).join(" ").split(/\s+/).map((t=>w(t,this.options)));s&&(a=a.filter((t=>(l("loose invalid filter",t,this.options),!!t.match(c[u.COMPARATORLOOSE]))))),l("range list",a);const h=new Map,y=a.map((t=>new o(t,this.options)));for(const t of y){if(f(t))return[t];h.set(t.value,t)}h.size>1&&h.has("")&&h.delete("");const g=[...h.values()];return n.set(e,g),g}intersects(t,e){if(!(t instanceof r))throw new TypeError("a Range is required");return this.set.some((i=>g(i,e)&&t.set.some((t=>g(t,e)&&i.every((i=>t.every((t=>i.intersects(t,e)))))))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new h(t,this.options)}catch(t){return!1}for(let e=0;e"<0.0.0-0"===t.value,y=t=>""===t.value,g=(t,e)=>{let i=!0;const s=t.slice();let r=s.pop();for(;i&&s.length;)i=s.every((t=>r.intersects(t,e))),r=s.pop();return i},T=(t,e)=>(l("comp",t,e),t=b(t,e),l("caret",t),t=R(t,e),l("tildes",t),t=S(t,e),l("xrange",t),t=A(t,e),l("stars",t),t),E=t=>!t||"x"===t.toLowerCase()||"*"===t,R=(t,e)=>t.trim().split(/\s+/).map((t=>v(t,e))).join(" "),v=(t,e)=>{const i=e.loose?c[u.TILDELOOSE]:c[u.TILDE];return t.replace(i,((e,i,s,r,n)=>{let a;return l("tilde",t,e,i,s,r,n),E(i)?a="":E(s)?a=`>=${i}.0.0 <${+i+1}.0.0-0`:E(r)?a=`>=${i}.${s}.0 <${i}.${+s+1}.0-0`:n?(l("replaceTilde pr",n),a=`>=${i}.${s}.${r}-${n} <${i}.${+s+1}.0-0`):a=`>=${i}.${s}.${r} <${i}.${+s+1}.0-0`,l("tilde return",a),a}))},b=(t,e)=>t.trim().split(/\s+/).map((t=>L(t,e))).join(" "),L=(t,e)=>{l("caret",t,e);const i=e.loose?c[u.CARETLOOSE]:c[u.CARET],s=e.includePrerelease?"-0":"";return t.replace(i,((e,i,r,n,a)=>{let o;return l("caret",t,e,i,r,n,a),E(i)?o="":E(r)?o=`>=${i}.0.0${s} <${+i+1}.0.0-0`:E(n)?o="0"===i?`>=${i}.${r}.0${s} <${i}.${+r+1}.0-0`:`>=${i}.${r}.0${s} <${+i+1}.0.0-0`:a?(l("replaceCaret pr",a),o="0"===i?"0"===r?`>=${i}.${r}.${n}-${a} <${i}.${r}.${+n+1}-0`:`>=${i}.${r}.${n}-${a} <${i}.${+r+1}.0-0`:`>=${i}.${r}.${n}-${a} <${+i+1}.0.0-0`):(l("no pr"),o="0"===i?"0"===r?`>=${i}.${r}.${n}${s} <${i}.${r}.${+n+1}-0`:`>=${i}.${r}.${n}${s} <${i}.${+r+1}.0-0`:`>=${i}.${r}.${n} <${+i+1}.0.0-0`),l("caret return",o),o}))},S=(t,e)=>(l("replaceXRanges",t,e),t.split(/\s+/).map((t=>C(t,e))).join(" ")),C=(t,e)=>{t=t.trim();const i=e.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return t.replace(i,((i,s,r,n,a,o)=>{l("xRange",t,i,s,r,n,a,o);const h=E(r),c=h||E(n),u=c||E(a),p=u;return"="===s&&p&&(s=""),o=e.includePrerelease?"-0":"",h?i=">"===s||"<"===s?"<0.0.0-0":"*":s&&p?(c&&(n=0),a=0,">"===s?(s=">=",c?(r=+r+1,n=0,a=0):(n=+n+1,a=0)):"<="===s&&(s="<",c?r=+r+1:n=+n+1),"<"===s&&(o="-0"),i=`${s+r}.${n}.${a}${o}`):c?i=`>=${r}.0.0${o} <${+r+1}.0.0-0`:u&&(i=`>=${r}.${n}.0${o} <${r}.${+n+1}.0-0`),l("xRange return",i),i}))},A=(t,e)=>(l("replaceStars",t,e),t.trim().replace(c[u.STAR],"")),w=(t,e)=>(l("replaceGTE0",t,e),t.trim().replace(c[e.includePrerelease?u.GTE0PRE:u.GTE0],"")),N=t=>(e,i,s,r,n,a,o,l,h,c,u,p)=>`${i=E(s)?"":E(r)?`>=${s}.0.0${t?"-0":""}`:E(n)?`>=${s}.${r}.0${t?"-0":""}`:a?`>=${i}`:`>=${i}${t?"-0":""}`} ${l=E(h)?"":E(c)?`<${+h+1}.0.0-0`:E(u)?`<${h}.${+c+1}.0-0`:p?`<=${h}.${c}.${u}-${p}`:t?`<${h}.${c}.${+u+1}-0`:`<=${l}`}`.trim(),I=(t,e,i)=>{for(let i=0;i0){const s=t[i].semver;if(s.major===e.major&&s.minor===e.minor&&s.patch===e.patch)return!0}return!1}return!0}},908:(t,e,i)=>{const s=i(272),{MAX_LENGTH:r,MAX_SAFE_INTEGER:n}=i(874),{safeRe:a,t:o}=i(718),l=i(587),{compareIdentifiers:h}=i(123);class c{constructor(t,e){if(e=l(e),t instanceof c){if(t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease)return t;t=t.version}else if("string"!=typeof t)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>r)throw new TypeError(`version is longer than ${r} characters`);s("SemVer",t,e),this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease;const i=t.trim().match(e.loose?a[o.LOOSE]:a[o.FULL]);if(!i)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map((t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&e=0;)"number"==typeof this.prerelease[s]&&(this.prerelease[s]++,s=-2);if(-1===s){if(e===this.prerelease.join(".")&&!1===i)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(e){let s=[e,t];!1===i&&(s=[e]),0===h(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}t.exports=c},111:(t,e,i)=>{const s=i(641),r=i(999),n=i(580),a=i(89),o=i(59),l=i(200);t.exports=(t,e,i,h)=>{switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof i&&(i=i.version),t===i;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof i&&(i=i.version),t!==i;case"":case"=":case"==":return s(t,i,h);case"!=":return r(t,i,h);case">":return n(t,i,h);case">=":return a(t,i,h);case"<":return o(t,i,h);case"<=":return l(t,i,h);default:throw new TypeError(`Invalid operator: ${e}`)}}},170:(t,e,i)=>{const s=i(908),r=i(144),{safeRe:n,t:a}=i(718);t.exports=(t,e)=>{if(t instanceof s)return t;if("number"==typeof t&&(t=String(t)),"string"!=typeof t)return null;let i=null;if((e=e||{}).rtl){const s=e.includePrerelease?n[a.COERCERTLFULL]:n[a.COERCERTL];let r;for(;(r=s.exec(t))&&(!i||i.index+i[0].length!==t.length);)i&&r.index+r[0].length===i.index+i[0].length||(i=r),s.lastIndex=r.index+r[1].length+r[2].length;s.lastIndex=-1}else i=t.match(e.includePrerelease?n[a.COERCEFULL]:n[a.COERCE]);if(null===i)return null;const o=i[2],l=i[3]||"0",h=i[4]||"0",c=e.includePrerelease&&i[5]?`-${i[5]}`:"",u=e.includePrerelease&&i[6]?`+${i[6]}`:"";return r(`${o}.${l}.${h}${c}${u}`,e)}},560:(t,e,i)=>{const s=i(908);t.exports=(t,e,i)=>new s(t,i).compare(new s(e,i))},641:(t,e,i)=>{const s=i(560);t.exports=(t,e,i)=>0===s(t,e,i)},580:(t,e,i)=>{const s=i(560);t.exports=(t,e,i)=>s(t,e,i)>0},89:(t,e,i)=>{const s=i(560);t.exports=(t,e,i)=>s(t,e,i)>=0},59:(t,e,i)=>{const s=i(560);t.exports=(t,e,i)=>s(t,e,i)<0},200:(t,e,i)=>{const s=i(560);t.exports=(t,e,i)=>s(t,e,i)<=0},999:(t,e,i)=>{const s=i(560);t.exports=(t,e,i)=>0!==s(t,e,i)},144:(t,e,i)=>{const s=i(908);t.exports=(t,e,i=!1)=>{if(t instanceof s)return t;try{return new s(t,e)}catch(t){if(!i)return null;throw t}}},638:(t,e,i)=>{const s=i(311);t.exports=(t,e,i)=>{try{e=new s(e,i)}catch(t){return!1}return e.test(t)}},874:t=>{const e=Number.MAX_SAFE_INTEGER||9007199254740991;t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},272:t=>{const e="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};t.exports=e},123:t=>{const e=/^[0-9]+$/,i=(t,i)=>{const s=e.test(t),r=e.test(i);return s&&r&&(t=+t,i=+i),t===i?0:s&&!r?-1:r&&!s?1:ti(e,t)}},794:t=>{t.exports=class{constructor(){this.max=1e3,this.map=new Map}get(t){const e=this.map.get(t);return void 0===e?void 0:(this.map.delete(t),this.map.set(t,e),e)}delete(t){return this.map.delete(t)}set(t,e){if(!this.delete(t)&&void 0!==e){if(this.map.size>=this.max){const t=this.map.keys().next().value;this.delete(t)}this.map.set(t,e)}return this}}},587:t=>{const e=Object.freeze({loose:!0}),i=Object.freeze({});t.exports=t=>t?"object"!=typeof t?e:t:i},718:(t,e,i)=>{const{MAX_SAFE_COMPONENT_LENGTH:s,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:n}=i(874),a=i(272),o=(e=t.exports={}).re=[],l=e.safeRe=[],h=e.src=[],c=e.t={};let u=0;const p="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",n],[p,r]],m=(t,e,i)=>{const s=(t=>{for(const[e,i]of d)t=t.split(`${e}*`).join(`${e}{0,${i}}`).split(`${e}+`).join(`${e}{1,${i}}`);return t})(e),r=u++;a(t,r,e),c[t]=r,h[r]=e,o[r]=new RegExp(e,i?"g":void 0),l[r]=new RegExp(s,i?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${p}*`),m("MAINVERSION",`(${h[c.NUMERICIDENTIFIER]})\\.(${h[c.NUMERICIDENTIFIER]})\\.(${h[c.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${h[c.NUMERICIDENTIFIERLOOSE]})\\.(${h[c.NUMERICIDENTIFIERLOOSE]})\\.(${h[c.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${h[c.NUMERICIDENTIFIER]}|${h[c.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${h[c.NUMERICIDENTIFIERLOOSE]}|${h[c.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${h[c.PRERELEASEIDENTIFIER]}(?:\\.${h[c.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${h[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${h[c.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${p}+`),m("BUILD",`(?:\\+(${h[c.BUILDIDENTIFIER]}(?:\\.${h[c.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${h[c.MAINVERSION]}${h[c.PRERELEASE]}?${h[c.BUILD]}?`),m("FULL",`^${h[c.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${h[c.MAINVERSIONLOOSE]}${h[c.PRERELEASELOOSE]}?${h[c.BUILD]}?`),m("LOOSE",`^${h[c.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${h[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${h[c.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${h[c.XRANGEIDENTIFIER]})(?:\\.(${h[c.XRANGEIDENTIFIER]})(?:\\.(${h[c.XRANGEIDENTIFIER]})(?:${h[c.PRERELEASE]})?${h[c.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${h[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${h[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${h[c.XRANGEIDENTIFIERLOOSE]})(?:${h[c.PRERELEASELOOSE]})?${h[c.BUILD]}?)?)?`),m("XRANGE",`^${h[c.GTLT]}\\s*${h[c.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${h[c.GTLT]}\\s*${h[c.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${s}})(?:\\.(\\d{1,${s}}))?(?:\\.(\\d{1,${s}}))?`),m("COERCE",`${h[c.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",h[c.COERCEPLAIN]+`(?:${h[c.PRERELEASE]})?`+`(?:${h[c.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",h[c.COERCE],!0),m("COERCERTLFULL",h[c.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${h[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",m("TILDE",`^${h[c.LONETILDE]}${h[c.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${h[c.LONETILDE]}${h[c.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${h[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",m("CARET",`^${h[c.LONECARET]}${h[c.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${h[c.LONECARET]}${h[c.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${h[c.GTLT]}\\s*(${h[c.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${h[c.GTLT]}\\s*(${h[c.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${h[c.GTLT]}\\s*(${h[c.LOOSEPLAIN]}|${h[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${h[c.XRANGEPLAIN]})\\s+-\\s+(${h[c.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${h[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${h[c.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},576:e=>{"use strict";e.exports=t}},i={};function s(t){var r=i[t];if(void 0!==r)return r.exports;var n=i[t]={exports:{}};return e[t].call(n.exports,n,n.exports,s),n.exports}s.d=(t,e)=>{for(var i in e)s.o(e,i)&&!s.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";s.d(r,{default:()=>xr});var t={};s.r(t),s.d(t,{arithmetic:()=>At,assignment:()=>kt,bit:()=>Dt,comparison:()=>bt,exponentiation:()=>Ut,logical:()=>Vt,shift:()=>Bt});var e={};s.r(e),s.d(e,{ArrayTypeName:()=>G,AssemblyAssignment:()=>q,AssemblyBlock:()=>nt,AssemblyCall:()=>at,AssemblyCase:()=>ot,AssemblyFor:()=>ht,AssemblyFunctionDefinition:()=>ut,AssemblyIf:()=>pt,AssemblyLocalDefinition:()=>mt,AssemblyMemberAccess:()=>_t,AssemblyStackAssignment:()=>ft,AssemblySwitch:()=>Tt,BinaryOperation:()=>$t,Block:()=>zt,BooleanLiteral:()=>qt,Break:()=>Wt,BreakStatement:()=>Yt,CatchClause:()=>Jt,Conditional:()=>re,Continue:()=>ne,ContinueStatement:()=>ae,ContractDefinition:()=>pe,CustomErrorDefinition:()=>me,DecimalNumber:()=>_e,DoWhileStatement:()=>Te,ElementaryTypeName:()=>Re,EmitStatement:()=>ve,EnumDefinition:()=>Se,EnumValue:()=>Ce,EventDefinition:()=>we,ExpressionStatement:()=>Ie,FileLevelConstant:()=>ke,ForStatement:()=>Ke,FunctionCall:()=>ze,FunctionDefinition:()=>li,FunctionTypeName:()=>_i,HexLiteral:()=>yi,HexNumber:()=>gi,Identifier:()=>Ti,IfStatement:()=>Si,ImportDirective:()=>Ni,IndexAccess:()=>Fi,IndexRangeAccess:()=>Ui,InheritanceSpecifier:()=>Mi,InlineAssemblyStatement:()=>Ki,LabelDefinition:()=>$i,Mapping:()=>Gi,MemberAccess:()=>Xi,ModifierDefinition:()=>ns,ModifierInvocation:()=>os,NameValueExpression:()=>ls,NameValueList:()=>us,NewExpression:()=>ps,NumberLiteral:()=>ds,PragmaDirective:()=>ms,ReturnStatement:()=>gs,RevertStatement:()=>Ts,SourceUnit:()=>Rs,StateVariableDeclaration:()=>Cs,StringLiteral:()=>Ns,StructDefinition:()=>ks,ThrowStatement:()=>Ds,TryStatement:()=>Fs,TupleExpression:()=>Ms,TypeDefinition:()=>Ks,UnaryOperation:()=>Vs,UncheckedStatement:()=>$s,UserDefinedTypeName:()=>js,UsingForDeclaration:()=>qs,VariableDeclaration:()=>rr,VariableDeclarationStatement:()=>or,WhileStatement:()=>pr});var i=s(576),n=s(638);const a=t=>n(i.version,t);function o(t,e){const s={quote:'"',regex:/"/g},r={quote:"'",regex:/'/g},n=e.singleQuote?r:s,a=n===r?s:r;let o=!1;(t.includes(n.quote)||t.includes(a.quote))&&(o=(t.match(n.regex)||[]).length>(t.match(a.regex)||[]).length);const l=o?a.quote:n.quote;return i.util.makeString(t,l)}const l=a("^2.3.0");function h(t,e,s){return l?t.charAt(i.util.getNextNonSpaceNonCommentCharacterIndex(t,e,s)):i.util.getNextNonSpaceNonCommentCharacter(t,s(e))}const{addLeadingComment:c,addTrailingComment:u,addDanglingComment:p,hasNewline:d,hasNewlineInRange:m}=i.util;function _(t,e){if(!t.body)return void p(t,e);const i=t.body.filter((t=>"EmptyStatement"!==t.type));0===i.length?p(t,e):c(i[0],e)}function x(t,e){"BlockStatement"===t.type?_(t,e):c(t,e)}function f(t,e,i,s,r,n){return!(!i||"IfStatement"!==i.type||!s)&&(")"===h(t,r,n.locEnd)?(u(e,r),!0):e===i.trueBody&&s===i.falseBody?("ExpressionStatement"===e.type?u(e,r):p(i,r),!0):"ExpressionStatement"===s.type?(_(s,r),!0):"IfStatement"===s.type?(x(s.trueBody,r),!0):i.trueBody===s&&(c(s,r),!0))}function y(t,e,i,s,r,n){return!(!i||"WhileStatement"!==i.type||!s)&&(")"===h(t,r,n.locEnd)?(u(e,r),!0):"BlockStatement"===s.type&&(_(s,r),!0))}function g(t,e,i,s){return!(!t||"TryStatement"!==t.type&&"CatchClause"!==t.type||!i||("CatchClause"===t.type&&e?(u(e,s),0):"BlockStatement"===i.type?(_(i,s),0):"TryStatement"===i.type?(x(i.finalizer,s),0):"CatchClause"!==i.type||(x(i.body,s),0)))}function T(t,e,i,s){return!(!(t&&("ClassDeclaration"===t.type||"ClassExpression"===t.type)&&t.decorators&&t.decorators.length>0)||i&&"Decorator"===i.type||(t.decorators&&0!==t.decorators.length?u(t.decorators[t.decorators.length-1],s):c(t,s),0))}function E(t,e,i,s,r){return(e&&i&&("Property"===e.type||"MethodDefinition"===e.type)&&"Identifier"===i.type&&e.key===i&&":"!==h(t,i,r.locEnd)||!(!i||!e||"Decorator"!==i.type||"ClassMethod"!==e.type&&"ClassProperty"!==e.type&&"TSAbstractClassProperty"!==e.type&&"TSAbstractMethodDefinition"!==e.type&&"MethodDefinition"!==e.type))&&(u(i,s),!0)}function R(t,e,i,s,r,n){return(e&&"FunctionTypeParam"===e.type&&i&&"FunctionTypeAnnotation"===i.type&&s&&"FunctionTypeParam"!==s.type||!(!e||"Identifier"!==e.type&&"AssignmentPattern"!==e.type||!i||"ArrowFunctionExpression"!==i.type&&"FunctionExpression"!==i.type&&"FunctionDeclaration"!==i.type&&"ObjectMethod"!==i.type&&"ClassMethod"!==i.type||")"!==h(t,r,n.locEnd)))&&(u(e,r),!0)}function v(t,e){return!(!t||"ImportSpecifier"!==t.type||(c(t,e),0))}function b(t,e,i,s){return e&&e.body&&0===e.body.length?(s?p(e,i):c(e,i),!0):!(!t||"Program"!==t.type||0!==t.body.length||!t.directives||0!==t.directives.length||(s?p(t,i):c(t,i),0))}const{addLeadingComment:L,addTrailingComment:S,addDanglingComment:C}=i.util,{addLeadingComment:A,addTrailingComment:w,addDanglingComment:N}=i.util,I=[function({text:t,precedingNode:e,enclosingNode:i,followingNode:s,comment:r,options:n}){if(!i||"ContractDefinition"!==i.type)return!1;const a=h(t,r,n.locEnd);return"InheritanceSpecifier"===s?.type||"{"===a?"InheritanceSpecifier"===e?.type?(S(e,r),!0):(L(i,r),!0):0===i.subNodes.length&&(C(i,r),!0)},function({text:t,precedingNode:e,enclosingNode:i,comment:s,options:r}){if(!i||"ModifierInvocation"!==i.type)return!1;const n=h(t,s,r.locEnd);return"("===n?(A(i,s),!0):")"===n&&(e?(w(e,s),!0):"LineComment"===s.type?(A(i,s),!0):(N(i,s),!0))}],{hardline:k,join:D}=i.doc.builders,O=new Set(["loc","range","comments"]);function P(){}P.ignoredProperties=O;const F=P;function U(t,e){return e.range?e.range[t]:e.expression?.range?e.expression.range[t]:null}const H={locEnd:t=>U(1,t),locStart:t=>U(0,t)},M="Global",K="Common",V={printWidth:{since:"0.0.0",category:M,type:"int",default:80,description:"The line length where Prettier will try wrap.",range:{start:0,end:Number.POSITIVE_INFINITY,step:1}},tabWidth:{type:"int",category:M,default:2,description:"Number of spaces per indentation level.",range:{start:0,end:Number.POSITIVE_INFINITY,step:1}},useTabs:{since:"1.0.0",category:M,type:"boolean",default:!1,description:"Indent with tabs instead of spaces."},bracketSpacing:{since:"0.0.0",category:K,type:"boolean",default:!0,description:"Print spaces between brackets.",oppositeDescription:"Do not print spaces between brackets."},singleQuote:{since:"0.0.0",category:K,type:"boolean",default:!1,description:"Use single quotes instead of double quotes."},experimentalTernaries:{category:"JavaScript",type:"boolean",default:!1,description:"Use curious ternaries, with the question mark after the condition.",oppositeDescription:"Default behavior of ternaries; keep question marks on the same line as the consequent."},compiler:{category:"Solidity",type:"string",description:"The Solidity compiler version to help us avoid critical errors in format for the wrong version."}};var B=s(121),$=s(170);const j=(t,e)=>"BinaryOperation"===t.type&&e.includes(t.operator)?{type:"TupleExpression",components:[t],isArray:!1}:t,G={print:({node:t,path:e,print:i})=>[e.call(i,"baseTypeName"),"[",t.length?e.call(i,"length"):"","]"]},{join:z}=i.doc.builders,q={print:({path:t,print:e})=>[z(", ",t.map(e,"names"))," := ",t.call(e,"expression")]},{group:W,indent:Y,join:X,line:J,softline:Q,hardline:Z}=i.doc.builders,tt=(t,e,i,s=(()=>!0))=>{if(!t.comments)return"";const r=X(J,e.map((t=>{const e=t.getValue();return e.trailing||e.leading||e.printed?null:s(e)?(e.printed=!0,i.printer.printComment(t,i)):null}),"comments").filter(Boolean));return l?r.parts:r};function et(t,e,s,r){const n=[];return t.each(((t,a)=>{const o=t.getValue(),h=o.type;var c,u;0!==n.length&&"LabelDefinition"!==h&&n.push(Z),n.push(r(t)),!function(t,e,i){return l?i===t.getParentNode()[e].length-1:t.isLast}(t,e,a)&&(c=s.originalText,u=s.locEnd(o)+1,l?i.util.isNextLineEmptyAfterIndex(c,u):i.util.isNextLineEmpty(c,u))&&n.push(Z)}),e),n}const it=(t,{firstSeparator:e=Q,lastSeparator:i=e,grouped:s=!0}={})=>{const r=[Y([e,t]),i];return s?W(r):r},st=(t,{firstSeparator:e,separator:i=[",",J],lastSeparator:s,grouped:r}={})=>it(X(i,t),{firstSeparator:e,lastSeparator:s,grouped:r}),{hardline:rt}=i.doc.builders,nt={print:({node:t,options:e,path:i,print:s})=>0!==t.operations.length||t.comments?["{",it([et(i,"operations",e,s),tt(t,i,e)],{firstSeparator:rt,grouped:!1}),"}"]:"{}"},at={print:({node:t,path:e,print:i,options:s})=>0===t.arguments.length&&")"!==s.originalText.charAt(s.locEnd(t))?t.functionName:[t.functionName,"(",st(e.map(i,"arguments")),")"]},ot={print:({node:t,path:e,print:i})=>[t.default?"default":["case ",e.call(i,"value")]," ",e.call(i,"block")]},{join:lt}=i.doc.builders,ht={print:({path:t,print:e})=>lt(" ",["for",t.call(e,"pre"),t.call(e,"condition"),t.call(e,"post"),t.call(e,"body")])},{line:ct}=i.doc.builders,ut={print:({node:t,path:e,print:i})=>["function ",t.name,"(",st(e.map(i,"arguments")),")",0===t.returnArguments.length?" ":it(["->",st(e.map(i,"returnArguments"),{firstSeparator:ct,lastSeparator:""})],{firstSeparator:ct}),e.call(i,"body")]},pt={print:({path:t,print:e})=>["if ",t.call(e,"condition")," ",t.call(e,"body")]},{line:dt}=i.doc.builders,mt={print:({node:t,path:e,print:i})=>{const s=["let",st(e.map(i,"names"),{firstSeparator:dt})];return null!==t.expression&&(s.push(":= "),s.push(e.call(i,"expression"))),s}},_t={print:({path:t,print:e})=>[t.call(e,"expression"),".",t.call(e,"memberName")]},{hardline:xt}=i.doc.builders,ft={print:({node:t,path:e,print:i})=>[e.call(i,"expression"),xt,"=: ",t.name]},{hardline:yt,join:gt}=i.doc.builders,Tt={print:({path:t,print:e})=>["switch ",t.call(e,"expression"),yt,gt(yt,t.map(e,"cases"))]},{group:Et,indent:Rt,line:vt}=i.doc.builders,bt={match:t=>["<",">","<=",">=","==","!="].includes(t),print:(t,e,i)=>{const s=(t=>e=>{let i=t.getNode();for(let s=0;;s+=1){const r=t.getParentNode(s);if("ReturnStatement"===r.type)return e;if("IfStatement"===r.type)return e;if("ForStatement"===r.type)return e;if("WhileStatement"===r.type)return e;if("BinaryOperation"!==r.type)return Rt(e);if(i===r.right)return e;i=r}})(e),r=[t.operator,vt,e.call(i,"right")],n="BinaryOperation"!==t.left.type&&"BinaryOperation"!==e.getParentNode().type;return Et([e.call(i,"left")," ",s(n?Et(r):r)])}},{group:Lt,line:St,indent:Ct}=i.doc.builders,At={match:t=>["+","-","*","/","%"].includes(t),print:(t,e,i)=>{const s=(t=>e=>{const i=t.getParentNode();return"BinaryOperation"!==i.type||bt.match(i.operator)?Lt(e):e})(e),r=(t=>e=>{let i=t.getNode();for(let s=0;;s+=1){const r=t.getParentNode(s);if("ReturnStatement"===r.type)return e;if("BinaryOperation"!==r.type||bt.match(r.operator))return Ct(e);if(i===r.right)return e;i=r}})(e),n=[t.operator,St,e.call(i,"right")],a="BinaryOperation"!==t.left.type&&"BinaryOperation"!==e.getParentNode().type;return s([e.call(i,"left")," ",r(a?Lt(n):n)])}},{group:wt,line:Nt,indent:It}=i.doc.builders,kt={match:t=>["=","|=","^=","&=","<<=",">>=","+=","-=","*=","/=","%="].includes(t),print:(t,e,i)=>[e.call(i,"left")," ",t.operator,"BinaryOperation"===t.right.type?wt(It([Nt,e.call(i,"right")])):[" ",e.call(i,"right")]]},Dt={match:t=>["&","|","^"].includes(t),print:At.print},{group:Ot,indent:Pt,line:Ft}=i.doc.builders,Ut={match:t=>"**"===t,print:(t,e,i)=>{const s=[" ",t.operator,Ft,e.call(i,"right")],r="BinaryOperation"!==t.left.type&&"BinaryOperation"!==e.getParentNode().type;return Ot([e.call(i,"left"),Pt(r?Ot(s):s)])}},{group:Ht,line:Mt,indent:Kt}=i.doc.builders,Vt={match:t=>["&&","||"].includes(t),print:(t,e,i,s)=>{const r=(t=>e=>"BinaryOperation"===t.getParentNode().type?e:Ht(e))(e),n=((t,e)=>i=>{let s=t.getNode();for(let r=0;;r+=1){const n=t.getParentNode(r);if("ReturnStatement"===n.type)return i;if("IfStatement"===n.type)return i;if("WhileStatement"===n.type)return i;if(e.experimentalTernaries&&"Conditional"===n.type&&n.condition===s)return i;if("BinaryOperation"!==n.type)return Kt(i);if(s===n.right)return i;s=n}})(e,s),a=[t.operator,Mt,e.call(i,"right")],o="BinaryOperation"!==t.left.type&&"BinaryOperation"!==e.getParentNode().type;return r([e.call(i,"left")," ",n(o?Ht(a):a)])}},Bt={match:t=>["<<",">>"].includes(t),print:At.print},$t={print:({node:e,path:i,print:s,options:r})=>{const n=Object.values(t).find((t=>t.match(e.operator)));if(void 0===n)throw new Error(`Assertion error: no printer found for operator ${JSON.stringify(e.operator)}`);return n.print(e,i,s,r)}},{hardline:jt,indent:Gt}=i.doc.builders,zt={print:({node:t,options:e,path:i,print:s})=>0!==t.statements.length||t.comments?["{",Gt([jt,et(i,"statements",e,s),tt(t,i,e)]),jt,"}"]:"{}"},qt={print:({node:t})=>t.value?"true":"false"},Wt={print:()=>"break"},Yt={print:()=>"break;"},Xt=(t,e,i)=>t.parameters?[t.kind||"","(",st(e.map(i,"parameters")),") "]:"",Jt={print:({node:t,path:e,print:i})=>["catch ",Xt(t,e,i),e.call(i,"body")]},{group:Qt,hardline:Zt,ifBreak:te,indent:ee,line:ie,softline:se}=i.doc.builders,re={print:({node:t,path:e,print:i,options:s})=>s.experimentalTernaries?((t,e,i,s)=>{const r=e.getParentNode(),n="Conditional"===r.type,a=n&&r.trueExpression===t,o="Conditional"===t.falseExpression.type,l=e.call(i,"condition"),h=Qt(["TupleExpression"===t.condition.type?l:te(["(",it(l),")"],l)," ?"]),c=ee([a?Zt:ie,e.call(i,"trueExpression")]),u=Qt([h,c],{id:Symbol("Conditional.trueExpression")});let p=" ";!o&&(s.tabWidth>2||s.useTabs)&&(p=s.useTabs?"\t":" ".repeat(s.tabWidth-1));const d=e.call(i,"falseExpression"),m=[n?Zt:ie,":",o?[" ",d]:te([p,ee(d)],[" ",d],{groupId:u.id})],_=Qt([u,m]);return"VariableDeclarationStatement"===r.type?ee([se,_]):_})(t,e,i,s):((t,e)=>Qt([t.call(e,"condition"),ee(["Conditional"===t.getParentNode().type?Zt:ie,"? ",t.call(e,"trueExpression"),ie,": ",t.call(e,"falseExpression")])]))(e,i)},ne={print:()=>"continue"},ae={print:()=>"continue;"},{group:oe,line:le,hardline:he}=i.doc.builders,ce=(t,e,i)=>t.baseContracts.length>0?[" is",st(e.map(i,"baseContracts"),{firstSeparator:le})]:le,ue=(t,e,i,s)=>{const r=tt(t,e,i);return t.subNodes.length>0||r?.length?it([et(e,"subNodes",i,s),r],{firstSeparator:he,grouped:!1}):""},pe={print:({node:t,options:e,path:i,print:s})=>[oe(["abstract"===t.kind?"abstract contract":t.kind," ",t.name,ce(t,i,s),"{"]),ue(t,i,e,s),"}"]},de=(t,e,i)=>t.parameters?.length>0?st(e.map(i,"parameters")):"",me={print:({node:t,path:e,print:i})=>["error ",t.name,"(",de(t,e,i),");"]},_e={print:({node:t})=>t.value},{group:xe,indent:fe,line:ye}=i.doc.builders,ge=(t,e,i)=>"Block"===t.body.type?[" ",e.call(i,"body")," "]:xe([fe([ye,e.call(i,"body")]),ye]),Te={print:({node:t,path:e,print:i})=>["do",ge(t,e,i),"while (",it(e.call(i,"condition")),");"]},Ee=t=>t.stateMutability?.length>0?[" ",t.stateMutability]:"",Re={print:({node:t})=>[t.name,Ee(t)]},ve={print:({path:t,print:e})=>["emit ",t.call(e,"eventCall"),";"]},{group:be,hardline:Le}=i.doc.builders,Se={print:({node:t,path:e,print:i})=>be(["enum ",t.name," {",st(e.map(i,"members"),{firstSeparator:Le}),"}"])},Ce={print:({node:t})=>t.name},Ae=(t,e,i)=>t.parameters?.length>0?st(e.map(i,"parameters")):"",we={print:({node:t,path:e,print:i})=>["event ",t.name,"(",Ae(t,e,i),")",t.isAnonymous?" anonymous":"",";"]},{hardline:Ne}=i.doc.builders,Ie={print:({node:t,options:e,path:i,print:s})=>{const r=[];if("IfStatement"===i.getParentNode().type&&t.comments?.length){const s=tt(t,i,e);s?.length&&(r.push(s),r.push(Ne))}return r.push(i.call(s,"expression")),r.push(t.omitSemicolon?"":";"),r}},ke={print:({node:t,path:e,print:i})=>[e.call(i,"typeName")," constant ",t.name," = ",e.call(i,"initialValue"),";"]},{group:De,indent:Oe,line:Pe}=i.doc.builders,Fe=(t,e,i)=>t.initExpression?e.call(i,"initExpression"):"",Ue=(t,e,i)=>t.conditionExpression?e.call(i,"conditionExpression"):"",He=(t,e,i)=>t.loopExpression.expression?e.call(i,"loopExpression"):"",Me=(t,e,i)=>"Block"===t.body.type?[" ",e.call(i,"body")]:De(Oe([Pe,e.call(i,"body")])),Ke={print:({node:t,path:e,print:i})=>["for (",st([Fe(t,e,i),Ue(t,e,i),He(t,e,i)],{separator:t.initExpression||t.conditionExpression||t.loopExpression.expression?[";",Pe]:";"}),")",Me(t,e,i)]},{group:Ve,indentIfBreak:Be,label:$e,line:je,softline:Ge}=i.doc.builders,ze={print:({node:t,path:e,print:i,options:s})=>{let r=e.call(i,"expression"),n=")";return t.arguments?.length>0&&(n=t.identifiers?.length>0?((t,e,i)=>{const s=t.map(e,"identifiers");return["{",st(t.map(e,"arguments").map(((t,e)=>[s[e],": ",t])),{firstSeparator:i.bracketSpacing?je:Ge,lastSeparator:[i.bracketSpacing?je:Ge,"})"]})]})(e,i,s):((t,e)=>st(t.map(e,"arguments"),{lastSeparator:[Ge,")"]}))(e,i)),"MemberAccessChain"===r.label?(r=Ve(r.contents,{id:Symbol("FunctionCall.expression")}),n=Be(n,{groupId:r.id}),$e("MemberAccessChain",[r,"(",n])):[r,"(",n]}},{dedent:qe,group:We,indent:Ye,join:Xe,line:Je}=i.doc.builders,Qe=(t,e)=>t.isConstructor&&!t.name?"constructor":t.name?`function ${t.name}`:t.isReceiveEther?"receive":{fallback:"fallback",function:"function"}[e.originalText.slice(e.locStart(t),e.locStart(t)+8)],Ze=(t,e,i,s,r)=>{if(e[t]?.length>0)return st(i.map(s,t),{grouped:!1});if(e.comments?.length>0){const t=tt(e,i,r,(t=>")"===h(r.originalText,t,r.locEnd)));return t.length>0?it(t):""}return""},ti=t=>t.visibility&&"default"!==t.visibility?[Je,t.visibility]:"",ei=t=>t.isVirtual?[Je,"virtual"]:"",ii=(t,e,i)=>t.override?0===t.override.length?[Je,"override"]:[Je,"override(",st(e.map(i,"override")),")"]:"",si=t=>t.stateMutability?[Je,t.stateMutability]:"",ri=(t,e,i)=>t.modifiers.length>0?[Je,Xe(Je,e.map(i,"modifiers"))]:"",ni=(t,e,i,s)=>t.returnParameters?[Je,"returns (",We(Ze("returnParameters",t,e,i,s)),")"]:"",ai=t=>t.body?qe(Je):";",oi=(t,e,i)=>t.body?e.call(i,"body"):"",li={print:({node:t,path:e,print:i,options:s})=>[We([Qe(t,s),"(",Ze("parameters",t,e,i,s),")",Ye(We([tt(t,e,s),ti(t),si(t),ei(t),ii(t,e,i),ri(t,e,i),ni(t,e,i,s),ai(t)]))]),oi(t,e,i)]},{group:hi,indent:ci,line:ui}=i.doc.builders,pi=(t,e,i)=>t.returnTypes.length>0?[ui,"returns (",st(e.map(i,"returnTypes")),")"]:"",di=t=>t.visibility&&"default"!==t.visibility?[ui,t.visibility]:"",mi=t=>t.stateMutability&&"default"!==t.stateMutability?[ui,t.stateMutability]:"",_i={print:({node:t,path:e,print:i})=>hi(["function(",st(e.map(i,"parameterTypes"),{grouped:!1}),")",ci(hi([di(t),mi(t),pi(t,e,i)]))])},{join:xi,hardline:fi}=i.doc.builders,yi={print:({node:t,options:e})=>{const i=t.parts.map((t=>`hex${o(t,e)}`));return xi(fi,i)}},gi={print:({node:t})=>t.value},Ti={print:({node:t})=>t.name},{group:Ei,hardline:Ri,indent:vi,line:bi}=i.doc.builders,Li=(t,e,i)=>"Block"===t.falseBody.type||"IfStatement"===t.falseBody.type?[" ",e.call(i,"falseBody")]:Ei(vi([bi,e.call(i,"falseBody")])),Si={print:({node:t,options:e,path:i,print:s})=>{const r=(t.comments||[]).filter((t=>!t.leading&&!t.trailing)),n=[];return n.push("if (",it(i.call(s,"condition")),")"),n.push(((t,e,i)=>{if("Block"===t.trueBody.type)return[" ",e.call(i,"trueBody")];const s="IfStatement"===t.trueBody.type;return Ei(vi([s?Ri:bi,e.call(i,"trueBody")]))})(t,i,s)),r.length&&t.falseBody&&(n.push(Ri),n.push(tt(t,i,e))),n.push(((t,e,i,s)=>t.falseBody?["Block"===t.trueBody.type&&0===s.length?" ":Ri,"else",Li(t,e,i)]:"")(t,i,s,r)),n}},{group:Ci,line:Ai,softline:wi}=i.doc.builders,Ni={print:({node:t,options:e})=>{const i=o(t.path,e);let s;if(t.unitAlias)s=[i," as ",t.unitAlias];else if(t.symbolAliases){const r=$(e.compiler),a=t.symbolAliases.map((([t,e])=>e?`${t} as ${e}`:t));let o,l;r&&n(r,">=0.7.4")?(o=e.bracketSpacing?Ai:wi,l=[",",Ai]):(o=e.bracketSpacing?" ":"",l=", "),s=["{",st(a,{firstSeparator:o,separator:l}),"} from ",i]}else s=i;return Ci(["import ",s,";"])}},{group:Ii,indent:ki,indentIfBreak:Di,label:Oi,softline:Pi}=i.doc.builders,Fi={print:({path:t,print:e})=>{let i=t.call(e,"base"),s=Ii([ki([Pi,t.call(e,"index")]),Pi,"]"]);return"MemberAccessChain"===i.label?(i=Ii(i.contents,{id:Symbol("IndexAccess.base")}),s=Di(s,{groupId:i.id}),Oi("MemberAccessChain",[i,"[",s])):[i,"[",s]}},Ui={print:({node:t,path:e,print:i})=>[e.call(i,"base"),"[",t.indexStart?e.call(i,"indexStart"):"",":",t.indexEnd?e.call(i,"indexEnd"):"","]"]},Hi=(t,e,i)=>t.arguments?.length?["(",st(e.map(i,"arguments")),")"]:"",Mi={print:({node:t,path:e,print:i})=>[e.call(i,"baseName"),Hi(t,e,i)]},Ki={print:({node:t,path:e,print:i,options:s})=>["assembly ",t.language?`${o(t.language,s)} `:"",t.flags?.length>0?["(",st(t.flags.map((t=>o(t,s)))),") "]:"",e.call(i,"body")]},{dedent:Vi,line:Bi}=i.doc.builders,$i={print:({node:t})=>[Vi(Bi),t.name,":"]},ji=(t,e,i,s)=>e[`${t}Name`]?[i.call(s,`${t}Type`)," ",i.call(s,`${t}Name`)]:i.call(s,`${t}Type`),Gi={print:({node:t,path:e,print:i})=>["mapping(",ji("key",t,e,i)," => ",ji("value",t,e,i),")"]},{group:zi,indent:qi,label:Wi,softline:Yi}=i.doc.builders,Xi={print:({node:t,path:e,print:i})=>{let s=e.call(i,"expression");Array.isArray(s)&&(s=s.flat());const r=[s,Wi("separator",[Yi,"."]),t.memberName].flat();return((t,e)=>{let i=0,s=t,r=e.getParentNode(i);for(;r&&["FunctionCall","IndexAccess","NameValueExpression","MemberAccess"].includes(r.type);){switch(r.type){case"MemberAccess":return!1;case"IndexAccess":if(s!==r.base)return!0;break;case"FunctionCall":if(s!==r.expression)return!0}i+=1,s=r,r=e.getParentNode(i)}return!0})(t,e)?(t=>{const e=t.findIndex((t=>"separator"===t.label)),i=t.slice(0,e),s=zi(qi(t.slice(e)));return Wi("MemberAccessChain",zi([i,s]))})(r):r}},{dedent:Ji,group:Qi,indent:Zi,line:ts}=i.doc.builders,es=(t,e,i)=>t.parameters?.length>0?["(",st(e.map(i,"parameters"),{separator:[",",ts]}),")"]:"()",is=t=>t.isVirtual?[ts,"virtual"]:"",ss=(t,e,i)=>t.override?0===t.override.length?[ts,"override"]:[ts,"override(",st(e.map(i,"override")),")"]:"",rs=(t,e,i)=>t.body?t.isVirtual?Qi(e.call(i,"body")):[e.call(i,"body")]:";",ns={print:({node:t,path:e,print:i})=>["modifier ",t.name,es(t,e,i),Qi(Zi([is(t),ss(t,e,i),t.body?Ji(ts):""])),rs(t,e,i)]},as=(t,e,i,s)=>t.arguments?t.arguments.length>0?["(",st(e.map(i,"arguments")),")"]:"()":t.comments?.some((t=>!t.leading&&!t.trailing&&!t.printed))?["(",tt(t,e,s),")"]:"",os={print:({node:t,path:e,print:i,options:s})=>[t.name,as(t,e,i,s)]},ls={print:({path:t,print:e})=>[t.call(e,"expression"),"{",t.call(e,"arguments"),"}"]},{line:hs,softline:cs}=i.doc.builders,us={print:({node:t,path:e,print:i,options:s})=>st(e.map(i,"arguments").map(((e,i)=>[t.names[i],": ",e])),{firstSeparator:s.bracketSpacing?hs:cs})},ps={print:({path:t,print:e})=>["new ",t.call(e,"typeName")]},ds={print:({node:t})=>t.subdenomination?[t.number," ",t.subdenomination]:t.number},ms={print:({node:t})=>["pragma ",t.name," ",t.value,";"]},{group:_s,indent:xs,line:fs}=i.doc.builders,ys=(t,e,i,s)=>t.expression?"TupleExpression"===t.expression.type||s.experimentalTernaries&&"Conditional"===t.expression.type?[" ",e.call(i,"expression")]:_s(xs([fs,e.call(i,"expression")])):"",gs={print:({node:t,path:e,print:i,options:s})=>["return",ys(t,e,i,s),";"]},Ts={print:({path:t,print:e})=>["revert ",t.call(e,"revertCall"),";"]},{line:Es}=i.doc.builders,Rs={print:({options:t,path:e,print:i})=>[et(e,"children",t,i),t.parentParser?"":Es]},{group:vs,indent:bs,line:Ls}=i.doc.builders,Ss=(t,e,i)=>t.initialValue?"TupleExpression"===t.initialValue.type?[" = ",e.call(i,"initialValue")]:vs([" =",bs([Ls,e.call(i,"initialValue")])]):"",Cs={print:({node:t,path:e,print:i})=>[...e.map(i,"variables"),Ss(t,e,i),";"]},{join:As,hardline:ws}=i.doc.builders,Ns={print:({node:t,options:e})=>{const i=t.parts.map(((i,s)=>(t.isUnicode[s]?"unicode":"")+o(i,e)));return As(ws,i)}},{hardline:Is}=i.doc.builders,ks={print:({node:t,path:e,print:i})=>["struct ",t.name," {",t.members.length>0?st(e.map(i,"members"),{firstSeparator:Is,separator:[";",Is],lastSeparator:[";",Is]}):"","}"]},Ds={print:()=>"throw;"},{join:Os,line:Ps}=i.doc.builders,Fs={print:({node:t,path:e,print:i})=>{let s=["try",it(e.call(i,"expression"),{firstSeparator:Ps})];const r=((t,e,i)=>t.returnParameters?["returns (",st(e.map(i,"returnParameters")),")"]:"")(t,e,i);return r&&(s=s.concat([r," "])),s=s.concat([e.call(i,"body")," ",Os(" ",e.map(i,"catchClauses"))]),s}},{group:Us}=i.doc.builders,Hs=(t,e,i)=>1===t.components?.length&&"BinaryOperation"===t.components[0].type?e.map(i,"components"):st(e.map(i,"components")),Ms={print:({node:t,path:e,print:i})=>Us([t.isArray?"[":"(",Hs(t,e,i),t.isArray?"]":")"])},Ks={print:({node:t})=>["type ",t.name," is ",t.definition.name,";"]},Vs={print:({node:t,path:e,print:i})=>t.isPrefix?[t.operator,"delete"===t.operator?" ":"",e.call(i,"subExpression")]:[e.call(i,"subExpression"),t.operator]},{group:Bs}=i.doc.builders,$s={print:({path:t,print:e})=>Bs(["unchecked ",t.call(e,"block")])},js={print:({node:t})=>t.namePath},{line:Gs,softline:zs}=i.doc.builders,qs={print:({node:t,path:e,print:i,options:s})=>["using ",t.functions?.length?["{",st(t.functions.map(((e,i)=>t.operators[i]?[e," as ",t.operators[i]]:e)),{firstSeparator:s.bracketSpacing?Gs:zs}),"}"]:t.libraryName," for ",t.typeName?e.call(i,"typeName"):"*",t.isGlobal?" global;":";"]},{group:Ws,indent:Ys,line:Xs}=i.doc.builders,Js=t=>t.isIndexed?" indexed":"",Qs=t=>t.visibility&&"default"!==t.visibility?[Xs,t.visibility]:"",Zs=t=>t.isDeclaredConst?" constant":"",tr=t=>t.storageLocation&&"default"!==t.visibility?[Xs,t.storageLocation]:"",er=t=>t.isImmutable?" immutable":"",ir=(t,e,i)=>t.override?0===t.override.length?[Xs,"override"]:[Xs,"override(",st(e.map(i,"override")),")"]:"",sr=t=>t.name?[" ",t.name]:"",rr={print:({node:t,path:e,print:i})=>t.typeName?Ws([e.call(i,"typeName"),Ys([Js(t),Qs(t),Zs(t),tr(t),er(t),ir(t,e,i),sr(t)])]):t.name},{group:nr,indentIfBreak:ar}=i.doc.builders,or={print:({node:t,path:e,print:i})=>{const s=0===t.variables.filter((t=>t?.typeName)).length,r=nr([s?"var ":"",(n=e.map(i,"variables"),a=t.variables.length>1||s,a?["(",st(n),")"]:n)],{id:Symbol("VariableDeclarationStatement.variables")});var n,a;const o=((t,e,i)=>t.initialValue?[" = ",e.call(i,"initialValue")]:"")(t,e,i);return nr([r,ar(o,{groupId:r.id}),t.omitSemicolon?"":";"])}},{group:lr,indent:hr,line:cr}=i.doc.builders,ur=(t,e,i)=>"Block"===t.body.type?[" ",e.call(i,"body")]:lr(hr([cr,e.call(i,"body")])),pr={print:({node:t,path:e,print:i})=>["while (",it(e.call(i,"condition")),")",ur(t,e,i)]},dr=function t(e){const i=e.getValue();null!==i&&"object"==typeof i&&Object.keys(i).forEach((s=>{switch(s){case"loc":case"range":break;case"comments":e.each((t=>{t.getValue().printed=!0}),"comments");break;default:if("object"==typeof i[s]){if(Array.isArray(i[s]))return void e.each(t,s);e.call(t,s)}}}))};let mr=!1;const _r={"solidity-ast":{canAttachComment:t=>t.type&&"BlockComment"!==t.type&&"LineComment"!==t.type,handleComments:{ownLine:function(t,e,i,s,r){const{precedingNode:n,enclosingNode:a,followingNode:o}=t,l={text:e,precedingNode:n,enclosingNode:a,followingNode:o,comment:t,options:i};return!(!I.some((t=>t(l)))&&!function(t,e,i,s,r){const{precedingNode:n,enclosingNode:a,followingNode:o}=t;return!!(R(e,n,a,o,t,i)||function(t,e,i){return!(!t||"MemberExpression"!==t.type||!e||"Identifier"!==e.type||(c(t,i),0))}(a,o,t)||f(e,n,a,o,t,i)||y(e,n,a,o,t,i)||g(a,n,o,t)||T(a,0,o,t)||v(a,t)||function(t,e,i){return!(!t||"ForInStatement"!==t.type&&"ForOfStatement"!==t.type||(c(t,i),0))}(a,0,t)||function(t,e,i,s){return!(!e||"UnionTypeAnnotation"!==e.type&&"TSUnionType"!==e.type||(u(t,s),0))}(n,a,0,t)||b(a,s,t,r)||function(t,e,i,s,r){return!!(i&&"ImportSpecifier"===i.type&&e&&"ImportDeclaration"===e.type&&d(t,r.locEnd(s)))&&(u(i,s),!0)}(e,a,n,t,i)||function(t,e){return!(!t||"AssignmentPattern"!==t.type||(c(t,e),0))}(a,t)||E(e,a,n,t,i))}(t,e,i,s,r))},endOfLine:function(t,e,i,s,r){const{precedingNode:n,enclosingNode:a,followingNode:o}=t,l={text:e,precedingNode:n,enclosingNode:a,followingNode:o,comment:t,options:i};return!(!I.some((t=>t(l)))&&!function(t,e,i,s,r){const{precedingNode:n,enclosingNode:a,followingNode:o}=t;return!!(R(e,n,a,o,t,i)||function(t,e,i,s,r,n){const a=e&&!m(r,n.locEnd(e),n.locStart(s));return!(e&&a||!t||"ConditionalExpression"!==t.type||!i||(c(i,s),0))}(a,n,o,t,e,i)||v(a,t)||f(e,n,a,o,t,i)||y(e,n,a,o,t,i)||g(a,n,o,t)||T(a,0,o,t)||function(t,e){return!(!t||"LabeledStatement"!==t.type||(c(t,e),0))}(a,t)||function(t,e,i){return!!(e&&"CallExpression"===e.type&&t&&e.callee===t&&e.arguments.length>0)&&(c(e.arguments[0],i),!0)}(n,a,t)||function(t,e){return!(!t||"Property"!==t.type&&"ObjectProperty"!==t.type||(c(t,e),0))}(a,t)||b(a,s,t,r)||function(t,e,i){return!(!t||"TypeAlias"!==t.type||(c(t,i),0))}(a,0,t)||function(t,e,i){return!(!t||"VariableDeclarator"!==t.type&&"AssignmentExpression"!==t.type||!e||"ObjectExpression"!==e.type&&"ArrayExpression"!==e.type&&"TemplateLiteral"!==e.type&&"TaggedTemplateExpression"!==e.type||(c(e,i),0))}(a,o,t))}(t,e,i,s,r))},remaining:function(t,e,i,s,r){const{precedingNode:n,enclosingNode:a,followingNode:o}=t,l={text:e,precedingNode:n,enclosingNode:a,followingNode:o,comment:t,options:i};return!(!I.some((t=>t(l)))&&!function(t,e,i,s,r){const{precedingNode:n,enclosingNode:a,followingNode:o}=t;return!!(f(e,n,a,o,t,i)||y(e,n,a,o,t,i)||function(t,e,i){return!(!t||"ObjectProperty"!==t.type&&"Property"!==t.type||!t.shorthand||t.key!==e||"AssignmentPattern"!==t.value.type||(u(t.value.left,i),0))}(a,n,t)||function(t,e,i,s){return!(")"!==h(t,i,s.locEnd)||(!e||("FunctionDeclaration"!==e.type&&"FunctionExpression"!==e.type&&("ArrowFunctionExpression"!==e.type||"CallExpression"===e.body.type&&0!==e.body.arguments.length)&&"ClassMethod"!==e.type&&"ObjectMethod"!==e.type||0!==e.params.length)&&("CallExpression"!==e.type&&"NewExpression"!==e.type||0!==e.arguments.length)?!e||"MethodDefinition"!==e.type||0!==e.value.params.length||(p(e.value,i),0):(p(e,i),0)))}(e,a,t,i)||E(e,a,n,t,i)||b(a,s,t,r)||function(t,e,i,s){if(!e||"ArrowFunctionExpression"!==e.type)return!1;const r=getNextNonSpaceNonCommentCharacterIndex(t,i,s);return"=>"===t.substr(r,2)&&(p(e,i),!0)}(e,a,t,i)||function(t,e,i,s,r){return!("("!==h(t,s,r.locEnd)||!i||!e||"FunctionDeclaration"!==e.type&&"FunctionExpression"!==e.type&&"ClassMethod"!==e.type&&"MethodDefinition"!==e.type&&"ObjectMethod"!==e.type||(u(i,s),0))}(e,a,n,t,i)||function(t,e,i,s,r){return!(!e||"TSMappedType"!==e.type||(s&&"TSTypeParameter"===s.type&&s.name?(c(s.name,r),0):!i||"TSTypeParameter"!==i.type||!i.constraint||(u(i.constraint,r),0)))}(0,a,n,o,t)||function(t,e){return!(!t||"ContinueStatement"!==t.type&&"BreakStatement"!==t.type||t.label||(u(t,e),0))}(a,t))}(t,e,i,s,r))}},isBlockComment:function(t){return"BlockComment"===t.type},massageAstNode:F,print:function(t,i,s){!function(){if(!mr){if(!a(">=2.3.0"))throw new Error('The version of prettier in your node-modules does not satisfy the required ">=2.3.0" constraint. Please update the version of Prettier.');mr=!0}}();const r=t.getValue();if(null===r)return"";if(!(r.type in e))throw new Error(`Unknown type: ${JSON.stringify(r.type)}`);return function(t){return t?.comments?.length>0&&t.comments.some((t=>"prettier-ignore"===t.value.trim()))}(r)?(dr(t),i.originalText.slice(i.locStart(r),i.locEnd(r)+1)):e[r.type].print({node:r,options:i,path:t,print:s})},printComment:function(t,e){const s=t.getValue();switch(s.type){case"BlockComment":if(function(t){const e=`*${t.value}*`.split("\n");return e.length>1&&e.every((t=>"*"===t.trim()[0]))}(s)){const t=function(t){const e=t.value.split("\n");return["/*",D(k,e.map(((t,i)=>0===i?t.trimEnd():` ${i{0===t.arguments?.length&&(t.arguments=null)}))},ForStatement(t){t.initExpression&&(t.initExpression.omitSemicolon=!0),t.loopExpression.omitSemicolon=!0},HexLiteral(t){const e=t.value.slice(4,-1);t.value=i.singleQuote?`hex'${e}'`:`hex"${e}"`},Conditional(t){if(i.experimentalTernaries)for(;"TupleExpression"===t.condition.type&&!t.condition.isArray&&1===t.condition.components.length&&"Conditional"!==t.condition.components[0].type;)[t.condition]=t.condition.components},BinaryOperation(t){switch(t.operator){case"+":case"-":t.left=j(t.left,["%"]),t.right=j(t.right,["%"]);break;case"*":t.left=j(t.left,["/","%"]);break;case"/":t.left=j(t.left,["*","%"]);break;case"%":t.left=j(t.left,["*","/","%"]);break;case"**":if(!s)break;if(n(s,">=0.8.0")){t.right=j(t.right,["**"]);break}if("BinaryOperation"===t.right.type&&"**"===t.right.operator){const e={type:"BinaryOperation",operator:"**",left:t.left,right:t.right.left};t.left={type:"TupleExpression",components:[e],isArray:!1},t.right=t.right.right}break;case"<<":case">>":t.left=j(t.left,["+","-","*","/","**","<<",">>"]),t.right=j(t.right,["+","-","*","/","**"]);break;case"&":t.left=j(t.left,["+","-","*","/","**","<<",">>"]),t.right=j(t.right,["+","-","*","/","**","<<",">>"]);break;case"|":t.left=j(t.left,["+","-","*","/","**","<<",">>","&","^"]),t.right=j(t.right,["+","-","*","/","**","<<",">>","&","^"]);break;case"^":t.left=j(t.left,["+","-","*","/","**","<<",">>","&"]),t.right=j(t.right,["+","-","*","/","**","<<",">>","&"]);break;case"||":t.left=j(t.left,["&&"]),t.right=j(t.right,["&&"])}}}),r},...H}},printers:_r,options:V,defaultOptions:{bracketSpacing:!1,tabWidth:4}}})(),r.default})())); //# sourceMappingURL=standalone.cjs.map