From e09bdd4447cfa698f98ec63134ccd0689e1bb3c7 Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Tue, 28 Feb 2017 10:49:30 -0800 Subject: [PATCH] 0.20.0 --- CHANGELOG.md | 22 + docs/prettier.min.js | 29069 ++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 3 files changed, 29085 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb6d5c9d..cc6e7a7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,25 @@ +# 0.20.0 + +[link](https://github.com/jlongster/prettier/compare/0.19.0...0.20.0) + +* Fix extra parens for update expressions (#796) +* Fix empty options (#803) +* Eagerly evaluate `ifBreak` when processing template literals (fixes #795 +* Fix function declaration params comments (#802) +* Update flow to 0.40 (#808) +* Correct link for travis +* Fix function call args (#809) +* Properly support `do` (#811) +* Do not put parenthesis around not named default export (#819) +* Adds another preset to related projects (#820) +* Fix trailing commas in docs (#825) +* Put short body of arrow functions on the same line (#829) +* Preserve new lines for comments after `=` (#830) +* Fix indentation of a merged group (#828) +* Migrate class comments to the beginning (#831) +* Update list of related projects (#833) +* Allow breaking for logical expressions in member chains (#827) + # 0.19.0 [link](https://github.com/jlongster/prettier/compare/0.18.0...0.19.0) diff --git a/docs/prettier.min.js b/docs/prettier.min.js index f353b91f..54b2c50b 100644 --- a/docs/prettier.min.js +++ b/docs/prettier.min.js @@ -1,14 +1,29069 @@ -var prettier=function(){function Se(XP,WP){return WP={exports:{}},XP(WP,WP.exports),WP.exports}function Te(){throw new Error("setTimeout has not been defined")}function Pe(){throw new Error("clearTimeout has not been defined")}function _e(XP){if(Vu===setTimeout)return setTimeout(XP,0);if((Vu===Te||!Vu)&&setTimeout)return Vu=setTimeout,setTimeout(XP,0);try{return Vu(XP,0)}catch(WP){try{return Vu.call(null,XP,0)}catch(JP){return Vu.call(this,XP,0)}}}function Ne(XP){if(Uu===clearTimeout)return clearTimeout(XP);if((Uu===Pe||!Uu)&&clearTimeout)return Uu=clearTimeout,clearTimeout(XP);try{return Uu(XP)}catch(WP){try{return Uu.call(null,XP)}catch(JP){return Uu.call(this,XP)}}}function Le(){Wu&&Ju&&(Wu=!1,Ju.length?Xu=Ju.concat(Xu):Zu=-1,Xu.length&&Re())}function Re(){if(!Wu){var XP=_e(Le);Wu=!0;for(var WP=Xu.length;WP;){for(Ju=Xu,Xu=[];++Zu>16,$P[T_++]=255&KP>>8,$P[T_++]=255&KP;return 2===QP?(KP=Pf[XP.charCodeAt(WP)]<<2|Pf[XP.charCodeAt(WP+1)]>>4,$P[T_++]=255&KP):1==QP&&(KP=Pf[XP.charCodeAt(WP)]<<10|Pf[XP.charCodeAt(WP+1)]<<4|Pf[XP.charCodeAt(WP+2)]>>2,$P[T_++]=255&KP>>8,$P[T_++]=255&KP),$P}function Je(XP){return Tf[63&XP>>18]+Tf[63&XP>>12]+Tf[63&XP>>6]+Tf[63&XP]}function Ze(XP,WP,JP){var ZP,KP=[];for(var QP=WP;QPT_?T_:S_+$P));return 1==ZP?(WP=XP[JP-1],KP+=Tf[WP>>2],KP+=Tf[63&WP<<4],KP+="=="):2==ZP&&(WP=(XP[JP-2]<<8)+XP[JP-1],KP+=Tf[WP>>10],KP+=Tf[63&WP>>4],KP+=Tf[63&WP<<2],KP+="="),QP.push(KP),QP.join("")}function Qe(XP,WP,JP,ZP,KP){var QP,$P,S_=8*KP-ZP-1,T_=(1<>1,__=-7,N_=JP?KP-1:0,I_=JP?-1:1,L_=XP[WP+N_];for(N_+=I_,QP=L_&(1<<-__)-1,L_>>=-__,__+=S_;0<__;QP=256*QP+XP[WP+N_],N_+=I_,__-=8);for($P=QP&(1<<-__)-1,QP>>=-__,__+=ZP;0<__;$P=256*$P+XP[WP+N_],N_+=I_,__-=8);if(0===QP)QP=1-P_;else{if(QP===T_)return $P?NaN:(L_?-1:1)*Infinity;$P+=Math.pow(2,ZP),QP-=P_}return(L_?-1:1)*$P*Math.pow(2,QP-ZP)}function $e(XP,WP,JP,ZP,KP,QP){var $P,S_,T_,P_=8*QP-KP-1,__=(1<>1,I_=23===KP?Math.pow(2,-24)-Math.pow(2,-77):0,L_=ZP?0:QP-1,R_=ZP?1:-1,O_=0>WP||0===WP&&0>1/WP?1:0;for(WP=Math.abs(WP),isNaN(WP)||WP===Infinity?(S_=isNaN(WP)?1:0,$P=__):($P=Math.floor(Math.log(WP)/Math.LN2),1>WP*(T_=Math.pow(2,-$P))&&($P--,T_*=2),WP+=1<=$P+N_?I_/T_:I_*Math.pow(2,1-N_),2<=WP*T_&&($P++,T_/=2),$P+N_>=__?(S_=0,$P=__):1<=$P+N_?(S_=(WP*T_-1)*Math.pow(2,KP),$P+=N_):(S_=WP*Math.pow(2,N_-1)*Math.pow(2,KP),$P=0));8<=KP;XP[JP+L_]=255&S_,L_+=R_,S_/=256,KP-=8);for($P=$P<XP)throw new RangeError("\"size\" argument must not be negative")}function It(XP,WP,JP,ZP){return Nt(WP),0>=WP?Tt(XP,WP):void 0===JP?Tt(XP,WP):"string"==typeof ZP?Tt(XP,WP).fill(JP,ZP):Tt(XP,WP).fill(JP)}function Lt(XP,WP){if(Nt(WP),XP=Tt(XP,0>WP?0:0|Vt(WP)),!Pt.TYPED_ARRAY_SUPPORT)for(var JP=0;JPWP.length?0:0|Vt(WP.length);XP=Tt(XP,JP);for(var ZP=0;ZPJP||WP.byteLength=St())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+St().toString(16)+" bytes");return 0|XP}function Ut(XP){return!!(null!=XP&&XP._isBuffer)}function Xt(XP,WP){if(Ut(XP))return XP.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(XP)||XP instanceof ArrayBuffer))return XP.byteLength;"string"!=typeof XP&&(XP=""+XP);var JP=XP.length;if(0===JP)return 0;for(var ZP=!1;;)switch(WP){case"ascii":case"latin1":case"binary":return JP;case"utf8":case"utf-8":case void 0:return Pn(XP).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*JP;case"hex":return JP>>>1;case"base64":return Ln(XP).length;default:if(ZP)return Pn(XP).length;WP=(""+WP).toLowerCase(),ZP=!0;}}function Wt(XP,WP,JP){var ZP=!1;if((void 0===WP||0>WP)&&(WP=0),WP>this.length)return"";if((void 0===JP||JP>this.length)&&(JP=this.length),0>=JP)return"";if(JP>>>=0,WP>>>=0,JP<=WP)return"";for(XP||(XP="utf8");!0;)switch(XP){case"hex":return Ya(this,WP,JP);case"utf8":case"utf-8":return La(this,WP,JP);case"ascii":return Oa(this,WP,JP);case"latin1":case"binary":return Ma(this,WP,JP);case"base64":return Na(this,WP,JP);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Va(this,WP,JP);default:if(ZP)throw new TypeError("Unknown encoding: "+XP);XP=(XP+"").toLowerCase(),ZP=!0;}}function Jt(XP,WP,JP){var ZP=XP[WP];XP[WP]=XP[JP],XP[JP]=ZP}function Zt(XP,WP,JP,ZP,KP){if(0===XP.length)return-1;if("string"==typeof JP?(ZP=JP,JP=0):2147483647JP&&(JP=-2147483648),JP=+JP,isNaN(JP)&&(JP=KP?0:XP.length-1),0>JP&&(JP=XP.length+JP),JP>=XP.length){if(KP)return-1;JP=XP.length-1}else if(0>JP)if(KP)JP=0;else return-1;if("string"==typeof WP&&(WP=Pt.from(WP,ZP)),Ut(WP))return 0===WP.length?-1:Kt(XP,WP,JP,ZP,KP);if("number"==typeof WP)return WP&=255,Pt.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?KP?Uint8Array.prototype.indexOf.call(XP,WP,JP):Uint8Array.prototype.lastIndexOf.call(XP,WP,JP):Kt(XP,[WP],JP,ZP,KP);throw new TypeError("val must be string, number or Buffer")}function Kt(XP,WP,JP,ZP,KP){function QP(L_,R_){return 1===$P?L_[R_]:L_.readUInt16BE(R_*$P)}var $P=1,S_=XP.length,T_=WP.length;if(void 0!==ZP&&(ZP=(ZP+"").toLowerCase(),"ucs2"===ZP||"ucs-2"===ZP||"utf16le"===ZP||"utf-16le"===ZP)){if(2>XP.length||2>WP.length)return-1;$P=2,S_/=2,T_/=2,JP/=2}var P_;if(KP){var __=-1;for(P_=JP;P_S_&&(JP=S_-T_),P_=JP;0<=P_;P_--){var N_=!0;for(var I_=0;I_KP&&(ZP=KP)):ZP=KP;var QP=WP.length;if(0!=QP%2)throw new TypeError("Invalid hex string");ZP>QP/2&&(ZP=QP/2);for(var $P=0;$PQP&&($P=QP):2==S_?(T_=XP[KP+1],128==(192&T_)&&(N_=(31&QP)<<6|63&T_,127N_||57343N_&&($P=N_))):void 0}null===$P?($P=65533,S_=1):65535<$P&&($P-=65536,ZP.push(55296|1023&$P>>>10),$P=56320|1023&$P),ZP.push($P),KP+=S_}return Ra(ZP)}function Ra(XP){var WP=XP.length;if(WP<=Of)return String.fromCharCode.apply(String,XP);for(var JP="",ZP=0;ZPWP)&&(WP=0),(!JP||0>JP||JP>ZP)&&(JP=ZP);var KP="";for(var QP=WP;QPXP)throw new RangeError("offset is not uint");if(XP+WP>JP)throw new RangeError("Trying to access beyond buffer length")}function Xa(XP,WP,JP,ZP,KP,QP){if(!Ut(XP))throw new TypeError("\"buffer\" argument must be a Buffer instance");if(WP>KP||WPXP.length)throw new RangeError("Index out of range")}function Wa(XP,WP,JP,ZP){0>WP&&(WP=65535+WP+1);for(var KP=0,QP=Math.min(XP.length-JP,2);KP>>8*(ZP?KP:1-KP)}function Ja(XP,WP,JP,ZP){0>WP&&(WP=4294967295+WP+1);for(var KP=0,QP=Math.min(XP.length-JP,4);KP>>8*(ZP?KP:3-KP)}function Za(XP,WP,JP,ZP){if(JP+ZP>XP.length)throw new RangeError("Index out of range");if(0>JP)throw new RangeError("Index out of range")}function Ka(XP,WP,JP,ZP,KP){return KP||Za(XP,WP,JP,4,3.4028234663852886e38,-3.4028234663852886e38),$e(XP,WP,JP,ZP,23,4),JP+4}function Qa(XP,WP,JP,ZP,KP){return KP||Za(XP,WP,JP,8,1.7976931348623157e308,-1.7976931348623157e308),$e(XP,WP,JP,ZP,52,8),JP+8}function $a(XP){if(XP=Sn(XP).replace(Mf,""),2>XP.length)return"";for(;0!=XP.length%4;)XP+="=";return XP}function Sn(XP){return XP.trim?XP.trim():XP.replace(/^\s+|\s+$/g,"")}function Tn(XP){return 16>XP?"0"+XP.toString(16):XP.toString(16)}function Pn(XP,WP){WP=WP||Infinity;var JP,ZP=XP.length,KP=null,QP=[];for(var $P=0;$PJP){if(!KP){if(56319JP){-1<(WP-=3)&&QP.push(239,191,189),KP=JP;continue}JP=(KP-55296<<10|JP-56320)+65536}else KP&&-1<(WP-=3)&&QP.push(239,191,189);if(KP=null,128>JP){if(0>(WP-=1))break;QP.push(JP)}else if(2048>JP){if(0>(WP-=2))break;QP.push(192|JP>>6,128|63&JP)}else if(65536>JP){if(0>(WP-=3))break;QP.push(224|JP>>12,128|63&JP>>6,128|63&JP)}else if(1114112>JP){if(0>(WP-=4))break;QP.push(240|JP>>18,128|63&JP>>12,128|63&JP>>6,128|63&JP)}else throw new Error("Invalid code point")}return QP}function _n(XP){var WP=[];for(var JP=0;JP(WP-=2));++$P)JP=XP.charCodeAt($P),ZP=JP>>8,KP=JP%256,QP.push(KP),QP.push(ZP);return QP}function Ln(XP){return We($a(XP))}function Rn(XP,WP,JP,ZP){for(var KP=0;KP=WP.length||KP>=XP.length);++KP)WP[KP+JP]=XP[KP];return KP}function On(XP){return XP!==XP}function Mn(XP){return null!=XP&&(!!XP._isBuffer||Yn(XP)||Vn(XP))}function Yn(XP){return!!XP.constructor&&"function"==typeof XP.constructor.isBuffer&&XP.constructor.isBuffer(XP)}function Vn(XP){return"function"==typeof XP.readFloatLE&&"function"==typeof XP.slice&&Yn(XP.slice(0,0))}function Un(XP,WP){var JP={seen:[],stylize:Wn};return 3<=arguments.length&&(JP.depth=arguments[2]),4<=arguments.length&&(JP.colors=arguments[3]),_r(WP)?JP.showHidden=WP:WP&&Zr(JP,WP),Or(JP.showHidden)&&(JP.showHidden=!1),Or(JP.depth)&&(JP.depth=2),Or(JP.colors)&&(JP.colors=!1),Or(JP.customInspect)&&(JP.customInspect=!0),JP.colors&&(JP.stylize=Xn),Zn(JP,XP,JP.depth)}function Xn(XP,WP){var JP=Un.styles[WP];return JP?"\x1B["+Un.colors[JP][0]+"m"+XP+"\x1B["+Un.colors[JP][1]+"m":XP}function Wn(XP){return XP}function Jn(XP){var WP={};return XP.forEach(function(JP){WP[JP]=!0}),WP}function Zn(XP,WP,JP){if(XP.customInspect&&WP&&Xr(WP.inspect)&&WP.inspect!==Un&&!(WP.constructor&&WP.constructor.prototype===WP)){var ZP=WP.inspect(JP,XP);return Rr(ZP)||(ZP=Zn(XP,ZP,JP)),ZP}var KP=Kn(XP,WP);if(KP)return KP;var QP=Object.keys(WP),$P=Jn(QP);if(XP.showHidden&&(QP=Object.getOwnPropertyNames(WP)),Ur(WP)&&(0<=QP.indexOf("message")||0<=QP.indexOf("description")))return Qn(WP);if(0===QP.length){if(Xr(WP)){var S_=WP.name?": "+WP.name:"";return XP.stylize("[Function"+S_+"]","special")}if(Mr(WP))return XP.stylize(RegExp.prototype.toString.call(WP),"regexp");if(Vr(WP))return XP.stylize(Date.prototype.toString.call(WP),"date");if(Ur(WP))return Qn(WP)}var T_="",P_=!1,__=["{","}"];if(Pr(WP)&&(P_=!0,__=["[","]"]),Xr(WP)){var N_=WP.name?": "+WP.name:"";T_=" [Function"+N_+"]"}if(Mr(WP)&&(T_=" "+RegExp.prototype.toString.call(WP)),Vr(WP)&&(T_=" "+Date.prototype.toUTCString.call(WP)),Ur(WP)&&(T_=" "+Qn(WP)),0===QP.length&&(!P_||0==WP.length))return __[0]+T_+__[1];if(0>JP)return Mr(WP)?XP.stylize(RegExp.prototype.toString.call(WP),"regexp"):XP.stylize("[Object]","special");XP.seen.push(WP);var I_;return I_=P_?$n(XP,WP,JP,$P,QP):QP.map(function(L_){return Sr(XP,WP,JP,$P,L_,P_)}),XP.seen.pop(),Tr(I_,T_,__)}function Kn(XP,WP){if(Or(WP))return XP.stylize("undefined","undefined");if(Rr(WP)){var JP="'"+JSON.stringify(WP).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,"\"")+"'";return XP.stylize(JP,"string")}return Lr(WP)?XP.stylize(""+WP,"number"):_r(WP)?XP.stylize(""+WP,"boolean"):Nr(WP)?XP.stylize("null","null"):void 0}function Qn(XP){return"["+Error.prototype.toString.call(XP)+"]"}function $n(XP,WP,JP,ZP,KP){var QP=[];for(var $P=0,S_=WP.length;$PXP.seen.indexOf(T_.value)?(S_=Nr(JP)?Zn(XP,T_.value,null):Zn(XP,T_.value,JP-1),-1Yi(JP,WP))}):"if-break"===XP.type?Object.assign({},XP,{breakContents:XP.breakContents&&Yi(XP.breakContents,WP),flatContents:XP.flatContents&&Yi(XP.flatContents,WP)}):XP.contents?Object.assign({},XP,{contents:Yi(XP.contents,WP)}):XP}function Vi(XP,WP,JP){var ZP=JP;return Mi(XP,function(KP){var QP=WP(KP);if(void 0!==QP)return ZP=QP,!1}),ZP}function Ui(XP){if(0_o(WP)-_o(XP)&&Lo(XP,_o(WP)),0>No(XP)-No(WP)&&Ro(XP,No(WP))}function Ki(XP){if(XP)switch(XP.type){case"ExportDeclaration":case"ExportDefaultDeclaration":case"ExportDefaultSpecifier":case"DeclareExportDeclaration":case"ExportNamedDeclaration":case"ExportAllDeclaration":return!0;}return!1}function Qi(XP){return(WP,JP,ZP)=>{const KP=ZP&&ZP.backwards;if(!1===JP)return!1;const QP=WP.length;let $P=JP;for(;0<=$P&&$P=Mg(JP[ZP])-Og(XP));--ZP);return void JP.splice(ZP+1,0,XP)}}else if(XP[Rg])return XP[Rg];var KP;if(Zy.check(XP))KP=Object.keys(XP);else if(Ky.check(XP))KP=Wy.getFieldNames(XP);else return;JP||Object.defineProperty(XP,Rg,{value:JP=[],enumerable:!1});for(var ZP=0,QP=KP.length;ZP>1,P_=ZP[T_];if(0>=Og(P_)-Og(WP)&&0>=Mg(WP)-Mg(P_))return WP.enclosingNode=P_,void Mo(P_,WP,JP);if(0>=Mg(P_)-Og(WP)){KP=P_,$P=T_+1;continue}if(0>=Mg(WP)-Og(P_)){QP=P_,S_=T_;continue}throw new Error("Comment location overlaps with node location")}KP&&(WP.precedingNode=KP),QP&&(WP.followingNode=QP)}function Yo(XP,WP){var JP=XP.length;if(0!==JP){var ZP=XP[0].precedingNode,KP=XP[0].followingNode,QP=Og(KP);for(var $P=JP;0<$P;--$P){var S_=XP[$P-1];Xy.strictEqual(S_.precedingNode,ZP),Xy.strictEqual(S_.followingNode,KP);var T_=WP.slice(Mg(S_),QP);if(/\S/.test(T_))break;QP=Og(S_)}XP.forEach(function(P_,__){__<$P?Wo(ZP,P_):Uo(KP,P_)}),XP.length=0}}function Vo(XP,WP){var JP=XP.comments||(XP.comments=[]);JP.push(WP),WP.printed=!1}function Uo(XP,WP){WP.leading=!0,WP.trailing=!1,Vo(XP,WP)}function Xo(XP,WP){WP.leading=!1,WP.trailing=!1,Vo(XP,WP)}function Wo(XP,WP){WP.leading=!1,WP.trailing=!0,Vo(XP,WP)}function Jo(XP,WP){const JP=XP.body.filter(ZP=>"EmptyStatement"!==ZP.type);0===JP.length?Xo(XP,WP):Uo(JP[0],WP)}function Zo(XP,WP){"BlockStatement"===XP.type?Jo(XP,WP):Uo(XP,WP)}function Ko(XP,WP,JP){return XP&&"IfStatement"===XP.type&&WP&&("BlockStatement"===WP.type?(Jo(WP,JP),!0):!("IfStatement"!==WP.type)&&(Zo(WP.consequent,JP),!0))}function Qo(XP,WP,JP){return XP&&"TryStatement"===XP.type&&WP&&("BlockStatement"===WP.type?(Jo(WP,JP),!0):"TryStatement"===WP.type?(Zo(WP.finalizer,JP),!0):!("CatchClause"!==WP.type)&&(Zo(WP.body,JP),!0))}function $o(XP,WP,JP){return XP&&"MemberExpression"===XP.type&&WP&&"Identifier"===WP.type&&(Uo(XP,JP),!0)}function Sl(XP,WP,JP,ZP,KP){const QP=WP&&!Lg.hasNewlineInRange(KP,Mg(WP),Og(ZP));return(!WP||!QP)&&XP&&"ConditionalExpression"===XP.type&&JP&&(Uo(JP,ZP),!0)}function Tl(XP,WP,JP){return XP&&("ObjectProperty"===XP.type||"Property"===XP.type)&&XP.shorthand&&XP.key===WP&&"AssignmentPattern"===XP.value.type&&(Wo(XP.value.left,JP),!0)}function Pl(XP,WP){if(XP&&"TemplateLiteral"===XP.type){const JP=Nl(XP.expressions,WP);return WP.type="CommentBlock",Uo(XP.expressions[JP],WP),!0}return!1}function _l(XP){const WP=XP.getValue();switch(WP.printed=!0,WP.type){case"CommentBlock":case"Block":return"/*"+WP.value+"*/";case"CommentLine":case"Line":return"//"+WP.value;default:throw new Error("Not a comment: "+JSON.stringify(WP));}}function Nl(XP,WP){let JP;const ZP=Og(WP)-1,KP=Mg(WP)+1;for(let QP=0;QP=$P.start&&ZP<=$P.end||KP>=$P.start&&KP<=$P.end){JP=QP;break}}return JP}function Ll(XP){return void 0===XP.start?{start:XP.range[0],end:XP.range[1]}:{start:XP.start,end:XP.end}}function Rl(XP,WP,JP){const ZP=XP.getValue(),KP=_l(XP);JP.originalText;const QP="Block"===ZP.type||"CommentBlock"===ZP.type;return QP?$y([KP,Lg.hasNewline(JP.originalText,Mg(ZP))?Sg:" "]):$y([KP,Sg])}function Ol(XP,WP,JP){const ZP=XP.getValue(),KP=_l(XP),QP="Block"===ZP.type||"CommentBlock"===ZP.type;if(Lg.hasNewline(JP.originalText,Og(ZP),{backwards:!0})){const $P=Lg.isPreviousLineEmpty(JP.originalText,ZP);return _g($y([Sg,$P?Sg:"",KP]))}return QP?$y([" ",KP]):$y([_g(" "+KP),QP?"":Tg])}function Ml(XP){Lb.ok(this instanceof Ml),this.stack=[XP]}function Yl(XP,WP){var JP=XP.stack;for(var ZP=JP.length-1;0<=ZP;ZP-=2){var KP=JP[ZP];if(Mb.Node.check(KP)&&0>--WP)return KP}return null}function Vl(XP){return Mb.BinaryExpression.check(XP)||Mb.LogicalExpression.check(XP)}function Ul(XP){return!!Mb.CallExpression.check(XP)||(Yb.check(XP)?XP.some(Ul):!!Mb.Node.check(XP)&&Rb.someField(XP,function(WP,JP){return Ul(JP)}))}function Xl(XP,WP){switch(WP=WP||"es5",XP.trailingComma){case"all":if("all"===WP)return!0;case"es5":if("es5"===WP)return!0;case"none":default:return!1;}}function Wl(XP,WP,JP){Xb.ok(XP instanceof Jb);var ZP=XP.getValue(),KP=[],QP=!1,$P=Jl(XP,WP,JP);if(!ZP||Jx($P))return $P;if(ZP.comments&&0");const _N=XP.call(JP,"body"),NN=$b([$b(KP)," ",_N]);return"ArrayExpression"===ZP.body.type||"ObjectExpression"===ZP.body.type||"JSXElement"===ZP.body.type||"BlockStatement"===ZP.body.type?Ix(NN):Ix(Rx([NN,$b([$b(KP),Lx(WP.tabWidth,$b([Tx,_N]))])]),{shouldBreak:Ux(_N)});case"MethodDefinition":return ZP.static&&KP.push("static "),KP.push(Ql(XP,WP,JP)),$b(KP);case"YieldExpression":return KP.push("yield"),ZP.delegate&&KP.push("*"),ZP.argument&&KP.push(" ",XP.call(JP,"argument")),$b(KP);case"AwaitExpression":return KP.push("await"),ZP.all&&KP.push("*"),ZP.argument&&KP.push(" ",XP.call(JP,"argument")),$b(KP);case"ModuleDeclaration":return KP.push("module",XP.call(JP,"id")),ZP.source?(Xb.ok(!ZP.body),KP.push("from",XP.call(JP,"source"))):KP.push(XP.call(JP,"body")),Sx(" ",KP);case"ImportSpecifier":return ZP.imported?(ZP.importKind&&KP.push(XP.call(JP,"importKind")," "),KP.push(XP.call(JP,"imported")),ZP.local&&ZP.local.name!==ZP.imported.name&&KP.push(" as ",XP.call(JP,"local"))):ZP.id&&(KP.push(XP.call(JP,"id")),ZP.name&&KP.push(" as ",XP.call(JP,"name"))),$b(KP);case"ExportSpecifier":return ZP.local?(KP.push(XP.call(JP,"local")),ZP.exported&&ZP.exported.name!==ZP.local.name&&KP.push(" as ",XP.call(JP,"exported"))):ZP.id&&(KP.push(XP.call(JP,"id")),ZP.name&&KP.push(" as ",XP.call(JP,"name"))),$b(KP);case"ExportBatchSpecifier":return"*";case"ImportNamespaceSpecifier":return KP.push("* as "),ZP.local?KP.push(XP.call(JP,"local")):ZP.id&&KP.push(XP.call(JP,"id")),$b(KP);case"ImportDefaultSpecifier":return ZP.local?XP.call(JP,"local"):XP.call(JP,"id");case"ExportDeclaration":case"ExportDefaultDeclaration":case"ExportNamedDeclaration":return Rp(XP,WP,JP);case"ExportAllDeclaration":return KP.push("export *"),ZP.exported&&KP.push(" as ",XP.call(JP,"exported")),KP.push(" from ",XP.call(JP,"source"),";"),$b(KP);case"ExportNamespaceSpecifier":return $b(["* as ",XP.call(JP,"exported")]);case"ExportDefaultSpecifier":return XP.call(JP,"exported");case"ImportDeclaration":KP.push("import ");const IN=[];ZP.importKind&&"value"!==ZP.importKind&&KP.push(ZP.importKind+" ");var QP=[],$P=[];return ZP.specifiers&&0XN.leading)?KP.push($b([" (",Lx(WP.tabWidth,$b([_x,XP.call(JP,"argument")])),Tx,")"])):ZP.argument&&KP.push(" ",XP.call(JP,"argument")),KP.push(";"),$b(KP);case"CallExpression":return XP.getParentNode(),"MemberExpression"===ZP.callee.type?Xp(XP,WP,JP):$b([XP.call(JP,"callee"),$l(XP,WP,JP)]);case"ObjectExpression":case"ObjectPattern":case"ObjectTypeAnnotation":var P_="ObjectTypeAnnotation"===ZP.type,__=P_?",":",",N_=[],I_=ZP.exact?"{|":"{",L_=ZP.exact?"|}":"}",T_=XP.getParentNode(0),R_="UnionTypeAnnotation"===T_.type;P_&&N_.push("indexers","callProperties"),N_.push("properties");var O_=[];let LN=[];N_.forEach(function(XN){XP.each(function(WN){O_.push($b(LN)),O_.push(Ix(JP(WN))),LN=[__,Tx],Zb.isNextLineEmpty(WP.originalText,WN.getValue())&&LN.push(Px)},XN)});const RN=Zb.getLast(ZP.properties),ON=!(RN&&"RestProperty"===RN.type),MN=Zb.hasNewlineInRange(WP.originalText,Zb.locStart(ZP),Zb.locEnd(ZP));return 0===O_.length?Ix($b(["{",Wb.printDanglingComments(XP,WP),_x,"}"])):Ix($b([I_,Lx(WP.tabWidth+(R_?2:0),$b([WP.bracketSpacing?Tx:_x,$b(O_)])),Ox(ON&&Xl(WP)?",":""),Lx(R_?2:0,$b([WP.bracketSpacing?Tx:_x,L_])),XP.call(JP,"typeAnnotation")]),{shouldBreak:MN});case"PropertyPattern":return $b([XP.call(JP,"key"),": ",XP.call(JP,"pattern")]);case"ObjectProperty":case"Property":return ZP.method||"get"===ZP.kind||"set"===ZP.kind?Ql(XP,WP,JP):(ZP.shorthand?KP.push(XP.call(JP,"value")):(ZP.computed?KP.push("[",XP.call(JP,"key"),"]"):KP.push(Kl(XP,WP,JP)),KP.push($b([": ",XP.call(JP,"value")]))),$b(KP));case"ClassMethod":return ZP.static&&KP.push("static "),KP=KP.concat(Np(XP,WP,JP)),$b(KP);case"ObjectMethod":return Np(XP,WP,JP);case"Decorator":return $b(["@",XP.call(JP,"expression")]);case"ArrayExpression":case"ArrayPattern":if(0===ZP.elements.length)KP.push(Ix($b(["[",Wb.printDanglingComments(XP,WP),_x,"]"])));else{const XN=Zb.getLast(ZP.elements),WN=!(XN&&"RestElement"===XN.type),JN=WN&&null===XN;var M_=[];let ZN=[];XP.each(function(KN){M_.push($b(ZN)),M_.push(Ix(JP(KN))),ZN=[",",Tx],KN.getValue()&&Zb.isNextLineEmpty(WP.originalText,KN.getValue())&&ZN.push(_x)},"elements"),KP.push(Ix($b(["[",Lx(WP.tabWidth,$b([_x,$b(M_)])),JN?",":"",Ox(WN&&!JN&&Xl(WP)?",":""),Wb.printDanglingComments(XP,WP,!0),_x,"]"])))}return ZP.typeAnnotation&&KP.push(XP.call(JP,"typeAnnotation")),$b(KP);case"SequenceExpression":return Sx(", ",XP.map(JP,"expressions"));case"ThisExpression":return"this";case"Super":return"super";case"NullLiteral":return"null";case"RegExpLiteral":return ZP.extra.raw;case"NumericLiteral":return Rd(ZP.extra.raw);case"BooleanLiteral":case"StringLiteral":case"Literal":return"number"==typeof ZP.value?Rd(ZP.raw):"string"==typeof ZP.value?Nd(ZP,WP):""+ZP.value;case"Directive":return XP.call(JP,"value");case"DirectiveLiteral":return Nd(ZP,WP);case"ModuleSpecifier":if(ZP.local)throw new Error("The ESTree ModuleSpecifier type should be abstract");return Nd(ZP,WP);case"UnaryExpression":return KP.push(ZP.operator),/[a-z]$/.test(ZP.operator)&&KP.push(" "),KP.push(XP.call(JP,"argument")),$b(KP);case"UpdateExpression":return KP.push(XP.call(JP,"argument"),ZP.operator),ZP.prefix&&KP.reverse(),$b(KP);case"ConditionalExpression":return Ix($b([XP.call(JP,"test"),Lx(WP.tabWidth,$b([Tx,"? ",Lx(2,XP.call(JP,"consequent")),Tx,": ",Lx(2,XP.call(JP,"alternate"))]))]));case"NewExpression":KP.push("new ",XP.call(JP,"callee"));var Y_=ZP.arguments;return Y_&&KP.push($l(XP,WP,JP)),$b(KP);case"VariableDeclaration":var V_=XP.map(function(XN){return JP(XN)},"declarations");KP=[ZP.kind," ",V_[0],Lx(WP.tabWidth,$b(V_.slice(1).map(XN=>$b([",",Tx,XN]))))];var U_=XP.getParentNode(),X_=Kx.ForStatement.check(U_)||Kx.ForInStatement.check(U_)||Kx.ForOfStatement&&Kx.ForOfStatement.check(U_)||Kx.ForAwaitStatement&&Kx.ForAwaitStatement.check(U_);return X_&&U_.body!==ZP||KP.push(";"),Ix($b(KP));case"VariableDeclarator":return ZP.init?$b([XP.call(JP,"id")," = ",XP.call(JP,"init")]):XP.call(JP,"id");case"WithStatement":return $b(["with (",XP.call(JP,"object"),")",Td(XP.call(JP,"body"),WP)]);case"IfStatement":const YN=Td(XP.call(JP,"consequent"),WP);if(KP=["if (",Ix($b([Lx(WP.tabWidth,$b([_x,XP.call(JP,"test")])),_x])),")",YN],ZP.alternate){const XN=Pd(YN),WN=_d(YN);XN&&!WN?KP.push(" else"):KP.push(Rx([$b([Px,"else"])])),KP.push(Td(XP.call(JP,"alternate"),WP,"IfStatement"===ZP.alternate.type))}return Ix($b(KP));case"ForStatement":{const XN=Td(XP.call(JP,"body"),WP),WN=Wb.printDanglingComments(XP,WP,!0),JN=WN?$b([WN,_x]):"";return ZP.init||ZP.test||ZP.update?$b([JN,"for (",Ix($b([Lx(WP.tabWidth,$b([_x,XP.call(JP,"init"),";",Tx,XP.call(JP,"test"),";",Tx,XP.call(JP,"update")])),_x])),")",XN]):$b([JN,"for (;;)",XN])}case"WhileStatement":return $b(["while (",Ix($b([Lx(WP.tabWidth,$b([_x,XP.call(JP,"test")])),_x])),")",Td(XP.call(JP,"body"),WP)]);case"ForInStatement":return $b([ZP.each?"for each (":"for (",XP.call(JP,"left")," in ",XP.call(JP,"right"),")",Td(XP.call(JP,"body"),WP)]);case"ForOfStatement":return $b(["for (",XP.call(JP,"left")," of ",XP.call(JP,"right"),")",Td(XP.call(JP,"body"),WP)]);case"ForAwaitStatement":return $b(["for await (",XP.call(JP,"left")," of ",XP.call(JP,"right"),")",Td(XP.call(JP,"body"),WP)]);case"DoWhileStatement":var W_=Td(XP.call(JP,"body"),WP),J_=$b(["do",W_]),KP=[J_];const VN=Pd(W_);return VN?KP.push(" while"):KP.push($b([Tx,"while"])),KP.push(" (",XP.call(JP,"test"),");"),$b(KP);case"DoExpression":var Z_=XP.call(function(XN){return Zl(XN,WP,JP)},"body");return $b(["do {\n",Z_.indent(WP.tabWidth),"\n}"]);case"BreakStatement":return KP.push("break"),ZP.label&&KP.push(" ",XP.call(JP,"label")),KP.push(";"),$b(KP);case"ContinueStatement":return KP.push("continue"),ZP.label&&KP.push(" ",XP.call(JP,"label")),KP.push(";"),$b(KP);case"LabeledStatement":return"EmptyStatement"===ZP.body.type?$b([XP.call(JP,"label"),":;"]):$b([XP.call(JP,"label"),":",Px,XP.call(JP,"body")]);case"TryStatement":return KP.push("try ",XP.call(JP,"block")),ZP.handler?KP.push(" ",XP.call(JP,"handler")):ZP.handlers&&XP.each(function(XN){KP.push(" ",JP(XN))},"handlers"),ZP.finalizer&&KP.push(" finally ",XP.call(JP,"finalizer")),$b(KP);case"CatchClause":return KP.push("catch (",XP.call(JP,"param")),ZP.guard&&KP.push(" if ",XP.call(JP,"guard")),KP.push(") ",XP.call(JP,"body")),$b(KP);case"ThrowStatement":return $b(["throw ",XP.call(JP,"argument"),";"]);case"SwitchStatement":return $b(["switch (",XP.call(JP,"discriminant"),") {",0"EmptyStatement"!==XN.type)){const XN=XP.call(function(WN){return Zl(WN,WP,JP)},"consequent");KP.push(Pd(XN)?$b([" ",XN]):Lx(WP.tabWidth,$b([Px,XN])))}return $b(KP);case"DebuggerStatement":return"debugger;";case"JSXAttribute":if(KP.push(XP.call(JP,"name")),ZP.value){let XN;XN=("StringLiteral"===ZP.value.type||"Literal"===ZP.value.type)&&"string"==typeof ZP.value.value?"\""+Zb.htmlEscapeInsideDoubleQuote(ZP.value.value)+"\"":XP.call(JP,"value"),KP.push("=",XN)}return $b(KP);case"JSXIdentifier":return""+ZP.name;case"JSXNamespacedName":return Sx(":",[XP.call(JP,"namespace"),XP.call(JP,"name")]);case"JSXMemberExpression":return Sx(".",[XP.call(JP,"object"),XP.call(JP,"property")]);case"JSXSpreadAttribute":return $b(["{...",XP.call(JP,"argument"),"}"]);case"JSXExpressionContainer":{const XN=XP.getParentNode(0),WN="ArrayExpression"===ZP.expression.type||"ObjectExpression"===ZP.expression.type||"ArrowFunctionExpression"===ZP.expression.type||"CallExpression"===ZP.expression.type||"FunctionExpression"===ZP.expression.type||"JSXEmptyExpression"===ZP.expression.type||"JSXElement"===XN.type&&("ConditionalExpression"===ZP.expression.type||"LogicalExpression"===ZP.expression.type);return WN?Ix($b(["{",XP.call(JP,"expression"),Yx,"}"])):Ix($b(["{",Lx(WP.tabWidth,$b([_x,XP.call(JP,"expression")])),_x,Yx,"}"]))}case"JSXElement":{const XN=Zp(XP,WP,JP);return Kp(XP,XN,WP)}case"JSXOpeningElement":{const XN=XP.getValue();return 1===XN.attributes.length&&XN.attributes[0].value&&"Literal"===XN.attributes[0].value.type&&"string"==typeof XN.attributes[0].value.value?Ix($b(["<",XP.call(JP,"name")," ",$b(XP.map(JP,"attributes")),XN.selfClosing?" />":">"])):Ix($b(["<",XP.call(JP,"name"),$b([Lx(WP.tabWidth,$b(XP.map(WN=>$b([Tx,JP(WN)]),"attributes"))),XN.selfClosing?Tx:WP.jsxBracketSameLine?">":_x]),XN.selfClosing?"/>":WP.jsxBracketSameLine?"":">"]))}case"JSXClosingElement":return $b([""]);case"JSXText":throw new Error("JSXTest should be handled by JSXElement");case"JSXEmptyExpression":return $b([Wb.printDanglingComments(XP,WP,!0),_x]);case"TypeAnnotatedIdentifier":return $b([XP.call(JP,"annotation")," ",XP.call(JP,"identifier")]);case"ClassBody":return ZP.comments||0!==ZP.body.length?$b(["{",0{return"line"!==WN.type||WN.hard?WN:WN.soft?"":" "})}return KP.push("`"),XP.each(function(XN){var WN=XN.getName();KP.push(JP(XN)),WN ":": ",XP.call(JP,"returnType"),XP.call(JP,"predicate")),$b(KP);case"FunctionTypeParam":return $b([XP.call(JP,"name"),ZP.optional?"?":"",ZP.name?": ":"",XP.call(JP,"typeAnnotation")]);case"GenericTypeAnnotation":return $b([XP.call(JP,"id"),XP.call(JP,"typeParameters")]);case"DeclareInterface":case"InterfaceDeclaration":return("DeclareInterface"===ZP.type||Yd(ZP,WP))&&KP.push("declare "),KP.push("interface ",XP.call(JP,"id"),XP.call(JP,"typeParameters")," "),0"]);case"TypeParameter":switch(ZP.variance){case"plus":KP.push("+");break;case"minus":KP.push("-");break;default:}return KP.push(XP.call(JP,"name")),ZP.bound&&KP.push(XP.call(JP,"bound")),ZP["default"]&&KP.push("=",XP.call(JP,"default")),$b(KP);case"TypeofTypeAnnotation":return $b(["typeof ",XP.call(JP,"argument")]);case"VoidTypeAnnotation":return"void";case"NullTypeAnnotation":return"null";case"InferredPredicate":return"%checks";case"DeclaredPredicate":return $b(["%checks(",XP.call(JP,"value"),")"]);case"ClassHeritage":case"ComprehensionBlock":case"ComprehensionExpression":case"Glob":case"GeneratorExpression":case"LetStatement":case"LetExpression":case"GraphExpression":case"GraphIndexExpression":case"XMLDefaultDeclaration":case"XMLAnyName":case"XMLQualifiedIdentifier":case"XMLFunctionQualifiedIdentifier":case"XMLAttributeSelector":case"XMLFilterExpression":case"XML":case"XMLElement":case"XMLList":case"XMLEscape":case"XMLText":case"XMLStartTag":case"XMLEndTag":case"XMLPointTag":case"XMLName":case"XMLAttribute":case"XMLCdata":case"XMLComment":case"XMLProcessingInstruction":default:debugger;throw new Error("unknown type: "+JSON.stringify(ZP.type));}return p}function Zl(XP,WP,JP){let ZP=[];return XP.map(function(KP){var QP=KP.getValue();if(QP&&"EmptyStatement"!==QP.type){const $P=JP(KP),S_=WP.originalText,T_=[];T_.push($P),Zb.isNextLineEmpty(S_,QP)&&!Od(KP)&&T_.push(Px),ZP.push($b(T_))}}),Sx(Px,ZP)}function Kl(XP,WP,JP){const ZP=XP.getNode(),KP=ZP.key;return("StringLiteral"===KP.type||"Literal"===KP.type&&"string"==typeof KP.value)&&Kb(KP.value)&&!ZP.computed&&("flow"!==WP.parser||KP.value.match(/[a-zA-Z0-9$_]/))?KP.value:XP.call(JP,"key")}function Ql(XP,WP,JP){var ZP=XP.getNode(),KP=ZP.kind,QP=[];"ObjectMethod"===ZP.type||"ClassMethod"===ZP.type?ZP.value=ZP:Kx.FunctionExpression.assert(ZP.value),ZP.value.async&&QP.push("async "),KP&&"init"!==KP&&"method"!==KP&&"constructor"!==KP?(Xb.ok("get"===KP||"set"===KP),QP.push(KP," ")):ZP.value.generator&&QP.push("*");var $P=Kl(XP,WP,JP);return ZP.computed&&($P=$b(["[",$P,"]"])),QP.push($P,XP.call(JP,"value","typeParameters"),Ix($b([XP.call(function(S_){return _p(S_,JP,WP)},"value"),XP.call(S_=>Lp(S_,JP),"value")]))," ",XP.call(JP,"value","body")),$b(QP)}function $l(XP,WP,JP){var ZP=XP.map(JP,"arguments");if(0===ZP.length)return"()";const KP=Zb.getLast(XP.getValue().arguments),QP=(!KP.comments||!KP.comments.length)&&("ObjectExpression"===KP.type||"ArrayExpression"===KP.type||"FunctionExpression"===KP.type||"ArrowFunctionExpression"===KP.type&&("BlockStatement"===KP.body.type||"ArrowFunctionExpression"===KP.body.type||"ObjectExpression"===KP.body.type||"ArrayExpression"===KP.body.type||"CallExpression"===KP.body.type||"JSXElement"===KP.body.type));if(QP){const $P=ZP.slice(0,-1).some(Ux);return $b([ZP.some(Ux)?Mx:"",Rx([$b(["(",Sx($b([", "]),ZP),")"]),$b(["(",Sx($b([",",Tx]),ZP.slice(0,-1)),1$l(M_,WP,JP),WP)}),M_.call(V_=>ZP(V_),"callee")):"MemberExpression"===Y_.type?($P.unshift({node:Y_,printed:Wb.printComments(M_,()=>Up(M_,WP,JP),WP)}),M_.call(V_=>ZP(V_),"object")):$P.unshift({node:Y_,printed:M_.call(JP)})}function KP(M_){return $b(M_.map(Y_=>Y_.printed))}function QP(M_,Y_){return Lx(WP.tabWidth,Ix($b([Y_,Sx(Y_,M_.map(KP))])))}const $P=[];$P.unshift({node:XP.getValue(),printed:$l(XP,WP,JP)}),XP.call(M_=>ZP(M_),"callee");for(var S_=[],T_=[$P[0]],P_=1;P_<$P.length&&"CallExpression"===$P[P_].node.type;++P_)T_.push($P[P_]);for(;P_+1<$P.length&&"MemberExpression"===$P[P_].node.type&&"MemberExpression"===$P[P_+1].node.type;++P_)T_.push($P[P_]);S_.push(T_),T_=[];for(var __=!1;P_<$P.length;++P_){if(__&&"MemberExpression"===$P[P_].node.type){if($P[P_].node.computed){T_.push($P[P_]);continue}S_.push(T_),T_=[],__=!1}"CallExpression"===$P[P_].node.type&&(__=!0),T_.push($P[P_])}0=S_.length&&!R_)return Ix(L_);const O_=$b([KP(S_[0]),N_?QP(S_.slice(1,2),""):"",QP(S_.slice(N_?2:1),Px)]);return R_?Ix(O_):I_.slice(0,-1).some(Ux)?Ix(O_):Rx([L_,O_])}function Wp(XP){if(0===XP.children.length)return!0;if(1{const L_=I_.match(/\n/g);if(L_)return QP.push(Px),void(1{if(R_===QP){if(0===O_)return void __.unshift(R_);if(O_===$P.length-1)return void __.push(R_)}let M_=$P[O_-1];M_&&Ux(M_)?(S_=!0,__.push([R_])):Zb.getLast(__).push(R_),!S_&&O_===$P.length-1&&Ux(R_)&&(S_=!0)});const N_=[Px,$b(__.map(R_=>Array.isArray(R_)?Rx([$b(R_)]):R_))],I_=XP.call(JP,"closingElement"),L_=Ix($b([KP,Lx(WP.tabWidth,Ix($b(N_),{shouldBreak:!0})),Px,I_]));return S_?L_:Rx([Ix($b([KP,$b($P),I_])),L_])}function Kp(XP,WP,JP){const ZP=XP.getParentNode();return ZP?{JSXElement:!0,ExpressionStatement:!0,CallExpression:!0,ConditionalExpression:!0,LogicalExpression:!0}[ZP.type]?WP:Ix($b([Ox("("),Lx(JP.tabWidth,$b([_x,WP])),_x,Ox(")")])):WP}function Qp(XP){return"BinaryExpression"===XP.type||"LogicalExpression"===XP.type}function $p(XP){return"LogicalExpression"===XP.type&&("ObjectExpression"===XP.right.type||"ArrayExpression"===XP.right.type)}function Sd(XP,WP,JP,ZP,KP){let QP=XP.getValue();if(Qp(QP)){Zb.getPrecedence(QP.left.operator)===Zb.getPrecedence(QP.operator)?XP.call(P_=>Sd(P_,WP,JP,ZP,!0),"left"):WP.push(XP.call(JP,"left"));const $P=$b([QP.operator,$p(QP)?" ":Tx,XP.call(JP,"right")]),S_=XP.getParentNode(),T_="BinaryExpression"===QP.type&&"BinaryExpression"!==S_.type&&"BinaryExpression"!==QP.left.type&&"BinaryExpression"!==QP.right.type;WP.push(" ",T_?Ix($P):$P),KP&&QP.comments&&WP.push(Wb.printComments(XP,()=>"",ZP))}else WP.push(XP.call(JP));return WP}function Td(XP,WP,JP){return""===XP?";":Pd(XP)||JP?$b([" ",XP]):Lx(WP.tabWidth,$b([Tx,XP]))}function Pd(XP){const WP=Wx(XP);return"{"===WP||"{}"===WP}function _d(XP){const WP=Wx(XP);return"{}"===WP}function Nd(XP,WP){const JP=XP.value;if(Qx.assert(JP),"flow"===WP.parser&&-1!==JP.indexOf("\uFFFD"))return XP.raw;const ZP=XP.extra?XP.extra.raw:XP.raw,KP=ZP.slice(1,-1),QP={quote:"\"",regex:/"/g},$P={quote:"'",regex:/'/g},S_=WP.singleQuote?$P:QP,T_=S_===$P?QP:$P;let P_=!1;if(KP.includes(S_.quote)){const N_=(KP.match(S_.regex)||[]).length,I_=(KP.match(T_.regex)||[]).length;P_=N_>I_}const __=P_?T_.quote:S_.quote;return Ld(KP,__)}function Ld(XP,WP){const JP="\""===WP?"'":"\"",ZP=/\\([\s\S])|(['"])/g,KP=XP.replace(ZP,(QP,$P,S_)=>{return $P===JP?$P:S_===WP?"\\"+S_:QP});return WP+KP+WP}function Rd(XP){return XP.toLowerCase().replace(/^([\d.]+e)(?:\+|(-))?0*/,"$1$2").replace(/^\./,"0.").replace(/\.(?=e|$)/,"")}function Od(XP){const WP=XP.getParentNode(),JP=XP.getValue(),ZP=WP.body;return ZP&&ZP[ZP.length-1]===JP}function Md(XP){return"ObjectTypeProperty"===XP.type&&"FunctionTypeAnnotation"===XP.value.type&&!XP.static&&Zb.locStart(XP.key)!==Zb.locStart(XP.value)}function Yd(XP,WP){return!("flow"!==WP.parser)&&WP.originalText.slice(0,Zb.locStart(XP)).match(/declare\s*$/)}function Vd(XP,WP,JP){let ZP=WP.length;for(const KP=[XP];0<=JP;){if(0===KP.length){if(0===ZP)return!0;KP.push(WP[ZP-1]),ZP--;continue}const $P=KP.pop(),S_=$P[0],T_=$P[1],P_=$P[2];if("string"==typeof P_)JP-=P_.length;else switch(P_.type){case"concat":for(var QP=P_.parts.length-1;0<=QP;QP--)KP.push([S_,T_,P_.parts[QP]]);break;case"indent":KP.push([S_+P_.n,T_,P_.contents]);break;case"group":KP.push([S_,P_.break?$x:T_,P_.contents]);break;case"if-break":T_===$x&&P_.breakContents&&KP.push([S_,T_,P_.breakContents]),T_===SS&&P_.flatContents&&KP.push([S_,T_,P_.flatContents]);break;case"line":switch(T_){case SS:if(!P_.hard){P_.soft||(JP-=1);break}case $x:return!0;}}}return!1}function Ud(){var XP={};for(var WP=NS.length,JP=0;JP1/XP?"-0":""+XP:"NaN"}function Sc(XP,WP){return WP?""===XP.name?"[Function anonymous]":"[Function "+XP.name+"]":"[Function]"}function Tc(XP){return WS.call(XP).replace(JS,"Symbol($1)")}function Pc(XP){return"["+US.call(XP)+"]"}function _c(XP,WP,JP){if(!0===XP||!1===XP)return""+XP;if(void 0===XP)return"undefined";if(null===XP)return"null";const ZP=typeof XP;if("number"==ZP)return $d(XP);if("string"==ZP)return"\""+XP.replace(/"|\\/g,"\\$&")+"\"";if("function"==ZP)return Sc(XP,WP);if("symbol"==ZP)return Tc(XP);const KP=YS.call(XP);return"[object WeakMap]"===KP?"WeakMap {}":"[object WeakSet]"===KP?"WeakSet {}":"[object Function]"===KP||"[object GeneratorFunction]"===KP?Sc(XP,WP):"[object Symbol]"===KP?Tc(XP):"[object Date]"===KP?VS.call(XP):"[object Error]"===KP?Pc(XP):"[object RegExp]"===KP?JP?XS.call(XP).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&"):XS.call(XP):"[object Arguments]"===KP&&0===XP.length?"Arguments []":Qd(KP)&&0===XP.length?XP.constructor.name+" []":!!(XP instanceof Error)&&Pc(XP)}function Nc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_){let R_="";if(XP.length){R_+=KP;const O_=JP+WP;for(let M_=0;M_ "+U_,M_=O_.next(),M_.done||(R_+=","+ZP)}R_+=(P_?"":",")+KP+JP}return R_+"}"}function Mc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_){const R_=P_?"":XP.constructor?XP.constructor.name+" ":"Object ";let O_=R_+"{",M_=Object.keys(XP).sort();const Y_=KS(XP);if(Y_.length&&(M_=M_.filter(V_=>"symbol"!=typeof V_&&"[object Symbol]"!==YS.call(V_)).concat(Y_)),M_.length){O_+=KP;const V_=JP+WP;for(let U_=0;U_$P;if(__&&!R_&&XP.toJSON&&"function"==typeof XP.toJSON)return Xc(XP.toJSON(),WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_);const O_=YS.call(XP);return"[object Arguments]"===O_?R_?"[Arguments]":Lc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_):Qd(O_)?R_?"[Array]":Rc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_):"[object Map]"===O_?R_?"[Map]":Oc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_):"[object Set]"===O_?R_?"[Set]":Yc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_):R_?"[Object]":Mc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_)}function Uc(XP,WP,JP,ZP,KP,QP,$P,S_,T_,P_,__,N_,I_,L_){let R_=!1,O_;for(let M_=0;M_{if(!QS.hasOwnProperty(WP))throw new Error("prettyFormat: Invalid option: "+WP)}),XP.min&&void 0!==XP.indent&&0!==XP.indent)throw new Error("prettyFormat: Cannot run with min option and indent")}function Jc(XP){const WP={};return Object.keys(QS).forEach(JP=>WP[JP]=XP.hasOwnProperty(JP)?XP[JP]:QS[JP]),WP.min&&(WP.indent=0),WP}function Zc(XP){return Array(XP+1).join(" ")}function Kc(XP){if("concat"===XP.type){var WP=[];for(var JP=0;JP{if(!WP.printed)throw new Error("Comment \""+WP.value.trim()+"\" was not printed. Please report this error!");delete WP.printed})}function _u(XP,WP){const JP=Su(XP,WP),ZP=Tu(XP,JP,WP),KP=OP(JP,WP),QP=MP(KP,WP.printWidth,$c(XP));return Pu(ZP),QP}function Nu(XP,WP){if(!XP.startsWith("#!"))return _u(XP,WP);const JP=XP.indexOf("\n"),ZP=XP.slice(0,JP+1),KP=XP.slice(JP+1),QP=XP.charAt(JP+1),$P="\n"===QP?"\n":"\r"===QP?"\r\n":"";return ZP+$P+_u(KP,WP)}var Iu=Se(function(XP,WP){Object.defineProperty(WP,"__esModule",{value:!0}),WP.default=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,WP.matchToToken=function(JP){var ZP={type:"invalid",value:JP[0]};return JP[1]?(ZP.type="string",ZP.closed=!!(JP[3]||JP[4])):JP[5]?ZP.type="comment":JP[6]?(ZP.type="comment",ZP.closed=!!JP[7]):JP[8]?ZP.type="regex":JP[9]?ZP.type="number":JP[10]?ZP.type="name":JP[11]?ZP.type="punctuator":JP[12]&&(ZP.type="whitespace"),ZP}}),Lu=Se(function(XP){(function(){"use strict";function WP(ZP){if(null==ZP)return!1;switch(ZP.type){case"BlockStatement":case"BreakStatement":case"ContinueStatement":case"DebuggerStatement":case"DoWhileStatement":case"EmptyStatement":case"ExpressionStatement":case"ForInStatement":case"ForStatement":case"IfStatement":case"LabeledStatement":case"ReturnStatement":case"SwitchStatement":case"ThrowStatement":case"TryStatement":case"VariableDeclaration":case"WhileStatement":case"WithStatement":return!0;}return!1}function JP(ZP){switch(ZP.type){case"IfStatement":return null==ZP.alternate?ZP.consequent:ZP.alternate;case"LabeledStatement":case"ForStatement":case"ForInStatement":case"WhileStatement":case"WithStatement":return ZP.body;}return null}XP.exports={isExpression:function(KP){if(null==KP)return!1;switch(KP.type){case"ArrayExpression":case"AssignmentExpression":case"BinaryExpression":case"CallExpression":case"ConditionalExpression":case"FunctionExpression":case"Identifier":case"Literal":case"LogicalExpression":case"MemberExpression":case"NewExpression":case"ObjectExpression":case"SequenceExpression":case"ThisExpression":case"UnaryExpression":case"UpdateExpression":return!0;}return!1},isStatement:WP,isIterationStatement:function(KP){if(null==KP)return!1;switch(KP.type){case"DoWhileStatement":case"ForInStatement":case"ForStatement":case"WhileStatement":return!0;}return!1},isSourceElement:function(KP){return WP(KP)||null!=KP&&"FunctionDeclaration"===KP.type},isProblematicIfStatement:function(KP){var QP;if("IfStatement"!==KP.type)return!1;if(null==KP.alternate)return!1;QP=KP.consequent;do{if("IfStatement"===QP.type&&null==QP.alternate)return!0;QP=JP(QP)}while(QP);return!1},trailingStatement:JP}})()}),Ru=Se(function(XP){(function(){"use strict";function WP(T_){if(65535>=T_)return String.fromCharCode(T_);var P_=String.fromCharCode(Math.floor((T_-65536)/1024)+55296),__=String.fromCharCode((T_-65536)%1024+56320);return P_+__}var JP,ZP,KP,QP,$P,S_;for(ZP={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},JP={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},KP=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],QP=Array(128),S_=0;128>S_;++S_)QP[S_]=97<=S_&&122>=S_||65<=S_&&90>=S_||36===S_||95===S_;for($P=Array(128),S_=0;128>S_;++S_)$P[S_]=97<=S_&&122>=S_||65<=S_&&90>=S_||48<=S_&&57>=S_||36===S_||95===S_;XP.exports={isDecimalDigit:function(P_){return 48<=P_&&57>=P_},isHexDigit:function(P_){return 48<=P_&&57>=P_||97<=P_&&102>=P_||65<=P_&&70>=P_},isOctalDigit:function(P_){return 48<=P_&&55>=P_},isWhiteSpace:function(P_){return 32===P_||9===P_||11===P_||12===P_||160===P_||5760<=P_&&0<=KP.indexOf(P_)},isLineTerminator:function(P_){return 10===P_||13===P_||8232===P_||8233===P_},isIdentifierStartES5:function(P_){return 128>P_?QP[P_]:ZP.NonAsciiIdentifierStart.test(WP(P_))},isIdentifierPartES5:function(P_){return 128>P_?$P[P_]:ZP.NonAsciiIdentifierPart.test(WP(P_))},isIdentifierStartES6:function(P_){return 128>P_?QP[P_]:JP.NonAsciiIdentifierStart.test(WP(P_))},isIdentifierPartES6:function(P_){return 128>P_?$P[P_]:JP.NonAsciiIdentifierPart.test(WP(P_))}}})()}),Ou=Se(function(XP){(function(){"use strict";function WP(__){return"implements"===__||"interface"===__||"package"===__||"private"===__||"protected"===__||"public"===__||"static"===__||"let"===__}function JP(__,N_){return(N_||"yield"!==__)&&ZP(__,N_)}function ZP(__,N_){if(N_&&WP(__))return!0;switch(__.length){case 2:return"if"===__||"in"===__||"do"===__;case 3:return"var"===__||"for"===__||"new"===__||"try"===__;case 4:return"this"===__||"else"===__||"case"===__||"void"===__||"with"===__||"enum"===__;case 5:return"while"===__||"break"===__||"catch"===__||"throw"===__||"const"===__||"yield"===__||"class"===__||"super"===__;case 6:return"return"===__||"typeof"===__||"delete"===__||"switch"===__||"export"===__||"import"===__;case 7:return"default"===__||"finally"===__||"extends"===__;case 8:return"function"===__||"continue"===__||"debugger"===__;case 10:return"instanceof"===__;default:return!1;}}function KP(__,N_){return"null"===__||"true"===__||"false"===__||JP(__,N_)}function QP(__,N_){return"null"===__||"true"===__||"false"===__||ZP(__,N_)}function $P(__){var N_,I_,L_;if(0===__.length)return!1;if(L_=__.charCodeAt(0),!P_.isIdentifierStartES5(L_))return!1;for(N_=1,I_=__.length;N_=L_){if(++N_,N_>=I_)return!1;if(R_=__.charCodeAt(N_),!(56320<=R_&&57343>=R_))return!1;L_=S_(L_,R_)}if(!O_(L_))return!1;O_=P_.isIdentifierPartES6}return!0}var P_=Ru;XP.exports={isKeywordES5:JP,isKeywordES6:ZP,isReservedWordES5:KP,isReservedWordES6:QP,isRestrictedWord:function(N_){return"eval"===N_||"arguments"===N_},isIdentifierNameES5:$P,isIdentifierNameES6:T_,isIdentifierES5:function(N_,I_){return $P(N_)&&!KP(N_,I_)},isIdentifierES6:function(N_,I_){return T_(N_)&&!QP(N_,I_)}}})()}),Mu=Se(function(XP,WP){(function(){"use strict";WP.ast=Lu,WP.code=Ru,WP.keyword=Ou})()}),Yu="undefined"==typeof global?"undefined"==typeof self?"undefined"==typeof window?{}:window:self:global,Vu=Te,Uu=Pe;"function"==typeof Yu.setTimeout&&(Vu=setTimeout),"function"==typeof Yu.clearTimeout&&(Uu=clearTimeout);var Xu=[],Wu=!1,Ju,Zu=-1;Oe.prototype.run=function(){this.fun.apply(null,this.array)};var Ku=Yu.performance||{},Qu=Ku.now||Ku.mozNow||Ku.msNow||Ku.oNow||Ku.webkitNow||function(){return new Date().getTime()},$u=new Date,Sm={nextTick:function(WP){var JP=Array(arguments.length-1);if(1KP&&(ZP--,KP+=1e9)),[ZP,KP]},platform:"browser",release:{},config:{},uptime:function(){var WP=new Date;return(WP-$u)/1e3}},Tm=/[|\\{}()[\]^$+*?.]/g,Pm=Se(function(XP){"use strict";Object.defineProperty(XP,"exports",{enumerable:!0,get:function(){var JP={modifiers:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},colors:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39]},bgColors:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49]}};return JP.colors.grey=JP.colors.gray,Object.keys(JP).forEach(function(ZP){var KP=JP[ZP];Object.keys(KP).forEach(function(QP){var $P=KP[QP];JP[QP]=KP[QP]={open:"\x1B["+$P[0]+"m",close:"\x1B["+$P[1]+"m"}}),Object.defineProperty(JP,ZP,{value:KP,enumerable:!1})}),JP}})}),_m=function(){return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g},Nm=_m(),Lm=new RegExp(_m().source),Rm=Lm.test.bind(Lm),Om=Sm.argv,Mm=Om.indexOf("--"),Ym=function(XP){XP="--"+XP;var WP=Om.indexOf(XP);return-1!==WP&&(!(-1!==Mm)||WP"),U_(X_.gutter,IN),TN,LN].join("")}return" "+U_(X_.gutter,IN)+TN}).join("\n");return Y_?V_.reset(SN):SN};var $P=Iu,S_=JP($P),T_=JP(Mu),P_=JP($m),__=/\r\n|[\n\r\u2028\u2029]/,N_=/^[a-z][\w-]*$/i,I_=/^[()\[\]{}]$/;XP.exports=WP["default"]}),Tf=[],Pf=[],_f="undefined"==typeof Uint8Array?Array:Uint8Array,Nf=!1,Lf={}.toString,Rf=Array.isArray||function(XP){return"[object Array]"==Lf.call(XP)};Pt.TYPED_ARRAY_SUPPORT=!(Yu.TYPED_ARRAY_SUPPORT!==void 0)||Yu.TYPED_ARRAY_SUPPORT,Pt.poolSize=8192,Pt._augment=function(XP){return XP.__proto__=Pt.prototype,XP},Pt.from=function(XP,WP,JP){return _t(null,XP,WP,JP)},Pt.TYPED_ARRAY_SUPPORT&&(Pt.prototype.__proto__=Uint8Array.prototype,Pt.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&Pt[Symbol.species]===Pt),Pt.alloc=function(XP,WP,JP){return It(null,XP,WP,JP)},Pt.allocUnsafe=function(XP){return Lt(null,XP)},Pt.allocUnsafeSlow=function(XP){return Lt(null,XP)},Pt.isBuffer=Mn,Pt.compare=function(WP,JP){if(!Ut(WP)||!Ut(JP))throw new TypeError("Arguments must be Buffers");if(WP===JP)return 0;var ZP=WP.length,KP=JP.length;for(var QP=0,$P=Math.min(ZP,KP);QP<$P;++QP)if(WP[QP]!==JP[QP]){ZP=WP[QP],KP=JP[QP];break}return ZPJP&&(WP+=" ... ")),""},Pt.prototype.compare=function(WP,JP,ZP,KP,QP){if(!Ut(WP))throw new TypeError("Argument must be a Buffer");if(void 0===JP&&(JP=0),void 0===ZP&&(ZP=WP?WP.length:0),void 0===KP&&(KP=0),void 0===QP&&(QP=this.length),0>JP||ZP>WP.length||0>KP||QP>this.length)throw new RangeError("out of range index");if(KP>=QP&&JP>=ZP)return 0;if(KP>=QP)return-1;if(JP>=ZP)return 1;if(JP>>>=0,ZP>>>=0,KP>>>=0,QP>>>=0,this===WP)return 0;var $P=QP-KP,S_=ZP-JP,T_=Math.min($P,S_),P_=this.slice(KP,QP),__=WP.slice(JP,ZP);for(var N_=0;N_QP)&&(ZP=QP),0ZP||0>JP)||JP>this.length)throw new RangeError("Attempt to write outside buffer bounds");KP||(KP="utf8");for(var $P=!1;;)switch(KP){case"hex":return Qt(this,WP,JP,ZP);case"utf8":case"utf-8":return $t(this,WP,JP,ZP);case"ascii":return Sa(this,WP,JP,ZP);case"latin1":case"binary":return Ta(this,WP,JP,ZP);case"base64":return Pa(this,WP,JP,ZP);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _a(this,WP,JP,ZP);default:if($P)throw new TypeError("Unknown encoding: "+KP);KP=(""+KP).toLowerCase(),$P=!0;}},Pt.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Of=4096;Pt.prototype.slice=function(WP,JP){var ZP=this.length;WP=~~WP,JP=JP===void 0?ZP:~~JP,0>WP?(WP+=ZP,0>WP&&(WP=0)):WP>ZP&&(WP=ZP),0>JP?(JP+=ZP,0>JP&&(JP=0)):JP>ZP&&(JP=ZP),JP=QP&&(KP-=Math.pow(2,8*JP)),KP},Pt.prototype.readIntBE=function(WP,JP,ZP){WP|=0,JP|=0,ZP||Ua(WP,JP,this.length);for(var KP=JP,QP=1,$P=this[WP+--KP];0=QP&&($P-=Math.pow(2,8*JP)),$P},Pt.prototype.readInt8=function(WP,JP){return JP||Ua(WP,1,this.length),128&this[WP]?-1*(255-this[WP]+1):this[WP]},Pt.prototype.readInt16LE=function(WP,JP){JP||Ua(WP,2,this.length);var ZP=this[WP]|this[WP+1]<<8;return 32768&ZP?4294901760|ZP:ZP},Pt.prototype.readInt16BE=function(WP,JP){JP||Ua(WP,2,this.length);var ZP=this[WP+1]|this[WP]<<8;return 32768&ZP?4294901760|ZP:ZP},Pt.prototype.readInt32LE=function(WP,JP){return JP||Ua(WP,4,this.length),this[WP]|this[WP+1]<<8|this[WP+2]<<16|this[WP+3]<<24},Pt.prototype.readInt32BE=function(WP,JP){return JP||Ua(WP,4,this.length),this[WP]<<24|this[WP+1]<<16|this[WP+2]<<8|this[WP+3]},Pt.prototype.readFloatLE=function(WP,JP){return JP||Ua(WP,4,this.length),Qe(this,WP,!0,23,4)},Pt.prototype.readFloatBE=function(WP,JP){return JP||Ua(WP,4,this.length),Qe(this,WP,!1,23,4)},Pt.prototype.readDoubleLE=function(WP,JP){return JP||Ua(WP,8,this.length),Qe(this,WP,!0,52,8)},Pt.prototype.readDoubleBE=function(WP,JP){return JP||Ua(WP,8,this.length),Qe(this,WP,!1,52,8)},Pt.prototype.writeUIntLE=function(WP,JP,ZP,KP){if(WP=+WP,JP|=0,ZP|=0,!KP){var QP=Math.pow(2,8*ZP)-1;Xa(this,WP,JP,ZP,QP,0)}var $P=1,S_=0;for(this[JP]=255&WP;++S_>>8):Wa(this,WP,JP,!0),JP+2},Pt.prototype.writeUInt16BE=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,2,65535,0),Pt.TYPED_ARRAY_SUPPORT?(this[JP]=WP>>>8,this[JP+1]=255&WP):Wa(this,WP,JP,!1),JP+2},Pt.prototype.writeUInt32LE=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,4,4294967295,0),Pt.TYPED_ARRAY_SUPPORT?(this[JP+3]=WP>>>24,this[JP+2]=WP>>>16,this[JP+1]=WP>>>8,this[JP]=255&WP):Ja(this,WP,JP,!0),JP+4},Pt.prototype.writeUInt32BE=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,4,4294967295,0),Pt.TYPED_ARRAY_SUPPORT?(this[JP]=WP>>>24,this[JP+1]=WP>>>16,this[JP+2]=WP>>>8,this[JP+3]=255&WP):Ja(this,WP,JP,!1),JP+4},Pt.prototype.writeIntLE=function(WP,JP,ZP,KP){if(WP=+WP,JP|=0,!KP){var QP=Math.pow(2,8*ZP-1);Xa(this,WP,JP,ZP,QP-1,-QP)}var $P=0,S_=1,T_=0;for(this[JP]=255&WP;++$PWP&&0==T_&&0!==this[JP+$P-1]&&(T_=1),this[JP+$P]=255&(WP/S_>>0)-T_;return JP+ZP},Pt.prototype.writeIntBE=function(WP,JP,ZP,KP){if(WP=+WP,JP|=0,!KP){var QP=Math.pow(2,8*ZP-1);Xa(this,WP,JP,ZP,QP-1,-QP)}var $P=ZP-1,S_=1,T_=0;for(this[JP+$P]=255&WP;0<=--$P&&(S_*=256);)0>WP&&0==T_&&0!==this[JP+$P+1]&&(T_=1),this[JP+$P]=255&(WP/S_>>0)-T_;return JP+ZP},Pt.prototype.writeInt8=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,1,127,-128),Pt.TYPED_ARRAY_SUPPORT||(WP=Math.floor(WP)),0>WP&&(WP=255+WP+1),this[JP]=255&WP,JP+1},Pt.prototype.writeInt16LE=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,2,32767,-32768),Pt.TYPED_ARRAY_SUPPORT?(this[JP]=255&WP,this[JP+1]=WP>>>8):Wa(this,WP,JP,!0),JP+2},Pt.prototype.writeInt16BE=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,2,32767,-32768),Pt.TYPED_ARRAY_SUPPORT?(this[JP]=WP>>>8,this[JP+1]=255&WP):Wa(this,WP,JP,!1),JP+2},Pt.prototype.writeInt32LE=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,4,2147483647,-2147483648),Pt.TYPED_ARRAY_SUPPORT?(this[JP]=255&WP,this[JP+1]=WP>>>8,this[JP+2]=WP>>>16,this[JP+3]=WP>>>24):Ja(this,WP,JP,!0),JP+4},Pt.prototype.writeInt32BE=function(WP,JP,ZP){return WP=+WP,JP|=0,ZP||Xa(this,WP,JP,4,2147483647,-2147483648),0>WP&&(WP=4294967295+WP+1),Pt.TYPED_ARRAY_SUPPORT?(this[JP]=WP>>>24,this[JP+1]=WP>>>16,this[JP+2]=WP>>>8,this[JP+3]=255&WP):Ja(this,WP,JP,!1),JP+4},Pt.prototype.writeFloatLE=function(WP,JP,ZP){return Ka(this,WP,JP,!0,ZP)},Pt.prototype.writeFloatBE=function(WP,JP,ZP){return Ka(this,WP,JP,!1,ZP)},Pt.prototype.writeDoubleLE=function(WP,JP,ZP){return Qa(this,WP,JP,!0,ZP)},Pt.prototype.writeDoubleBE=function(WP,JP,ZP){return Qa(this,WP,JP,!1,ZP)},Pt.prototype.copy=function(WP,JP,ZP,KP){if(ZP||(ZP=0),KP||0===KP||(KP=this.length),JP>=WP.length&&(JP=WP.length),JP||(JP=0),0JP)throw new RangeError("targetStart out of bounds");if(0>ZP||ZP>=this.length)throw new RangeError("sourceStart out of bounds");if(0>KP)throw new RangeError("sourceEnd out of bounds");KP>this.length&&(KP=this.length),WP.length-JPQP||!Pt.TYPED_ARRAY_SUPPORT)for($P=0;$PQP&&(WP=QP)}if(void 0!==KP&&"string"!=typeof KP)throw new TypeError("encoding must be a string");if("string"==typeof KP&&!Pt.isEncoding(KP))throw new TypeError("Unknown encoding: "+KP)}else"number"==typeof WP&&(WP&=255);if(0>JP||this.length>>=0,ZP=ZP===void 0?this.length:ZP>>>0,WP||(WP=0);var $P;if("number"==typeof WP)for($P=JP;$PIN.indexOf(RN)&&IN.push(RN)}),this},Object.defineProperty($_,"buildable",{value:!1});var SN={};L_.builders=SN;var TN={};L_.defineMethod=function(NN,IN){var LN=TN[NN];return Z_.check(IN)?delete TN[NN]:(U_.assert(IN),Object.defineProperty(TN,NN,{enumerable:!0,configurable:!0,value:IN})),LN};var PN=V_.arrayOf();$_.build=function(){var NN=this,IN=$f.call(arguments);return(PN.assert(IN),Object.defineProperty(NN,"buildParams",{value:IN,writable:!1,enumerable:!1,configurable:!0}),NN.buildable)?NN:(NN.field("type",String,function(){return NN.typeName}),Object.defineProperty(NN,"buildable",{value:!0}),Object.defineProperty(SN,$P(NN.typeName),{enumerable:!0,value:function(){function LN(YN,VN){if(!_h.call(MN,YN)){var UN=NN.allFields;if(!_h.call(UN,YN))throw new Error(""+YN);var XN=UN[YN],WN=XN.type,JN;if(J_.check(VN)&&VNO_)return KP;var M_=arguments.length;2===M_?(L_=0,R_=O_):3===M_?(L_=Math.max(L_,0),R_=O_):(L_=Math.max(L_,0),R_=Math.min(R_,O_)),P_.assert(L_),P_.assert(R_);var Y_=Object.create(null),V_=JP(N_);for(var U_=L_;U_J_)return!0;if(Y_===J_&&"right"===this.name){if(U_.right!==V_)throw new Error("Nodes must be equal");return!0}default:return!1;}case"SequenceExpression":switch(U_.type){case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==this.name;default:return!0;}case"YieldExpression":switch(U_.type){case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"CallExpression":case"MemberExpression":case"NewExpression":case"ConditionalExpression":case"YieldExpression":return!0;default:return!1;}case"Literal":return"MemberExpression"===U_.type&&__.check(V_.value)&&"object"===this.name&&U_.object===V_;case"AssignmentExpression":case"ConditionalExpression":switch(U_.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":return!0;case"CallExpression":return"callee"===this.name&&U_.callee===V_;case"ConditionalExpression":return"test"===this.name&&U_.test===V_;case"MemberExpression":return"object"===this.name&&U_.object===V_;default:return!1;}default:if("NewExpression"===U_.type&&"callee"===this.name&&U_.callee===V_)return ZP(V_);}return!0!==M_&&!this.canBeFirstInStatement()&&this.firstInStatement()};var O_={};return[["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]].forEach(function(M_,Y_){M_.forEach(function(V_){O_[V_]=Y_})}),R_.canBeFirstInStatement=function(){var M_=this.node;return!T_.FunctionExpression.check(M_)&&!T_.ObjectExpression.check(M_)},R_.firstInStatement=function(){return KP(this)},WP},Uh=Object.prototype.hasOwnProperty,Xh=function(XP){function WP(){if(!(this instanceof WP))throw new Error("PathVisitor constructor cannot be invoked without 'new'");this._reusableContextStack=[],this._methodNameTable=JP(this),this._shouldVisitComments=Uh.call(this._methodNameTable,"Block")||Uh.call(this._methodNameTable,"Line"),this.Context=QP(this),this._visiting=!1,this._changeReported=!1}function JP(R_){var O_=Object.create(null);for(var M_ in R_)/^visit[A-Z]/.test(M_)&&(O_[M_.slice("visit".length)]=!0);var Y_=$P.computeSupertypeLookupTable(O_),V_=Object.create(null),O_=Object.keys(Y_),U_=O_.length;for(var X_=0;X_Y_.indexOf("comments")&&Y_.push("comments");var V_=Y_.length,U_=[];for(var X_=0;X_=S_},QP+" >= "+S_)},WP.defaults={"null":function(){return null},emptyArray:function(){return[]},"false":function(){return!1},"true":function(){return!0},undefined:function(){}};var $P=ZP.or(KP.string,KP.number,KP.boolean,KP.null,KP.undefined);return WP.isPrimitive=new ZP(function(S_){if(null===S_)return!0;var T_=typeof S_;return"object"!=T_&&"function"!=T_},$P.toString()),WP},Jh=function(XP){var WP=XP.use(Nh),JP=WP.Type,ZP=JP.def,KP=JP.or,QP=XP.use(Wh),$P=QP.defaults,S_=QP.geq;ZP("Printable").field("loc",KP(ZP("SourceLocation"),null),$P["null"],!0),ZP("Node").bases("Printable").field("type",String).field("comments",KP([ZP("Comment")],null),$P["null"],!0),ZP("SourceLocation").build("start","end","source").field("start",ZP("Position")).field("end",ZP("Position")).field("source",KP(String,null),$P["null"]),ZP("Position").build("line","column").field("line",S_(1)).field("column",S_(0)),ZP("File").bases("Node").build("program","name").field("program",ZP("Program")).field("name",KP(String,null),$P["null"]),ZP("Program").bases("Node").build("body").field("body",[ZP("Statement")]),ZP("Function").bases("Node").field("id",KP(ZP("Identifier"),null),$P["null"]).field("params",[ZP("Pattern")]).field("body",ZP("BlockStatement")),ZP("Statement").bases("Node"),ZP("EmptyStatement").bases("Statement").build(),ZP("BlockStatement").bases("Statement").build("body").field("body",[ZP("Statement")]),ZP("ExpressionStatement").bases("Statement").build("expression").field("expression",ZP("Expression")),ZP("IfStatement").bases("Statement").build("test","consequent","alternate").field("test",ZP("Expression")).field("consequent",ZP("Statement")).field("alternate",KP(ZP("Statement"),null),$P["null"]),ZP("LabeledStatement").bases("Statement").build("label","body").field("label",ZP("Identifier")).field("body",ZP("Statement")),ZP("BreakStatement").bases("Statement").build("label").field("label",KP(ZP("Identifier"),null),$P["null"]),ZP("ContinueStatement").bases("Statement").build("label").field("label",KP(ZP("Identifier"),null),$P["null"]),ZP("WithStatement").bases("Statement").build("object","body").field("object",ZP("Expression")).field("body",ZP("Statement")),ZP("SwitchStatement").bases("Statement").build("discriminant","cases","lexical").field("discriminant",ZP("Expression")).field("cases",[ZP("SwitchCase")]).field("lexical",Boolean,$P["false"]),ZP("ReturnStatement").bases("Statement").build("argument").field("argument",KP(ZP("Expression"),null)),ZP("ThrowStatement").bases("Statement").build("argument").field("argument",ZP("Expression")),ZP("TryStatement").bases("Statement").build("block","handler","finalizer").field("block",ZP("BlockStatement")).field("handler",KP(ZP("CatchClause"),null),function(){return this.handlers&&this.handlers[0]||null}).field("handlers",[ZP("CatchClause")],function(){return this.handler?[this.handler]:[]},!0).field("guardedHandlers",[ZP("CatchClause")],$P.emptyArray).field("finalizer",KP(ZP("BlockStatement"),null),$P["null"]),ZP("CatchClause").bases("Node").build("param","guard","body").field("param",ZP("Pattern")).field("guard",KP(ZP("Expression"),null),$P["null"]).field("body",ZP("BlockStatement")),ZP("WhileStatement").bases("Statement").build("test","body").field("test",ZP("Expression")).field("body",ZP("Statement")),ZP("DoWhileStatement").bases("Statement").build("body","test").field("body",ZP("Statement")).field("test",ZP("Expression")),ZP("ForStatement").bases("Statement").build("init","test","update","body").field("init",KP(ZP("VariableDeclaration"),ZP("Expression"),null)).field("test",KP(ZP("Expression"),null)).field("update",KP(ZP("Expression"),null)).field("body",ZP("Statement")),ZP("ForInStatement").bases("Statement").build("left","right","body").field("left",KP(ZP("VariableDeclaration"),ZP("Expression"))).field("right",ZP("Expression")).field("body",ZP("Statement")),ZP("DebuggerStatement").bases("Statement").build(),ZP("Declaration").bases("Statement"),ZP("FunctionDeclaration").bases("Function","Declaration").build("id","params","body").field("id",ZP("Identifier")),ZP("FunctionExpression").bases("Function","Expression").build("id","params","body"),ZP("VariableDeclaration").bases("Declaration").build("kind","declarations").field("kind",KP("var","let","const")).field("declarations",[ZP("VariableDeclarator")]),ZP("VariableDeclarator").bases("Node").build("id","init").field("id",ZP("Pattern")).field("init",KP(ZP("Expression"),null)),ZP("Expression").bases("Node","Pattern"),ZP("ThisExpression").bases("Expression").build(),ZP("ArrayExpression").bases("Expression").build("elements").field("elements",[KP(ZP("Expression"),null)]),ZP("ObjectExpression").bases("Expression").build("properties").field("properties",[ZP("Property")]),ZP("Property").bases("Node").build("kind","key","value").field("kind",KP("init","get","set")).field("key",KP(ZP("Literal"),ZP("Identifier"))).field("value",ZP("Expression")),ZP("SequenceExpression").bases("Expression").build("expressions").field("expressions",[ZP("Expression")]);var T_=KP("-","+","!","~","typeof","void","delete");ZP("UnaryExpression").bases("Expression").build("operator","argument","prefix").field("operator",T_).field("argument",ZP("Expression")).field("prefix",Boolean,$P["true"]);var P_=KP("==","!=","===","!==","<","<=",">",">=","<<",">>",">>>","+","-","*","/","%","&","|","^","in","instanceof","..");ZP("BinaryExpression").bases("Expression").build("operator","left","right").field("operator",P_).field("left",ZP("Expression")).field("right",ZP("Expression"));var __=KP("=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","^=","&=");ZP("AssignmentExpression").bases("Expression").build("operator","left","right").field("operator",__).field("left",ZP("Pattern")).field("right",ZP("Expression"));var N_=KP("++","--");ZP("UpdateExpression").bases("Expression").build("operator","argument","prefix").field("operator",N_).field("argument",ZP("Expression")).field("prefix",Boolean);var I_=KP("||","&&");ZP("LogicalExpression").bases("Expression").build("operator","left","right").field("operator",I_).field("left",ZP("Expression")).field("right",ZP("Expression")),ZP("ConditionalExpression").bases("Expression").build("test","consequent","alternate").field("test",ZP("Expression")).field("consequent",ZP("Expression")).field("alternate",ZP("Expression")),ZP("NewExpression").bases("Expression").build("callee","arguments").field("callee",ZP("Expression")).field("arguments",[ZP("Expression")]),ZP("CallExpression").bases("Expression").build("callee","arguments").field("callee",ZP("Expression")).field("arguments",[ZP("Expression")]),ZP("MemberExpression").bases("Expression").build("object","property","computed").field("object",ZP("Expression")).field("property",KP(ZP("Identifier"),ZP("Expression"))).field("computed",Boolean,function(){var L_=this.property.type;return"Literal"===L_||"MemberExpression"===L_||"BinaryExpression"===L_}),ZP("Pattern").bases("Node"),ZP("SwitchCase").bases("Node").build("test","consequent").field("test",KP(ZP("Expression"),null)).field("consequent",[ZP("Statement")]),ZP("Identifier").bases("Node","Expression","Pattern").build("name").field("name",String),ZP("Literal").bases("Node","Expression").build("value").field("value",KP(String,Boolean,null,Number,RegExp)).field("regex",KP({pattern:String,flags:String},null),function(){if(this.value instanceof RegExp){var L_="";return this.value.ignoreCase&&(L_+="i"),this.value.multiline&&(L_+="m"),this.value.global&&(L_+="g"),{pattern:this.value.source,flags:L_}}return null}),ZP("Comment").bases("Printable").field("value",String).field("leading",Boolean,$P["true"]).field("trailing",Boolean,$P["false"])},Zh=function(XP){XP.use(Jh);var WP=XP.use(Nh),JP=WP.Type.def,ZP=WP.Type.or,KP=XP.use(Wh).defaults;JP("Function").field("generator",Boolean,KP["false"]).field("expression",Boolean,KP["false"]).field("defaults",[ZP(JP("Expression"),null)],KP.emptyArray).field("rest",ZP(JP("Identifier"),null),KP["null"]),JP("RestElement").bases("Pattern").build("argument").field("argument",JP("Pattern")),JP("SpreadElementPattern").bases("Pattern").build("argument").field("argument",JP("Pattern")),JP("FunctionDeclaration").build("id","params","body","generator","expression"),JP("FunctionExpression").build("id","params","body","generator","expression"),JP("ArrowFunctionExpression").bases("Function","Expression").build("params","body","expression").field("id",null,KP["null"]).field("body",ZP(JP("BlockStatement"),JP("Expression"))).field("generator",!1,KP["false"]),JP("YieldExpression").bases("Expression").build("argument","delegate").field("argument",ZP(JP("Expression"),null)).field("delegate",Boolean,KP["false"]),JP("GeneratorExpression").bases("Expression").build("body","blocks","filter").field("body",JP("Expression")).field("blocks",[JP("ComprehensionBlock")]).field("filter",ZP(JP("Expression"),null)),JP("ComprehensionExpression").bases("Expression").build("body","blocks","filter").field("body",JP("Expression")).field("blocks",[JP("ComprehensionBlock")]).field("filter",ZP(JP("Expression"),null)),JP("ComprehensionBlock").bases("Node").build("left","right","each").field("left",JP("Pattern")).field("right",JP("Expression")).field("each",Boolean),JP("Property").field("key",ZP(JP("Literal"),JP("Identifier"),JP("Expression"))).field("value",ZP(JP("Expression"),JP("Pattern"))).field("method",Boolean,KP["false"]).field("shorthand",Boolean,KP["false"]).field("computed",Boolean,KP["false"]),JP("PropertyPattern").bases("Pattern").build("key","pattern").field("key",ZP(JP("Literal"),JP("Identifier"),JP("Expression"))).field("pattern",JP("Pattern")).field("computed",Boolean,KP["false"]),JP("ObjectPattern").bases("Pattern").build("properties").field("properties",[ZP(JP("PropertyPattern"),JP("Property"))]),JP("ArrayPattern").bases("Pattern").build("elements").field("elements",[ZP(JP("Pattern"),null)]),JP("MethodDefinition").bases("Declaration").build("kind","key","value","static").field("kind",ZP("constructor","method","get","set")).field("key",ZP(JP("Literal"),JP("Identifier"),JP("Expression"))).field("value",JP("Function")).field("computed",Boolean,KP["false"]).field("static",Boolean,KP["false"]),JP("SpreadElement").bases("Node").build("argument").field("argument",JP("Expression")),JP("ArrayExpression").field("elements",[ZP(JP("Expression"),JP("SpreadElement"),JP("RestElement"),null)]),JP("NewExpression").field("arguments",[ZP(JP("Expression"),JP("SpreadElement"))]),JP("CallExpression").field("arguments",[ZP(JP("Expression"),JP("SpreadElement"))]),JP("AssignmentPattern").bases("Pattern").build("left","right").field("left",JP("Pattern")).field("right",JP("Expression"));var QP=ZP(JP("MethodDefinition"),JP("VariableDeclarator"),JP("ClassPropertyDefinition"),JP("ClassProperty"));JP("ClassProperty").bases("Declaration").build("key").field("key",ZP(JP("Literal"),JP("Identifier"),JP("Expression"))).field("computed",Boolean,KP["false"]),JP("ClassPropertyDefinition").bases("Declaration").build("definition").field("definition",QP),JP("ClassBody").bases("Declaration").build("body").field("body",[QP]),JP("ClassDeclaration").bases("Declaration").build("id","body","superClass").field("id",ZP(JP("Identifier"),null)).field("body",JP("ClassBody")).field("superClass",ZP(JP("Expression"),null),KP["null"]),JP("ClassExpression").bases("Expression").build("id","body","superClass").field("id",ZP(JP("Identifier"),null),KP["null"]).field("body",JP("ClassBody")).field("superClass",ZP(JP("Expression"),null),KP["null"]).field("implements",[JP("ClassImplements")],KP.emptyArray),JP("ClassImplements").bases("Node").build("id").field("id",JP("Identifier")).field("superClass",ZP(JP("Expression"),null),KP["null"]),JP("Specifier").bases("Node"),JP("ModuleSpecifier").bases("Specifier").field("local",ZP(JP("Identifier"),null),KP["null"]).field("id",ZP(JP("Identifier"),null),KP["null"]).field("name",ZP(JP("Identifier"),null),KP["null"]),JP("TaggedTemplateExpression").bases("Expression").build("tag","quasi").field("tag",JP("Expression")).field("quasi",JP("TemplateLiteral")),JP("TemplateLiteral").bases("Expression").build("quasis","expressions").field("quasis",[JP("TemplateElement")]).field("expressions",[JP("Expression")]),JP("TemplateElement").bases("Node").build("value","tail").field("value",{cooked:String,raw:String}).field("tail",Boolean)},Kh=function(XP){XP.use(Zh);var WP=XP.use(Nh),JP=WP.Type.def,ZP=WP.Type.or;WP.builtInTypes;var KP=XP.use(Wh).defaults;JP("Function").field("async",Boolean,KP["false"]),JP("SpreadProperty").bases("Node").build("argument").field("argument",JP("Expression")),JP("ObjectExpression").field("properties",[ZP(JP("Property"),JP("SpreadProperty"))]),JP("SpreadPropertyPattern").bases("Pattern").build("argument").field("argument",JP("Pattern")),JP("ObjectPattern").field("properties",[ZP(JP("Property"),JP("PropertyPattern"),JP("SpreadPropertyPattern"))]),JP("AwaitExpression").bases("Expression").build("argument","all").field("argument",ZP(JP("Expression"),null)).field("all",Boolean,KP["false"])},Qh=function(XP){XP.use(Kh);var WP=XP.use(Nh),JP=WP.Type.def,ZP=WP.Type.or,KP=XP.use(Wh).defaults;JP("Type").bases("Node"),JP("AnyTypeAnnotation").bases("Type").build(),JP("EmptyTypeAnnotation").bases("Type").build(),JP("MixedTypeAnnotation").bases("Type").build(),JP("VoidTypeAnnotation").bases("Type").build(),JP("NumberTypeAnnotation").bases("Type").build(),JP("NumberLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Number).field("raw",String),JP("StringTypeAnnotation").bases("Type").build(),JP("StringLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",String).field("raw",String),JP("BooleanTypeAnnotation").bases("Type").build(),JP("BooleanLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Boolean).field("raw",String),JP("TypeAnnotation").bases("Node").build("typeAnnotation").field("typeAnnotation",JP("Type")),JP("NullableTypeAnnotation").bases("Type").build("typeAnnotation").field("typeAnnotation",JP("Type")),JP("NullLiteralTypeAnnotation").bases("Type").build(),JP("NullTypeAnnotation").bases("Type").build(),JP("ThisTypeAnnotation").bases("Type").build(),JP("ExistsTypeAnnotation").bases("Type").build(),JP("ExistentialTypeParam").bases("Type").build(),JP("FunctionTypeAnnotation").bases("Type").build("params","returnType","rest","typeParameters").field("params",[JP("FunctionTypeParam")]).field("returnType",JP("Type")).field("rest",ZP(JP("FunctionTypeParam"),null)).field("typeParameters",ZP(JP("TypeParameterDeclaration"),null)),JP("FunctionTypeParam").bases("Node").build("name","typeAnnotation","optional").field("name",JP("Identifier")).field("typeAnnotation",JP("Type")).field("optional",Boolean),JP("ArrayTypeAnnotation").bases("Type").build("elementType").field("elementType",JP("Type")),JP("ObjectTypeAnnotation").bases("Type").build("properties","indexers","callProperties").field("properties",[JP("ObjectTypeProperty")]).field("indexers",[JP("ObjectTypeIndexer")],KP.emptyArray).field("callProperties",[JP("ObjectTypeCallProperty")],KP.emptyArray).field("exact",Boolean,KP["false"]),JP("ObjectTypeProperty").bases("Node").build("key","value","optional").field("key",ZP(JP("Literal"),JP("Identifier"))).field("value",JP("Type")).field("optional",Boolean).field("variance",ZP("plus","minus",null),KP["null"]),JP("ObjectTypeIndexer").bases("Node").build("id","key","value").field("id",JP("Identifier")).field("key",JP("Type")).field("value",JP("Type")).field("variance",ZP("plus","minus",null),KP["null"]),JP("ObjectTypeCallProperty").bases("Node").build("value").field("value",JP("FunctionTypeAnnotation")).field("static",Boolean,KP["false"]),JP("QualifiedTypeIdentifier").bases("Node").build("qualification","id").field("qualification",ZP(JP("Identifier"),JP("QualifiedTypeIdentifier"))).field("id",JP("Identifier")),JP("GenericTypeAnnotation").bases("Type").build("id","typeParameters").field("id",ZP(JP("Identifier"),JP("QualifiedTypeIdentifier"))).field("typeParameters",ZP(JP("TypeParameterInstantiation"),null)),JP("MemberTypeAnnotation").bases("Type").build("object","property").field("object",JP("Identifier")).field("property",ZP(JP("MemberTypeAnnotation"),JP("GenericTypeAnnotation"))),JP("UnionTypeAnnotation").bases("Type").build("types").field("types",[JP("Type")]),JP("IntersectionTypeAnnotation").bases("Type").build("types").field("types",[JP("Type")]),JP("TypeofTypeAnnotation").bases("Type").build("argument").field("argument",JP("Type")),JP("Identifier").field("typeAnnotation",ZP(JP("TypeAnnotation"),null),KP["null"]),JP("TypeParameterDeclaration").bases("Node").build("params").field("params",[JP("TypeParameter")]),JP("TypeParameterInstantiation").bases("Node").build("params").field("params",[JP("Type")]),JP("TypeParameter").bases("Type").build("name","variance","bound").field("name",String).field("variance",ZP("plus","minus",null),KP["null"]).field("bound",ZP(JP("TypeAnnotation"),null),KP["null"]),JP("Function").field("returnType",ZP(JP("TypeAnnotation"),null),KP["null"]).field("typeParameters",ZP(JP("TypeParameterDeclaration"),null),KP["null"]),JP("ClassProperty").build("key","value","typeAnnotation","static").field("value",ZP(JP("Expression"),null)).field("typeAnnotation",ZP(JP("TypeAnnotation"),null)).field("static",Boolean,KP["false"]).field("variance",ZP("plus","minus",null),KP["null"]),JP("ClassImplements").field("typeParameters",ZP(JP("TypeParameterInstantiation"),null),KP["null"]),JP("InterfaceDeclaration").bases("Declaration").build("id","body","extends").field("id",JP("Identifier")).field("typeParameters",ZP(JP("TypeParameterDeclaration"),null),KP["null"]).field("body",JP("ObjectTypeAnnotation")).field("extends",[JP("InterfaceExtends")]),JP("DeclareInterface").bases("InterfaceDeclaration").build("id","body","extends"),JP("InterfaceExtends").bases("Node").build("id").field("id",JP("Identifier")).field("typeParameters",ZP(JP("TypeParameterInstantiation"),null)),JP("TypeAlias").bases("Declaration").build("id","typeParameters","right").field("id",JP("Identifier")).field("typeParameters",ZP(JP("TypeParameterDeclaration"),null)).field("right",JP("Type")),JP("DeclareTypeAlias").bases("TypeAlias").build("id","typeParameters","right"),JP("TypeCastExpression").bases("Expression").build("expression","typeAnnotation").field("expression",JP("Expression")).field("typeAnnotation",JP("TypeAnnotation")),JP("TupleTypeAnnotation").bases("Type").build("types").field("types",[JP("Type")]),JP("DeclareVariable").bases("Statement").build("id").field("id",JP("Identifier")),JP("DeclareFunction").bases("Statement").build("id").field("id",JP("Identifier")),JP("DeclareClass").bases("InterfaceDeclaration").build("id"),JP("DeclareModule").bases("Statement").build("id","body").field("id",ZP(JP("Identifier"),JP("Literal"))).field("body",JP("BlockStatement")),JP("DeclareModuleExports").bases("Statement").build("typeAnnotation").field("typeAnnotation",JP("Type")),JP("DeclareExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",ZP(JP("DeclareVariable"),JP("DeclareFunction"),JP("DeclareClass"),JP("Type"),null)).field("specifiers",[ZP(JP("ExportSpecifier"),JP("ExportBatchSpecifier"))],KP.emptyArray).field("source",ZP(JP("Literal"),null),KP["null"]),JP("DeclareExportAllDeclaration").bases("Declaration").build("source").field("source",ZP(JP("Literal"),null),KP["null"])},$h=function(XP){XP.use(Kh);var WP=XP.use(Nh),JP=XP.use(Wh).defaults,ZP=WP.Type.def,KP=WP.Type.or;ZP("Noop").bases("Node").build(),ZP("DoExpression").bases("Expression").build("body").field("body",[ZP("Statement")]),ZP("Super").bases("Expression").build(),ZP("BindExpression").bases("Expression").build("object","callee").field("object",KP(ZP("Expression"),null)).field("callee",ZP("Expression")),ZP("Decorator").bases("Node").build("expression").field("expression",ZP("Expression")),ZP("Property").field("decorators",KP([ZP("Decorator")],null),JP["null"]),ZP("MethodDefinition").field("decorators",KP([ZP("Decorator")],null),JP["null"]),ZP("MetaProperty").bases("Expression").build("meta","property").field("meta",ZP("Identifier")).field("property",ZP("Identifier")),ZP("ParenthesizedExpression").bases("Expression").build("expression").field("expression",ZP("Expression")),ZP("ImportSpecifier").bases("ModuleSpecifier").build("imported","local").field("imported",ZP("Identifier")),ZP("ImportDefaultSpecifier").bases("ModuleSpecifier").build("local"),ZP("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("local"),ZP("ExportDefaultDeclaration").bases("Declaration").build("declaration").field("declaration",KP(ZP("Declaration"),ZP("Expression"))),ZP("ExportNamedDeclaration").bases("Declaration").build("declaration","specifiers","source").field("declaration",KP(ZP("Declaration"),null)).field("specifiers",[ZP("ExportSpecifier")],JP.emptyArray).field("source",KP(ZP("Literal"),null),JP["null"]),ZP("ExportSpecifier").bases("ModuleSpecifier").build("local","exported").field("exported",ZP("Identifier")),ZP("ExportNamespaceSpecifier").bases("Specifier").build("exported").field("exported",ZP("Identifier")),ZP("ExportDefaultSpecifier").bases("Specifier").build("exported").field("exported",ZP("Identifier")),ZP("ExportAllDeclaration").bases("Declaration").build("exported","source").field("exported",KP(ZP("Identifier"),null)).field("source",ZP("Literal")),ZP("CommentBlock").bases("Comment").build("value","leading","trailing"),ZP("CommentLine").bases("Comment").build("value","leading","trailing")},Sy=function(XP){function WP(S_){var T_=JP.indexOf(S_);return-1===T_&&(T_=JP.length,JP.push(S_),ZP[T_]=S_(KP)),ZP[T_]}var JP=[],ZP=[],KP={};KP.use=WP;var QP=WP(Nh);XP.forEach(WP),QP.finalize();var $P={Type:QP.Type,builtInTypes:QP.builtInTypes,namedTypes:QP.namedTypes,builders:QP.builders,defineMethod:QP.defineMethod,getFieldNames:QP.getFieldNames,getFieldValue:QP.getFieldValue,eachField:QP.eachField,someField:QP.someField,getSupertypeNames:QP.getSupertypeNames,astNodesAreEquivalent:WP(Ih),finalize:QP.finalize,Path:WP(Oh),NodePath:WP(Vh),PathVisitor:WP(Xh),use:WP};return $P.visit=$P.PathVisitor.visit,$P}([Jh,Zh,Kh,function(XP){XP.use(Jh);var WP=XP.use(Nh),JP=WP.Type.def,ZP=WP.Type.or,KP=XP.use(Wh),QP=KP.geq,$P=KP.defaults;JP("Function").field("body",ZP(JP("BlockStatement"),JP("Expression"))),JP("ForInStatement").build("left","right","body","each").field("each",Boolean,$P["false"]),JP("ForOfStatement").bases("Statement").build("left","right","body").field("left",ZP(JP("VariableDeclaration"),JP("Expression"))).field("right",JP("Expression")).field("body",JP("Statement")),JP("LetStatement").bases("Statement").build("head","body").field("head",[JP("VariableDeclarator")]).field("body",JP("Statement")),JP("LetExpression").bases("Expression").build("head","body").field("head",[JP("VariableDeclarator")]).field("body",JP("Expression")),JP("GraphExpression").bases("Expression").build("index","expression").field("index",QP(0)).field("expression",JP("Literal")),JP("GraphIndexExpression").bases("Expression").build("index").field("index",QP(0))},function(XP){XP.use(Jh);var WP=XP.use(Nh),JP=WP.Type.def,ZP=WP.Type.or;JP("XMLDefaultDeclaration").bases("Declaration").field("namespace",JP("Expression")),JP("XMLAnyName").bases("Expression"),JP("XMLQualifiedIdentifier").bases("Expression").field("left",ZP(JP("Identifier"),JP("XMLAnyName"))).field("right",ZP(JP("Identifier"),JP("Expression"))).field("computed",Boolean),JP("XMLFunctionQualifiedIdentifier").bases("Expression").field("right",ZP(JP("Identifier"),JP("Expression"))).field("computed",Boolean),JP("XMLAttributeSelector").bases("Expression").field("attribute",JP("Expression")),JP("XMLFilterExpression").bases("Expression").field("left",JP("Expression")).field("right",JP("Expression")),JP("XMLElement").bases("XML","Expression").field("contents",[JP("XML")]),JP("XMLList").bases("XML","Expression").field("contents",[JP("XML")]),JP("XML").bases("Node"),JP("XMLEscape").bases("XML").field("expression",JP("Expression")),JP("XMLText").bases("XML").field("text",String),JP("XMLStartTag").bases("XML").field("contents",[JP("XML")]),JP("XMLEndTag").bases("XML").field("contents",[JP("XML")]),JP("XMLPointTag").bases("XML").field("contents",[JP("XML")]),JP("XMLName").bases("XML").field("contents",ZP(String,[JP("XML")])),JP("XMLAttribute").bases("XML").field("value",String),JP("XMLCdata").bases("XML").field("contents",String),JP("XMLComment").bases("XML").field("contents",String),JP("XMLProcessingInstruction").bases("XML").field("target",String).field("contents",ZP(String,null))},function(XP){XP.use(Kh);var WP=XP.use(Nh),JP=WP.Type.def,ZP=WP.Type.or,KP=XP.use(Wh).defaults;JP("JSXAttribute").bases("Node").build("name","value").field("name",ZP(JP("JSXIdentifier"),JP("JSXNamespacedName"))).field("value",ZP(JP("Literal"),JP("JSXExpressionContainer"),null),KP["null"]),JP("JSXIdentifier").bases("Identifier").build("name").field("name",String),JP("JSXNamespacedName").bases("Node").build("namespace","name").field("namespace",JP("JSXIdentifier")).field("name",JP("JSXIdentifier")),JP("JSXMemberExpression").bases("MemberExpression").build("object","property").field("object",ZP(JP("JSXIdentifier"),JP("JSXMemberExpression"))).field("property",JP("JSXIdentifier")).field("computed",Boolean,KP.false);var QP=ZP(JP("JSXIdentifier"),JP("JSXNamespacedName"),JP("JSXMemberExpression"));JP("JSXSpreadAttribute").bases("Node").build("argument").field("argument",JP("Expression"));var $P=[ZP(JP("JSXAttribute"),JP("JSXSpreadAttribute"))];JP("JSXExpressionContainer").bases("Expression").build("expression").field("expression",JP("Expression")),JP("JSXElement").bases("Expression").build("openingElement","closingElement","children").field("openingElement",JP("JSXOpeningElement")).field("closingElement",ZP(JP("JSXClosingElement"),null),KP["null"]).field("children",[ZP(JP("JSXElement"),JP("JSXExpressionContainer"),JP("JSXText"),JP("Literal"))],KP.emptyArray).field("name",QP,function(){return this.openingElement.name},!0).field("selfClosing",Boolean,function(){return this.openingElement.selfClosing},!0).field("attributes",$P,function(){return this.openingElement.attributes},!0),JP("JSXOpeningElement").bases("Node").build("name","attributes","selfClosing").field("name",QP).field("attributes",$P,KP.emptyArray).field("selfClosing",Boolean,KP["false"]),JP("JSXClosingElement").bases("Node").build("name").field("name",QP),JP("JSXText").bases("Literal").build("value").field("value",String),JP("JSXEmptyExpression").bases("Expression").build()},Qh,function(XP){XP.use(Kh);var WP=XP.use(Nh),JP=XP.use(Wh).defaults,ZP=WP.Type.def,KP=WP.Type.or;ZP("VariableDeclaration").field("declarations",[KP(ZP("VariableDeclarator"),ZP("Identifier"))]),ZP("Property").field("value",KP(ZP("Expression"),ZP("Pattern"))),ZP("ArrayPattern").field("elements",[KP(ZP("Pattern"),ZP("SpreadElement"),null)]),ZP("ObjectPattern").field("properties",[KP(ZP("Property"),ZP("PropertyPattern"),ZP("SpreadPropertyPattern"),ZP("SpreadProperty"))]),ZP("ExportSpecifier").bases("ModuleSpecifier").build("id","name"),ZP("ExportBatchSpecifier").bases("Specifier").build(),ZP("ImportSpecifier").bases("ModuleSpecifier").build("id","name"),ZP("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("id"),ZP("ImportDefaultSpecifier").bases("ModuleSpecifier").build("id"),ZP("ExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",KP(ZP("Declaration"),ZP("Expression"),null)).field("specifiers",[KP(ZP("ExportSpecifier"),ZP("ExportBatchSpecifier"))],JP.emptyArray).field("source",KP(ZP("Literal"),null),JP["null"]),ZP("ImportDeclaration").bases("Declaration").build("specifiers","source","importKind").field("specifiers",[KP(ZP("ImportSpecifier"),ZP("ImportNamespaceSpecifier"),ZP("ImportDefaultSpecifier"))],JP.emptyArray).field("source",ZP("Literal")).field("importKind",KP("value","type"),function(){return"value"}),ZP("Block").bases("Comment").build("value","leading","trailing"),ZP("Line").bases("Comment").build("value","leading","trailing")},$h,function(XP){XP.use($h),XP.use(Qh);var WP=XP.use(Nh),JP=XP.use(Wh).defaults,ZP=WP.Type.def,KP=WP.Type.or;ZP("Directive").bases("Node").build("value").field("value",ZP("DirectiveLiteral")),ZP("DirectiveLiteral").bases("Node","Expression").build("value").field("value",String,JP["use strict"]),ZP("BlockStatement").bases("Statement").build("body").field("body",[ZP("Statement")]).field("directives",[ZP("Directive")],JP.emptyArray),ZP("Program").bases("Node").build("body").field("body",[ZP("Statement")]).field("directives",[ZP("Directive")],JP.emptyArray),ZP("StringLiteral").bases("Literal").build("value").field("value",String),ZP("NumericLiteral").bases("Literal").build("value").field("value",Number),ZP("NullLiteral").bases("Literal").build(),ZP("BooleanLiteral").bases("Literal").build("value").field("value",Boolean),ZP("RegExpLiteral").bases("Literal").build("pattern","flags").field("pattern",String).field("flags",String);var QP=KP(ZP("Property"),ZP("ObjectMethod"),ZP("ObjectProperty"),ZP("SpreadProperty"));ZP("ObjectExpression").bases("Expression").build("properties").field("properties",[QP]),ZP("ObjectMethod").bases("Node","Function").build("kind","key","params","body","computed").field("kind",KP("method","get","set")).field("key",KP(ZP("Literal"),ZP("Identifier"),ZP("Expression"))).field("params",[ZP("Pattern")]).field("body",ZP("BlockStatement")).field("computed",Boolean,JP["false"]).field("generator",Boolean,JP["false"]).field("async",Boolean,JP["false"]).field("decorators",KP([ZP("Decorator")],null),JP["null"]),ZP("ObjectProperty").bases("Node").build("key","value").field("key",KP(ZP("Literal"),ZP("Identifier"),ZP("Expression"))).field("value",KP(ZP("Expression"),ZP("Pattern"))).field("computed",Boolean,JP["false"]);var $P=KP(ZP("MethodDefinition"),ZP("VariableDeclarator"),ZP("ClassPropertyDefinition"),ZP("ClassProperty"),ZP("ClassMethod"));ZP("ClassBody").bases("Declaration").build("body").field("body",[$P]),ZP("ClassMethod").bases("Declaration","Function").build("kind","key","params","body","computed","static").field("kind",KP("get","set","method","constructor")).field("key",KP(ZP("Literal"),ZP("Identifier"),ZP("Expression"))).field("params",[ZP("Pattern")]).field("body",ZP("BlockStatement")).field("computed",Boolean,JP["false"]).field("static",Boolean,JP["false"]).field("generator",Boolean,JP["false"]).field("async",Boolean,JP["false"]).field("decorators",KP([ZP("Decorator")],null),JP["null"]);var S_=KP(ZP("Property"),ZP("PropertyPattern"),ZP("SpreadPropertyPattern"),ZP("SpreadProperty"),ZP("ObjectProperty"),ZP("RestProperty"));ZP("ObjectPattern").bases("Pattern").build("properties").field("properties",[S_]).field("decorators",KP([ZP("Decorator")],null),JP["null"]),ZP("SpreadProperty").bases("Node").build("argument").field("argument",ZP("Expression")),ZP("RestProperty").bases("Node").build("argument").field("argument",ZP("Expression")),ZP("ForAwaitStatement").bases("Statement").build("left","right","body").field("left",KP(ZP("VariableDeclaration"),ZP("Expression"))).field("right",ZP("Expression")).field("body",ZP("Statement"))}]);const Ty={type:"break-parent"},Py=Wi([{type:"line",hard:!0},Ty]),_y=Wi([{type:"line",hard:!0,literal:!0},Ty]);var Ny={concat:Wi,join:function(WP,JP){var ZP=[];for(var KP=0;KP","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%","**"]].forEach(function(XP,WP){XP.forEach(function(JP){Vy[JP]=WP})});var Uy={comparePos:function(WP,JP){return WP.line-JP.line||WP.column-JP.column},getPrecedence:function(WP){return Vy[WP]},fixFaultyLocations:function(WP,JP){if(WP.decorators)WP.decorators.forEach(function(QP){Zi(WP,QP)});else if(WP.declaration&&Ki(WP)){var ZP=WP.declaration.decorators;ZP&&ZP.forEach(function(QP){Zi(WP,QP)})}else if(Ly.MethodDefinition&&Ly.MethodDefinition.check(WP)||Ly.Property.check(WP)&&(WP.method||WP.shorthand))Ly.FunctionExpression.check(WP.value)&&(WP.value.id=null);else if("ObjectTypeProperty"===WP.type){var KP=Oy(JP,No(WP),!0);!1!==KP&&","===JP.charAt(KP)&&!1!==(KP=Oy(JP,KP-1,!0))&&Ro(WP,KP)}},isExportDeclaration:Ki,getParentExportDeclaration:function(WP){var JP=WP.getParentNode();return"declaration"===WP.getName()&&Ki(JP)?JP:null},getLast:function(WP){return 0/g,">")}},Xy=Iy,Wy=Sy,Jy=Wy.namedTypes,Zy=Wy.builtInTypes.array,Ky=Wy.builtInTypes.object,Qy=Ny,$y=Qy.concat,Sg=Qy.hardline,Tg=Qy.breakParent,Pg=Qy.indent,_g=Qy.lineSuffix,Ng=Qy.join,Lg=Uy,Rg=Symbol("child-nodes"),Og=Lg.locStart,Mg=Lg.locEnd,Yg={attach:function(WP,JP,ZP){if(Zy.check(WP)){var KP=[];WP.forEach(function(QP){Mo(JP,QP,ZP);const $P=QP.precedingNode,S_=QP.enclosingNode,T_=QP.followingNode;if(Lg.hasNewline(ZP,Og(QP),{backwards:!0}))$o(S_,T_,QP)||Ko(S_,T_,QP)||Qo(S_,T_,QP)||(T_?Uo(T_,QP):$P?Wo($P,QP):S_?Xo(S_,QP):Xo(JP,QP));else if(Lg.hasNewline(ZP,Mg(QP)))Sl(S_,$P,T_,QP,ZP)||Pl(S_,QP)||($P?Wo($P,QP):T_?Uo(T_,QP):S_?Xo(S_,QP):Xo(JP,QP));else if(Ko(S_,T_,QP)||Tl(S_,$P,QP)||Pl(S_,QP));else if($P&&T_){const __=KP.length;if(0<__){var P_=KP[__-1];P_.followingNode!==QP.followingNode&&Yo(KP,ZP)}KP.push(QP)}else $P?Wo($P,QP):T_?Uo(T_,QP):S_?Xo(S_,QP):Xo(JP,QP)}),Yo(KP,ZP),WP.forEach(function(QP){delete QP.precedingNode,delete QP.enclosingNode,delete QP.followingNode})}},printComments:function(WP,JP,ZP){var KP=WP.getValue(),QP=WP.getParentNode(),$P=JP(WP),S_=Jy.Node.check(KP)&&Wy.getFieldValue(KP,"comments");if(!S_||0===S_.length)return $P;var T_=[],P_=[$P];return WP.each(function(__){var N_=__.getValue(),I_=Wy.getFieldValue(N_,"leading"),L_=Wy.getFieldValue(N_,"trailing");if(I_){T_.push(Rl(__,JP,ZP));const R_=ZP.originalText;Lg.hasNewline(R_,Lg.skipNewline(R_,Lg.locEnd(N_)))&&T_.push(Sg)}else L_&&P_.push(Ol(__,JP,ZP,QP))},"comments"),$y(T_.concat(P_))},printDanglingComments:function(WP,JP,ZP){JP.originalText;const KP=[],QP=WP.getValue();return QP&&QP.comments?(WP.each($P=>{const S_=$P.getValue();S_.leading||S_.trailing||KP.push(_l($P))},"comments"),0===KP.length?"":ZP?Ng(Sg,KP):Pg(JP.tabWidth,$y([Sg,Ng(Sg,KP)]))):""}},Vg="prettier",Ug="0.19.0",Xg="Prettier is an opinionated JavaScript formatter",Wg={prettier:"./bin/prettier.js"},Jg={type:"git",url:"git+https://github.com/jlongster/prettier.git"},Zg="James Long",Kg="MIT",Qg={url:"https://github.com/jlongster/prettier/issues"},$g="./index.js",Sb={"ast-types":"0.9.4","babel-code-frame":"6.22.0",babylon:"6.15.0",chalk:"1.1.3",esutils:"2.0.2","flow-parser":"0.38.0","get-stdin":"5.0.1",glob:"7.1.1","jest-validate":"19.0.0",minimist:"1.2.0"},Tb={diff:"3.2.0",jest:"19.0.1",rollup:"0.41.1","rollup-plugin-commonjs":"7.0.0","rollup-plugin-json":"2.1.0","rollup-plugin-node-builtins":"2.0.0","rollup-plugin-node-globals":"1.1.0","rollup-plugin-node-resolve":"2.0.0","rollup-plugin-real-babili":"1.0.0-alpha3"},Pb={test:"jest",format:"./bin/prettier.js --write","format:single":"npm run format -- src/printer.js","format:all":"npm run format -- index.js src/*.js bin/*.js","build:docs":"rollup -c docs/rollup.config.js"},_b={setupFiles:["/tests_config/run_spec.js"],testRegex:"jsfmt\\.spec\\.js$",testPathIgnorePatterns:["tests/new_react","tests/more_react"]},Nb=Object.freeze({name:Vg,version:Ug,description:Xg,bin:Wg,repository:Jg,author:Zg,license:Kg,bugs:Qg,main:$g,dependencies:Sb,devDependencies:Tb,scripts:Pb,jest:_b,default:{name:Vg,version:Ug,description:Xg,bin:Wg,repository:Jg,author:Zg,license:Kg,bugs:Qg,main:$g,dependencies:Sb,devDependencies:Tb,scripts:Pb,jest:_b}}),Lb=Iy,Rb=Sy,Ob=Uy,Mb=Rb.namedTypes,Yb=Rb.builtInTypes.array,Vb=Rb.builtInTypes.number,Ub=Ml.prototype;Ml.from=function(XP){if(XP instanceof Ml)return XP.copy();if(XP instanceof Rb.NodePath){var WP=Object.create(Ml.prototype),JP=[XP.value];for(var ZP;ZP=XP.parentPath;XP=ZP)JP.push(XP.name,ZP.value);return WP.stack=JP.reverse(),WP}return new Ml(XP)},Ub.copy=function(){var XP=Object.create(Ml.prototype);return XP.stack=this.stack.slice(0),XP},Ub.getName=function(){var WP=this.stack,JP=WP.length;return 1S_)return!0;if(QP===S_&&"right"===JP)return Lb.strictEqual(WP.right,ZP),!0;default:return!1;}case"SequenceExpression":switch(WP.type){case"ReturnStatement":return!1;case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==JP;default:return!0;}case"YieldExpression":if("UnaryExpression"===WP.type)return!0;case"AwaitExpression":switch(WP.type){case"TaggedTemplateExpression":case"BinaryExpression":case"LogicalExpression":case"SpreadElement":case"SpreadProperty":case"NewExpression":case"MemberExpression":return!0;case"CallExpression":return WP.callee===ZP;case"ConditionalExpression":return WP.test===ZP;default:return!1;}case"ArrayTypeAnnotation":return"NullableTypeAnnotation"===WP.type;case"IntersectionTypeAnnotation":case"UnionTypeAnnotation":return"NullableTypeAnnotation"===WP.type||"IntersectionTypeAnnotation"===WP.type||"UnionTypeAnnotation"===WP.type;case"NullableTypeAnnotation":return"ArrayTypeAnnotation"===WP.type;case"FunctionTypeAnnotation":return"UnionTypeAnnotation"===WP.type||"IntersectionTypeAnnotation"===WP.type;case"NumericLiteral":case"Literal":return"MemberExpression"===WP.type&&Vb.check(ZP.value)&&"object"===JP&&WP.object===ZP;case"AssignmentExpression":if("ArrowFunctionExpression"===WP.type&&WP.body===ZP&&"ObjectPattern"===ZP.left.type)return!0;case"ConditionalExpression":switch(WP.type){case"TaggedTemplateExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":case"LogicalExpression":case"ExportDefaultDeclaration":case"AwaitExpression":return!0;case"NewExpression":case"CallExpression":return"callee"===JP&&WP.callee===ZP;case"ConditionalExpression":return"test"===JP&&WP.test===ZP;case"MemberExpression":return"object"===JP&&WP.object===ZP;default:return Mb.ObjectPattern.check(ZP.left)&&this.firstInStatement();}case"FunctionExpression":case"ArrowFunctionExpression":if("CallExpression"===WP.type&&"callee"===JP)return!0;switch(WP.type){case"ConditionalExpression":if(WP.test===ZP)return!0;case"ExportDefaultDeclaration":return"ArrowFunctionExpression"!==ZP.type;case"ExpressionStatement":case"MemberExpression":case"TaggedTemplateExpression":case"UnaryExpression":return!0;case"NewExpression":return"callee"===JP;case"LogicalExpression":return"ArrowFunctionExpression"===ZP.type;default:return Vl(WP);}case"ClassExpression":switch(WP.type){case"TaggedTemplateExpression":case"BinaryExpression":case"ExportDefaultDeclaration":case"ExpressionStatement":return!0;case"CallExpression":if(WP.callee===ZP)return!0;case"MemberExpression":return"object"===JP&&WP.object===ZP;case"ConditionalExpression":if(WP.test===ZP)return!0;}return!1;case"ObjectExpression":if("ArrowFunctionExpression"===WP.type&&"body"===JP)return!0;if("TaggedTemplateExpression"===WP.type)return!0;if("MemberExpression"===WP.type)return"object"===JP&&WP.object===ZP;case"StringLiteral":if("ExpressionStatement"===WP.type)return!0;default:if("NewExpression"===WP.type&&"callee"===JP&&WP.callee===ZP)return Ul(ZP);}return!0!==XP&&!this.canBeFirstInStatement()&&this.firstInStatement()},Ub.canBeFirstInStatement=function(){var XP=this.getNode();return!Mb.FunctionExpression.check(XP)&&!Mb.ObjectExpression.check(XP)&&!Mb.ClassExpression.check(XP)&&!(Mb.AssignmentExpression.check(XP)&&Mb.ObjectPattern.check(XP.left))},Ub.firstInStatement=function(){var XP=this.stack,WP,JP,ZP,KP;for(var QP=XP.length-1;0<=QP;QP-=2)if(Mb.Node.check(XP[QP])&&(ZP=WP,KP=JP,WP=XP[QP-1],JP=XP[QP]),JP&&KP){if(Mb.BlockStatement.check(JP)&&"body"===WP&&0===ZP)return Lb.strictEqual(JP.body[0],KP),!0;if(Mb.ExpressionStatement.check(JP)&&"expression"===ZP)return Lb.strictEqual(JP.expression,KP),!0;if(Mb.SequenceExpression.check(JP)&&"expressions"===WP&&0===ZP){Lb.strictEqual(JP.expressions[0],KP);continue}if(Mb.CallExpression.check(JP)&&"callee"===ZP){Lb.strictEqual(JP.callee,KP);continue}if(Mb.MemberExpression.check(JP)&&"object"===ZP){Lb.strictEqual(JP.object,KP);continue}if(Mb.ConditionalExpression.check(JP)&&"test"===ZP){Lb.strictEqual(JP.test,KP);continue}if(Vl(JP)&&"left"===ZP){Lb.strictEqual(JP.left,KP);continue}if(Mb.UnaryExpression.check(JP)&&!JP.prefix&&"argument"===ZP){Lb.strictEqual(JP.argument,KP);continue}return!1}return!0};var Xb=Iy,Wb=Yg,Jb=Ml,Zb=Uy,Kb=Mu.keyword.isIdentifierNameES6,Qb=Ny,$b=Qb.concat,Sx=Qb.join,Tx=Qb.line,Px=Qb.hardline,_x=Qb.softline,Nx=Qb.literalline,Ix=Qb.group,Lx=Qb.indent,Rx=Qb.conditionalGroup,Ox=Qb.ifBreak,Mx=Qb.breakParent,Yx=Qb.lineSuffixBoundary,Vx={isEmpty:function(WP){return"string"==typeof WP&&0===WP.length},getFirstString:function(WP){return Vi(WP,JP=>{if("string"==typeof JP&&0!==JP.trim().length)return JP},null)},willBreak:function(WP){return Vi(WP,JP=>{return"group"===JP.type&&JP.break||"line"===JP.type&&JP.hard||void 0},!1)},isLineNext:function(WP){return Vi(WP,JP=>{return"string"!=typeof JP&&(!("line"!==JP.type)||void 0)},!1)},traverseDoc:Mi,mapDoc:Yi,propagateBreaks:function(WP){const JP=[];Mi(WP,ZP=>{"break-parent"===ZP.type&&Ui(JP),"group"===ZP.type&&JP.push(ZP)},ZP=>{if("group"===ZP.type){const KP=JP.pop();KP.break&&Ui(JP)}})}},Ux=Vx.willBreak,Xx=Vx.isLineNext,Wx=Vx.getFirstString,Jx=Vx.isEmpty,Zx=Sy,Kx=Zx.namedTypes,Qx=Zx.builtInTypes.string;const $x=1,SS=2;var TS={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},PS=Se(function(XP){function WP(P_,__){return Math.pow(P_[0]-__[0],2)+Math.pow(P_[1]-__[1],2)+Math.pow(P_[2]-__[2],2)}var JP=TS,ZP={};for(var KP in JP)JP.hasOwnProperty(KP)&&(ZP[JP[KP]]=KP);var QP=XP.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var $P in QP)if(QP.hasOwnProperty($P)){if(!("channels"in QP[$P]))throw new Error("missing channels property: "+$P);if(!("labels"in QP[$P]))throw new Error("missing channel labels property: "+$P);if(QP[$P].labels.length!==QP[$P].channels)throw new Error("channel and label counts mismatch: "+$P);var S_=QP[$P].channels,T_=QP[$P].labels;delete QP[$P].channels,delete QP[$P].labels,Object.defineProperty(QP[$P],"channels",{value:S_}),Object.defineProperty(QP[$P],"labels",{value:T_})}QP.rgb.hsl=function(P_){var __=P_[0]/255,N_=P_[1]/255,I_=P_[2]/255,L_=Math.min(__,N_,I_),R_=Math.max(__,N_,I_),O_=R_-L_,M_,Y_,V_;return R_===L_?M_=0:__===R_?M_=(N_-I_)/O_:N_===R_?M_=2+(I_-__)/O_:I_===R_&&(M_=4+(__-N_)/O_),M_=Math.min(60*M_,360),0>M_&&(M_+=360),V_=(L_+R_)/2,Y_=R_===L_?0:0.5>=V_?O_/(R_+L_):O_/(2-R_-L_),[M_,100*Y_,100*V_]},QP.rgb.hsv=function(P_){var __=P_[0],N_=P_[1],I_=P_[2],L_=Math.min(__,N_,I_),R_=Math.max(__,N_,I_),O_=R_-L_,M_,Y_,V_;return Y_=0===R_?0:1e3*(O_/R_)/10,R_===L_?M_=0:__===R_?M_=(N_-I_)/O_:N_===R_?M_=2+(I_-__)/O_:I_===R_&&(M_=4+(__-N_)/O_),M_=Math.min(60*M_,360),0>M_&&(M_+=360),V_=1e3*(R_/255)/10,[M_,Y_,V_]},QP.rgb.hwb=function(P_){var __=P_[0],N_=P_[1],I_=P_[2],L_=QP.rgb.hsl(P_)[0],R_=1/255*Math.min(__,Math.min(N_,I_));return I_=1-1/255*Math.max(__,Math.max(N_,I_)),[L_,100*R_,100*I_]},QP.rgb.cmyk=function(P_){var __=P_[0]/255,N_=P_[1]/255,I_=P_[2]/255,M_=Math.min(1-__,1-N_,1-I_),L_,R_,O_;return L_=(1-__-M_)/(1-M_)||0,R_=(1-N_-M_)/(1-M_)||0,O_=(1-I_-M_)/(1-M_)||0,[100*L_,100*R_,100*O_,100*M_]},QP.rgb.keyword=function(P_){var __=ZP[P_];if(__)return __;var N_=Infinity,I_;for(var L_ in JP)if(JP.hasOwnProperty(L_)){var R_=JP[L_],O_=WP(P_,R_);O_I_?I_*(1+N_):I_+N_-I_*N_,L_=2*I_-R_,M_=[0,0,0];for(var V_=0;3>V_;V_++)O_=__+1/3*-(V_-1),0>O_&&O_++,16*O_?L_+6*(R_-L_)*O_:1>2*O_?R_:2>3*O_?L_+6*((R_-L_)*(2/3-O_)):L_,M_[V_]=255*Y_;return M_},QP.hsl.hsv=function(P_){var __=P_[0],N_=P_[1]/100,I_=P_[2]/100,L_=N_,R_=Math.max(I_,0.01),O_,M_;return I_*=2,N_*=1>=I_?I_:2-I_,L_*=1>=R_?R_:2-R_,M_=(I_+N_)/2,O_=0==I_?2*L_/(R_+L_):2*N_/(I_+N_),[__,100*O_,100*M_]},QP.hsv.rgb=function(P_){var __=P_[0]/60,N_=P_[1]/100,I_=P_[2]/100,L_=Math.floor(__)%6,R_=__-Math.floor(__),O_=255*I_*(1-N_),M_=255*I_*(1-N_*R_),Y_=255*I_*(1-N_*(1-R_));return I_*=255,0==L_?[I_,Y_,O_]:1==L_?[M_,I_,O_]:2==L_?[O_,I_,Y_]:3==L_?[O_,M_,I_]:4==L_?[Y_,O_,I_]:5==L_?[I_,O_,M_]:void 0},QP.hsv.hsl=function(P_){var __=P_[0],N_=P_[1]/100,I_=P_[2]/100,L_=Math.max(I_,0.01),M_=(2-N_)*I_,R_,O_;return R_=(2-N_)*L_,O_=N_*L_,O_/=1>=R_?R_:2-R_,O_=O_||0,M_/=2,[__,100*O_,100*M_]},QP.hwb.rgb=function(P_){var __=P_[0]/360,N_=P_[1]/100,I_=P_[2]/100,L_=N_+I_,R_,O_,M_,Y_;1R_&&(R_+=360),O_=Math.sqrt(N_*N_+I_*I_),[__,O_,R_]},QP.lch.lab=function(P_){var __=P_[0],N_=P_[1],I_=P_[2],O_=2*(I_/360)*Math.PI,L_,R_;return L_=N_*Math.cos(O_),R_=N_*Math.sin(O_),[__,L_,R_]},QP.rgb.ansi16=function(P_){var __=P_[0],N_=P_[1],I_=P_[2],L_=1 in arguments?arguments[1]:QP.rgb.hsv(P_)[2];if(L_=Math.round(L_/50),0===L_)return 30;var R_=30+(Math.round(I_/255)<<2|Math.round(N_/255)<<1|Math.round(__/255));return 2===L_&&(R_+=60),R_},QP.hsv.ansi16=function(P_){return QP.rgb.ansi16(QP.hsv.rgb(P_),P_[2])},QP.rgb.ansi256=function(P_){var __=P_[0],N_=P_[1],I_=P_[2];if(__===N_&&N_===I_)return 8>__?16:248<__?231:Math.round(24*((__-8)/247))+232;var L_=16+36*Math.round(5*(__/255))+6*Math.round(5*(N_/255))+Math.round(5*(I_/255));return L_},QP.ansi16.rgb=function(P_){var __=P_%10;if(0==__||7==__)return 50>1)*N_),R_=255*((1&__>>2)*N_);return[I_,L_,R_]},QP.ansi256.rgb=function(P_){if(232<=P_){var __=10*(P_-232)+8;return[__,__,__]}P_-=16;var N_,I_=255*(Math.floor(P_/36)/5),L_=255*(Math.floor((N_=P_%36)/6)/5),R_=255*(N_%6/5);return[I_,L_,R_]},QP.rgb.hex=function(P_){var __=((255&Math.round(P_[0]))<<16)+((255&Math.round(P_[1]))<<8)+(255&Math.round(P_[2])),N_=__.toString(16).toUpperCase();return"000000".substring(N_.length)+N_},QP.hex.rgb=function(P_){var __=P_.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!__)return[0,0,0];var N_=__[0];3===__[0].length&&(N_=N_.split("").map(function(L_){return L_+L_}).join(""));var I_=parseInt(N_,16);return[255&I_>>16,255&I_>>8,255&I_]},QP.rgb.hcg=function(P_){var __=P_[0]/255,N_=P_[1]/255,I_=P_[2]/255,L_=Math.max(Math.max(__,N_),I_),R_=Math.min(Math.min(__,N_),I_),O_=L_-R_,M_,Y_;return M_=1>O_?R_/(1-O_):0,Y_=0>=O_?0:L_===__?(N_-I_)/O_%6:L_===N_?2+(I_-__)/O_:4+(__-N_)/O_+4,Y_/=6,Y_%=1,[360*Y_,100*O_,100*M_]},QP.hsl.hcg=function(P_){var __=P_[1]/100,N_=P_[2]/100,I_=1,L_=0;return I_=0.5>N_?2*__*N_:2*__*(1-N_),1>I_&&(L_=(N_-0.5*I_)/(1-I_)),[P_[0],100*I_,100*L_]},QP.hsv.hcg=function(P_){var __=P_[1]/100,N_=P_[2]/100,I_=__*N_,L_=0;return 1>I_&&(L_=(N_-I_)/(1-I_)),[P_[0],100*I_,100*L_]},QP.hcg.rgb=function(P_){var __=P_[0]/360,N_=P_[1]/100,I_=P_[2]/100;if(0==N_)return[255*I_,255*I_,255*I_];var L_=[0,0,0],R_=6*(__%1),O_=R_%1,M_=1-O_,Y_=0;switch(Math.floor(R_)){case 0:L_[0]=1,L_[1]=O_,L_[2]=0;break;case 1:L_[0]=M_,L_[1]=1,L_[2]=0;break;case 2:L_[0]=0,L_[1]=1,L_[2]=O_;break;case 3:L_[0]=0,L_[1]=M_,L_[2]=1;break;case 4:L_[0]=O_,L_[1]=0,L_[2]=1;break;default:L_[0]=1,L_[1]=0,L_[2]=M_;}return Y_=(1-N_)*I_,[255*(N_*L_[0]+Y_),255*(N_*L_[1]+Y_),255*(N_*L_[2]+Y_)]},QP.hcg.hsv=function(P_){var __=P_[1]/100,N_=P_[2]/100,I_=__+N_*(1-__),L_=0;return 0I_?L_=__/(2*I_):0.5<=I_&&1>I_&&(L_=__/(2*(1-I_))),[P_[0],100*L_,100*I_]},QP.hcg.hwb=function(P_){var __=P_[1]/100,N_=P_[2]/100,I_=__+N_*(1-__);return[P_[0],100*(I_-__),100*(1-I_)]},QP.hwb.hcg=function(P_){var __=P_[1]/100,N_=P_[2]/100,I_=1-N_,L_=I_-__,R_=0;return 1>L_&&(R_=(I_-L_)/(1-L_)),[P_[0],100*L_,100*R_]},QP.apple.rgb=function(P_){return[255*(P_[0]/65535),255*(P_[1]/65535),255*(P_[2]/65535)]},QP.rgb.apple=function(P_){return[65535*(P_[0]/255),65535*(P_[1]/255),65535*(P_[2]/255)]},QP.gray.rgb=function(P_){return[255*(P_[0]/100),255*(P_[0]/100),255*(P_[0]/100)]},QP.gray.hsl=QP.gray.hsv=function(P_){return[0,0,P_[0]]},QP.gray.hwb=function(P_){return[0,100,P_[0]]},QP.gray.cmyk=function(P_){return[0,0,0,P_[0]]},QP.gray.lab=function(P_){return[P_[0],0,0]},QP.gray.hex=function(P_){var __=255&Math.round(255*(P_[0]/100)),N_=((__<<16)+(__<<8)+__).toString(16).toUpperCase();return"000000".substring(N_.length)+N_},QP.rgb.gray=function(P_){var __=(P_[0]+P_[1]+P_[2])/3;return[100*(__/255)]}}),_S=PS,NS=Object.keys(_S),IS=PS,LS=function(XP){var WP=Xd(XP),JP={},ZP=Object.keys(WP);for(var KP=ZP.length,QP=0;QPfunction(){const S_=QP.apply(WP,arguments);return`\u001B[${S_+$P}m`},ZP=(QP,$P)=>function(){const S_=QP.apply(WP,arguments);return`\u001B[${38+$P};5;${S_}m`},KP=(QP,$P)=>function(){const S_=QP.apply(WP,arguments);return`\u001B[${38+$P};2;${S_[0]};${S_[1]};${S_[2]}m`};Object.defineProperty(XP,"exports",{enumerable:!0,get:function(){const $P={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49]}};$P.color.grey=$P.color.gray,Object.keys($P).forEach(T_=>{const P_=$P[T_];Object.keys(P_).forEach(__=>{const N_=P_[__];$P[__]=P_[__]={open:`\u001B[${N_[0]}m`,close:`\u001B[${N_[1]}m`}}),Object.defineProperty($P,T_,{value:P_,enumerable:!1})});const S_=(T_,P_,__)=>[T_,P_,__];$P.color.close="\x1B[39m",$P.bgColor.close="\x1B[49m",$P.color.ansi={},$P.color.ansi256={},$P.color.ansi16m={rgb:KP(S_,0)},$P.bgColor.ansi={},$P.bgColor.ansi256={},$P.bgColor.ansi16m={rgb:KP(S_,10)};for(const T_ of Object.keys(WP))if("object"==typeof WP[T_]){const P_=WP[T_];"ansi16"in P_&&($P.color.ansi[T_]=JP(P_.ansi16,0),$P.bgColor.ansi[T_]=JP(P_.ansi16,10)),"ansi256"in P_&&($P.color.ansi256[T_]=ZP(P_.ansi256,0),$P.bgColor.ansi256[T_]=ZP(P_.ansi256,10)),"rgb"in P_&&($P.color.ansi16m[T_]=KP(P_.rgb,0),$P.bgColor.ansi16m[T_]=KP(P_.rgb,10))}return $P}})});const YS=Object.prototype.toString,VS=Date.prototype.toISOString,US=Error.prototype.toString,XS=RegExp.prototype.toString,WS=Symbol.prototype.toString,JS=/^Symbol\((.*)\)(.*)$/,ZS=/\n/ig,KS=Object.getOwnPropertySymbols||(()=>[]),QS={callToJSON:!0,escapeRegex:!1,highlight:!1,indent:2,maxDepth:Infinity,min:!1,plugins:[],printFunctionName:!0,theme:{content:"reset",prop:"yellow",tag:"cyan",value:"green"}};var $S=function(WP,JP){JP?(Wc(JP),JP=Jc(JP)):JP=QS;const ZP={};Object.keys(JP.theme).forEach(N_=>{ZP[N_]=JP.highlight?MS[JP.theme[N_]]:{close:"",open:""}});let KP,QP;const $P="",S_=0,T_=JP.min?" ":"\n",P_=JP.min?"":"\n";if(JP&&JP.plugins.length){KP=Zc(JP.indent),QP=[];const N_=Uc(WP,KP,$P,T_,P_,QP,JP.maxDepth,S_,JP.plugins,JP.min,JP.callToJSON,JP.printFunctionName,JP.escapeRegex,ZP);if(N_)return N_}const __=_c(WP,JP.printFunctionName,JP.escapeRegex);return __?__:(KP||(KP=Zc(JP.indent)),QP||(QP=[]),Vc(WP,KP,$P,T_,P_,QP,JP.maxDepth,S_,JP.plugins,JP.min,JP.callToJSON,JP.printFunctionName,JP.escapeRegex,ZP))},SE=[],TE=[],PE=function(XP,WP){if(XP===WP)return 0;var JP=XP.length,ZP=WP.length;if(0===JP)return ZP;if(0===ZP)return JP;for(var T_=0,P_=0,KP,QP,$P,S_;T_QP?S_>QP?QP+1:S_:S_>$P?$P+1:S_;return QP};const _E=$m,NE=_E.bold("\u25CF"),IE=`${NE} Deprecation Warning`,LE=`${NE} Validation Error`,RE=`${NE} Validation Warning`,OE=XP=>"function"==typeof XP?XP.toString():$S(XP,{min:!0});class ME extends Error{constructor(XP,WP,JP){super(),JP=JP?"\n\n"+JP:"\n",this.name="",this.message=_E.red(_E.bold(XP)+":\n\n"+WP+JP),Error.captureStackTrace(this,()=>{})}}var YE={DEPRECATION:IE,ERROR:LE,ValidationError:ME,WARNING:RE,createDidYouMeanMessage:(XP,WP)=>{const JP=WP.find(ZP=>{const KP=PE(ZP,XP);return 3>KP});return JP?`Did you mean ${_E.bold(OE(JP))}?`:""},format:OE,logValidationWarning:(XP,WP,JP)=>{JP=JP?"\n\n"+JP:"\n",console.warn(_E.yellow(_E.bold(XP)+":\n\n"+WP+JP))}};const VE=Symbol.for("jest.asymmetricMatcher"),UE=" ";class XE extends Array{}class WE extends Object{}const JE=$m,ZE=$S,KE=[{print:(XP,WP,JP,ZP)=>{const KP=XP.toString();if("ArrayContaining"===KP){const QP=XE.from(XP.sample);return ZP.spacing===UE?KP+UE+WP(QP):WP(QP)}if("ObjectContaining"===KP){const QP=Object.assign(new WE,XP.sample);return ZP.spacing===UE?KP+UE+WP(QP):WP(QP)}return"StringMatching"===KP?KP+UE+WP(XP.sample):"StringContaining"===KP?KP+UE+WP(XP.sample):XP.toAsymmetricMatcher()},test:XP=>XP&&XP.$$typeof===VE}],QE=JE.green,$E=JE.bgGreen,ST=JE.red,TT=JE.bgRed,PT=["zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen"],_T=XP=>{if("undefined"==typeof XP)return"undefined";if(null===XP)return"null";if(Array.isArray(XP))return"array";if("boolean"==typeof XP)return"boolean";if("function"==typeof XP)return"function";if("number"==typeof XP)return"number";if("string"==typeof XP)return"string";if("object"==typeof XP)return XP.constructor===RegExp?"regexp":XP.constructor===Map?"map":XP.constructor===Set?"set":"object";if("symbol"==typeof XP)return"symbol";throw new Error(`value of unknown type: ${XP}`)},NT=function(XP){let WP=1XP.replace(/\s+$/gm,WP("$&")),LT=XP=>IT(ST(NT(XP)),TT),RT=XP=>IT(QE(NT(XP)),$E),OT=(XP,WP,JP)=>{const ZP=_T(WP);return XP+":"+("null"!==ZP&&"undefined"!==ZP?"\n "+ZP+": ":" ")+JP(WP)},MT=(XP,WP)=>{if(WP||(WP="This matcher"),"number"!=typeof XP)throw new Error(VT("[.not]"+WP)+"\n\n"+`Actual value must be a number.\n`+OT("Received",XP,LT))},YT=(XP,WP)=>{if(WP||(WP="This matcher"),"number"!=typeof XP)throw new Error(VT("[.not]"+WP)+"\n\n"+`Expected value must be a number.\n`+OT("Got",XP,RT))},VT=function(XP){let WP=1{if(WP||(WP="This"),"undefined"!=typeof XP)throw new Error(VT("[.not]"+WP,void 0,"")+"\n\nMatcher does not accept any arguments.\n"+OT("Got",XP,RT))},ensureNumbers:(XP,WP,JP)=>{MT(XP,JP),YT(WP,JP)},getType:_T,highlightTrailingWhitespace:IT,matcherHint:VT,pluralize:(XP,WP)=>(PT[WP]||WP)+" "+XP+(1===WP?"":"s"),printExpected:RT,printReceived:LT,printWithType:OT,stringify:NT}.getType;var QT={ValidationError:JT,errorMessage:(XP,WP,JP,ZP)=>{const KP=` Option ${UT.bold(`"${XP}"`)} must be of type: - ${UT.bold.green(KT(JP))} +var prettier = (function () { +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +var index$4 = createCommonjsModule(function (module, exports) { +// Copyright 2014, 2015, 2016, 2017 Simon Lydell +// License: MIT. (See LICENSE.) + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +// This regex comes from regex.coffee, and is inserted here by generate-index.js +// (run `npm run build`). +exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; + +exports.matchToToken = function(match) { + var token = {type: "invalid", value: match[0]}; + if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]); + else if (match[ 5]) token.type = "comment"; + else if (match[ 6]) token.type = "comment", token.closed = !!match[7]; + else if (match[ 8]) token.type = "regex"; + else if (match[ 9]) token.type = "number"; + else if (match[10]) token.type = "name"; + else if (match[11]) token.type = "punctuator"; + else if (match[12]) token.type = "whitespace"; + return token +}; +}); + +var ast = createCommonjsModule(function (module) { +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + function isExpression(node) { + if (node == null) { return false; } + switch (node.type) { + case 'ArrayExpression': + case 'AssignmentExpression': + case 'BinaryExpression': + case 'CallExpression': + case 'ConditionalExpression': + case 'FunctionExpression': + case 'Identifier': + case 'Literal': + case 'LogicalExpression': + case 'MemberExpression': + case 'NewExpression': + case 'ObjectExpression': + case 'SequenceExpression': + case 'ThisExpression': + case 'UnaryExpression': + case 'UpdateExpression': + return true; + } + return false; + } + + function isIterationStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'DoWhileStatement': + case 'ForInStatement': + case 'ForStatement': + case 'WhileStatement': + return true; + } + return false; + } + + function isStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'BlockStatement': + case 'BreakStatement': + case 'ContinueStatement': + case 'DebuggerStatement': + case 'DoWhileStatement': + case 'EmptyStatement': + case 'ExpressionStatement': + case 'ForInStatement': + case 'ForStatement': + case 'IfStatement': + case 'LabeledStatement': + case 'ReturnStatement': + case 'SwitchStatement': + case 'ThrowStatement': + case 'TryStatement': + case 'VariableDeclaration': + case 'WhileStatement': + case 'WithStatement': + return true; + } + return false; + } + + function isSourceElement(node) { + return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; + } + + function trailingStatement(node) { + switch (node.type) { + case 'IfStatement': + if (node.alternate != null) { + return node.alternate; + } + return node.consequent; + + case 'LabeledStatement': + case 'ForStatement': + case 'ForInStatement': + case 'WhileStatement': + case 'WithStatement': + return node.body; + } + return null; + } + + function isProblematicIfStatement(node) { + var current; + + if (node.type !== 'IfStatement') { + return false; + } + if (node.alternate == null) { + return false; + } + current = node.consequent; + do { + if (current.type === 'IfStatement') { + if (current.alternate == null) { + return true; + } + } + current = trailingStatement(current); + } while (current); + + return false; + } + + module.exports = { + isExpression: isExpression, + isStatement: isStatement, + isIterationStatement: isIterationStatement, + isSourceElement: isSourceElement, + isProblematicIfStatement: isProblematicIfStatement, + + trailingStatement: trailingStatement + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +var code = createCommonjsModule(function (module) { +/* + Copyright (C) 2013-2014 Yusuke Suzuki + Copyright (C) 2014 Ivan Nikulin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; + + // See `tools/generate-identifier-regex.js`. + ES5Regex = { + // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, + // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ + }; + + ES6Regex = { + // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/, + // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + }; + + function isDecimalDigit(ch) { + return 0x30 <= ch && ch <= 0x39; // 0..9 + } + + function isHexDigit(ch) { + return 0x30 <= ch && ch <= 0x39 || // 0..9 + 0x61 <= ch && ch <= 0x66 || // a..f + 0x41 <= ch && ch <= 0x46; // A..F + } + + function isOctalDigit(ch) { + return ch >= 0x30 && ch <= 0x37; // 0..7 + } + + // 7.2 White Space + + NON_ASCII_WHITESPACES = [ + 0x1680, 0x180E, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, + 0x202F, 0x205F, + 0x3000, + 0xFEFF + ]; + + function isWhiteSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || + ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; + } + + // 7.3 Line Terminators + + function isLineTerminator(ch) { + return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; + } + + // 7.6 Identifier Names and Identifiers + + function fromCodePoint(cp) { + if (cp <= 0xFFFF) { return String.fromCharCode(cp); } + var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); + var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00); + return cu1 + cu2; + } + + IDENTIFIER_START = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_START[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } + + IDENTIFIER_PART = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_PART[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch >= 0x30 && ch <= 0x39 || // 0..9 + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } + + function isIdentifierStartES5(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } + + function isIdentifierPartES5(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } + + function isIdentifierStartES6(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } + + function isIdentifierPartES6(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } + + module.exports = { + isDecimalDigit: isDecimalDigit, + isHexDigit: isHexDigit, + isOctalDigit: isOctalDigit, + isWhiteSpace: isWhiteSpace, + isLineTerminator: isLineTerminator, + isIdentifierStartES5: isIdentifierStartES5, + isIdentifierPartES5: isIdentifierPartES5, + isIdentifierStartES6: isIdentifierStartES6, + isIdentifierPartES6: isIdentifierPartES6 + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +var keyword = createCommonjsModule(function (module) { +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + var code$$1 = code; + + function isStrictModeReservedWordES6(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'let': + return true; + default: + return false; + } + } + + function isKeywordES5(id, strict) { + // yield should not be treated as keyword under non-strict mode. + if (!strict && id === 'yield') { + return false; + } + return isKeywordES6(id, strict); + } + + function isKeywordES6(id, strict) { + if (strict && isStrictModeReservedWordES6(id)) { + return true; + } + + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: + return false; + } + } + + function isReservedWordES5(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); + } + + function isReservedWordES6(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); + } + + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } + + function isIdentifierNameES5(id) { + var i, iz, ch; + + if (id.length === 0) { return false; } + + ch = id.charCodeAt(0); + if (!code$$1.isIdentifierStartES5(ch)) { + return false; + } + + for (i = 1, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (!code$$1.isIdentifierPartES5(ch)) { + return false; + } + } + return true; + } + + function decodeUtf16(lead, trail) { + return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + } + + function isIdentifierNameES6(id) { + var i, iz, ch, lowCh, check; + + if (id.length === 0) { return false; } + + check = code$$1.isIdentifierStartES6; + for (i = 0, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (0xD800 <= ch && ch <= 0xDBFF) { + ++i; + if (i >= iz) { return false; } + lowCh = id.charCodeAt(i); + if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { + return false; + } + ch = decodeUtf16(ch, lowCh); + } + if (!check(ch)) { + return false; + } + check = code$$1.isIdentifierPartES6; + } + return true; + } + + function isIdentifierES5(id, strict) { + return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); + } + + function isIdentifierES6(id, strict) { + return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); + } + + module.exports = { + isKeywordES5: isKeywordES5, + isKeywordES6: isKeywordES6, + isReservedWordES5: isReservedWordES5, + isReservedWordES6: isReservedWordES6, + isRestrictedWord: isRestrictedWord, + isIdentifierNameES5: isIdentifierNameES5, + isIdentifierNameES6: isIdentifierNameES6, + isIdentifierES5: isIdentifierES5, + isIdentifierES6: isIdentifierES6 + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +var utils = createCommonjsModule(function (module, exports) { +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +(function () { + 'use strict'; + + exports.ast = ast; + exports.code = code; + exports.keyword = keyword; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +var global$1 = typeof global !== "undefined" ? global : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}; + +// shim for using process in browser +// based off https://github.com/defunctzombie/node-process/blob/master/browser.js + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +var cachedSetTimeout = defaultSetTimout; +var cachedClearTimeout = defaultClearTimeout; +if (typeof global$1.setTimeout === 'function') { + cachedSetTimeout = setTimeout; +} +if (typeof global$1.clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; +} + +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} +function nextTick(fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +} +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +var title = 'browser'; +var platform = 'browser'; +var browser = true; +var env = {}; +var argv = []; +var version$1 = ''; // empty string to avoid regexp issues +var versions = {}; +var release = {}; +var config = {}; + +function noop() {} + +var on = noop; +var addListener = noop; +var once = noop; +var off = noop; +var removeListener = noop; +var removeAllListeners = noop; +var emit = noop; + +function binding(name) { + throw new Error('process.binding is not supported'); +} + +function cwd () { return '/' } +function chdir (dir) { + throw new Error('process.chdir is not supported'); +} +function umask() { return 0; } + +// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js +var performance = global$1.performance || {}; +var performanceNow = + performance.now || + performance.mozNow || + performance.msNow || + performance.oNow || + performance.webkitNow || + function(){ return (new Date()).getTime() }; + +// generate timestamp or delta +// see http://nodejs.org/api/process.html#process_process_hrtime +function hrtime(previousTimestamp){ + var clocktime = performanceNow.call(performance)*1e-3; + var seconds = Math.floor(clocktime); + var nanoseconds = Math.floor((clocktime%1)*1e9); + if (previousTimestamp) { + seconds = seconds - previousTimestamp[0]; + nanoseconds = nanoseconds - previousTimestamp[1]; + if (nanoseconds<0) { + seconds--; + nanoseconds += 1e9; + } + } + return [seconds,nanoseconds] +} + +var startTime = new Date(); +function uptime() { + var currentTime = new Date(); + var dif = currentTime - startTime; + return dif / 1000; +} + +var process = { + nextTick: nextTick, + title: title, + browser: browser, + env: env, + argv: argv, + version: version$1, + versions: versions, + on: on, + addListener: addListener, + once: once, + off: off, + removeListener: removeListener, + removeAllListeners: removeAllListeners, + emit: emit, + binding: binding, + cwd: cwd, + chdir: chdir, + umask: umask, + hrtime: hrtime, + platform: platform, + release: release, + config: config, + uptime: uptime +}; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +var index$8 = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; + +var index$10 = createCommonjsModule(function (module) { +'use strict'; + +function assembleStyles () { + var styles = { + modifiers: { + reset: [0, 0], + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + colors: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39] + }, + bgColors: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] + } + }; + + // fix humans + styles.colors.grey = styles.colors.gray; + + Object.keys(styles).forEach(function (groupName) { + var group = styles[groupName]; + + Object.keys(group).forEach(function (styleName) { + var style = group[styleName]; + + styles[styleName] = group[styleName] = { + open: '\u001b[' + style[0] + 'm', + close: '\u001b[' + style[1] + 'm' + }; + }); + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + }); + + return styles; +} + +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); +}); + +var index$14 = function () { + return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; +}; + +var ansiRegex = index$14(); + +var index$12 = function (str) { + return typeof str === 'string' ? str.replace(ansiRegex, '') : str; +}; + +var ansiRegex$1 = index$14; +var re = new RegExp(ansiRegex$1().source); // remove the `g` flag +var index$16 = re.test.bind(re); + +var argv$1 = process.argv; + +var terminator = argv$1.indexOf('--'); +var hasFlag = function (flag) { + flag = '--' + flag; + var pos = argv$1.indexOf(flag); + return pos !== -1 && (terminator !== -1 ? pos < terminator : true); +}; + +var index$18 = (function () { + if ('FORCE_COLOR' in process.env) { + return true; + } + + if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + return false; + } + + if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + return true; + } + + if (process.stdout && !process.stdout.isTTY) { + return false; + } + + if (process.platform === 'win32') { + return true; + } + + if ('COLORTERM' in process.env) { + return true; + } + + if (process.env.TERM === 'dumb') { + return false; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } + + return false; +})(); + +var escapeStringRegexp = index$8; +var ansiStyles = index$10; +var stripAnsi = index$12; +var hasAnsi = index$16; +var supportsColor = index$18; +var defineProps = Object.defineProperties; +var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); + +function Chalk(options) { + // detect mode if not set manually + this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; +} + +// use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001b[94m'; +} + +var styles = (function () { + var ret = {}; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build.call(this, this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function build(_styles) { + var builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder.enabled = this.enabled; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + /* eslint-disable no-proto */ + builder.__proto__ = proto; + + return builder; +} + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || !str) { + return str; + } + + var nestedStyles = this._styles; + var i = nestedStyles.length; + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + var originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { + ansiStyles.dim.open = ''; + } + + while (i--) { + var code = ansiStyles[nestedStyles[i]]; + + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. + ansiStyles.dim.open = originalDim; + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build.call(this, [name]); + } + }; + }); + + return ret; +} + +defineProps(Chalk.prototype, init()); + +var index$6 = new Chalk(); +var styles_1 = ansiStyles; +var hasColor = hasAnsi; +var stripColor = stripAnsi; +var supportsColor_1 = supportsColor; + +index$6.styles = styles_1; +index$6.hasColor = hasColor; +index$6.stripColor = stripColor; +index$6.supportsColor = supportsColor_1; + +var index$2 = createCommonjsModule(function (module, exports) { +"use strict"; + +exports.__esModule = true; + +exports.default = function (rawLines, lineNumber, colNumber) { + var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + colNumber = Math.max(colNumber, 0); + + var highlighted = opts.highlightCode && _chalk2.default.supportsColor || opts.forceColor; + var chalk = _chalk2.default; + if (opts.forceColor) { + chalk = new _chalk2.default.constructor({ enabled: true }); + } + var maybeHighlight = function maybeHighlight(chalkFn, string) { + return highlighted ? chalkFn(string) : string; + }; + var defs = getDefs(chalk); + if (highlighted) rawLines = highlight(defs, rawLines); + + var linesAbove = opts.linesAbove || 2; + var linesBelow = opts.linesBelow || 3; + + var lines = rawLines.split(NEWLINE); + var start = Math.max(lineNumber - (linesAbove + 1), 0); + var end = Math.min(lines.length, lineNumber + linesBelow); + + if (!lineNumber && !colNumber) { + start = 0; + end = lines.length; + } + + var numberMaxWidth = String(end).length; + + var frame = lines.slice(start, end).map(function (line, index) { + var number = start + 1 + index; + var paddedNumber = (" " + number).slice(-numberMaxWidth); + var gutter = " " + paddedNumber + " | "; + if (number === lineNumber) { + var markerLine = ""; + if (colNumber) { + var markerSpacing = line.slice(0, colNumber - 1).replace(/[^\t]/g, " "); + markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), markerSpacing, maybeHighlight(defs.marker, "^")].join(""); + } + return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line, markerLine].join(""); + } else { + return " " + maybeHighlight(defs.gutter, gutter) + line; + } + }).join("\n"); + + if (highlighted) { + return chalk.reset(frame); + } else { + return frame; + } +}; + +var _jsTokens = index$4; + +var _jsTokens2 = _interopRequireDefault(_jsTokens); + +var _esutils = utils; + +var _esutils2 = _interopRequireDefault(_esutils); + +var _chalk = index$6; + +var _chalk2 = _interopRequireDefault(_chalk); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function getDefs(chalk) { + return { + keyword: chalk.cyan, + capitalized: chalk.yellow, + jsx_tag: chalk.yellow, + punctuator: chalk.yellow, + + number: chalk.magenta, + string: chalk.green, + regex: chalk.magenta, + comment: chalk.grey, + invalid: chalk.white.bgRed.bold, + gutter: chalk.grey, + marker: chalk.red.bold + }; +} + +var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + +var JSX_TAG = /^[a-z][\w-]*$/i; + +var BRACKET = /^[()\[\]{}]$/; + +function getTokenType(match) { + var _match$slice = match.slice(-2), + offset = _match$slice[0], + text = _match$slice[1]; + + var token = (0, _jsTokens.matchToToken)(match); + + if (token.type === "name") { + if (_esutils2.default.keyword.isReservedWordES6(token.value)) { + return "keyword"; + } + + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == " 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(len * 3 / 4 - placeHolders); + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len; + + var L = 0; + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; + arr[L++] = (tmp >> 16) & 0xFF; + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[L++] = tmp & 0xFF; + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); + output.push(tripletToBase64(tmp)); + } + return output.join('') +} + +function fromByteArray (uint8) { + if (!inited) { + init$1(); + } + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var output = ''; + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + output += lookup[tmp >> 2]; + output += lookup[(tmp << 4) & 0x3F]; + output += '=='; + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); + output += lookup[tmp >> 10]; + output += lookup[(tmp >> 4) & 0x3F]; + output += lookup[(tmp << 2) & 0x3F]; + output += '='; + } + + parts.push(output); + + return parts.join('') +} + +function read (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +function write (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +} + +var toString = {}.toString; + +var isArray$1 = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + +var INSPECT_MAX_BYTES = 50; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined + ? global$1.TYPED_ARRAY_SUPPORT + : true; + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length); + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length); + } + that.length = length; + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192; // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype; + return arr +}; + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString$1(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +}; + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype; + Buffer.__proto__ = Uint8Array; + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + // Object.defineProperty(Buffer, Symbol.species, { + // value: null, + // configurable: true + // }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +}; + +function allocUnsafe (that, size) { + assertSize(size); + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0; + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +}; + +function fromString$1 (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0; + that = createBuffer(that, length); + + var actual = that.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual); + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + that = createBuffer(that, length); + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255; + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength; // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array); + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset); + } else { + array = new Uint8Array(array, byteOffset, length); + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array; + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array); + } + return that +} + +function fromObject (that, obj) { + if (internalIsBuffer(obj)) { + var len = checked(obj.length) | 0; + that = createBuffer(that, len); + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len); + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray$1(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + + +Buffer.isBuffer = isBuffer; +function internalIsBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!internalIsBuffer(a) || !internalIsBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer.concat = function concat (list, length) { + if (!isArray$1(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (!internalIsBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (internalIsBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string; + } + + var len = string.length; + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer.byteLength = byteLength; + +function slowToString (encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true; + +function swap (b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer.prototype.toString = function toString () { + var length = this.length | 0; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer.prototype.equals = function equals (b) { + if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +}; + +Buffer.prototype.inspect = function inspect () { + var str = ''; + var max = INSPECT_MAX_BYTES; + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); + if (this.length > max) str += ' ... '; + } + return '' +}; + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!internalIsBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (internalIsBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read$$1 (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read$$1(arr, i) === read$$1(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read$$1(arr, i + j) !== read$$1(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + // must be an even number of digits + var strLen = string.length; + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (isNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write$$1 (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0; + if (isFinite(length)) { + length = length | 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return fromByteArray(buf) + } else { + return fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf; + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end); + newBuf.__proto__ = Buffer.prototype; + } else { + var sliceLen = end - start; + newBuf = new Buffer(sliceLen, undefined); + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start]; + } + } + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, true, 23, 4) +}; + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, false, 23, 4) +}; + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, true, 52, 8) +}; + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + this[offset] = (value & 0xff); + return offset + 1 +}; + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8; + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); + } + write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); + } + write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + var i; + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (code < 256) { + val = code; + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = internalIsBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()); + var len = bytes.length; + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + + +function base64ToBytes (str) { + return toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + + +// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +function isBuffer(obj) { + return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) +} + +function isFastBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) +} + +var inherits; +if (typeof Object.create === 'function'){ + inherits = function inherits(ctor, superCtor) { + // implementation from standard node.js 'util' module + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + inherits = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + }; +} +var inherits$1 = inherits; + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. + + + + + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect$1(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + _extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect$1.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect$1.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect$1.styles[styleType]; + + if (style) { + return '\u001b[' + inspect$1.colors[style][0] + 'm' + str + + '\u001b[' + inspect$1.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== inspect$1 && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray$2(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty$1(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty$1(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray$2(ar) { + return Array.isArray(ar); +} + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} + +function isNull(arg) { + return arg === null; +} + + + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isString(arg) { + return typeof arg === 'string'; +} + + + +function isUndefined(arg) { + return arg === void 0; +} + +function isRegExp(re) { + return isObject$1(re) && objectToString(re) === '[object RegExp]'; +} + +function isObject$1(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isDate(d) { + return isObject$1(d) && objectToString(d) === '[object Date]'; +} + +function isError(e) { + return isObject$1(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} + + + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp + + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +function _extend(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject$1(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +} + +function hasOwnProperty$1(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +function compare(a, b) { + if (a === b) { + return 0; + } + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +var hasOwn = Object.prototype.hasOwnProperty; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; +// based on node assert, original notice: + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +var pSlice = Array.prototype.slice; +var _functionsHaveNames; +function functionsHaveNames() { + if (typeof _functionsHaveNames !== 'undefined') { + return _functionsHaveNames; + } + return _functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; + }()); +} +function pToString (obj) { + return Object.prototype.toString.call(obj); +} +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global$1.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; +} +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +function assert$1(value, message) { + if (!value) fail(value, true, message, '==', ok); +} +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!isFunction(func)) { + return; + } + if (functionsHaveNames()) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert$1.AssertionError = AssertionError; +function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +} + +// assert.AssertionError instanceof Error +inherits$1(AssertionError, Error); + +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect$$1(something) { + if (functionsHaveNames() || !isFunction(something)) { + return inspect$1(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect$$1(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect$$1(self.expected), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert$1.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', ok); +} +assert$1.ok = ok; +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); +assert$1.equal = equal; +function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', equal); +} + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); +assert$1.notEqual = notEqual; +function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', notEqual); + } +} + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); +assert$1.deepEqual = deepEqual; +function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', deepEqual); + } +} +assert$1.deepStrictEqual = deepStrictEqual; +function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', deepStrictEqual); + } +} + +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (isDate(actual) && isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (isRegExp(actual) && isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (isPrimitive(a) || isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); +assert$1.notDeepEqual = notDeepEqual; +function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', notDeepEqual); + } +} + +assert$1.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } +} + + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); +assert$1.strictEqual = strictEqual; +function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', strictEqual); + } +} + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); +assert$1.notStrictEqual = notStrictEqual; +function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', notStrictEqual); + } +} + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } + + if (Error.isPrototypeOf(expected)) { + return false; + } + + return expected.call({}, actual) === true; +} + +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + actual = _tryBlock(block); + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); +assert$1.throws = throws; +function throws(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); +} + +// EXTENSION! This is annoying to write outside this module. +assert$1.doesNotThrow = doesNotThrow; +function doesNotThrow(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +} + +assert$1.ifError = ifError; +function ifError(err) { + if (err) throw err; +} + + +var assert$3 = Object.freeze({ + default: assert$1, + AssertionError: AssertionError, + fail: fail, + ok: ok, + assert: ok, + equal: equal, + notEqual: notEqual, + deepEqual: deepEqual, + deepStrictEqual: deepStrictEqual, + notDeepEqual: notDeepEqual, + notDeepStrictEqual: notDeepStrictEqual, + strictEqual: strictEqual, + notStrictEqual: notStrictEqual, + throws: throws, + doesNotThrow: doesNotThrow, + ifError: ifError +}); + +var Ap = Array.prototype; +var slice = Ap.slice; +var Op = Object.prototype; +var objToStr = Op.toString; +var funObjStr = objToStr.call(function(){}); +var strObjStr = objToStr.call(""); +var hasOwn$1 = Op.hasOwnProperty; + +var types$1 = function () { + + var exports = {}; + + // A type is an object with a .check method that takes a value and returns + // true or false according to whether the value matches the type. + + function Type(check, name) { + var self = this; + if (!(self instanceof Type)) { + throw new Error("Type constructor cannot be invoked without 'new'"); + } + + // Unfortunately we can't elegantly reuse isFunction and isString, + // here, because this code is executed while defining those types. + if (objToStr.call(check) !== funObjStr) { + throw new Error(check + " is not a function"); + } + + // The `name` parameter can be either a function or a string. + var nameObjStr = objToStr.call(name); + if (!(nameObjStr === funObjStr || + nameObjStr === strObjStr)) { + throw new Error(name + " is neither a function nor a string"); + } + + Object.defineProperties(self, { + name: {value: name}, + check: { + value: function (value, deep) { + var result = check.call(self, value, deep); + if (!result && deep && objToStr.call(deep) === funObjStr) + deep(self, value); + return result; + } + } + }); + } + + var Tp = Type.prototype; + + // Throughout this file we use Object.defineProperty to prevent + // redefinition of exported properties. + exports.Type = Type; + + // Like .check, except that failure triggers an AssertionError. + Tp.assert = function (value, deep) { + if (!this.check(value, deep)) { + var str = shallowStringify(value); + throw new Error(str + " does not match type " + this); + } + return true; + }; + + function shallowStringify(value) { + if (isObject.check(value)) + return "{" + Object.keys(value).map(function (key) { + return key + ": " + value[key]; + }).join(", ") + "}"; + + if (isArray.check(value)) + return "[" + value.map(shallowStringify).join(", ") + "]"; + + return JSON.stringify(value); + } + + Tp.toString = function () { + var name = this.name; + + if (isString.check(name)) + return name; + + if (isFunction.check(name)) + return name.call(this) + ""; + + return name + " type"; + }; + + var builtInCtorFns = []; + var builtInCtorTypes = []; + var builtInTypes = {}; + exports.builtInTypes = builtInTypes; + + function defBuiltInType(example, name) { + var objStr = objToStr.call(example); + + var type = new Type(function (value) { + return objToStr.call(value) === objStr; + }, name); + + builtInTypes[name] = type; + + if (example && typeof example.constructor === "function") { + builtInCtorFns.push(example.constructor); + builtInCtorTypes.push(type); + } + + return type; + } + + // These types check the underlying [[Class]] attribute of the given + // value, rather than using the problematic typeof operator. Note however + // that no subtyping is considered; so, for instance, isObject.check + // returns false for [], /./, new Date, and null. + var isString = defBuiltInType("truthy", "string"); + var isFunction = defBuiltInType(function () {}, "function"); + var isArray = defBuiltInType([], "array"); + var isObject = defBuiltInType({}, "object"); + var isRegExp = defBuiltInType(/./, "RegExp"); + var isDate = defBuiltInType(new Date, "Date"); + var isNumber = defBuiltInType(3, "number"); + var isBoolean = defBuiltInType(true, "boolean"); + var isNull = defBuiltInType(null, "null"); + var isUndefined = defBuiltInType(void 0, "undefined"); + + // There are a number of idiomatic ways of expressing types, so this + // function serves to coerce them all to actual Type objects. Note that + // providing the name argument is not necessary in most cases. + function toType(from, name) { + // The toType function should of course be idempotent. + if (from instanceof Type) + return from; + + // The Def type is used as a helper for constructing compound + // interface types for AST nodes. + if (from instanceof Def) + return from.type; + + // Support [ElemType] syntax. + if (isArray.check(from)) + return Type.fromArray(from); + + // Support { someField: FieldType, ... } syntax. + if (isObject.check(from)) + return Type.fromObject(from); + + if (isFunction.check(from)) { + var bicfIndex = builtInCtorFns.indexOf(from); + if (bicfIndex >= 0) { + return builtInCtorTypes[bicfIndex]; + } + + // If isFunction.check(from), and from is not a built-in + // constructor, assume from is a binary predicate function we can + // use to define the type. + return new Type(from, name); + } + + // As a last resort, toType returns a type that matches any value that + // is === from. This is primarily useful for literal values like + // toType(null), but it has the additional advantage of allowing + // toType to be a total function. + return new Type(function (value) { + return value === from; + }, isUndefined.check(name) ? function () { + return from + ""; + } : name); + } + + // Returns a type that matches the given value iff any of type1, type2, + // etc. match the value. + Type.or = function (/* type1, type2, ... */) { + var types = []; + var len = arguments.length; + for (var i = 0; i < len; ++i) + types.push(toType(arguments[i])); + + return new Type(function (value, deep) { + for (var i = 0; i < len; ++i) + if (types[i].check(value, deep)) + return true; + return false; + }, function () { + return types.join(" | "); + }); + }; + + Type.fromArray = function (arr) { + if (!isArray.check(arr)) { + throw new Error(""); + } + if (arr.length !== 1) { + throw new Error("only one element type is permitted for typed arrays"); + } + return toType(arr[0]).arrayOf(); + }; + + Tp.arrayOf = function () { + var elemType = this; + return new Type(function (value, deep) { + return isArray.check(value) && value.every(function (elem) { + return elemType.check(elem, deep); + }); + }, function () { + return "[" + elemType + "]"; + }); + }; + + Type.fromObject = function (obj) { + var fields = Object.keys(obj).map(function (name) { + return new Field(name, obj[name]); + }); + + return new Type(function (value, deep) { + return isObject.check(value) && fields.every(function (field) { + return field.type.check(value[field.name], deep); + }); + }, function () { + return "{ " + fields.join(", ") + " }"; + }); + }; + + function Field(name, type, defaultFn, hidden) { + var self = this; + + if (!(self instanceof Field)) { + throw new Error("Field constructor cannot be invoked without 'new'"); + } + isString.assert(name); + + type = toType(type); + + var properties = { + name: {value: name}, + type: {value: type}, + hidden: {value: !!hidden} + }; + + if (isFunction.check(defaultFn)) { + properties.defaultFn = {value: defaultFn}; + } + + Object.defineProperties(self, properties); + } + + var Fp = Field.prototype; + + Fp.toString = function () { + return JSON.stringify(this.name) + ": " + this.type; + }; + + Fp.getValue = function (obj) { + var value = obj[this.name]; + + if (!isUndefined.check(value)) + return value; + + if (this.defaultFn) + value = this.defaultFn.call(obj); + + return value; + }; + + // Define a type whose name is registered in a namespace (the defCache) so + // that future definitions will return the same type given the same name. + // In particular, this system allows for circular and forward definitions. + // The Def object d returned from Type.def may be used to configure the + // type d.type by calling methods such as d.bases, d.build, and d.field. + Type.def = function (typeName) { + isString.assert(typeName); + return hasOwn$1.call(defCache, typeName) + ? defCache[typeName] + : defCache[typeName] = new Def(typeName); + }; + + // In order to return the same Def instance every time Type.def is called + // with a particular name, those instances need to be stored in a cache. + var defCache = Object.create(null); + + function Def(typeName) { + var self = this; + if (!(self instanceof Def)) { + throw new Error("Def constructor cannot be invoked without 'new'"); + } + + Object.defineProperties(self, { + typeName: {value: typeName}, + baseNames: {value: []}, + ownFields: {value: Object.create(null)}, + + // These two are populated during finalization. + allSupertypes: {value: Object.create(null)}, // Includes own typeName. + supertypeList: {value: []}, // Linear inheritance hierarchy. + allFields: {value: Object.create(null)}, // Includes inherited fields. + fieldNames: {value: []}, // Non-hidden keys of allFields. + + type: { + value: new Type(function (value, deep) { + return self.check(value, deep); + }, typeName) + } + }); + } + + Def.fromValue = function (value) { + if (value && typeof value === "object") { + var type = value.type; + if (typeof type === "string" && + hasOwn$1.call(defCache, type)) { + var d = defCache[type]; + if (d.finalized) { + return d; + } + } + } + + return null; + }; + + var Dp = Def.prototype; + + Dp.isSupertypeOf = function (that) { + if (that instanceof Def) { + if (this.finalized !== true || + that.finalized !== true) { + throw new Error(""); + } + return hasOwn$1.call(that.allSupertypes, this.typeName); + } else { + throw new Error(that + " is not a Def"); + } + }; + + // Note that the list returned by this function is a copy of the internal + // supertypeList, *without* the typeName itself as the first element. + exports.getSupertypeNames = function (typeName) { + if (!hasOwn$1.call(defCache, typeName)) { + throw new Error(""); + } + var d = defCache[typeName]; + if (d.finalized !== true) { + throw new Error(""); + } + return d.supertypeList.slice(1); + }; + + // Returns an object mapping from every known type in the defCache to the + // most specific supertype whose name is an own property of the candidates + // object. + exports.computeSupertypeLookupTable = function (candidates) { + var table = {}; + var typeNames = Object.keys(defCache); + var typeNameCount = typeNames.length; + + for (var i = 0; i < typeNameCount; ++i) { + var typeName = typeNames[i]; + var d = defCache[typeName]; + if (d.finalized !== true) { + throw new Error("" + typeName); + } + for (var j = 0; j < d.supertypeList.length; ++j) { + var superTypeName = d.supertypeList[j]; + if (hasOwn$1.call(candidates, superTypeName)) { + table[typeName] = superTypeName; + break; + } + } + } + + return table; + }; + + Dp.checkAllFields = function (value, deep) { + var allFields = this.allFields; + if (this.finalized !== true) { + throw new Error("" + this.typeName); + } + + function checkFieldByName(name) { + var field = allFields[name]; + var type = field.type; + var child = field.getValue(value); + return type.check(child, deep); + } + + return isObject.check(value) + && Object.keys(allFields).every(checkFieldByName); + }; + + Dp.check = function (value, deep) { + if (this.finalized !== true) { + throw new Error( + "prematurely checking unfinalized type " + this.typeName + ); + } + + // A Def type can only match an object value. + if (!isObject.check(value)) + return false; + + var vDef = Def.fromValue(value); + if (!vDef) { + // If we couldn't infer the Def associated with the given value, + // and we expected it to be a SourceLocation or a Position, it was + // probably just missing a "type" field (because Esprima does not + // assign a type property to such nodes). Be optimistic and let + // this.checkAllFields make the final decision. + if (this.typeName === "SourceLocation" || + this.typeName === "Position") { + return this.checkAllFields(value, deep); + } + + // Calling this.checkAllFields for any other type of node is both + // bad for performance and way too forgiving. + return false; + } + + // If checking deeply and vDef === this, then we only need to call + // checkAllFields once. Calling checkAllFields is too strict when deep + // is false, because then we only care about this.isSupertypeOf(vDef). + if (deep && vDef === this) + return this.checkAllFields(value, deep); + + // In most cases we rely exclusively on isSupertypeOf to make O(1) + // subtyping determinations. This suffices in most situations outside + // of unit tests, since interface conformance is checked whenever new + // instances are created using builder functions. + if (!this.isSupertypeOf(vDef)) + return false; + + // The exception is when deep is true; then, we recursively check all + // fields. + if (!deep) + return true; + + // Use the more specific Def (vDef) to perform the deep check, but + // shallow-check fields defined by the less specific Def (this). + return vDef.checkAllFields(value, deep) + && this.checkAllFields(value, false); + }; + + Dp.bases = function () { + var args = slice.call(arguments); + var bases = this.baseNames; + + if (this.finalized) { + if (args.length !== bases.length) { + throw new Error(""); + } + for (var i = 0; i < args.length; i++) { + if (args[i] !== bases[i]) { + throw new Error(""); + } + } + return this; + } + + args.forEach(function (baseName) { + isString.assert(baseName); + + // This indexOf lookup may be O(n), but the typical number of base + // names is very small, and indexOf is a native Array method. + if (bases.indexOf(baseName) < 0) + bases.push(baseName); + }); + + return this; // For chaining. + }; + + // False by default until .build(...) is called on an instance. + Object.defineProperty(Dp, "buildable", {value: false}); + + var builders = {}; + exports.builders = builders; + + // This object is used as prototype for any node created by a builder. + var nodePrototype = {}; + + // Call this function to define a new method to be shared by all AST + // nodes. The replaced method (if any) is returned for easy wrapping. + exports.defineMethod = function (name, func) { + var old = nodePrototype[name]; + + // Pass undefined as func to delete nodePrototype[name]. + if (isUndefined.check(func)) { + delete nodePrototype[name]; + + } else { + isFunction.assert(func); + + Object.defineProperty(nodePrototype, name, { + enumerable: true, // For discoverability. + configurable: true, // For delete proto[name]. + value: func + }); + } + + return old; + }; + + var isArrayOfString = isString.arrayOf(); + + // Calling the .build method of a Def simultaneously marks the type as + // buildable (by defining builders[getBuilderName(typeName)]) and + // specifies the order of arguments that should be passed to the builder + // function to create an instance of the type. + Dp.build = function (/* param1, param2, ... */) { + var self = this; + + var newBuildParams = slice.call(arguments); + isArrayOfString.assert(newBuildParams); + + // Calling Def.prototype.build multiple times has the effect of merely + // redefining this property. + Object.defineProperty(self, "buildParams", { + value: newBuildParams, + writable: false, + enumerable: false, + configurable: true + }); + + if (self.buildable) { + // If this Def is already buildable, update self.buildParams and + // continue using the old builder function. + return self; + } + + // Every buildable type will have its "type" field filled in + // automatically. This includes types that are not subtypes of Node, + // like SourceLocation, but that seems harmless (TODO?). + self.field("type", String, function () { return self.typeName }); + + // Override Dp.buildable for this Def instance. + Object.defineProperty(self, "buildable", {value: true}); + + Object.defineProperty(builders, getBuilderName(self.typeName), { + enumerable: true, + + value: function () { + var args = arguments; + var argc = args.length; + var built = Object.create(nodePrototype); + + if (!self.finalized) { + throw new Error( + "attempting to instantiate unfinalized type " + + self.typeName + ); + } + + function add(param, i) { + if (hasOwn$1.call(built, param)) + return; + + var all = self.allFields; + if (!hasOwn$1.call(all, param)) { + throw new Error("" + param); + } + + var field = all[param]; + var type = field.type; + var value; + + if (isNumber.check(i) && i < argc) { + value = args[i]; + } else if (field.defaultFn) { + // Expose the partially-built object to the default + // function as its `this` object. + value = field.defaultFn.call(built); + } else { + var message = "no value or default function given for field " + + JSON.stringify(param) + " of " + self.typeName + "(" + + self.buildParams.map(function (name) { + return all[name]; + }).join(", ") + ")"; + throw new Error(message); + } + + if (!type.check(value)) { + throw new Error( + shallowStringify(value) + + " does not match field " + field + + " of type " + self.typeName + ); + } + + // TODO Could attach getters and setters here to enforce + // dynamic type safety. + built[param] = value; + } + + self.buildParams.forEach(function (param, i) { + add(param, i); + }); + + Object.keys(self.allFields).forEach(function (param) { + add(param); // Use the default value. + }); + + // Make sure that the "type" field was filled automatically. + if (built.type !== self.typeName) { + throw new Error(""); + } + + return built; + } + }); + + return self; // For chaining. + }; + + function getBuilderName(typeName) { + return typeName.replace(/^[A-Z]+/, function (upperCasePrefix) { + var len = upperCasePrefix.length; + switch (len) { + case 0: return ""; + // If there's only one initial capital letter, just lower-case it. + case 1: return upperCasePrefix.toLowerCase(); + default: + // If there's more than one initial capital letter, lower-case + // all but the last one, so that XMLDefaultDeclaration (for + // example) becomes xmlDefaultDeclaration. + return upperCasePrefix.slice( + 0, len - 1).toLowerCase() + + upperCasePrefix.charAt(len - 1); + } + }); + } + exports.getBuilderName = getBuilderName; + + function getStatementBuilderName(typeName) { + typeName = getBuilderName(typeName); + return typeName.replace(/(Expression)?$/, "Statement"); + } + exports.getStatementBuilderName = getStatementBuilderName; + + // The reason fields are specified using .field(...) instead of an object + // literal syntax is somewhat subtle: the object literal syntax would + // support only one key and one value, but with .field(...) we can pass + // any number of arguments to specify the field. + Dp.field = function (name, type, defaultFn, hidden) { + if (this.finalized) { + console.error("Ignoring attempt to redefine field " + + JSON.stringify(name) + " of finalized type " + + JSON.stringify(this.typeName)); + return this; + } + this.ownFields[name] = new Field(name, type, defaultFn, hidden); + return this; // For chaining. + }; + + var namedTypes = {}; + exports.namedTypes = namedTypes; + + // Like Object.keys, but aware of what fields each AST type should have. + function getFieldNames(object) { + var d = Def.fromValue(object); + if (d) { + return d.fieldNames.slice(0); + } + + if ("type" in object) { + throw new Error( + "did not recognize object of type " + + JSON.stringify(object.type) + ); + } + + return Object.keys(object); + } + exports.getFieldNames = getFieldNames; + + // Get the value of an object property, taking object.type and default + // functions into account. + function getFieldValue(object, fieldName) { + var d = Def.fromValue(object); + if (d) { + var field = d.allFields[fieldName]; + if (field) { + return field.getValue(object); + } + } + + return object && object[fieldName]; + } + exports.getFieldValue = getFieldValue; + + // Iterate over all defined fields of an object, including those missing + // or undefined, passing each field name and effective value (as returned + // by getFieldValue) to the callback. If the object has no corresponding + // Def, the callback will never be called. + exports.eachField = function (object, callback, context) { + getFieldNames(object).forEach(function (name) { + callback.call(this, name, getFieldValue(object, name)); + }, context); + }; + + // Similar to eachField, except that iteration stops as soon as the + // callback returns a truthy value. Like Array.prototype.some, the final + // result is either true or false to indicates whether the callback + // returned true for any element or not. + exports.someField = function (object, callback, context) { + return getFieldNames(object).some(function (name) { + return callback.call(this, name, getFieldValue(object, name)); + }, context); + }; + + // This property will be overridden as true by individual Def instances + // when they are finalized. + Object.defineProperty(Dp, "finalized", {value: false}); + + Dp.finalize = function () { + var self = this; + + // It's not an error to finalize a type more than once, but only the + // first call to .finalize does anything. + if (!self.finalized) { + var allFields = self.allFields; + var allSupertypes = self.allSupertypes; + + self.baseNames.forEach(function (name) { + var def = defCache[name]; + if (def instanceof Def) { + def.finalize(); + extend(allFields, def.allFields); + extend(allSupertypes, def.allSupertypes); + } else { + var message = "unknown supertype name " + + JSON.stringify(name) + + " for subtype " + + JSON.stringify(self.typeName); + throw new Error(message); + } + }); + + // TODO Warn if fields are overridden with incompatible types. + extend(allFields, self.ownFields); + allSupertypes[self.typeName] = self; + + self.fieldNames.length = 0; + for (var fieldName in allFields) { + if (hasOwn$1.call(allFields, fieldName) && + !allFields[fieldName].hidden) { + self.fieldNames.push(fieldName); + } + } + + // Types are exported only once they have been finalized. + Object.defineProperty(namedTypes, self.typeName, { + enumerable: true, + value: self.type + }); + + Object.defineProperty(self, "finalized", {value: true}); + + // A linearization of the inheritance hierarchy. + populateSupertypeList(self.typeName, self.supertypeList); + + if (self.buildable && self.supertypeList.lastIndexOf("Expression") >= 0) { + wrapExpressionBuilderWithStatement(self.typeName); + } + } + }; + + // Adds an additional builder for Expression subtypes + // that wraps the built Expression in an ExpressionStatements. + function wrapExpressionBuilderWithStatement(typeName) { + var wrapperName = getStatementBuilderName(typeName); + + // skip if the builder already exists + if (builders[wrapperName]) return; + + // the builder function to wrap with builders.ExpressionStatement + var wrapped = builders[getBuilderName(typeName)]; + + // skip if there is nothing to wrap + if (!wrapped) return; + + builders[wrapperName] = function () { + return builders.expressionStatement(wrapped.apply(builders, arguments)); + }; + } + + function populateSupertypeList(typeName, list) { + list.length = 0; + list.push(typeName); + + var lastSeen = Object.create(null); + + for (var pos = 0; pos < list.length; ++pos) { + typeName = list[pos]; + var d = defCache[typeName]; + if (d.finalized !== true) { + throw new Error(""); + } + + // If we saw typeName earlier in the breadth-first traversal, + // delete the last-seen occurrence. + if (hasOwn$1.call(lastSeen, typeName)) { + delete list[lastSeen[typeName]]; + } + + // Record the new index of the last-seen occurrence of typeName. + lastSeen[typeName] = pos; + + // Enqueue the base names of this type. + list.push.apply(list, d.baseNames); + } + + // Compaction loop to remove array holes. + for (var to = 0, from = to, len = list.length; from < len; ++from) { + if (hasOwn$1.call(list, from)) { + list[to++] = list[from]; + } + } + + list.length = to; + } + + function extend(into, from) { + Object.keys(from).forEach(function (name) { + into[name] = from[name]; + }); + + return into; + } + + exports.finalize = function () { + Object.keys(defCache).forEach(function (name) { + defCache[name].finalize(); + }); + }; + + return exports; +}; + +var equiv = function (fork) { + var types = fork.use(types$1); + var getFieldNames = types.getFieldNames; + var getFieldValue = types.getFieldValue; + var isArray = types.builtInTypes.array; + var isObject = types.builtInTypes.object; + var isDate = types.builtInTypes.Date; + var isRegExp = types.builtInTypes.RegExp; + var hasOwn = Object.prototype.hasOwnProperty; + + function astNodesAreEquivalent(a, b, problemPath) { + if (isArray.check(problemPath)) { + problemPath.length = 0; + } else { + problemPath = null; + } + + return areEquivalent(a, b, problemPath); + } + + astNodesAreEquivalent.assert = function (a, b) { + var problemPath = []; + if (!astNodesAreEquivalent(a, b, problemPath)) { + if (problemPath.length === 0) { + if (a !== b) { + throw new Error("Nodes must be equal"); + } + } else { + throw new Error( + "Nodes differ in the following path: " + + problemPath.map(subscriptForProperty).join("") + ); + } + } + }; + + function subscriptForProperty(property) { + if (/[_$a-z][_$a-z0-9]*/i.test(property)) { + return "." + property; + } + return "[" + JSON.stringify(property) + "]"; + } + + function areEquivalent(a, b, problemPath) { + if (a === b) { + return true; + } + + if (isArray.check(a)) { + return arraysAreEquivalent(a, b, problemPath); + } + + if (isObject.check(a)) { + return objectsAreEquivalent(a, b, problemPath); + } + + if (isDate.check(a)) { + return isDate.check(b) && (+a === +b); + } + + if (isRegExp.check(a)) { + return isRegExp.check(b) && ( + a.source === b.source && + a.global === b.global && + a.multiline === b.multiline && + a.ignoreCase === b.ignoreCase + ); + } + + return a == b; + } + + function arraysAreEquivalent(a, b, problemPath) { + isArray.assert(a); + var aLength = a.length; + + if (!isArray.check(b) || b.length !== aLength) { + if (problemPath) { + problemPath.push("length"); + } + return false; + } + + for (var i = 0; i < aLength; ++i) { + if (problemPath) { + problemPath.push(i); + } + + if (i in a !== i in b) { + return false; + } + + if (!areEquivalent(a[i], b[i], problemPath)) { + return false; + } + + if (problemPath) { + var problemPathTail = problemPath.pop(); + if (problemPathTail !== i) { + throw new Error("" + problemPathTail); + } + } + } + + return true; + } + + function objectsAreEquivalent(a, b, problemPath) { + isObject.assert(a); + if (!isObject.check(b)) { + return false; + } + + // Fast path for a common property of AST nodes. + if (a.type !== b.type) { + if (problemPath) { + problemPath.push("type"); + } + return false; + } + + var aNames = getFieldNames(a); + var aNameCount = aNames.length; + + var bNames = getFieldNames(b); + var bNameCount = bNames.length; + + if (aNameCount === bNameCount) { + for (var i = 0; i < aNameCount; ++i) { + var name = aNames[i]; + var aChild = getFieldValue(a, name); + var bChild = getFieldValue(b, name); + + if (problemPath) { + problemPath.push(name); + } + + if (!areEquivalent(aChild, bChild, problemPath)) { + return false; + } + + if (problemPath) { + var problemPathTail = problemPath.pop(); + if (problemPathTail !== name) { + throw new Error("" + problemPathTail); + } + } + } + + return true; + } + + if (!problemPath) { + return false; + } + + // Since aNameCount !== bNameCount, we need to find some name that's + // missing in aNames but present in bNames, or vice-versa. + + var seenNames = Object.create(null); + + for (i = 0; i < aNameCount; ++i) { + seenNames[aNames[i]] = true; + } + + for (i = 0; i < bNameCount; ++i) { + name = bNames[i]; + + if (!hasOwn.call(seenNames, name)) { + problemPath.push(name); + return false; + } + + delete seenNames[name]; + } + + for (name in seenNames) { + problemPath.push(name); + break; + } + + return false; + } + + return astNodesAreEquivalent; +}; + +var Op$1 = Object.prototype; +var hasOwn$2 = Op$1.hasOwnProperty; + +var path = function (fork) { + var types = fork.use(types$1); + var isArray = types.builtInTypes.array; + var isNumber = types.builtInTypes.number; + + function Path(value, parentPath, name) { + if (!(this instanceof Path)) { + throw new Error("Path constructor cannot be invoked without 'new'"); + } + + if (parentPath) { + if (!(parentPath instanceof Path)) { + throw new Error(""); + } + } else { + parentPath = null; + name = null; + } + + // The value encapsulated by this Path, generally equal to + // parentPath.value[name] if we have a parentPath. + this.value = value; + + // The immediate parent Path of this Path. + this.parentPath = parentPath; + + // The name of the property of parentPath.value through which this + // Path's value was reached. + this.name = name; + + // Calling path.get("child") multiple times always returns the same + // child Path object, for both performance and consistency reasons. + this.__childCache = null; + } + + var Pp = Path.prototype; + + function getChildCache(path) { + // Lazily create the child cache. This also cheapens cache + // invalidation, since you can just reset path.__childCache to null. + return path.__childCache || (path.__childCache = Object.create(null)); + } + + function getChildPath(path, name) { + var cache = getChildCache(path); + var actualChildValue = path.getValueProperty(name); + var childPath = cache[name]; + if (!hasOwn$2.call(cache, name) || + // Ensure consistency between cache and reality. + childPath.value !== actualChildValue) { + childPath = cache[name] = new path.constructor( + actualChildValue, path, name + ); + } + return childPath; + } + +// This method is designed to be overridden by subclasses that need to +// handle missing properties, etc. + Pp.getValueProperty = function getValueProperty(name) { + return this.value[name]; + }; + + Pp.get = function get(name) { + var path = this; + var names = arguments; + var count = names.length; + + for (var i = 0; i < count; ++i) { + path = getChildPath(path, names[i]); + } + + return path; + }; + + Pp.each = function each(callback, context) { + var childPaths = []; + var len = this.value.length; + var i = 0; + + // Collect all the original child paths before invoking the callback. + for (var i = 0; i < len; ++i) { + if (hasOwn$2.call(this.value, i)) { + childPaths[i] = this.get(i); + } + } + + // Invoke the callback on just the original child paths, regardless of + // any modifications made to the array by the callback. I chose these + // semantics over cleverly invoking the callback on new elements because + // this way is much easier to reason about. + context = context || this; + for (i = 0; i < len; ++i) { + if (hasOwn$2.call(childPaths, i)) { + callback.call(context, childPaths[i]); + } + } + }; + + Pp.map = function map(callback, context) { + var result = []; + + this.each(function (childPath) { + result.push(callback.call(this, childPath)); + }, context); + + return result; + }; + + Pp.filter = function filter(callback, context) { + var result = []; + + this.each(function (childPath) { + if (callback.call(this, childPath)) { + result.push(childPath); + } + }, context); + + return result; + }; + + function emptyMoves() {} + function getMoves(path, offset, start, end) { + isArray.assert(path.value); + + if (offset === 0) { + return emptyMoves; + } + + var length = path.value.length; + if (length < 1) { + return emptyMoves; + } + + var argc = arguments.length; + if (argc === 2) { + start = 0; + end = length; + } else if (argc === 3) { + start = Math.max(start, 0); + end = length; + } else { + start = Math.max(start, 0); + end = Math.min(end, length); + } + + isNumber.assert(start); + isNumber.assert(end); + + var moves = Object.create(null); + var cache = getChildCache(path); + + for (var i = start; i < end; ++i) { + if (hasOwn$2.call(path.value, i)) { + var childPath = path.get(i); + if (childPath.name !== i) { + throw new Error(""); + } + var newIndex = i + offset; + childPath.name = newIndex; + moves[newIndex] = childPath; + delete cache[i]; + } + } + + delete cache.length; + + return function () { + for (var newIndex in moves) { + var childPath = moves[newIndex]; + if (childPath.name !== +newIndex) { + throw new Error(""); + } + cache[newIndex] = childPath; + path.value[newIndex] = childPath.value; + } + }; + } + + Pp.shift = function shift() { + var move = getMoves(this, -1); + var result = this.value.shift(); + move(); + return result; + }; + + Pp.unshift = function unshift(node) { + var move = getMoves(this, arguments.length); + var result = this.value.unshift.apply(this.value, arguments); + move(); + return result; + }; + + Pp.push = function push(node) { + isArray.assert(this.value); + delete getChildCache(this).length; + return this.value.push.apply(this.value, arguments); + }; + + Pp.pop = function pop() { + isArray.assert(this.value); + var cache = getChildCache(this); + delete cache[this.value.length - 1]; + delete cache.length; + return this.value.pop(); + }; + + Pp.insertAt = function insertAt(index, node) { + var argc = arguments.length; + var move = getMoves(this, argc - 1, index); + if (move === emptyMoves) { + return this; + } + + index = Math.max(index, 0); + + for (var i = 1; i < argc; ++i) { + this.value[index + i - 1] = arguments[i]; + } + + move(); + + return this; + }; + + Pp.insertBefore = function insertBefore(node) { + var pp = this.parentPath; + var argc = arguments.length; + var insertAtArgs = [this.name]; + for (var i = 0; i < argc; ++i) { + insertAtArgs.push(arguments[i]); + } + return pp.insertAt.apply(pp, insertAtArgs); + }; + + Pp.insertAfter = function insertAfter(node) { + var pp = this.parentPath; + var argc = arguments.length; + var insertAtArgs = [this.name + 1]; + for (var i = 0; i < argc; ++i) { + insertAtArgs.push(arguments[i]); + } + return pp.insertAt.apply(pp, insertAtArgs); + }; + + function repairRelationshipWithParent(path) { + if (!(path instanceof Path)) { + throw new Error(""); + } + + var pp = path.parentPath; + if (!pp) { + // Orphan paths have no relationship to repair. + return path; + } + + var parentValue = pp.value; + var parentCache = getChildCache(pp); + + // Make sure parentCache[path.name] is populated. + if (parentValue[path.name] === path.value) { + parentCache[path.name] = path; + } else if (isArray.check(parentValue)) { + // Something caused path.name to become out of date, so attempt to + // recover by searching for path.value in parentValue. + var i = parentValue.indexOf(path.value); + if (i >= 0) { + parentCache[path.name = i] = path; + } + } else { + // If path.value disagrees with parentValue[path.name], and + // path.name is not an array index, let path.value become the new + // parentValue[path.name] and update parentCache accordingly. + parentValue[path.name] = path.value; + parentCache[path.name] = path; + } + + if (parentValue[path.name] !== path.value) { + throw new Error(""); + } + if (path.parentPath.get(path.name) !== path) { + throw new Error(""); + } + + return path; + } + + Pp.replace = function replace(replacement) { + var results = []; + var parentValue = this.parentPath.value; + var parentCache = getChildCache(this.parentPath); + var count = arguments.length; + + repairRelationshipWithParent(this); + + if (isArray.check(parentValue)) { + var originalLength = parentValue.length; + var move = getMoves(this.parentPath, count - 1, this.name + 1); + + var spliceArgs = [this.name, 1]; + for (var i = 0; i < count; ++i) { + spliceArgs.push(arguments[i]); + } + + var splicedOut = parentValue.splice.apply(parentValue, spliceArgs); + + if (splicedOut[0] !== this.value) { + throw new Error(""); + } + if (parentValue.length !== (originalLength - 1 + count)) { + throw new Error(""); + } + + move(); + + if (count === 0) { + delete this.value; + delete parentCache[this.name]; + this.__childCache = null; + + } else { + if (parentValue[this.name] !== replacement) { + throw new Error(""); + } + + if (this.value !== replacement) { + this.value = replacement; + this.__childCache = null; + } + + for (i = 0; i < count; ++i) { + results.push(this.parentPath.get(this.name + i)); + } + + if (results[0] !== this) { + throw new Error(""); + } + } + + } else if (count === 1) { + if (this.value !== replacement) { + this.__childCache = null; + } + this.value = parentValue[this.name] = replacement; + results.push(this); + + } else if (count === 0) { + delete parentValue[this.name]; + delete this.value; + this.__childCache = null; + + // Leave this path cached as parentCache[this.name], even though + // it no longer has a value defined. + + } else { + throw new Error("Could not replace path"); + } + + return results; + }; + + return Path; +}; + +var hasOwn$3 = Object.prototype.hasOwnProperty; + +var scope = function (fork) { + var types = fork.use(types$1); + var Type = types.Type; + var namedTypes = types.namedTypes; + var Node = namedTypes.Node; + var Expression = namedTypes.Expression; + var isArray = types.builtInTypes.array; + var b = types.builders; + + function Scope(path, parentScope) { + if (!(this instanceof Scope)) { + throw new Error("Scope constructor cannot be invoked without 'new'"); + } + if (!(path instanceof fork.use(nodePath))) { + throw new Error(""); + } + ScopeType.assert(path.value); + + var depth; + + if (parentScope) { + if (!(parentScope instanceof Scope)) { + throw new Error(""); + } + depth = parentScope.depth + 1; + } else { + parentScope = null; + depth = 0; + } + + Object.defineProperties(this, { + path: { value: path }, + node: { value: path.value }, + isGlobal: { value: !parentScope, enumerable: true }, + depth: { value: depth }, + parent: { value: parentScope }, + bindings: { value: {} }, + types: { value: {} }, + }); + } + + var scopeTypes = [ + // Program nodes introduce global scopes. + namedTypes.Program, + + // Function is the supertype of FunctionExpression, + // FunctionDeclaration, ArrowExpression, etc. + namedTypes.Function, + + // In case you didn't know, the caught parameter shadows any variable + // of the same name in an outer scope. + namedTypes.CatchClause + ]; + + var ScopeType = Type.or.apply(Type, scopeTypes); + + Scope.isEstablishedBy = function(node) { + return ScopeType.check(node); + }; + + var Sp = Scope.prototype; + +// Will be overridden after an instance lazily calls scanScope. + Sp.didScan = false; + + Sp.declares = function(name) { + this.scan(); + return hasOwn$3.call(this.bindings, name); + }; + + Sp.declaresType = function(name) { + this.scan(); + return hasOwn$3.call(this.types, name); + }; + + Sp.declareTemporary = function(prefix) { + if (prefix) { + if (!/^[a-z$_]/i.test(prefix)) { + throw new Error(""); + } + } else { + prefix = "t$"; + } + + // Include this.depth in the name to make sure the name does not + // collide with any variables in nested/enclosing scopes. + prefix += this.depth.toString(36) + "$"; + + this.scan(); + + var index = 0; + while (this.declares(prefix + index)) { + ++index; + } + + var name = prefix + index; + return this.bindings[name] = types.builders.identifier(name); + }; + + Sp.injectTemporary = function(identifier, init) { + identifier || (identifier = this.declareTemporary()); + + var bodyPath = this.path.get("body"); + if (namedTypes.BlockStatement.check(bodyPath.value)) { + bodyPath = bodyPath.get("body"); + } + + bodyPath.unshift( + b.variableDeclaration( + "var", + [b.variableDeclarator(identifier, init || null)] + ) + ); + + return identifier; + }; + + Sp.scan = function(force) { + if (force || !this.didScan) { + for (var name in this.bindings) { + // Empty out this.bindings, just in cases. + delete this.bindings[name]; + } + scanScope(this.path, this.bindings, this.types); + this.didScan = true; + } + }; + + Sp.getBindings = function () { + this.scan(); + return this.bindings; + }; + + Sp.getTypes = function () { + this.scan(); + return this.types; + }; + + function scanScope(path, bindings, scopeTypes) { + var node = path.value; + ScopeType.assert(node); + + if (namedTypes.CatchClause.check(node)) { + // A catch clause establishes a new scope but the only variable + // bound in that scope is the catch parameter. Any other + // declarations create bindings in the outer scope. + addPattern(path.get("param"), bindings); + + } else { + recursiveScanScope(path, bindings, scopeTypes); + } + } + + function recursiveScanScope(path, bindings, scopeTypes) { + var node = path.value; + + if (path.parent && + namedTypes.FunctionExpression.check(path.parent.node) && + path.parent.node.id) { + addPattern(path.parent.get("id"), bindings); + } + + if (!node) { + // None of the remaining cases matter if node is falsy. + + } else if (isArray.check(node)) { + path.each(function(childPath) { + recursiveScanChild(childPath, bindings, scopeTypes); + }); + + } else if (namedTypes.Function.check(node)) { + path.get("params").each(function(paramPath) { + addPattern(paramPath, bindings); + }); + + recursiveScanChild(path.get("body"), bindings, scopeTypes); + + } else if (namedTypes.TypeAlias && namedTypes.TypeAlias.check(node)) { + addTypePattern(path.get("id"), scopeTypes); + + } else if (namedTypes.VariableDeclarator.check(node)) { + addPattern(path.get("id"), bindings); + recursiveScanChild(path.get("init"), bindings, scopeTypes); + + } else if (node.type === "ImportSpecifier" || + node.type === "ImportNamespaceSpecifier" || + node.type === "ImportDefaultSpecifier") { + addPattern( + // Esprima used to use the .name field to refer to the local + // binding identifier for ImportSpecifier nodes, but .id for + // ImportNamespaceSpecifier and ImportDefaultSpecifier nodes. + // ESTree/Acorn/ESpree use .local for all three node types. + path.get(node.local ? "local" : + node.name ? "name" : "id"), + bindings + ); + + } else if (Node.check(node) && !Expression.check(node)) { + types.eachField(node, function(name, child) { + var childPath = path.get(name); + if (!pathHasValue(childPath, child)) { + throw new Error(""); + } + recursiveScanChild(childPath, bindings, scopeTypes); + }); + } + } + + function pathHasValue(path, value) { + if (path.value === value) { + return true; + } + + // Empty arrays are probably produced by defaults.emptyArray, in which + // case is makes sense to regard them as equivalent, if not ===. + if (Array.isArray(path.value) && + path.value.length === 0 && + Array.isArray(value) && + value.length === 0) { + return true; + } + + return false; + } + + function recursiveScanChild(path, bindings, scopeTypes) { + var node = path.value; + + if (!node || Expression.check(node)) { + // Ignore falsy values and Expressions. + + } else if (namedTypes.FunctionDeclaration.check(node) && + node.id !== null) { + addPattern(path.get("id"), bindings); + + } else if (namedTypes.ClassDeclaration && + namedTypes.ClassDeclaration.check(node)) { + addPattern(path.get("id"), bindings); + + } else if (ScopeType.check(node)) { + if (namedTypes.CatchClause.check(node)) { + var catchParamName = node.param.name; + var hadBinding = hasOwn$3.call(bindings, catchParamName); + + // Any declarations that occur inside the catch body that do + // not have the same name as the catch parameter should count + // as bindings in the outer scope. + recursiveScanScope(path.get("body"), bindings, scopeTypes); + + // If a new binding matching the catch parameter name was + // created while scanning the catch body, ignore it because it + // actually refers to the catch parameter and not the outer + // scope that we're currently scanning. + if (!hadBinding) { + delete bindings[catchParamName]; + } + } + + } else { + recursiveScanScope(path, bindings, scopeTypes); + } + } + + function addPattern(patternPath, bindings) { + var pattern = patternPath.value; + namedTypes.Pattern.assert(pattern); + + if (namedTypes.Identifier.check(pattern)) { + if (hasOwn$3.call(bindings, pattern.name)) { + bindings[pattern.name].push(patternPath); + } else { + bindings[pattern.name] = [patternPath]; + } + + } else if (namedTypes.ObjectPattern && + namedTypes.ObjectPattern.check(pattern)) { + patternPath.get('properties').each(function(propertyPath) { + var property = propertyPath.value; + if (namedTypes.Pattern.check(property)) { + addPattern(propertyPath, bindings); + } else if (namedTypes.Property.check(property)) { + addPattern(propertyPath.get('value'), bindings); + } else if (namedTypes.SpreadProperty && + namedTypes.SpreadProperty.check(property)) { + addPattern(propertyPath.get('argument'), bindings); + } + }); + + } else if (namedTypes.ArrayPattern && + namedTypes.ArrayPattern.check(pattern)) { + patternPath.get('elements').each(function(elementPath) { + var element = elementPath.value; + if (namedTypes.Pattern.check(element)) { + addPattern(elementPath, bindings); + } else if (namedTypes.SpreadElement && + namedTypes.SpreadElement.check(element)) { + addPattern(elementPath.get("argument"), bindings); + } + }); + + } else if (namedTypes.PropertyPattern && + namedTypes.PropertyPattern.check(pattern)) { + addPattern(patternPath.get('pattern'), bindings); + + } else if ((namedTypes.SpreadElementPattern && + namedTypes.SpreadElementPattern.check(pattern)) || + (namedTypes.SpreadPropertyPattern && + namedTypes.SpreadPropertyPattern.check(pattern))) { + addPattern(patternPath.get('argument'), bindings); + } + } + + function addTypePattern(patternPath, types) { + var pattern = patternPath.value; + namedTypes.Pattern.assert(pattern); + + if (namedTypes.Identifier.check(pattern)) { + if (hasOwn$3.call(types, pattern.name)) { + types[pattern.name].push(patternPath); + } else { + types[pattern.name] = [patternPath]; + } + + } + } + + Sp.lookup = function(name) { + for (var scope = this; scope; scope = scope.parent) + if (scope.declares(name)) + break; + return scope; + }; + + Sp.lookupType = function(name) { + for (var scope = this; scope; scope = scope.parent) + if (scope.declaresType(name)) + break; + return scope; + }; + + Sp.getGlobalScope = function() { + var scope = this; + while (!scope.isGlobal) + scope = scope.parent; + return scope; + }; + + return Scope; +}; + +var nodePath = function (fork) { + var types = fork.use(types$1); + var n = types.namedTypes; + var b = types.builders; + var isNumber = types.builtInTypes.number; + var isArray = types.builtInTypes.array; + var Path = fork.use(path); + var Scope = fork.use(scope); + + function NodePath(value, parentPath, name) { + if (!(this instanceof NodePath)) { + throw new Error("NodePath constructor cannot be invoked without 'new'"); + } + Path.call(this, value, parentPath, name); + } + + var NPp = NodePath.prototype = Object.create(Path.prototype, { + constructor: { + value: NodePath, + enumerable: false, + writable: true, + configurable: true + } + }); + + Object.defineProperties(NPp, { + node: { + get: function () { + Object.defineProperty(this, "node", { + configurable: true, // Enable deletion. + value: this._computeNode() + }); + + return this.node; + } + }, + + parent: { + get: function () { + Object.defineProperty(this, "parent", { + configurable: true, // Enable deletion. + value: this._computeParent() + }); + + return this.parent; + } + }, + + scope: { + get: function () { + Object.defineProperty(this, "scope", { + configurable: true, // Enable deletion. + value: this._computeScope() + }); + + return this.scope; + } + } + }); + + NPp.replace = function () { + delete this.node; + delete this.parent; + delete this.scope; + return Path.prototype.replace.apply(this, arguments); + }; + + NPp.prune = function () { + var remainingNodePath = this.parent; + + this.replace(); + + return cleanUpNodesAfterPrune(remainingNodePath); + }; + + // The value of the first ancestor Path whose value is a Node. + NPp._computeNode = function () { + var value = this.value; + if (n.Node.check(value)) { + return value; + } + + var pp = this.parentPath; + return pp && pp.node || null; + }; + + // The first ancestor Path whose value is a Node distinct from this.node. + NPp._computeParent = function () { + var value = this.value; + var pp = this.parentPath; + + if (!n.Node.check(value)) { + while (pp && !n.Node.check(pp.value)) { + pp = pp.parentPath; + } + + if (pp) { + pp = pp.parentPath; + } + } + + while (pp && !n.Node.check(pp.value)) { + pp = pp.parentPath; + } + + return pp || null; + }; + + // The closest enclosing scope that governs this node. + NPp._computeScope = function () { + var value = this.value; + var pp = this.parentPath; + var scope$$1 = pp && pp.scope; + + if (n.Node.check(value) && + Scope.isEstablishedBy(value)) { + scope$$1 = new Scope(this, scope$$1); + } + + return scope$$1 || null; + }; + + NPp.getValueProperty = function (name) { + return types.getFieldValue(this.value, name); + }; + + /** + * Determine whether this.node needs to be wrapped in parentheses in order + * for a parser to reproduce the same local AST structure. + * + * For instance, in the expression `(1 + 2) * 3`, the BinaryExpression + * whose operator is "+" needs parentheses, because `1 + 2 * 3` would + * parse differently. + * + * If assumeExpressionContext === true, we don't worry about edge cases + * like an anonymous FunctionExpression appearing lexically first in its + * enclosing statement and thus needing parentheses to avoid being parsed + * as a FunctionDeclaration with a missing name. + */ + NPp.needsParens = function (assumeExpressionContext) { + var pp = this.parentPath; + if (!pp) { + return false; + } + + var node = this.value; + + // Only expressions need parentheses. + if (!n.Expression.check(node)) { + return false; + } + + // Identifiers never need parentheses. + if (node.type === "Identifier") { + return false; + } + + while (!n.Node.check(pp.value)) { + pp = pp.parentPath; + if (!pp) { + return false; + } + } + + var parent = pp.value; + + switch (node.type) { + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + return parent.type === "MemberExpression" + && this.name === "object" + && parent.object === node; + + case "BinaryExpression": + case "LogicalExpression": + switch (parent.type) { + case "CallExpression": + return this.name === "callee" + && parent.callee === node; + + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + return true; + + case "MemberExpression": + return this.name === "object" + && parent.object === node; + + case "BinaryExpression": + case "LogicalExpression": + var po = parent.operator; + var pp = PRECEDENCE[po]; + var no = node.operator; + var np = PRECEDENCE[no]; + + if (pp > np) { + return true; + } + + if (pp === np && this.name === "right") { + if (parent.right !== node) { + throw new Error("Nodes must be equal"); + } + return true; + } + + default: + return false; + } + + case "SequenceExpression": + switch (parent.type) { + case "ForStatement": + // Although parentheses wouldn't hurt around sequence + // expressions in the head of for loops, traditional style + // dictates that e.g. i++, j++ should not be wrapped with + // parentheses. + return false; + + case "ExpressionStatement": + return this.name !== "expression"; + + default: + // Otherwise err on the side of overparenthesization, adding + // explicit exceptions above if this proves overzealous. + return true; + } + + case "YieldExpression": + switch (parent.type) { + case "BinaryExpression": + case "LogicalExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "CallExpression": + case "MemberExpression": + case "NewExpression": + case "ConditionalExpression": + case "YieldExpression": + return true; + + default: + return false; + } + + case "Literal": + return parent.type === "MemberExpression" + && isNumber.check(node.value) + && this.name === "object" + && parent.object === node; + + case "AssignmentExpression": + case "ConditionalExpression": + switch (parent.type) { + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "BinaryExpression": + case "LogicalExpression": + return true; + + case "CallExpression": + return this.name === "callee" + && parent.callee === node; + + case "ConditionalExpression": + return this.name === "test" + && parent.test === node; + + case "MemberExpression": + return this.name === "object" + && parent.object === node; + + default: + return false; + } + + default: + if (parent.type === "NewExpression" && + this.name === "callee" && + parent.callee === node) { + return containsCallExpression(node); + } + } + + if (assumeExpressionContext !== true && + !this.canBeFirstInStatement() && + this.firstInStatement()) + return true; + + return false; + }; + + function isBinary(node) { + return n.BinaryExpression.check(node) + || n.LogicalExpression.check(node); + } + + var PRECEDENCE = {}; + [["||"], + ["&&"], + ["|"], + ["^"], + ["&"], + ["==", "===", "!=", "!=="], + ["<", ">", "<=", ">=", "in", "instanceof"], + [">>", "<<", ">>>"], + ["+", "-"], + ["*", "/", "%"] + ].forEach(function (tier, i) { + tier.forEach(function (op) { + PRECEDENCE[op] = i; + }); + }); + + function containsCallExpression(node) { + if (n.CallExpression.check(node)) { + return true; + } + + if (isArray.check(node)) { + return node.some(containsCallExpression); + } + + if (n.Node.check(node)) { + return types.someField(node, function (name, child) { + return containsCallExpression(child); + }); + } + + return false; + } + + NPp.canBeFirstInStatement = function () { + var node = this.node; + return !n.FunctionExpression.check(node) + && !n.ObjectExpression.check(node); + }; + + NPp.firstInStatement = function () { + return firstInStatement(this); + }; + + function firstInStatement(path$$1) { + for (var node, parent; path$$1.parent; path$$1 = path$$1.parent) { + node = path$$1.node; + parent = path$$1.parent.node; + + if (n.BlockStatement.check(parent) && + path$$1.parent.name === "body" && + path$$1.name === 0) { + if (parent.body[0] !== node) { + throw new Error("Nodes must be equal"); + } + return true; + } + + if (n.ExpressionStatement.check(parent) && + path$$1.name === "expression") { + if (parent.expression !== node) { + throw new Error("Nodes must be equal"); + } + return true; + } + + if (n.SequenceExpression.check(parent) && + path$$1.parent.name === "expressions" && + path$$1.name === 0) { + if (parent.expressions[0] !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + + if (n.CallExpression.check(parent) && + path$$1.name === "callee") { + if (parent.callee !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + + if (n.MemberExpression.check(parent) && + path$$1.name === "object") { + if (parent.object !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + + if (n.ConditionalExpression.check(parent) && + path$$1.name === "test") { + if (parent.test !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + + if (isBinary(parent) && + path$$1.name === "left") { + if (parent.left !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + + if (n.UnaryExpression.check(parent) && + !parent.prefix && + path$$1.name === "argument") { + if (parent.argument !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + + return false; + } + + return true; + } + + /** + * Pruning certain nodes will result in empty or incomplete nodes, here we clean those nodes up. + */ + function cleanUpNodesAfterPrune(remainingNodePath) { + if (n.VariableDeclaration.check(remainingNodePath.node)) { + var declarations = remainingNodePath.get('declarations').value; + if (!declarations || declarations.length === 0) { + return remainingNodePath.prune(); + } + } else if (n.ExpressionStatement.check(remainingNodePath.node)) { + if (!remainingNodePath.get('expression').value) { + return remainingNodePath.prune(); + } + } else if (n.IfStatement.check(remainingNodePath.node)) { + cleanUpIfStatementAfterPrune(remainingNodePath); + } + + return remainingNodePath; + } + + function cleanUpIfStatementAfterPrune(ifStatement) { + var testExpression = ifStatement.get('test').value; + var alternate = ifStatement.get('alternate').value; + var consequent = ifStatement.get('consequent').value; + + if (!consequent && !alternate) { + var testExpressionStatement = b.expressionStatement(testExpression); + + ifStatement.replace(testExpressionStatement); + } else if (!consequent && alternate) { + var negatedTestExpression = b.unaryExpression('!', testExpression, true); + + if (n.UnaryExpression.check(testExpression) && testExpression.operator === '!') { + negatedTestExpression = testExpression.argument; + } + + ifStatement.get("test").replace(negatedTestExpression); + ifStatement.get("consequent").replace(alternate); + ifStatement.get("alternate").replace(); + } + } + + return NodePath; +}; + +var hasOwn$4 = Object.prototype.hasOwnProperty; + +var pathVisitor = function (fork) { + var types = fork.use(types$1); + var NodePath = fork.use(nodePath); + var Printable = types.namedTypes.Printable; + var isArray = types.builtInTypes.array; + var isObject = types.builtInTypes.object; + var isFunction = types.builtInTypes.function; + var undefined; + + function PathVisitor() { + if (!(this instanceof PathVisitor)) { + throw new Error( + "PathVisitor constructor cannot be invoked without 'new'" + ); + } + + // Permanent state. + this._reusableContextStack = []; + + this._methodNameTable = computeMethodNameTable(this); + this._shouldVisitComments = + hasOwn$4.call(this._methodNameTable, "Block") || + hasOwn$4.call(this._methodNameTable, "Line"); + + this.Context = makeContextConstructor(this); + + // State reset every time PathVisitor.prototype.visit is called. + this._visiting = false; + this._changeReported = false; + } + + function computeMethodNameTable(visitor) { + var typeNames = Object.create(null); + + for (var methodName in visitor) { + if (/^visit[A-Z]/.test(methodName)) { + typeNames[methodName.slice("visit".length)] = true; + } + } + + var supertypeTable = types.computeSupertypeLookupTable(typeNames); + var methodNameTable = Object.create(null); + + var typeNames = Object.keys(supertypeTable); + var typeNameCount = typeNames.length; + for (var i = 0; i < typeNameCount; ++i) { + var typeName = typeNames[i]; + methodName = "visit" + supertypeTable[typeName]; + if (isFunction.check(visitor[methodName])) { + methodNameTable[typeName] = methodName; + } + } + + return methodNameTable; + } + + PathVisitor.fromMethodsObject = function fromMethodsObject(methods) { + if (methods instanceof PathVisitor) { + return methods; + } + + if (!isObject.check(methods)) { + // An empty visitor? + return new PathVisitor; + } + + function Visitor() { + if (!(this instanceof Visitor)) { + throw new Error( + "Visitor constructor cannot be invoked without 'new'" + ); + } + PathVisitor.call(this); + } + + var Vp = Visitor.prototype = Object.create(PVp); + Vp.constructor = Visitor; + + extend(Vp, methods); + extend(Visitor, PathVisitor); + + isFunction.assert(Visitor.fromMethodsObject); + isFunction.assert(Visitor.visit); + + return new Visitor; + }; + + function extend(target, source) { + for (var property in source) { + if (hasOwn$4.call(source, property)) { + target[property] = source[property]; + } + } + + return target; + } + + PathVisitor.visit = function visit(node, methods) { + return PathVisitor.fromMethodsObject(methods).visit(node); + }; + + var PVp = PathVisitor.prototype; + + PVp.visit = function () { + if (this._visiting) { + throw new Error( + "Recursively calling visitor.visit(path) resets visitor state. " + + "Try this.visit(path) or this.traverse(path) instead." + ); + } + + // Private state that needs to be reset before every traversal. + this._visiting = true; + this._changeReported = false; + this._abortRequested = false; + + var argc = arguments.length; + var args = new Array(argc); + for (var i = 0; i < argc; ++i) { + args[i] = arguments[i]; + } + + if (!(args[0] instanceof NodePath)) { + args[0] = new NodePath({root: args[0]}).get("root"); + } + + // Called with the same arguments as .visit. + this.reset.apply(this, args); + + try { + var root = this.visitWithoutReset(args[0]); + var didNotThrow = true; + } finally { + this._visiting = false; + + if (!didNotThrow && this._abortRequested) { + // If this.visitWithoutReset threw an exception and + // this._abortRequested was set to true, return the root of + // the AST instead of letting the exception propagate, so that + // client code does not have to provide a try-catch block to + // intercept the AbortRequest exception. Other kinds of + // exceptions will propagate without being intercepted and + // rethrown by a catch block, so their stacks will accurately + // reflect the original throwing context. + return args[0].value; + } + } + + return root; + }; + + PVp.AbortRequest = function AbortRequest() {}; + PVp.abort = function () { + var visitor = this; + visitor._abortRequested = true; + var request = new visitor.AbortRequest(); + + // If you decide to catch this exception and stop it from propagating, + // make sure to call its cancel method to avoid silencing other + // exceptions that might be thrown later in the traversal. + request.cancel = function () { + visitor._abortRequested = false; + }; + + throw request; + }; + + PVp.reset = function (path/*, additional arguments */) { + // Empty stub; may be reassigned or overridden by subclasses. + }; + + PVp.visitWithoutReset = function (path) { + if (this instanceof this.Context) { + // Since this.Context.prototype === this, there's a chance we + // might accidentally call context.visitWithoutReset. If that + // happens, re-invoke the method against context.visitor. + return this.visitor.visitWithoutReset(path); + } + + if (!(path instanceof NodePath)) { + throw new Error(""); + } + + var value = path.value; + + var methodName = value && + typeof value === "object" && + typeof value.type === "string" && + this._methodNameTable[value.type]; + + if (methodName) { + var context = this.acquireContext(path); + try { + return context.invokeVisitorMethod(methodName); + } finally { + this.releaseContext(context); + } + + } else { + // If there was no visitor method to call, visit the children of + // this node generically. + return visitChildren(path, this); + } + }; + + function visitChildren(path, visitor) { + if (!(path instanceof NodePath)) { + throw new Error(""); + } + if (!(visitor instanceof PathVisitor)) { + throw new Error(""); + } + + var value = path.value; + + if (isArray.check(value)) { + path.each(visitor.visitWithoutReset, visitor); + } else if (!isObject.check(value)) { + // No children to visit. + } else { + var childNames = types.getFieldNames(value); + + // The .comments field of the Node type is hidden, so we only + // visit it if the visitor defines visitBlock or visitLine, and + // value.comments is defined. + if (visitor._shouldVisitComments && + value.comments && + childNames.indexOf("comments") < 0) { + childNames.push("comments"); + } + + var childCount = childNames.length; + var childPaths = []; + + for (var i = 0; i < childCount; ++i) { + var childName = childNames[i]; + if (!hasOwn$4.call(value, childName)) { + value[childName] = types.getFieldValue(value, childName); + } + childPaths.push(path.get(childName)); + } + + for (var i = 0; i < childCount; ++i) { + visitor.visitWithoutReset(childPaths[i]); + } + } + + return path.value; + } + + PVp.acquireContext = function (path) { + if (this._reusableContextStack.length === 0) { + return new this.Context(path); + } + return this._reusableContextStack.pop().reset(path); + }; + + PVp.releaseContext = function (context) { + if (!(context instanceof this.Context)) { + throw new Error(""); + } + this._reusableContextStack.push(context); + context.currentPath = null; + }; + + PVp.reportChanged = function () { + this._changeReported = true; + }; + + PVp.wasChangeReported = function () { + return this._changeReported; + }; + + function makeContextConstructor(visitor) { + function Context(path) { + if (!(this instanceof Context)) { + throw new Error(""); + } + if (!(this instanceof PathVisitor)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + + Object.defineProperty(this, "visitor", { + value: visitor, + writable: false, + enumerable: true, + configurable: false + }); + + this.currentPath = path; + this.needToCallTraverse = true; + + Object.seal(this); + } + + if (!(visitor instanceof PathVisitor)) { + throw new Error(""); + } + + // Note that the visitor object is the prototype of Context.prototype, + // so all visitor methods are inherited by context objects. + var Cp = Context.prototype = Object.create(visitor); + + Cp.constructor = Context; + extend(Cp, sharedContextProtoMethods); + + return Context; + } + +// Every PathVisitor has a different this.Context constructor and +// this.Context.prototype object, but those prototypes can all use the +// same reset, invokeVisitorMethod, and traverse function objects. + var sharedContextProtoMethods = Object.create(null); + + sharedContextProtoMethods.reset = + function reset(path) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + + this.currentPath = path; + this.needToCallTraverse = true; + + return this; + }; + + sharedContextProtoMethods.invokeVisitorMethod = + function invokeVisitorMethod(methodName) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(this.currentPath instanceof NodePath)) { + throw new Error(""); + } + + var result = this.visitor[methodName].call(this, this.currentPath); + + if (result === false) { + // Visitor methods return false to indicate that they have handled + // their own traversal needs, and we should not complain if + // this.needToCallTraverse is still true. + this.needToCallTraverse = false; + + } else if (result !== undefined) { + // Any other non-undefined value returned from the visitor method + // is interpreted as a replacement value. + this.currentPath = this.currentPath.replace(result)[0]; + + if (this.needToCallTraverse) { + // If this.traverse still hasn't been called, visit the + // children of the replacement node. + this.traverse(this.currentPath); + } + } + + if (this.needToCallTraverse !== false) { + throw new Error( + "Must either call this.traverse or return false in " + methodName + ); + } + + var path = this.currentPath; + return path && path.value; + }; + + sharedContextProtoMethods.traverse = + function traverse(path, newVisitor) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + if (!(this.currentPath instanceof NodePath)) { + throw new Error(""); + } + + this.needToCallTraverse = false; + + return visitChildren(path, PathVisitor.fromMethodsObject( + newVisitor || this.visitor + )); + }; + + sharedContextProtoMethods.visit = + function visit(path, newVisitor) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + if (!(this.currentPath instanceof NodePath)) { + throw new Error(""); + } + + this.needToCallTraverse = false; + + return PathVisitor.fromMethodsObject( + newVisitor || this.visitor + ).visitWithoutReset(path); + }; + + sharedContextProtoMethods.reportChanged = function reportChanged() { + this.visitor.reportChanged(); + }; + + sharedContextProtoMethods.abort = function abort() { + this.needToCallTraverse = false; + this.visitor.abort(); + }; + + return PathVisitor; +}; + +var fork = function (defs) { + var used = []; + var usedResult = []; + var fork = {}; + + function use(plugin) { + var idx = used.indexOf(plugin); + if (idx === -1) { + idx = used.length; + used.push(plugin); + usedResult[idx] = plugin(fork); + } + return usedResult[idx]; + } + + fork.use = use; + + var types = use(types$1); + + defs.forEach(use); + + types.finalize(); + + var exports = { + Type: types.Type, + builtInTypes: types.builtInTypes, + namedTypes: types.namedTypes, + builders: types.builders, + defineMethod: types.defineMethod, + getFieldNames: types.getFieldNames, + getFieldValue: types.getFieldValue, + eachField: types.eachField, + someField: types.someField, + getSupertypeNames: types.getSupertypeNames, + astNodesAreEquivalent: use(equiv), + finalize: types.finalize, + Path: use(path), + NodePath: use(nodePath), + PathVisitor: use(pathVisitor), + use: use + }; + + exports.visit = exports.PathVisitor.visit; + + return exports; +}; + +var shared = function (fork) { + var exports = {}; + var types = fork.use(types$1); + var Type = types.Type; + var builtin = types.builtInTypes; + var isNumber = builtin.number; + + // An example of constructing a new type with arbitrary constraints from + // an existing type. + exports.geq = function (than) { + return new Type(function (value) { + return isNumber.check(value) && value >= than; + }, isNumber + " >= " + than); + }; + + // Default value-returning functions that may optionally be passed as a + // third argument to Def.prototype.field. + exports.defaults = { + // Functions were used because (among other reasons) that's the most + // elegant way to allow for the emptyArray one always to give a new + // array instance. + "null": function () { return null }, + "emptyArray": function () { return [] }, + "false": function () { return false }, + "true": function () { return true }, + "undefined": function () {} + }; + + var naiveIsPrimitive = Type.or( + builtin.string, + builtin.number, + builtin.boolean, + builtin.null, + builtin.undefined + ); + + exports.isPrimitive = new Type(function (value) { + if (value === null) + return true; + var type = typeof value; + return !(type === "object" || + type === "function"); + }, naiveIsPrimitive.toString()); + + return exports; +}; + +var core = function (fork) { + var types = fork.use(types$1); + var Type = types.Type; + var def = Type.def; + var or = Type.or; + var shared$$1 = fork.use(shared); + var defaults = shared$$1.defaults; + var geq = shared$$1.geq; + + // Abstract supertype of all syntactic entities that are allowed to have a + // .loc field. + def("Printable") + .field("loc", or( + def("SourceLocation"), + null + ), defaults["null"], true); + + def("Node") + .bases("Printable") + .field("type", String) + .field("comments", or( + [def("Comment")], + null + ), defaults["null"], true); + + def("SourceLocation") + .build("start", "end", "source") + .field("start", def("Position")) + .field("end", def("Position")) + .field("source", or(String, null), defaults["null"]); + + def("Position") + .build("line", "column") + .field("line", geq(1)) + .field("column", geq(0)); + + def("File") + .bases("Node") + .build("program", "name") + .field("program", def("Program")) + .field("name", or(String, null), defaults["null"]); + + def("Program") + .bases("Node") + .build("body") + .field("body", [def("Statement")]); + + def("Function") + .bases("Node") + .field("id", or(def("Identifier"), null), defaults["null"]) + .field("params", [def("Pattern")]) + .field("body", def("BlockStatement")); + + def("Statement").bases("Node"); + +// The empty .build() here means that an EmptyStatement can be constructed +// (i.e. it's not abstract) but that it needs no arguments. + def("EmptyStatement").bases("Statement").build(); + + def("BlockStatement") + .bases("Statement") + .build("body") + .field("body", [def("Statement")]); + + // TODO Figure out how to silently coerce Expressions to + // ExpressionStatements where a Statement was expected. + def("ExpressionStatement") + .bases("Statement") + .build("expression") + .field("expression", def("Expression")); + + def("IfStatement") + .bases("Statement") + .build("test", "consequent", "alternate") + .field("test", def("Expression")) + .field("consequent", def("Statement")) + .field("alternate", or(def("Statement"), null), defaults["null"]); + + def("LabeledStatement") + .bases("Statement") + .build("label", "body") + .field("label", def("Identifier")) + .field("body", def("Statement")); + + def("BreakStatement") + .bases("Statement") + .build("label") + .field("label", or(def("Identifier"), null), defaults["null"]); + + def("ContinueStatement") + .bases("Statement") + .build("label") + .field("label", or(def("Identifier"), null), defaults["null"]); + + def("WithStatement") + .bases("Statement") + .build("object", "body") + .field("object", def("Expression")) + .field("body", def("Statement")); + + def("SwitchStatement") + .bases("Statement") + .build("discriminant", "cases", "lexical") + .field("discriminant", def("Expression")) + .field("cases", [def("SwitchCase")]) + .field("lexical", Boolean, defaults["false"]); + + def("ReturnStatement") + .bases("Statement") + .build("argument") + .field("argument", or(def("Expression"), null)); + + def("ThrowStatement") + .bases("Statement") + .build("argument") + .field("argument", def("Expression")); + + def("TryStatement") + .bases("Statement") + .build("block", "handler", "finalizer") + .field("block", def("BlockStatement")) + .field("handler", or(def("CatchClause"), null), function () { + return this.handlers && this.handlers[0] || null; + }) + .field("handlers", [def("CatchClause")], function () { + return this.handler ? [this.handler] : []; + }, true) // Indicates this field is hidden from eachField iteration. + .field("guardedHandlers", [def("CatchClause")], defaults.emptyArray) + .field("finalizer", or(def("BlockStatement"), null), defaults["null"]); + + def("CatchClause") + .bases("Node") + .build("param", "guard", "body") + .field("param", def("Pattern")) + .field("guard", or(def("Expression"), null), defaults["null"]) + .field("body", def("BlockStatement")); + + def("WhileStatement") + .bases("Statement") + .build("test", "body") + .field("test", def("Expression")) + .field("body", def("Statement")); + + def("DoWhileStatement") + .bases("Statement") + .build("body", "test") + .field("body", def("Statement")) + .field("test", def("Expression")); + + def("ForStatement") + .bases("Statement") + .build("init", "test", "update", "body") + .field("init", or( + def("VariableDeclaration"), + def("Expression"), + null)) + .field("test", or(def("Expression"), null)) + .field("update", or(def("Expression"), null)) + .field("body", def("Statement")); + + def("ForInStatement") + .bases("Statement") + .build("left", "right", "body") + .field("left", or( + def("VariableDeclaration"), + def("Expression"))) + .field("right", def("Expression")) + .field("body", def("Statement")); + + def("DebuggerStatement").bases("Statement").build(); + + def("Declaration").bases("Statement"); + + def("FunctionDeclaration") + .bases("Function", "Declaration") + .build("id", "params", "body") + .field("id", def("Identifier")); + + def("FunctionExpression") + .bases("Function", "Expression") + .build("id", "params", "body"); + + def("VariableDeclaration") + .bases("Declaration") + .build("kind", "declarations") + .field("kind", or("var", "let", "const")) + .field("declarations", [def("VariableDeclarator")]); + + def("VariableDeclarator") + .bases("Node") + .build("id", "init") + .field("id", def("Pattern")) + .field("init", or(def("Expression"), null)); + + // TODO Are all Expressions really Patterns? + def("Expression").bases("Node", "Pattern"); + + def("ThisExpression").bases("Expression").build(); + + def("ArrayExpression") + .bases("Expression") + .build("elements") + .field("elements", [or(def("Expression"), null)]); + + def("ObjectExpression") + .bases("Expression") + .build("properties") + .field("properties", [def("Property")]); + + // TODO Not in the Mozilla Parser API, but used by Esprima. + def("Property") + .bases("Node") // Want to be able to visit Property Nodes. + .build("kind", "key", "value") + .field("kind", or("init", "get", "set")) + .field("key", or(def("Literal"), def("Identifier"))) + .field("value", def("Expression")); + + def("SequenceExpression") + .bases("Expression") + .build("expressions") + .field("expressions", [def("Expression")]); + + var UnaryOperator = or( + "-", "+", "!", "~", + "typeof", "void", "delete"); + + def("UnaryExpression") + .bases("Expression") + .build("operator", "argument", "prefix") + .field("operator", UnaryOperator) + .field("argument", def("Expression")) + // Esprima doesn't bother with this field, presumably because it's + // always true for unary operators. + .field("prefix", Boolean, defaults["true"]); + + var BinaryOperator = or( + "==", "!=", "===", "!==", + "<", "<=", ">", ">=", + "<<", ">>", ">>>", + "+", "-", "*", "/", "%", + "&", // TODO Missing from the Parser API. + "|", "^", "in", + "instanceof", ".."); + + def("BinaryExpression") + .bases("Expression") + .build("operator", "left", "right") + .field("operator", BinaryOperator) + .field("left", def("Expression")) + .field("right", def("Expression")); + + var AssignmentOperator = or( + "=", "+=", "-=", "*=", "/=", "%=", + "<<=", ">>=", ">>>=", + "|=", "^=", "&="); + + def("AssignmentExpression") + .bases("Expression") + .build("operator", "left", "right") + .field("operator", AssignmentOperator) + .field("left", def("Pattern")) + .field("right", def("Expression")); + + var UpdateOperator = or("++", "--"); + + def("UpdateExpression") + .bases("Expression") + .build("operator", "argument", "prefix") + .field("operator", UpdateOperator) + .field("argument", def("Expression")) + .field("prefix", Boolean); + + var LogicalOperator = or("||", "&&"); + + def("LogicalExpression") + .bases("Expression") + .build("operator", "left", "right") + .field("operator", LogicalOperator) + .field("left", def("Expression")) + .field("right", def("Expression")); + + def("ConditionalExpression") + .bases("Expression") + .build("test", "consequent", "alternate") + .field("test", def("Expression")) + .field("consequent", def("Expression")) + .field("alternate", def("Expression")); + + def("NewExpression") + .bases("Expression") + .build("callee", "arguments") + .field("callee", def("Expression")) + // The Mozilla Parser API gives this type as [or(def("Expression"), + // null)], but null values don't really make sense at the call site. + // TODO Report this nonsense. + .field("arguments", [def("Expression")]); + + def("CallExpression") + .bases("Expression") + .build("callee", "arguments") + .field("callee", def("Expression")) + // See comment for NewExpression above. + .field("arguments", [def("Expression")]); + + def("MemberExpression") + .bases("Expression") + .build("object", "property", "computed") + .field("object", def("Expression")) + .field("property", or(def("Identifier"), def("Expression"))) + .field("computed", Boolean, function () { + var type = this.property.type; + if (type === 'Literal' || + type === 'MemberExpression' || + type === 'BinaryExpression') { + return true; + } + return false; + }); + + def("Pattern").bases("Node"); + + def("SwitchCase") + .bases("Node") + .build("test", "consequent") + .field("test", or(def("Expression"), null)) + .field("consequent", [def("Statement")]); + + def("Identifier") + // But aren't Expressions and Patterns already Nodes? TODO Report this. + .bases("Node", "Expression", "Pattern") + .build("name") + .field("name", String); + + def("Literal") + // But aren't Expressions already Nodes? TODO Report this. + .bases("Node", "Expression") + .build("value") + .field("value", or(String, Boolean, null, Number, RegExp)) + .field("regex", or({ + pattern: String, + flags: String + }, null), function () { + if (this.value instanceof RegExp) { + var flags = ""; + + if (this.value.ignoreCase) flags += "i"; + if (this.value.multiline) flags += "m"; + if (this.value.global) flags += "g"; + + return { + pattern: this.value.source, + flags: flags + }; + } + + return null; + }); + + // Abstract (non-buildable) comment supertype. Not a Node. + def("Comment") + .bases("Printable") + .field("value", String) + // A .leading comment comes before the node, whereas a .trailing + // comment comes after it. These two fields should not both be true, + // but they might both be false when the comment falls inside a node + // and the node has no children for the comment to lead or trail, + // e.g. { /*dangling*/ }. + .field("leading", Boolean, defaults["true"]) + .field("trailing", Boolean, defaults["false"]); +}; + +var es6 = function (fork) { + fork.use(core); + var types = fork.use(types$1); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared).defaults; + + def("Function") + .field("generator", Boolean, defaults["false"]) + .field("expression", Boolean, defaults["false"]) + .field("defaults", [or(def("Expression"), null)], defaults.emptyArray) + // TODO This could be represented as a RestElement in .params. + .field("rest", or(def("Identifier"), null), defaults["null"]); + + // The ESTree way of representing a ...rest parameter. + def("RestElement") + .bases("Pattern") + .build("argument") + .field("argument", def("Pattern")); + + def("SpreadElementPattern") + .bases("Pattern") + .build("argument") + .field("argument", def("Pattern")); + + def("FunctionDeclaration") + .build("id", "params", "body", "generator", "expression"); + + def("FunctionExpression") + .build("id", "params", "body", "generator", "expression"); + + // The Parser API calls this ArrowExpression, but Esprima and all other + // actual parsers use ArrowFunctionExpression. + def("ArrowFunctionExpression") + .bases("Function", "Expression") + .build("params", "body", "expression") + // The forced null value here is compatible with the overridden + // definition of the "id" field in the Function interface. + .field("id", null, defaults["null"]) + // Arrow function bodies are allowed to be expressions. + .field("body", or(def("BlockStatement"), def("Expression"))) + // The current spec forbids arrow generators, so I have taken the + // liberty of enforcing that. TODO Report this. + .field("generator", false, defaults["false"]); + + def("YieldExpression") + .bases("Expression") + .build("argument", "delegate") + .field("argument", or(def("Expression"), null)) + .field("delegate", Boolean, defaults["false"]); + + def("GeneratorExpression") + .bases("Expression") + .build("body", "blocks", "filter") + .field("body", def("Expression")) + .field("blocks", [def("ComprehensionBlock")]) + .field("filter", or(def("Expression"), null)); + + def("ComprehensionExpression") + .bases("Expression") + .build("body", "blocks", "filter") + .field("body", def("Expression")) + .field("blocks", [def("ComprehensionBlock")]) + .field("filter", or(def("Expression"), null)); + + def("ComprehensionBlock") + .bases("Node") + .build("left", "right", "each") + .field("left", def("Pattern")) + .field("right", def("Expression")) + .field("each", Boolean); + + def("Property") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("value", or(def("Expression"), def("Pattern"))) + .field("method", Boolean, defaults["false"]) + .field("shorthand", Boolean, defaults["false"]) + .field("computed", Boolean, defaults["false"]); + + def("PropertyPattern") + .bases("Pattern") + .build("key", "pattern") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("pattern", def("Pattern")) + .field("computed", Boolean, defaults["false"]); + + def("ObjectPattern") + .bases("Pattern") + .build("properties") + .field("properties", [or(def("PropertyPattern"), def("Property"))]); + + def("ArrayPattern") + .bases("Pattern") + .build("elements") + .field("elements", [or(def("Pattern"), null)]); + + def("MethodDefinition") + .bases("Declaration") + .build("kind", "key", "value", "static") + .field("kind", or("constructor", "method", "get", "set")) + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("value", def("Function")) + .field("computed", Boolean, defaults["false"]) + .field("static", Boolean, defaults["false"]); + + def("SpreadElement") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + + def("ArrayExpression") + .field("elements", [or( + def("Expression"), + def("SpreadElement"), + def("RestElement"), + null + )]); + + def("NewExpression") + .field("arguments", [or(def("Expression"), def("SpreadElement"))]); + + def("CallExpression") + .field("arguments", [or(def("Expression"), def("SpreadElement"))]); + + // Note: this node type is *not* an AssignmentExpression with a Pattern on + // the left-hand side! The existing AssignmentExpression type already + // supports destructuring assignments. AssignmentPattern nodes may appear + // wherever a Pattern is allowed, and the right-hand side represents a + // default value to be destructured against the left-hand side, if no + // value is otherwise provided. For example: default parameter values. + def("AssignmentPattern") + .bases("Pattern") + .build("left", "right") + .field("left", def("Pattern")) + .field("right", def("Expression")); + + var ClassBodyElement = or( + def("MethodDefinition"), + def("VariableDeclarator"), + def("ClassPropertyDefinition"), + def("ClassProperty") + ); + + def("ClassProperty") + .bases("Declaration") + .build("key") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("computed", Boolean, defaults["false"]); + + def("ClassPropertyDefinition") // static property + .bases("Declaration") + .build("definition") + // Yes, Virginia, circular definitions are permitted. + .field("definition", ClassBodyElement); + + def("ClassBody") + .bases("Declaration") + .build("body") + .field("body", [ClassBodyElement]); + + def("ClassDeclaration") + .bases("Declaration") + .build("id", "body", "superClass") + .field("id", or(def("Identifier"), null)) + .field("body", def("ClassBody")) + .field("superClass", or(def("Expression"), null), defaults["null"]); + + def("ClassExpression") + .bases("Expression") + .build("id", "body", "superClass") + .field("id", or(def("Identifier"), null), defaults["null"]) + .field("body", def("ClassBody")) + .field("superClass", or(def("Expression"), null), defaults["null"]) + .field("implements", [def("ClassImplements")], defaults.emptyArray); + + def("ClassImplements") + .bases("Node") + .build("id") + .field("id", def("Identifier")) + .field("superClass", or(def("Expression"), null), defaults["null"]); + + // Specifier and ModuleSpecifier are abstract non-standard types + // introduced for definitional convenience. + def("Specifier").bases("Node"); + + // This supertype is shared/abused by both def/babel.js and + // def/esprima.js. In the future, it will be possible to load only one set + // of definitions appropriate for a given parser, but until then we must + // rely on default functions to reconcile the conflicting AST formats. + def("ModuleSpecifier") + .bases("Specifier") + // This local field is used by Babel/Acorn. It should not technically + // be optional in the Babel/Acorn AST format, but it must be optional + // in the Esprima AST format. + .field("local", or(def("Identifier"), null), defaults["null"]) + // The id and name fields are used by Esprima. The id field should not + // technically be optional in the Esprima AST format, but it must be + // optional in the Babel/Acorn AST format. + .field("id", or(def("Identifier"), null), defaults["null"]) + .field("name", or(def("Identifier"), null), defaults["null"]); + + def("TaggedTemplateExpression") + .bases("Expression") + .build("tag", "quasi") + .field("tag", def("Expression")) + .field("quasi", def("TemplateLiteral")); + + def("TemplateLiteral") + .bases("Expression") + .build("quasis", "expressions") + .field("quasis", [def("TemplateElement")]) + .field("expressions", [def("Expression")]); + + def("TemplateElement") + .bases("Node") + .build("value", "tail") + .field("value", {"cooked": String, "raw": String}) + .field("tail", Boolean); +}; + +var es7 = function (fork) { + fork.use(es6); + + var types = fork.use(types$1); + var def = types.Type.def; + var or = types.Type.or; + var builtin = types.builtInTypes; + var defaults = fork.use(shared).defaults; + + def("Function") + .field("async", Boolean, defaults["false"]); + + def("SpreadProperty") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + + def("ObjectExpression") + .field("properties", [or(def("Property"), def("SpreadProperty"))]); + + def("SpreadPropertyPattern") + .bases("Pattern") + .build("argument") + .field("argument", def("Pattern")); + + def("ObjectPattern") + .field("properties", [or( + def("Property"), + def("PropertyPattern"), + def("SpreadPropertyPattern") + )]); + + def("AwaitExpression") + .bases("Expression") + .build("argument", "all") + .field("argument", or(def("Expression"), null)) + .field("all", Boolean, defaults["false"]); +}; + +var mozilla = function (fork) { + fork.use(core); + var types = fork.use(types$1); + var def = types.Type.def; + var or = types.Type.or; + var shared$$1 = fork.use(shared); + var geq = shared$$1.geq; + var defaults = shared$$1.defaults; + + def("Function") + // SpiderMonkey allows expression closures: function(x) x+1 + .field("body", or(def("BlockStatement"), def("Expression"))); + + def("ForInStatement") + .build("left", "right", "body", "each") + .field("each", Boolean, defaults["false"]); + + def("ForOfStatement") + .bases("Statement") + .build("left", "right", "body") + .field("left", or( + def("VariableDeclaration"), + def("Expression"))) + .field("right", def("Expression")) + .field("body", def("Statement")); + + def("LetStatement") + .bases("Statement") + .build("head", "body") + // TODO Deviating from the spec by reusing VariableDeclarator here. + .field("head", [def("VariableDeclarator")]) + .field("body", def("Statement")); + + def("LetExpression") + .bases("Expression") + .build("head", "body") + // TODO Deviating from the spec by reusing VariableDeclarator here. + .field("head", [def("VariableDeclarator")]) + .field("body", def("Expression")); + + def("GraphExpression") + .bases("Expression") + .build("index", "expression") + .field("index", geq(0)) + .field("expression", def("Literal")); + + def("GraphIndexExpression") + .bases("Expression") + .build("index") + .field("index", geq(0)); +}; + +var e4x = function (fork) { + fork.use(core); + var types = fork.use(types$1); + var def = types.Type.def; + var or = types.Type.or; + + // Note that none of these types are buildable because the Mozilla Parser + // API doesn't specify any builder functions, and nobody uses E4X anymore. + + def("XMLDefaultDeclaration") + .bases("Declaration") + .field("namespace", def("Expression")); + + def("XMLAnyName").bases("Expression"); + + def("XMLQualifiedIdentifier") + .bases("Expression") + .field("left", or(def("Identifier"), def("XMLAnyName"))) + .field("right", or(def("Identifier"), def("Expression"))) + .field("computed", Boolean); + + def("XMLFunctionQualifiedIdentifier") + .bases("Expression") + .field("right", or(def("Identifier"), def("Expression"))) + .field("computed", Boolean); + + def("XMLAttributeSelector") + .bases("Expression") + .field("attribute", def("Expression")); + + def("XMLFilterExpression") + .bases("Expression") + .field("left", def("Expression")) + .field("right", def("Expression")); + + def("XMLElement") + .bases("XML", "Expression") + .field("contents", [def("XML")]); + + def("XMLList") + .bases("XML", "Expression") + .field("contents", [def("XML")]); + + def("XML").bases("Node"); + + def("XMLEscape") + .bases("XML") + .field("expression", def("Expression")); + + def("XMLText") + .bases("XML") + .field("text", String); + + def("XMLStartTag") + .bases("XML") + .field("contents", [def("XML")]); + + def("XMLEndTag") + .bases("XML") + .field("contents", [def("XML")]); + + def("XMLPointTag") + .bases("XML") + .field("contents", [def("XML")]); + + def("XMLName") + .bases("XML") + .field("contents", or(String, [def("XML")])); + + def("XMLAttribute") + .bases("XML") + .field("value", String); + + def("XMLCdata") + .bases("XML") + .field("contents", String); + + def("XMLComment") + .bases("XML") + .field("contents", String); + + def("XMLProcessingInstruction") + .bases("XML") + .field("target", String) + .field("contents", or(String, null)); +}; + +var jsx = function (fork) { + fork.use(es7); + + var types = fork.use(types$1); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared).defaults; + + def("JSXAttribute") + .bases("Node") + .build("name", "value") + .field("name", or(def("JSXIdentifier"), def("JSXNamespacedName"))) + .field("value", or( + def("Literal"), // attr="value" + def("JSXExpressionContainer"), // attr={value} + null // attr= or just attr + ), defaults["null"]); + + def("JSXIdentifier") + .bases("Identifier") + .build("name") + .field("name", String); + + def("JSXNamespacedName") + .bases("Node") + .build("namespace", "name") + .field("namespace", def("JSXIdentifier")) + .field("name", def("JSXIdentifier")); + + def("JSXMemberExpression") + .bases("MemberExpression") + .build("object", "property") + .field("object", or(def("JSXIdentifier"), def("JSXMemberExpression"))) + .field("property", def("JSXIdentifier")) + .field("computed", Boolean, defaults.false); + + var JSXElementName = or( + def("JSXIdentifier"), + def("JSXNamespacedName"), + def("JSXMemberExpression") + ); + + def("JSXSpreadAttribute") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + + var JSXAttributes = [or( + def("JSXAttribute"), + def("JSXSpreadAttribute") + )]; + + def("JSXExpressionContainer") + .bases("Expression") + .build("expression") + .field("expression", def("Expression")); + + def("JSXElement") + .bases("Expression") + .build("openingElement", "closingElement", "children") + .field("openingElement", def("JSXOpeningElement")) + .field("closingElement", or(def("JSXClosingElement"), null), defaults["null"]) + .field("children", [or( + def("JSXElement"), + def("JSXExpressionContainer"), + def("JSXText"), + def("Literal") // TODO Esprima should return JSXText instead. + )], defaults.emptyArray) + .field("name", JSXElementName, function () { + // Little-known fact: the `this` object inside a default function + // is none other than the partially-built object itself, and any + // fields initialized directly from builder function arguments + // (like openingElement, closingElement, and children) are + // guaranteed to be available. + return this.openingElement.name; + }, true) // hidden from traversal + .field("selfClosing", Boolean, function () { + return this.openingElement.selfClosing; + }, true) // hidden from traversal + .field("attributes", JSXAttributes, function () { + return this.openingElement.attributes; + }, true); // hidden from traversal + + def("JSXOpeningElement") + .bases("Node") // TODO Does this make sense? Can't really be an JSXElement. + .build("name", "attributes", "selfClosing") + .field("name", JSXElementName) + .field("attributes", JSXAttributes, defaults.emptyArray) + .field("selfClosing", Boolean, defaults["false"]); + + def("JSXClosingElement") + .bases("Node") // TODO Same concern. + .build("name") + .field("name", JSXElementName); + + def("JSXText") + .bases("Literal") + .build("value") + .field("value", String); + + def("JSXEmptyExpression").bases("Expression").build(); + +}; + +var flow = function (fork) { + fork.use(es7); + + var types = fork.use(types$1); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared).defaults; + + // Type Annotations + def("Type").bases("Node"); + + def("AnyTypeAnnotation") + .bases("Type") + .build(); + + def("EmptyTypeAnnotation") + .bases("Type") + .build(); + + def("MixedTypeAnnotation") + .bases("Type") + .build(); + + def("VoidTypeAnnotation") + .bases("Type") + .build(); + + def("NumberTypeAnnotation") + .bases("Type") + .build(); + + def("NumberLiteralTypeAnnotation") + .bases("Type") + .build("value", "raw") + .field("value", Number) + .field("raw", String); + + def("StringTypeAnnotation") + .bases("Type") + .build(); + + def("StringLiteralTypeAnnotation") + .bases("Type") + .build("value", "raw") + .field("value", String) + .field("raw", String); + + def("BooleanTypeAnnotation") + .bases("Type") + .build(); + + def("BooleanLiteralTypeAnnotation") + .bases("Type") + .build("value", "raw") + .field("value", Boolean) + .field("raw", String); + + def("TypeAnnotation") + .bases("Node") + .build("typeAnnotation") + .field("typeAnnotation", def("Type")); + + def("NullableTypeAnnotation") + .bases("Type") + .build("typeAnnotation") + .field("typeAnnotation", def("Type")); + + def("NullLiteralTypeAnnotation") + .bases("Type") + .build(); + + def("NullTypeAnnotation") + .bases("Type") + .build(); + + def("ThisTypeAnnotation") + .bases("Type") + .build(); + + def("ExistsTypeAnnotation") + .bases("Type") + .build(); + + def("ExistentialTypeParam") + .bases("Type") + .build(); + + def("FunctionTypeAnnotation") + .bases("Type") + .build("params", "returnType", "rest", "typeParameters") + .field("params", [def("FunctionTypeParam")]) + .field("returnType", def("Type")) + .field("rest", or(def("FunctionTypeParam"), null)) + .field("typeParameters", or(def("TypeParameterDeclaration"), null)); + + def("FunctionTypeParam") + .bases("Node") + .build("name", "typeAnnotation", "optional") + .field("name", def("Identifier")) + .field("typeAnnotation", def("Type")) + .field("optional", Boolean); + + def("ArrayTypeAnnotation") + .bases("Type") + .build("elementType") + .field("elementType", def("Type")); + + def("ObjectTypeAnnotation") + .bases("Type") + .build("properties", "indexers", "callProperties") + .field("properties", [def("ObjectTypeProperty")]) + .field("indexers", [def("ObjectTypeIndexer")], defaults.emptyArray) + .field("callProperties", + [def("ObjectTypeCallProperty")], + defaults.emptyArray) + .field("exact", Boolean, defaults["false"]); + + def("ObjectTypeProperty") + .bases("Node") + .build("key", "value", "optional") + .field("key", or(def("Literal"), def("Identifier"))) + .field("value", def("Type")) + .field("optional", Boolean) + .field("variance", + or("plus", "minus", null), + defaults["null"]); + + def("ObjectTypeIndexer") + .bases("Node") + .build("id", "key", "value") + .field("id", def("Identifier")) + .field("key", def("Type")) + .field("value", def("Type")) + .field("variance", + or("plus", "minus", null), + defaults["null"]); + + def("ObjectTypeCallProperty") + .bases("Node") + .build("value") + .field("value", def("FunctionTypeAnnotation")) + .field("static", Boolean, defaults["false"]); + + def("QualifiedTypeIdentifier") + .bases("Node") + .build("qualification", "id") + .field("qualification", + or(def("Identifier"), + def("QualifiedTypeIdentifier"))) + .field("id", def("Identifier")); + + def("GenericTypeAnnotation") + .bases("Type") + .build("id", "typeParameters") + .field("id", or(def("Identifier"), def("QualifiedTypeIdentifier"))) + .field("typeParameters", or(def("TypeParameterInstantiation"), null)); + + def("MemberTypeAnnotation") + .bases("Type") + .build("object", "property") + .field("object", def("Identifier")) + .field("property", + or(def("MemberTypeAnnotation"), + def("GenericTypeAnnotation"))); + + def("UnionTypeAnnotation") + .bases("Type") + .build("types") + .field("types", [def("Type")]); + + def("IntersectionTypeAnnotation") + .bases("Type") + .build("types") + .field("types", [def("Type")]); + + def("TypeofTypeAnnotation") + .bases("Type") + .build("argument") + .field("argument", def("Type")); + + def("Identifier") + .field("typeAnnotation", or(def("TypeAnnotation"), null), defaults["null"]); + + def("TypeParameterDeclaration") + .bases("Node") + .build("params") + .field("params", [def("TypeParameter")]); + + def("TypeParameterInstantiation") + .bases("Node") + .build("params") + .field("params", [def("Type")]); + + def("TypeParameter") + .bases("Type") + .build("name", "variance", "bound") + .field("name", String) + .field("variance", + or("plus", "minus", null), + defaults["null"]) + .field("bound", + or(def("TypeAnnotation"), null), + defaults["null"]); + + def("Function") + .field("returnType", + or(def("TypeAnnotation"), null), + defaults["null"]) + .field("typeParameters", + or(def("TypeParameterDeclaration"), null), + defaults["null"]); + + def("ClassProperty") + .build("key", "value", "typeAnnotation", "static") + .field("value", or(def("Expression"), null)) + .field("typeAnnotation", or(def("TypeAnnotation"), null)) + .field("static", Boolean, defaults["false"]) + .field("variance", + or("plus", "minus", null), + defaults["null"]); + + def("ClassImplements") + .field("typeParameters", + or(def("TypeParameterInstantiation"), null), + defaults["null"]); + + def("InterfaceDeclaration") + .bases("Declaration") + .build("id", "body", "extends") + .field("id", def("Identifier")) + .field("typeParameters", + or(def("TypeParameterDeclaration"), null), + defaults["null"]) + .field("body", def("ObjectTypeAnnotation")) + .field("extends", [def("InterfaceExtends")]); + + def("DeclareInterface") + .bases("InterfaceDeclaration") + .build("id", "body", "extends"); + + def("InterfaceExtends") + .bases("Node") + .build("id") + .field("id", def("Identifier")) + .field("typeParameters", or(def("TypeParameterInstantiation"), null)); + + def("TypeAlias") + .bases("Declaration") + .build("id", "typeParameters", "right") + .field("id", def("Identifier")) + .field("typeParameters", or(def("TypeParameterDeclaration"), null)) + .field("right", def("Type")); + + def("DeclareTypeAlias") + .bases("TypeAlias") + .build("id", "typeParameters", "right"); + + def("TypeCastExpression") + .bases("Expression") + .build("expression", "typeAnnotation") + .field("expression", def("Expression")) + .field("typeAnnotation", def("TypeAnnotation")); + + def("TupleTypeAnnotation") + .bases("Type") + .build("types") + .field("types", [def("Type")]); + + def("DeclareVariable") + .bases("Statement") + .build("id") + .field("id", def("Identifier")); + + def("DeclareFunction") + .bases("Statement") + .build("id") + .field("id", def("Identifier")); + + def("DeclareClass") + .bases("InterfaceDeclaration") + .build("id"); + + def("DeclareModule") + .bases("Statement") + .build("id", "body") + .field("id", or(def("Identifier"), def("Literal"))) + .field("body", def("BlockStatement")); + + def("DeclareModuleExports") + .bases("Statement") + .build("typeAnnotation") + .field("typeAnnotation", def("Type")); + + def("DeclareExportDeclaration") + .bases("Declaration") + .build("default", "declaration", "specifiers", "source") + .field("default", Boolean) + .field("declaration", or( + def("DeclareVariable"), + def("DeclareFunction"), + def("DeclareClass"), + def("Type"), // Implies default. + null + )) + .field("specifiers", [or( + def("ExportSpecifier"), + def("ExportBatchSpecifier") + )], defaults.emptyArray) + .field("source", or( + def("Literal"), + null + ), defaults["null"]); + + def("DeclareExportAllDeclaration") + .bases("Declaration") + .build("source") + .field("source", or( + def("Literal"), + null + ), defaults["null"]); +}; + +var esprima = function (fork) { + fork.use(es7); + + var types = fork.use(types$1); + var defaults = fork.use(shared).defaults; + var def = types.Type.def; + var or = types.Type.or; + + def("VariableDeclaration") + .field("declarations", [or( + def("VariableDeclarator"), + def("Identifier") // Esprima deviation. + )]); + + def("Property") + .field("value", or( + def("Expression"), + def("Pattern") // Esprima deviation. + )); + + def("ArrayPattern") + .field("elements", [or( + def("Pattern"), + def("SpreadElement"), + null + )]); + + def("ObjectPattern") + .field("properties", [or( + def("Property"), + def("PropertyPattern"), + def("SpreadPropertyPattern"), + def("SpreadProperty") // Used by Esprima. + )]); + +// Like ModuleSpecifier, except type:"ExportSpecifier" and buildable. +// export {} [from ...]; + def("ExportSpecifier") + .bases("ModuleSpecifier") + .build("id", "name"); + +// export <*> from ...; + def("ExportBatchSpecifier") + .bases("Specifier") + .build(); + +// Like ModuleSpecifier, except type:"ImportSpecifier" and buildable. +// import {} from ...; + def("ImportSpecifier") + .bases("ModuleSpecifier") + .build("id", "name"); + +// import <* as id> from ...; + def("ImportNamespaceSpecifier") + .bases("ModuleSpecifier") + .build("id"); + +// import from ...; + def("ImportDefaultSpecifier") + .bases("ModuleSpecifier") + .build("id"); + + def("ExportDeclaration") + .bases("Declaration") + .build("default", "declaration", "specifiers", "source") + .field("default", Boolean) + .field("declaration", or( + def("Declaration"), + def("Expression"), // Implies default. + null + )) + .field("specifiers", [or( + def("ExportSpecifier"), + def("ExportBatchSpecifier") + )], defaults.emptyArray) + .field("source", or( + def("Literal"), + null + ), defaults["null"]); + + def("ImportDeclaration") + .bases("Declaration") + .build("specifiers", "source", "importKind") + .field("specifiers", [or( + def("ImportSpecifier"), + def("ImportNamespaceSpecifier"), + def("ImportDefaultSpecifier") + )], defaults.emptyArray) + .field("source", def("Literal")) + .field("importKind", or( + "value", + "type" + ), function() { + return "value"; + }); + + def("Block") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); + + def("Line") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); +}; + +var babel = function (fork) { + fork.use(es7); + + var types = fork.use(types$1); + var defaults = fork.use(shared).defaults; + var def = types.Type.def; + var or = types.Type.or; + + def("Noop") + .bases("Node") + .build(); + + def("DoExpression") + .bases("Expression") + .build("body") + .field("body", [def("Statement")]); + + def("Super") + .bases("Expression") + .build(); + + def("BindExpression") + .bases("Expression") + .build("object", "callee") + .field("object", or(def("Expression"), null)) + .field("callee", def("Expression")); + + def("Decorator") + .bases("Node") + .build("expression") + .field("expression", def("Expression")); + + def("Property") + .field("decorators", + or([def("Decorator")], null), + defaults["null"]); + + def("MethodDefinition") + .field("decorators", + or([def("Decorator")], null), + defaults["null"]); + + def("MetaProperty") + .bases("Expression") + .build("meta", "property") + .field("meta", def("Identifier")) + .field("property", def("Identifier")); + + def("ParenthesizedExpression") + .bases("Expression") + .build("expression") + .field("expression", def("Expression")); + + def("ImportSpecifier") + .bases("ModuleSpecifier") + .build("imported", "local") + .field("imported", def("Identifier")); + + def("ImportDefaultSpecifier") + .bases("ModuleSpecifier") + .build("local"); + + def("ImportNamespaceSpecifier") + .bases("ModuleSpecifier") + .build("local"); + + def("ExportDefaultDeclaration") + .bases("Declaration") + .build("declaration") + .field("declaration", or(def("Declaration"), def("Expression"))); + + def("ExportNamedDeclaration") + .bases("Declaration") + .build("declaration", "specifiers", "source") + .field("declaration", or(def("Declaration"), null)) + .field("specifiers", [def("ExportSpecifier")], defaults.emptyArray) + .field("source", or(def("Literal"), null), defaults["null"]); + + def("ExportSpecifier") + .bases("ModuleSpecifier") + .build("local", "exported") + .field("exported", def("Identifier")); + + def("ExportNamespaceSpecifier") + .bases("Specifier") + .build("exported") + .field("exported", def("Identifier")); + + def("ExportDefaultSpecifier") + .bases("Specifier") + .build("exported") + .field("exported", def("Identifier")); + + def("ExportAllDeclaration") + .bases("Declaration") + .build("exported", "source") + .field("exported", or(def("Identifier"), null)) + .field("source", def("Literal")); + + def("CommentBlock") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); + + def("CommentLine") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); +}; + +var babel6 = function (fork) { + fork.use(babel); + fork.use(flow); + + // var types = fork.types; + var types = fork.use(types$1); + // var defaults = fork.shared.defaults; + var defaults = fork.use(shared).defaults; + var def = types.Type.def; + var or = types.Type.or; + + def("Directive") + .bases("Node") + .build("value") + .field("value", def("DirectiveLiteral")); + + def("DirectiveLiteral") + .bases("Node", "Expression") + .build("value") + .field("value", String, defaults["use strict"]); + + def("BlockStatement") + .bases("Statement") + .build("body") + .field("body", [def("Statement")]) + .field("directives", [def("Directive")], defaults.emptyArray); + + def("Program") + .bases("Node") + .build("body") + .field("body", [def("Statement")]) + .field("directives", [def("Directive")], defaults.emptyArray); + + // Split Literal + def("StringLiteral") + .bases("Literal") + .build("value") + .field("value", String); + + def("NumericLiteral") + .bases("Literal") + .build("value") + .field("value", Number); + + def("NullLiteral") + .bases("Literal") + .build(); + + def("BooleanLiteral") + .bases("Literal") + .build("value") + .field("value", Boolean); + + def("RegExpLiteral") + .bases("Literal") + .build("pattern", "flags") + .field("pattern", String) + .field("flags", String); + + var ObjectExpressionProperty = or( + def("Property"), + def("ObjectMethod"), + def("ObjectProperty"), + def("SpreadProperty") + ); + + // Split Property -> ObjectProperty and ObjectMethod + def("ObjectExpression") + .bases("Expression") + .build("properties") + .field("properties", [ObjectExpressionProperty]); + + // ObjectMethod hoist .value properties to own properties + def("ObjectMethod") + .bases("Node", "Function") + .build("kind", "key", "params", "body", "computed") + .field("kind", or("method", "get", "set")) + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("params", [def("Pattern")]) + .field("body", def("BlockStatement")) + .field("computed", Boolean, defaults["false"]) + .field("generator", Boolean, defaults["false"]) + .field("async", Boolean, defaults["false"]) + .field("decorators", + or([def("Decorator")], null), + defaults["null"]); + + def("ObjectProperty") + .bases("Node") + .build("key", "value") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("value", or(def("Expression"), def("Pattern"))) + .field("computed", Boolean, defaults["false"]); + + var ClassBodyElement = or( + def("MethodDefinition"), + def("VariableDeclarator"), + def("ClassPropertyDefinition"), + def("ClassProperty"), + def("ClassMethod") + ); + + // MethodDefinition -> ClassMethod + def("ClassBody") + .bases("Declaration") + .build("body") + .field("body", [ClassBodyElement]); + + def("ClassMethod") + .bases("Declaration", "Function") + .build("kind", "key", "params", "body", "computed", "static") + .field("kind", or("get", "set", "method", "constructor")) + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("params", [def("Pattern")]) + .field("body", def("BlockStatement")) + .field("computed", Boolean, defaults["false"]) + .field("static", Boolean, defaults["false"]) + .field("generator", Boolean, defaults["false"]) + .field("async", Boolean, defaults["false"]) + .field("decorators", + or([def("Decorator")], null), + defaults["null"]); + + var ObjectPatternProperty = or( + def("Property"), + def("PropertyPattern"), + def("SpreadPropertyPattern"), + def("SpreadProperty"), // Used by Esprima + def("ObjectProperty"), // Babel 6 + def("RestProperty") // Babel 6 + ); + + // Split into RestProperty and SpreadProperty + def("ObjectPattern") + .bases("Pattern") + .build("properties") + .field("properties", [ObjectPatternProperty]) + .field("decorators", + or([def("Decorator")], null), + defaults["null"]); + + def("SpreadProperty") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + + def("RestProperty") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + + def("ForAwaitStatement") + .bases("Statement") + .build("left", "right", "body") + .field("left", or( + def("VariableDeclaration"), + def("Expression"))) + .field("right", def("Expression")) + .field("body", def("Statement")); +}; + +var main = fork([ + // This core module of AST types captures ES5 as it is parsed today by + // git://github.com/ariya/esprima.git#master. + core, + + // Feel free to add to or remove from this list of extension modules to + // configure the precise type hierarchy that you need. + es6, + es7, + mozilla, + e4x, + jsx, + flow, + esprima, + babel, + babel6 +]); + +function traverseDoc(doc, onEnter, onExit) { + var hasStopped = false; + function traverseDocRec(doc) { + if (onEnter) { + hasStopped = hasStopped || onEnter(doc) === false; + } + if (hasStopped) { + return; + } + + if (doc.type === "concat") { + for (var i = 0; i < doc.parts.length; i++) { + traverseDocRec(doc.parts[i]); + } + } else if (doc.type === "if-break") { + if (doc.breakContents) { + traverseDocRec(doc.breakContents); + } + if (doc.flatContents) { + traverseDocRec(doc.flatContents); + } + } else if (doc.contents) { + traverseDocRec(doc.contents); + } + + if (onExit) { + onExit(doc); + } + } + + traverseDocRec(doc); +} + +function mapDoc(doc, func) { + doc = func(doc); + + if (doc.type === "concat") { + return Object.assign({}, doc, { + parts: doc.parts.map(d => mapDoc(d, func)) + }); + } else if (doc.type === "if-break") { + return Object.assign({}, doc, { + breakContents: doc.breakContents && mapDoc(doc.breakContents, func), + flatContents: doc.flatContents && mapDoc(doc.flatContents, func) + }); + } else if (doc.contents) { + return Object.assign({}, doc, { contents: mapDoc(doc.contents, func) }); + } else { + return doc; + } +} + +function findInDoc(doc, fn, defaultValue) { + var result = defaultValue; + traverseDoc(doc, function(doc) { + var maybeResult = fn(doc); + if (maybeResult !== undefined) { + result = maybeResult; + return false; + } + }); + return result; +} + +function isEmpty(n) { + return typeof n === "string" && n.length === 0; +} + +function getFirstString(doc) { + return findInDoc( + doc, + doc => { + if (typeof doc === "string" && doc.trim().length !== 0) { + return doc; + } + }, + null + ); +} + +function isLineNext(doc) { + return findInDoc( + doc, + doc => { + if (typeof doc === "string") { + return false; + } + if (doc.type === "line") { + return true; + } + }, + false + ); +} + +function willBreak$1(doc) { + return findInDoc( + doc, + doc => { + if (doc.type === "group" && doc.break) { + return true; + } + if (doc.type === "line" && doc.hard) { + return true; + } + }, + false + ); +} + +function breakParentGroup(groupStack) { + if (groupStack.length > 0) { + const parentGroup = groupStack[groupStack.length - 1]; + // Breaks are not propagated through conditional groups because + // the user is expected to manually handle what breaks. + if (!parentGroup.expandedStates) { + parentGroup.break = true; + } + } + return null; +} + +function propagateBreaks(doc) { + const groupStack = []; + traverseDoc( + doc, + doc => { + if (doc.type === "break-parent") { + breakParentGroup(groupStack); + } + if (doc.type === "group") { + groupStack.push(doc); + } + }, + doc => { + if (doc.type === "group") { + const group = groupStack.pop(); + if (group.break) { + breakParentGroup(groupStack); + } + } + } + ); +} + +var docUtils = { + isEmpty, + getFirstString, + willBreak: willBreak$1, + isLineNext, + traverseDoc, + mapDoc, + propagateBreaks +}; + +function assertDoc(val) { + if ( + !(typeof val === "string" || (val != null && typeof val.type === "string")) + ) { + throw new Error( + "Value " + JSON.stringify(val) + " is not a valid document" + ); + } +} + +function concat$1(parts) { + parts.forEach(assertDoc); + + // We cannot do this until we change `printJSXElement` to not + // access the internals of a document directly. + // if(parts.length === 1) { + // // If it's a single document, no need to concat it. + // return parts[0]; + // } + return { type: "concat", parts }; +} + +function indent$1(n, contents) { + assertDoc(contents); + + return { type: "indent", contents, n }; +} + +function group(contents, opts) { + opts = opts || {}; + + assertDoc(contents); + + return { + type: "group", + contents: contents, + break: !!opts.shouldBreak, + expandedStates: opts.expandedStates + }; +} + +function conditionalGroup(states, opts) { + return group( + states[0], + Object.assign(opts || {}, { expandedStates: states }) + ); +} + +function ifBreak(breakContents, flatContents) { + if (breakContents) { + assertDoc(breakContents); + } + if (flatContents) { + assertDoc(flatContents); + } + + return { type: "if-break", breakContents, flatContents }; +} + +function lineSuffix$1(contents) { + assertDoc(contents); + return { type: "line-suffix", contents }; +} + +const lineSuffixBoundary = { type: "line-suffix-boundary" }; +const breakParent$1 = { type: "break-parent" }; +const line = { type: "line" }; +const softline = { type: "line", soft: true }; +const hardline$1 = concat$1([{ type: "line", hard: true }, breakParent$1]); +const literalline = concat$1([ + { type: "line", hard: true, literal: true }, + breakParent$1 +]); + +function join$1(sep, arr) { + var res = []; + + for (var i = 0; i < arr.length; i++) { + if (i !== 0) { + res.push(sep); + } + + res.push(arr[i]); + } + + return concat$1(res); +} + +var docBuilders$1 = { + concat: concat$1, + join: join$1, + line, + softline, + hardline: hardline$1, + literalline, + group, + conditionalGroup, + lineSuffix: lineSuffix$1, + lineSuffixBoundary, + breakParent: breakParent$1, + ifBreak, + indent: indent$1 +}; + +var require$$0$11 = ( assert$3 && assert$3['default'] ) || assert$3; + +var types$3 = main; +var n$1 = types$3.namedTypes; + +function comparePos$1(pos1, pos2) { + return pos1.line - pos2.line || pos1.column - pos2.column; +} + +function expandLoc(parentNode, childNode) { + if (locStart$1(childNode) - locStart$1(parentNode) < 0) { + setLocStart(parentNode, locStart$1(childNode)); + } + + if (locEnd$1(parentNode) - locEnd$1(childNode) < 0) { + setLocEnd(parentNode, locEnd$1(childNode)); + } +} + +function fixFaultyLocations(node, text) { + if (node.decorators) { + // Expand the loc of the node responsible for printing the decorators + // (here, the decorated node) so that it includes node.decorators. + node.decorators.forEach(function(decorator) { + expandLoc(node, decorator); + }); + } else if (node.declaration && isExportDeclaration(node)) { + // Expand the loc of the node responsible for printing the decorators + // (here, the export declaration) so that it includes node.decorators. + var decorators = node.declaration.decorators; + if (decorators) { + decorators.forEach(function(decorator) { + expandLoc(node, decorator); + }); + } + } else if ( + (n$1.MethodDefinition && n$1.MethodDefinition.check(node)) || + (n$1.Property.check(node) && (node.method || node.shorthand)) + ) { + if (n$1.FunctionExpression.check(node.value)) { + // FunctionExpression method values should be anonymous, + // because their .id fields are ignored anyway. + node.value.id = null; + } + } else if (node.type === "ObjectTypeProperty") { + var end = skipSpaces(text, locEnd$1(node), true); + if (end !== false && text.charAt(end) === ",") { + // Some parsers accidentally include trailing commas in the + // end information for ObjectTypeProperty nodes. + if ((end = skipSpaces(text, end - 1, true)) !== false) { + setLocEnd(node, end); + } + } + } +} + +function isExportDeclaration(node) { + if (node) + switch (node.type) { + case "ExportDeclaration": + case "ExportDefaultDeclaration": + case "ExportDefaultSpecifier": + case "DeclareExportDeclaration": + case "ExportNamedDeclaration": + case "ExportAllDeclaration": + return true; + } + + return false; +} + +function getParentExportDeclaration(path) { + var parentNode = path.getParentNode(); + if (path.getName() === "declaration" && isExportDeclaration(parentNode)) { + return parentNode; + } + + return null; +} + +function getPenultimate(arr) { + if (arr.length > 1) { + return arr[arr.length - 2]; + } + return null; +} + +function getLast(arr) { + if (arr.length > 0) { + return arr[arr.length - 1]; + } + return null; +} + +function skip(chars) { + return (text, index, opts) => { + const backwards = opts && opts.backwards; + + // Allow `skip` functions to be threaded together without having + // to check for failures (did someone say monads?). + if (index === false) { + return false; + } + + const length = text.length; + let cursor = index; + while (cursor >= 0 && cursor < length) { + const c = text.charAt(cursor); + if (chars instanceof RegExp) { + if (!chars.test(c)) { + return cursor; + } + } else if (chars.indexOf(c) === -1) { + return cursor; + } + + backwards ? cursor-- : cursor++; + } + + if (cursor === -1 || cursor === length) { + // If we reached the beginning or end of the file, return the + // out-of-bounds cursor. It's up to the caller to handle this + // correctly. We don't want to indicate `false` though if it + // actually skipped valid characters. + return cursor; + } + return false; + }; +} + +const skipWhitespace = skip(/\s/); +const skipSpaces = skip(" \t"); +const skipToLineEnd = skip(",; \t"); +const skipEverythingButNewLine = skip(/[^\r\n]/); + +function skipInlineComment(text, index) { + if (index === false) { + return false; + } + + if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") { + for (var i = index + 2; i < text.length; ++i) { + if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") { + return i + 2; + } + } + } + return index; +} + +function skipTrailingComment(text, index) { + if (index === false) { + return false; + } + + if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") { + return skipEverythingButNewLine(text, index); + } + return index; +} + +// This one doesn't use the above helper function because it wants to +// test \r\n in order and `skip` doesn't support ordering and we only +// want to skip one newline. It's simple to implement. +function skipNewline(text, index, opts) { + const backwards = opts && opts.backwards; + if (index === false) { + return false; + } else if (backwards) { + if (text.charAt(index) === "\n") { + return index - 1; + } + if (text.charAt(index - 1) === "\r" && text.charAt(index) === "\n") { + return index - 2; + } + } else { + if (text.charAt(index) === "\n") { + return index + 1; + } + if (text.charAt(index) === "\r" && text.charAt(index + 1) === "\n") { + return index + 2; + } + } + + return index; +} + +function hasNewline(text, index, opts) { + opts = opts || {}; + const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); + const idx2 = skipNewline(text, idx, opts); + return idx !== idx2; +} + +function hasNewlineInRange(text, start, end) { + for (var i = start; i < end; ++i) { + if (text.charAt(i) === "\n") { + return true; + } + } + return false; +} + +// Note: this function doesn't ignore leading comments unlike isNextLineEmpty +function isPreviousLineEmpty(text, node) { + let idx = locStart$1(node) - 1; + idx = skipSpaces(text, idx, { backwards: true }); + idx = skipNewline(text, idx, { backwards: true }); + idx = skipSpaces(text, idx, { backwards: true }); + const idx2 = skipNewline(text, idx, { backwards: true }); + return idx !== idx2; +} + +function isNextLineEmpty(text, node) { + let oldIdx = null; + let idx = locEnd$1(node); + idx = skipToLineEnd(text, idx); + while (idx !== oldIdx) { + // We need to skip all the potential trailing inline comments + oldIdx = idx; + idx = skipInlineComment(text, idx); + idx = skipSpaces(text, idx); + } + idx = skipTrailingComment(text, idx); + idx = skipNewline(text, idx); + return hasNewline(text, idx); +} + +function hasSpaces(text, index, opts) { + opts = opts || {}; + const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); + return idx !== index; +} + +function locStart$1(node) { + if (node.range) { + return node.range[0]; + } + return node.start; +} + +function locEnd$1(node) { + if (node.range) { + return node.range[1]; + } + return node.end; +} + +function setLocStart(node, index) { + if (node.range) { + node.range[0] = index; + } else { + node.start = index; + } +} + +function setLocEnd(node, index) { + if (node.range) { + node.range[1] = index; + } else { + node.end = index; + } +} + +// http://stackoverflow.com/a/7124052 +function htmlEscapeInsideDoubleQuote(str) { + return str.replace(/&/g, "&").replace(/"/g, """); + // Intentionally disable the following since it is safe inside of a + // double quote context + // .replace(/'/g, ''') + // .replace(//g, '>'); +} + +// http://stackoverflow.com/a/7124052 +function htmlEscapeInsideAngleBracket(str) { + return str.replace(//g, ">"); + // Intentionally disable the following since it is safe inside of a + // angle bracket context + // .replace(/&/g, '&') + // .replace(/"/g, '"') + // .replace(/'/g, ''') +} + +var PRECEDENCE = {}; +[ + ["||"], + ["&&"], + ["|"], + ["^"], + ["&"], + ["==", "===", "!=", "!=="], + ["<", ">", "<=", ">=", "in", "instanceof"], + [">>", "<<", ">>>"], + ["+", "-"], + ["*", "/", "%", "**"] +].forEach(function(tier, i) { + tier.forEach(function(op) { + PRECEDENCE[op] = i; + }); +}); + +function getPrecedence(op) { + return PRECEDENCE[op]; +} + +var util$2 = { + comparePos: comparePos$1, + getPrecedence, + fixFaultyLocations, + isExportDeclaration, + getParentExportDeclaration, + getPenultimate, + getLast, + skipWhitespace, + skipSpaces, + skipNewline, + isNextLineEmpty, + isPreviousLineEmpty, + hasNewline, + hasNewlineInRange, + hasSpaces, + locStart: locStart$1, + locEnd: locEnd$1, + setLocStart, + setLocEnd, + htmlEscapeInsideDoubleQuote, + htmlEscapeInsideAngleBracket +}; + +var assert = require$$0$11; +var types = main; +var n = types.namedTypes; +var isArray = types.builtInTypes.array; +var isObject = types.builtInTypes.object; +var docBuilders = docBuilders$1; +var concat = docBuilders.concat; +var hardline = docBuilders.hardline; +var breakParent = docBuilders.breakParent; +var indent = docBuilders.indent; +var lineSuffix = docBuilders.lineSuffix; +var join = docBuilders.join; +var util = util$2; +var childNodesCacheKey = Symbol("child-nodes"); +var locStart = util.locStart; +var locEnd = util.locEnd; + +// TODO Move a non-caching implementation of this function into ast-types, +// and implement a caching wrapper function here. +function getSortedChildNodes(node, text, resultArray) { + if (!node) { + return; + } + + // The loc checks below are sensitive to some of the problems that + // are fixed by this utility function. + util.fixFaultyLocations(node, text); + + if (resultArray) { + if (n.Node.check(node) && node.type !== "EmptyStatement") { + // This reverse insertion sort almost always takes constant + // time because we almost always (maybe always?) append the + // nodes in order anyway. + for (var i = resultArray.length - 1; i >= 0; --i) { + if (locEnd(resultArray[i]) - locStart(node) <= 0) { + break; + } + } + resultArray.splice(i + 1, 0, node); + return; + } + } else if (node[childNodesCacheKey]) { + return node[childNodesCacheKey]; + } + + var names; + if (isArray.check(node)) { + names = Object.keys(node); + } else if (isObject.check(node)) { + names = types.getFieldNames(node); + } else { + return; + } + + if (!resultArray) { + Object.defineProperty(node, childNodesCacheKey, { + value: resultArray = [], + enumerable: false + }); + } + + for (var i = 0, nameCount = names.length; i < nameCount; ++i) { + getSortedChildNodes(node[names[i]], text, resultArray); + } + + return resultArray; +} + +// As efficiently as possible, decorate the comment object with +// .precedingNode, .enclosingNode, and/or .followingNode properties, at +// least one of which is guaranteed to be defined. +function decorateComment(node, comment, text) { + var childNodes = getSortedChildNodes(node, text); + var precedingNode, followingNode; + // Time to dust off the old binary search robes and wizard hat. + var left = 0, right = childNodes.length; + while (left < right) { + var middle = left + right >> 1; + var child = childNodes[middle]; + + if ( + locStart(child) - locStart(comment) <= 0 && + locEnd(comment) - locEnd(child) <= 0 + ) { + // The comment is completely contained by this child node. + comment.enclosingNode = child; + + decorateComment(child, comment, text); + return; // Abandon the binary search at this level. + } + + if (locEnd(child) - locStart(comment) <= 0) { + // This child node falls completely before the comment. + // Because we will never consider this node or any nodes + // before it again, this node must be the closest preceding + // node we have encountered so far. + precedingNode = child; + left = middle + 1; + continue; + } + + if (locEnd(comment) - locStart(child) <= 0) { + // This child node falls completely after the comment. + // Because we will never consider this node or any nodes after + // it again, this node must be the closest following node we + // have encountered so far. + followingNode = child; + right = middle; + continue; + } + + throw new Error("Comment location overlaps with node location"); + } + + if (precedingNode) { + comment.precedingNode = precedingNode; + } + + if (followingNode) { + comment.followingNode = followingNode; + } +} + +function attach(comments, ast, text, options) { + if (!isArray.check(comments)) { + return; + } + + var tiesToBreak = []; + + comments.forEach(function(comment) { + decorateComment(ast, comment, text); + + const precedingNode = comment.precedingNode; + const enclosingNode = comment.enclosingNode; + const followingNode = comment.followingNode; + + if (util.hasNewline(text, locStart(comment), { backwards: true })) { + // If a comment exists on its own line, prefer a leading comment. + // We also need to check if it's the first line of the file. + if ( + handleMemberExpressionComments(enclosingNode, followingNode, comment) || + handleIfStatementComments(enclosingNode, followingNode, comment) || + handleTryStatementComments(enclosingNode, followingNode, comment) || + handleClassComments(enclosingNode, comment) + ) { + // We're good + } else if (followingNode) { + // Always a leading comment. + addLeadingComment(followingNode, comment); + } else if (precedingNode) { + addTrailingComment(precedingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + // There are no nodes, let's attach it to the root of the ast + addDanglingComment(ast, comment); + } + } else if (util.hasNewline(text, locEnd(comment))) { + if ( + handleConditionalExpressionComments( + enclosingNode, + precedingNode, + followingNode, + comment, + text + ) || + handleTemplateLiteralComments(enclosingNode, comment) || + handleClassComments(enclosingNode, comment) + ) { + // We're good + } else if (precedingNode) { + // There is content before this comment on the same line, but + // none after it, so prefer a trailing comment of the previous node. + addTrailingComment(precedingNode, comment); + } else if (followingNode) { + addLeadingComment(followingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + // There are no nodes, let's attach it to the root of the ast + addDanglingComment(ast, comment); + } + } else { + if ( + handleIfStatementComments(enclosingNode, followingNode, comment) || + handleObjectProperty(enclosingNode, precedingNode, comment) || + handleTemplateLiteralComments(enclosingNode, comment) || + handleFunctionDeclarationComments(enclosingNode, comment) + ) { + // We're good + } else if (precedingNode && followingNode) { + // Otherwise, text exists both before and after the comment on + // the same line. If there is both a preceding and following + // node, use a tie-breaking algorithm to determine if it should + // be attached to the next or previous node. In the last case, + // simply attach the right node; + const tieCount = tiesToBreak.length; + if (tieCount > 0) { + var lastTie = tiesToBreak[tieCount - 1]; + if (lastTie.followingNode !== comment.followingNode) { + breakTies(tiesToBreak, text); + } + } + tiesToBreak.push(comment); + } else if (precedingNode) { + addTrailingComment(precedingNode, comment); + } else if (followingNode) { + addLeadingComment(followingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + // There are no nodes, let's attach it to the root of the ast + addDanglingComment(ast, comment); + } + } + }); + + breakTies(tiesToBreak, text); + + comments.forEach(function(comment) { + // These node references were useful for breaking ties, but we + // don't need them anymore, and they create cycles in the AST that + // may lead to infinite recursion if we don't delete them here. + delete comment.precedingNode; + delete comment.enclosingNode; + delete comment.followingNode; + }); +} + +function breakTies(tiesToBreak, text) { + var tieCount = tiesToBreak.length; + if (tieCount === 0) { + return; + } + + var precedingNode = tiesToBreak[0].precedingNode; + var followingNode = tiesToBreak[0].followingNode; + var gapEndPos = locStart(followingNode); + + // Iterate backwards through tiesToBreak, examining the gaps + // between the tied comments. In order to qualify as leading, a + // comment must be separated from followingNode by an unbroken series of + // whitespace-only gaps (or other comments). + for ( + var indexOfFirstLeadingComment = tieCount; + indexOfFirstLeadingComment > 0; + --indexOfFirstLeadingComment + ) { + var comment = tiesToBreak[indexOfFirstLeadingComment - 1]; + assert.strictEqual(comment.precedingNode, precedingNode); + assert.strictEqual(comment.followingNode, followingNode); + + var gap = text.slice(locEnd(comment), gapEndPos); + if (/\S/.test(gap)) { + // The gap string contained something other than whitespace. + break; + } + + gapEndPos = locStart(comment); + } + + tiesToBreak.forEach(function(comment, i) { + if (i < indexOfFirstLeadingComment) { + addTrailingComment(precedingNode, comment); + } else { + addLeadingComment(followingNode, comment); + } + }); + + tiesToBreak.length = 0; +} + +function addCommentHelper(node, comment) { + var comments = node.comments || (node.comments = []); + comments.push(comment); + comment.printed = false; +} + +function addLeadingComment(node, comment) { + comment.leading = true; + comment.trailing = false; + addCommentHelper(node, comment); +} + +function addDanglingComment(node, comment) { + comment.leading = false; + comment.trailing = false; + addCommentHelper(node, comment); +} + +function addTrailingComment(node, comment) { + comment.leading = false; + comment.trailing = true; + addCommentHelper(node, comment); +} + +function addBlockStatementFirstComment(node, comment) { + const body = node.body.filter(n => n.type !== "EmptyStatement"); + if (body.length === 0) { + addDanglingComment(node, comment); + } else { + addLeadingComment(body[0], comment); + } +} + +function addBlockOrNotComment(node, comment) { + if (node.type === "BlockStatement") { + addBlockStatementFirstComment(node, comment); + } else { + addLeadingComment(node, comment); + } +} + +// There are often comments before the else clause of if statements like +// +// if (1) { ... } +// // comment +// else { ... } +// +// They are being attached as leading comments of the BlockExpression which +// is not well printed. What we want is to instead move the comment inside +// of the block and make it leadingComment of the first element of the block +// or dangling comment of the block if there is nothing inside +// +// if (1) { ... } +// else { +// // comment +// ... +// } +function handleIfStatementComments(enclosingNode, followingNode, comment) { + if ( + !enclosingNode || enclosingNode.type !== "IfStatement" || !followingNode + ) { + return false; + } + + if (followingNode.type === "BlockStatement") { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + + if (followingNode.type === "IfStatement") { + addBlockOrNotComment(followingNode.consequent, comment); + return true; + } + + return false; +} + +// Same as IfStatement but for TryStatement +function handleTryStatementComments(enclosingNode, followingNode, comment) { + if ( + !enclosingNode || enclosingNode.type !== "TryStatement" || !followingNode + ) { + return false; + } + + if (followingNode.type === "BlockStatement") { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + + if (followingNode.type === "TryStatement") { + addBlockOrNotComment(followingNode.finalizer, comment); + return true; + } + + if (followingNode.type === "CatchClause") { + addBlockOrNotComment(followingNode.body, comment); + return true; + } + + return false; +} + +function handleMemberExpressionComments(enclosingNode, followingNode, comment) { + if ( + enclosingNode && + enclosingNode.type === "MemberExpression" && + followingNode && + followingNode.type === "Identifier" + ) { + addLeadingComment(enclosingNode, comment); + return true; + } + + return false; +} + +function handleConditionalExpressionComments( + enclosingNode, + precedingNode, + followingNode, + comment, + text +) { + const isSameLineAsPrecedingNode = precedingNode && + !util.hasNewlineInRange(text, locEnd(precedingNode), locStart(comment)); + + if ( + (!precedingNode || !isSameLineAsPrecedingNode) && + enclosingNode && + enclosingNode.type === "ConditionalExpression" && + followingNode + ) { + addLeadingComment(followingNode, comment); + return true; + } + return false; +} + +function handleObjectProperty(enclosingNode, precedingNode, comment) { + if ( + enclosingNode && + (enclosingNode.type === "ObjectProperty" || + enclosingNode.type === "Property") && + enclosingNode.shorthand && + enclosingNode.key === precedingNode && + enclosingNode.value.type === "AssignmentPattern" + ) { + addTrailingComment(enclosingNode.value.left, comment); + return true; + } + return false; +} + +function handleTemplateLiteralComments(enclosingNode, comment) { + if (enclosingNode && enclosingNode.type === "TemplateLiteral") { + const expressionIndex = findExpressionIndexForComment( + enclosingNode.expressions, + comment + ); + // Enforce all comments to be leading block comments. + comment.type = "CommentBlock"; + addLeadingComment(enclosingNode.expressions[expressionIndex], comment); + return true; + } + return false; +} + +function handleFunctionDeclarationComments(enclosingNode, comment) { + // Only add dangling comments to fix the case when no params are present, + // i.e. a function without any argument. + if ( + enclosingNode && enclosingNode.type === "FunctionDeclaration" && + enclosingNode.params.length === 0 + ) { + addDanglingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleClassComments(enclosingNode, comment) { + if (enclosingNode && + (enclosingNode.type === "ClassDeclaration" || + enclosingNode.type === "ClassExpression")) { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function printComment(commentPath) { + const comment = commentPath.getValue(); + comment.printed = true; + + switch (comment.type) { + case "CommentBlock": + case "Block": + return "/*" + comment.value + "*/"; + case "CommentLine": + case "Line": + return "//" + comment.value; + default: + throw new Error("Not a comment: " + JSON.stringify(comment)); + } +} + +function findExpressionIndexForComment(expressions, comment) { + let match; + const startPos = locStart(comment) - 1; + const endPos = locEnd(comment) + 1; + + for (let i = 0; i < expressions.length; ++i) { + const range = getExpressionRange(expressions[i]); + + if ( + (startPos >= range.start && startPos <= range.end) || + (endPos >= range.start && endPos <= range.end) + ) { + match = i; + break; + } + } + + return match; +} + +function getExpressionRange(expr) { + if (expr.start !== undefined) { + // Babylon + return { start: expr.start, end: expr.end }; + } + // Flow + return { start: expr.range[0], end: expr.range[1] }; +} + +function printLeadingComment(commentPath, print, options) { + const comment = commentPath.getValue(); + const contents = printComment(commentPath); + const text = options.originalText; + const isBlock = comment.type === "Block" || comment.type === "CommentBlock"; + + // Leading block comments should see if they need to stay on the + // same line or not. + if (isBlock) { + return concat([ + contents, + util.hasNewline(options.originalText, locEnd(comment)) ? hardline : " " + ]); + } + + return concat([contents, hardline]); +} + +function printTrailingComment(commentPath, print, options, parentNode) { + const comment = commentPath.getValue(); + const contents = printComment(commentPath); + const isBlock = comment.type === "Block" || comment.type === "CommentBlock"; + + if ( + util.hasNewline(options.originalText, locStart(comment), { + backwards: true + }) + ) { + // This allows comments at the end of nested structures: + // { + // x: 1, + // y: 2 + // // A comment + // } + // Those kinds of comments are almost always leading comments, but + // here it doesn't go "outside" the block and turns it into a + // trailing comment for `2`. We can simulate the above by checking + // if this a comment on its own line; normal trailing comments are + // always at the end of another expression. + + const isLineBeforeEmpty = util.isPreviousLineEmpty( + options.originalText, + comment + ); + + return lineSuffix( + concat([hardline, isLineBeforeEmpty ? hardline : "", contents]) + ); + } else if (isBlock) { + // Trailing block comments never need a newline + return concat([" ", contents]); + } + + return concat([lineSuffix(" " + contents), !isBlock ? breakParent : ""]); +} + +function printDanglingComments(path, options, sameIndent) { + const text = options.originalText; + const parts = []; + const node = path.getValue(); + + if (!node || !node.comments) { + return ""; + } + + path.each( + commentPath => { + const comment = commentPath.getValue(); + if (!comment.leading && !comment.trailing) { + parts.push(printComment(commentPath)); + } + }, + "comments" + ); + + if (parts.length === 0) { + return ""; + } + + if (sameIndent) { + return join(hardline, parts); + } + return indent(options.tabWidth, concat([hardline, join(hardline, parts)])); +} + +function printComments(path, print, options) { + var value = path.getValue(); + var parent = path.getParentNode(); + var printed = print(path); + var comments = n.Node.check(value) && types.getFieldValue(value, "comments"); + + if (!comments || comments.length === 0) { + return printed; + } + + var leadingParts = []; + var trailingParts = [printed]; + + path.each( + function(commentPath) { + var comment = commentPath.getValue(); + var leading = types.getFieldValue(comment, "leading"); + var trailing = types.getFieldValue(comment, "trailing"); + + if (leading) { + leadingParts.push(printLeadingComment(commentPath, print, options)); + + const text = options.originalText; + if ( + util.hasNewline(text, util.skipNewline(text, util.locEnd(comment))) + ) { + leadingParts.push(hardline); + } + } else if (trailing) { + trailingParts.push( + printTrailingComment(commentPath, print, options, parent) + ); + } + }, + "comments" + ); + + return concat(leadingParts.concat(trailingParts)); +} + +var comments$1 = { attach, printComments, printDanglingComments }; + +var name = "prettier"; +var version$2 = "0.19.0"; +var description = "Prettier is an opinionated JavaScript formatter"; +var bin = {"prettier":"./bin/prettier.js"}; +var repository = {"type":"git","url":"git+https://github.com/jlongster/prettier.git"}; +var author = "James Long"; +var license = "MIT"; +var bugs = {"url":"https://github.com/jlongster/prettier/issues"}; +var main$2 = "./index.js"; +var dependencies = {"ast-types":"0.9.4","babel-code-frame":"6.22.0","babylon":"6.15.0","chalk":"1.1.3","esutils":"2.0.2","flow-parser":"0.40.0","get-stdin":"5.0.1","glob":"7.1.1","jest-validate":"19.0.0","minimist":"1.2.0"}; +var devDependencies = {"diff":"3.2.0","jest":"19.0.1","rollup":"0.41.1","rollup-plugin-commonjs":"7.0.0","rollup-plugin-json":"2.1.0","rollup-plugin-node-builtins":"2.0.0","rollup-plugin-node-globals":"1.1.0","rollup-plugin-node-resolve":"2.0.0"}; +var scripts = {"test":"jest","format":"./bin/prettier.js --write","format:single":"npm run format -- src/printer.js","format:all":"npm run format -- index.js src/*.js bin/*.js","build:docs":"rollup -c docs/rollup.config.js"}; +var jest = {"setupFiles":["/tests_config/run_spec.js"],"testRegex":"jsfmt\\.spec\\.js$","testPathIgnorePatterns":["tests/new_react","tests/more_react"]}; +var _package = { + name: name, + version: version$2, + description: description, + bin: bin, + repository: repository, + author: author, + license: license, + bugs: bugs, + main: main$2, + dependencies: dependencies, + devDependencies: devDependencies, + scripts: scripts, + jest: jest +}; + +var _package$1 = Object.freeze({ + name: name, + version: version$2, + description: description, + bin: bin, + repository: repository, + author: author, + license: license, + bugs: bugs, + main: main$2, + dependencies: dependencies, + devDependencies: devDependencies, + scripts: scripts, + jest: jest, + default: _package +}); + +var assert$6 = require$$0$11; +var types$5 = main; +var util$5 = util$2; +var n$2 = types$5.namedTypes; +var isArray$3 = types$5.builtInTypes.array; +var isNumber$1 = types$5.builtInTypes.number; + +function FastPath$1(value) { + assert$6.ok(this instanceof FastPath$1); + this.stack = [value]; +} + +var FPp = FastPath$1.prototype; + +// Static convenience function for coercing a value to a FastPath. +FastPath$1.from = function(obj) { + if (obj instanceof FastPath$1) { + // Return a defensive copy of any existing FastPath instances. + return obj.copy(); + } + + if (obj instanceof types$5.NodePath) { + // For backwards compatibility, unroll NodePath instances into + // lightweight FastPath [..., name, value] stacks. + var copy = Object.create(FastPath$1.prototype); + var stack = [obj.value]; + for (var pp; pp = obj.parentPath; obj = pp) + stack.push(obj.name, pp.value); + copy.stack = stack.reverse(); + return copy; + } + + // Otherwise use obj as the value of the new FastPath instance. + return new FastPath$1(obj); +}; + +FPp.copy = function copy() { + var copy = Object.create(FastPath$1.prototype); + copy.stack = this.stack.slice(0); + return copy; +}; + +// The name of the current property is always the penultimate element of +// this.stack, and always a String. +FPp.getName = function getName() { + var s = this.stack; + var len = s.length; + if (len > 1) { + return s[len - 2]; + } + // Since the name is always a string, null is a safe sentinel value to + // return if we do not know the name of the (root) value. + return null; +}; + +// The value of the current property is always the final element of +// this.stack. +FPp.getValue = function getValue() { + var s = this.stack; + return s[s.length - 1]; +}; + +function getNodeHelper(path, count) { + var s = path.stack; + + for (var i = s.length - 1; i >= 0; i -= 2) { + var value = s[i]; + if (n$2.Node.check(value) && --count < 0) { + return value; + } + } + + return null; +} + +FPp.getNode = function getNode(count) { + return getNodeHelper(this, ~~count); +}; + +FPp.getParentNode = function getParentNode(count) { + return getNodeHelper(this, ~~count + 1); +}; + +FPp.isLast = function isLast() { + var s = this.stack; + if (this.getParentNode()) { + var idx = s[s.length - 2]; + // The name of this node should be an index + assert$6.ok(typeof idx === "number"); + + const arr = s[s.length - 3]; + // We should have an array as a parent node + assert$6.ok(Array.isArray(arr)); + + return idx === arr.length - 1; + } + return false; +}; + +// Temporarily push properties named by string arguments given after the +// callback function onto this.stack, then call the callback with a +// reference to this (modified) FastPath object. Note that the stack will +// be restored to its original state after the callback is finished, so it +// is probably a mistake to retain a reference to the path. +FPp.call = function call(callback /*, name1, name2, ... */) { + var s = this.stack; + var origLen = s.length; + var value = s[origLen - 1]; + var argc = arguments.length; + for (var i = 1; i < argc; ++i) { + var name = arguments[i]; + value = value[name]; + s.push(name, value); + } + var result = callback(this); + s.length = origLen; + return result; +}; + +// Similar to FastPath.prototype.call, except that the value obtained by +// accessing this.getValue()[name1][name2]... should be array-like. The +// callback will be called with a reference to this path object for each +// element of the array. +FPp.each = function each(callback /*, name1, name2, ... */) { + var s = this.stack; + var origLen = s.length; + var value = s[origLen - 1]; + var argc = arguments.length; + + for (var i = 1; i < argc; ++i) { + var name = arguments[i]; + value = value[name]; + s.push(name, value); + } + + for (var i = 0; i < value.length; ++i) { + if (i in value) { + s.push(i, value[i]); + // If the callback needs to know the value of i, call + // path.getName(), assuming path is the parameter name. + callback(this); + s.length -= 2; + } + } + + s.length = origLen; +}; + +// Similar to FastPath.prototype.each, except that the results of the +// callback function invocations are stored in an array and returned at +// the end of the iteration. +FPp.map = function map(callback /*, name1, name2, ... */) { + var s = this.stack; + var origLen = s.length; + var value = s[origLen - 1]; + var argc = arguments.length; + + for (var i = 1; i < argc; ++i) { + var name = arguments[i]; + value = value[name]; + s.push(name, value); + } + + var result = new Array(value.length); + + for (var i = 0; i < value.length; ++i) { + if (i in value) { + s.push(i, value[i]); + result[i] = callback(this, i); + s.length -= 2; + } + } + + s.length = origLen; + + return result; +}; + +// Inspired by require("ast-types").NodePath.prototype.needsParens, but +// more efficient because we're iterating backwards through a stack. +FPp.needsParens = function(assumeExpressionContext) { + var parent = this.getParentNode(); + if (!parent) { + return false; + } + + var name = this.getName(); + var node = this.getNode(); + + // If the value of this path is some child of a Node and not a Node + // itself, then it doesn't need parentheses. Only Node objects (in + // fact, only Expression nodes) need parentheses. + if (this.getValue() !== node) { + return false; + } + + // Only statements don't need parentheses. + if (n$2.Statement.check(node)) { + return false; + } + + // Identifiers never need parentheses. + if (node.type === "Identifier") { + return false; + } + + if (parent.type === "ParenthesizedExpression") { + return false; + } + + // Add parens around the extends clause of a class. It is needed for almost + // all expressions. + if ( + (parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && + parent.superClass === node && + (node.type === "ArrowFunctionExpression" || + node.type === "AssignmentExpression" || + node.type === "AwaitExpression" || + node.type === "BinaryExpression" || + node.type === "ConditionalExpression" || + node.type === "LogicalExpression" || + node.type === "NewExpression" || + node.type === "ObjectExpression" || + node.type === "ParenthesizedExpression" || + node.type === "SequenceExpression" || + node.type === "TaggedTemplateExpression" || + node.type === "UnaryExpression" || + node.type === "UpdateExpression" || + node.type === "YieldExpression") + ) { + return true; + } + + // The left-hand side of the ** exponentiation operator must always + // be parenthesized unless it's an ident or literal + if ( + parent.type === "BinaryExpression" && + parent.operator === "**" && + parent.left === node && + node.type !== "Identifier" && + node.type !== "Literal" && + node.type !== "NumericLiteral" + ) { + return true; + } + + switch (node.type) { + case "SpreadElement": + case "SpreadProperty": + return parent.type === "MemberExpression" && + name === "object" && + parent.object === node; + + case "UpdateExpression": + switch (parent.type) { + case "MemberExpression": + return name === "object" && parent.object === node; + + case "TaggedTemplateExpression": + case "NewExpression": + return true; + + case "UnaryExpression": + if ( + node.prefix && + ((node.operator === "++" && parent.operator === "+") || + (node.operator === "--" && parent.operator === "-")) + ) { + return true; + } + + return false; + } + + case "UnaryExpression": + switch (parent.type) { + case "UnaryExpression": + return node.operator === parent.operator && + (node.operator === "+" || node.operator === "-"); + + case "MemberExpression": + return name === "object" && parent.object === node; + } + + case "BinaryExpression": + if ( + node.operator === "in" && + parent.type === "ForStatement" && + parent.init === node + ) { + return true; + } + + if (node.operator === "in" && parent.type === "AssignmentExpression") { + return true; + } + + case "LogicalExpression": + switch (parent.type) { + case "CallExpression": + case "NewExpression": + return name === "callee" && parent.callee === node; + + case "TaggedTemplateExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + return true; + + case "MemberExpression": + return name === "object" && parent.object === node; + + case "BinaryExpression": + case "LogicalExpression": + var po = parent.operator; + var pp = util$5.getPrecedence(po); + var no = node.operator; + var np = util$5.getPrecedence(no); + + if (po === "||" && no === "&&") { + return true; + } + + if (pp > np) { + return true; + } + + if (pp === np && name === "right") { + assert$6.strictEqual(parent.right, node); + return true; + } + + default: + return false; + } + + case "SequenceExpression": + switch (parent.type) { + case "ReturnStatement": + return false; + + case "ForStatement": + // Although parentheses wouldn't hurt around sequence + // expressions in the head of for loops, traditional style + // dictates that e.g. i++, j++ should not be wrapped with + // parentheses. + return false; + + case "ExpressionStatement": + return name !== "expression"; + + default: + // Otherwise err on the side of overparenthesization, adding + // explicit exceptions above if this proves overzealous. + return true; + } + + case "YieldExpression": + if (parent.type === "UnaryExpression") { + return true; + } + case "AwaitExpression": + switch (parent.type) { + case "TaggedTemplateExpression": + case "BinaryExpression": + case "LogicalExpression": + case "SpreadElement": + case "SpreadProperty": + case "NewExpression": + case "MemberExpression": + return true; + + case "CallExpression": + return parent.callee === node; + + case "ConditionalExpression": + return parent.test === node; + + default: + return false; + } + + case "ArrayTypeAnnotation": + return parent.type === "NullableTypeAnnotation"; + + case "IntersectionTypeAnnotation": + case "UnionTypeAnnotation": + return parent.type === "NullableTypeAnnotation" || + parent.type === "IntersectionTypeAnnotation" || + parent.type === "UnionTypeAnnotation"; + + case "NullableTypeAnnotation": + return parent.type === "ArrayTypeAnnotation"; + + case "FunctionTypeAnnotation": + return parent.type === "UnionTypeAnnotation" || + parent.type === "IntersectionTypeAnnotation"; + + case "NumericLiteral": + case "Literal": + return parent.type === "MemberExpression" && + isNumber$1.check(node.value) && + name === "object" && + parent.object === node; + + case "AssignmentExpression": + if ( + parent.type === "ArrowFunctionExpression" && + parent.body === node && + node.left.type === "ObjectPattern" + ) { + return true; + } + + case "ConditionalExpression": + switch (parent.type) { + case "TaggedTemplateExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "BinaryExpression": + case "LogicalExpression": + case "LogicalExpression": + case "ExportDefaultDeclaration": + case "AwaitExpression": + return true; + + case "NewExpression": + case "CallExpression": + return name === "callee" && parent.callee === node; + + case "ConditionalExpression": + return name === "test" && parent.test === node; + + case "MemberExpression": + return name === "object" && parent.object === node; + + default: + return n$2.ObjectPattern.check(node.left) && this.firstInStatement(); + } + + case "FunctionExpression": + case "ArrowFunctionExpression": + if (parent.type === "CallExpression" && name === "callee") { + return true; + } + + switch (parent.type) { + case "ConditionalExpression": + if (parent.test === node) { + return true; + } + return false; + + case "ExportDefaultDeclaration": + if (node.type === "ArrowFunctionExpression") { + return false; + } + if (node.type === "FunctionExpression" && !node.id) { + return false; + } + return true; + + case "ExpressionStatement": + case "MemberExpression": + case "TaggedTemplateExpression": + case "UnaryExpression": + return true; + + case "NewExpression": + return name === "callee"; + + case "LogicalExpression": + return node.type === "ArrowFunctionExpression"; + + default: + return isBinary(parent); + } + + case "ClassExpression": + switch (parent.type) { + case "TaggedTemplateExpression": + case "BinaryExpression": + case "ExportDefaultDeclaration": + case "ExpressionStatement": + return true; + case "CallExpression": + if (parent.callee === node) { + return true; + } + case "MemberExpression": + return name === "object" && parent.object === node; + case "ConditionalExpression": + if (parent.test === node) { + return true; + } + } + + return false; + + case "ObjectExpression": + if (parent.type === "ArrowFunctionExpression" && name === "body") { + return true; + } + if (parent.type === "TaggedTemplateExpression") { + return true; + } + if (parent.type === "MemberExpression") { + return name === "object" && parent.object === node; + } + + case "StringLiteral": + if (parent.type === "ExpressionStatement") { + return true; + } + + default: + if ( + parent.type === "NewExpression" && + name === "callee" && + parent.callee === node + ) { + return containsCallExpression(node); + } + } + + if ( + assumeExpressionContext !== true && + !this.canBeFirstInStatement() && + this.firstInStatement() + ) + return true; + + return false; +}; + +function isBinary(node) { + return n$2.BinaryExpression.check(node) || n$2.LogicalExpression.check(node); +} + +function containsCallExpression(node) { + if (n$2.CallExpression.check(node)) { + return true; + } + + if (isArray$3.check(node)) { + return node.some(containsCallExpression); + } + + if (n$2.Node.check(node)) { + return types$5.someField(node, function(name, child) { + return containsCallExpression(child); + }); + } + + return false; +} + +FPp.canBeFirstInStatement = function() { + var node = this.getNode(); + return !n$2.FunctionExpression.check(node) && + !n$2.ObjectExpression.check(node) && + !n$2.ClassExpression.check(node) && + !(n$2.AssignmentExpression.check(node) && n$2.ObjectPattern.check(node.left)); +}; + +FPp.firstInStatement = function() { + var s = this.stack; + var parentName, parent; + var childName, child; + + for (var i = s.length - 1; i >= 0; i -= 2) { + if (n$2.Node.check(s[i])) { + childName = parentName; + child = parent; + parentName = s[i - 1]; + parent = s[i]; + } + + if (!parent || !child) { + continue; + } + + if ( + n$2.BlockStatement.check(parent) && parentName === "body" && childName === 0 + ) { + assert$6.strictEqual(parent.body[0], child); + return true; + } + + if (n$2.ExpressionStatement.check(parent) && childName === "expression") { + assert$6.strictEqual(parent.expression, child); + return true; + } + + if ( + n$2.SequenceExpression.check(parent) && + parentName === "expressions" && + childName === 0 + ) { + assert$6.strictEqual(parent.expressions[0], child); + continue; + } + + if (n$2.CallExpression.check(parent) && childName === "callee") { + assert$6.strictEqual(parent.callee, child); + continue; + } + + if (n$2.MemberExpression.check(parent) && childName === "object") { + assert$6.strictEqual(parent.object, child); + continue; + } + + if (n$2.ConditionalExpression.check(parent) && childName === "test") { + assert$6.strictEqual(parent.test, child); + continue; + } + + if (isBinary(parent) && childName === "left") { + assert$6.strictEqual(parent.left, child); + continue; + } + + if ( + n$2.UnaryExpression.check(parent) && + !parent.prefix && + childName === "argument" + ) { + assert$6.strictEqual(parent.argument, child); + continue; + } + + return false; + } + + return true; +}; + +var fastPath = FastPath$1; + +var assert$5 = require$$0$11; +var comments$3 = comments$1; +var FastPath = fastPath; +var util$4 = util$2; +var isIdentifierName = utils.keyword.isIdentifierNameES6; + +var docBuilders$3 = docBuilders$1; +var concat$2 = docBuilders$3.concat; +var join$2 = docBuilders$3.join; +var line$1 = docBuilders$3.line; +var hardline$2 = docBuilders$3.hardline; +var softline$1 = docBuilders$3.softline; +var literalline$1 = docBuilders$3.literalline; +var group$1 = docBuilders$3.group; +var indent$2 = docBuilders$3.indent; +var conditionalGroup$1 = docBuilders$3.conditionalGroup; +var ifBreak$1 = docBuilders$3.ifBreak; +var breakParent$2 = docBuilders$3.breakParent; +var lineSuffixBoundary$1 = docBuilders$3.lineSuffixBoundary; + +var docUtils$2 = docUtils; +var willBreak$2 = docUtils$2.willBreak; +var isLineNext$1 = docUtils$2.isLineNext; +var getFirstString$1 = docUtils$2.getFirstString; +var isEmpty$1 = docUtils$2.isEmpty; + +var types$4 = main; +var namedTypes = types$4.namedTypes; +var isString$1 = types$4.builtInTypes.string; +function shouldPrintComma(options, level) { + level = level || "es5"; + + switch (options.trailingComma) { + case "all": + if (level === "all") { + return true; + } + case "es5": + if (level === "es5") { + return true; + } + case "none": + default: + return false; + } +} + +function genericPrint(path, options, printPath) { + assert$5.ok(path instanceof FastPath); + + var node = path.getValue(); + var parts = []; + var needsParens = false; + var linesWithoutParens = genericPrintNoParens(path, options, printPath); + + if (!node || isEmpty$1(linesWithoutParens)) { + return linesWithoutParens; + } + + // Escape hatch + if ( + node.comments && + node.comments.length > 0 && + node.comments[0].value.trim() === "prettier-ignore" + ) { + return options.originalText.slice(util$4.locStart(node), util$4.locEnd(node)); + } + + if ( + node.decorators && + node.decorators.length > 0 && + // If the parent node is an export declaration, it will be + // responsible for printing node.decorators. + !util$4.getParentExportDeclaration(path) + ) { + const separator = node.decorators.length === 1 && + node.decorators[0].expression.type === "Identifier" + ? " " + : hardline$2; + path.each( + function(decoratorPath) { + parts.push(printPath(decoratorPath), separator); + }, + "decorators" + ); + } else if ( + util$4.isExportDeclaration(node) && + node.declaration && + node.declaration.decorators + ) { + // Export declarations are responsible for printing any decorators + // that logically apply to node.declaration. + path.each( + function(decoratorPath) { + parts.push(printPath(decoratorPath), line$1); + }, + "declaration", + "decorators" + ); + } else { + // Nodes with decorators can't have parentheses, so we can avoid + // computing path.needsParens() except in this case. + needsParens = path.needsParens(); + } + + if (needsParens) { + parts.unshift("("); + } + + parts.push(linesWithoutParens); + + if (needsParens) { + parts.push(")"); + } + + return concat$2(parts); +} + +function genericPrintNoParens(path, options, print) { + var n = path.getValue(); + + if (!n) { + return ""; + } + + if (typeof n === "string") { + return n; + } + + // TODO: For some reason NumericLiteralTypeAnnotation is not + // printable so this throws, but I think that's a bug in ast-types. + // This assert isn't very useful though. + // namedTypes.Printable.assert(n); + var parts = []; + switch (n.type) { + case "File": + return path.call(print, "program"); + case "Program": + // Babel 6 + if (n.directives) { + path.each( + function(childPath) { + parts.push(print(childPath), ";", hardline$2); + if ( + util$4.isNextLineEmpty(options.originalText, childPath.getValue()) + ) { + parts.push(hardline$2); + } + }, + "directives" + ); + } + + parts.push( + path.call( + function(bodyPath) { + return printStatementSequence(bodyPath, options, print); + }, + "body" + ) + ); + + parts.push( + comments$3.printDanglingComments(path, options, /* sameIndent */ true) + ); + + // Only force a trailing newline if there were any contents. + if (n.body.length || n.comments) { + parts.push(hardline$2); + } + + return concat$2(parts); + // Babel extension. + case "Noop": + case "EmptyStatement": + return ""; + case "ExpressionStatement": + return concat$2([path.call(print, "expression"), ";"]); // Babel extension. + case "ParenthesizedExpression": + return concat$2(["(", path.call(print, "expression"), ")"]); + case "AssignmentExpression": + return group$1( + concat$2([ + path.call(print, "left"), + " ", + n.operator, + hasLeadingOwnLineComment(options.originalText, n.right) ? + indent$2(options.tabWidth, concat$2([hardline$2, path.call(print, "right")])) : + concat$2([" ", path.call(print, "right")]), + ]) + ); + case "BinaryExpression": + case "LogicalExpression": { + const parts = []; + printBinaryishExpressions(path, parts, print, options); + const parent = path.getParentNode(); + + // Avoid indenting sub-expressions in if/etc statements. + if ( + hasLeadingOwnLineComment(options.originalText, n) && + (parent.type === "AssignmentExpression" || + parent.type === "VariableDeclarator") || + shouldInlineLogicalExpression(n) || + (n !== parent.body && + (parent.type === "IfStatement" || + parent.type === "WhileStatement" || + parent.type === "DoStatement" || + parent.type === "ForStatement")) || + (n === parent.body && parent.type === "ArrowFunctionExpression") + ) { + return group$1(concat$2(parts)); + } + + const rest = concat$2(parts.slice(1)); + + return group$1( + concat$2([ + // Don't include the initial expression in the indentation + // level. The first item is guaranteed to be the first + // left-most expression. + parts.length > 0 ? parts[0] : "", + indent$2(options.tabWidth, rest) + ]) + ); + } + case "AssignmentPattern": + return concat$2([ + path.call(print, "left"), + " = ", + path.call(print, "right") + ]); + case "MemberExpression": { + return concat$2([ + path.call(print, "object"), + printMemberLookup(path, options, print) + ]); + } + case "MetaProperty": + return concat$2([ + path.call(print, "meta"), + ".", + path.call(print, "property") + ]); + case "BindExpression": + if (n.object) { + parts.push(path.call(print, "object")); + } + + parts.push("::", path.call(print, "callee")); + + return concat$2(parts); + case "Path": + return join$2(".", n.body); + case "Identifier": + return concat$2([ + n.name, + n.optional ? "?" : "", + path.call(print, "typeAnnotation") + ]); + case "SpreadElement": + case "SpreadElementPattern": + // Babel 6 for ObjectPattern + case "RestProperty": + case "SpreadProperty": + case "SpreadPropertyPattern": + case "RestElement": + return concat$2([ + "...", + path.call(print, "argument"), + path.call(print, "typeAnnotation") + ]); + case "FunctionDeclaration": + case "FunctionExpression": + if (n.async) parts.push("async "); + + parts.push("function"); + + if (n.generator) parts.push("*"); + + if (n.id) { + parts.push(" ", path.call(print, "id")); + } + + parts.push( + path.call(print, "typeParameters"), + group$1( + concat$2([ + printFunctionParams(path, print, options), + printReturnType(path, print) + ]) + ), + " ", + path.call(print, "body") + ); + + return concat$2(parts); + case "ArrowFunctionExpression": + if (n.async) parts.push("async "); + + if (n.typeParameters) { + parts.push(path.call(print, "typeParameters")); + } + + if ( + n.params.length === 1 && + !n.rest && + n.params[0].type === "Identifier" && + !n.params[0].typeAnnotation && + !n.params[0].leadingComments && + !n.params[0].trailingComments && + !n.predicate && + !n.returnType + ) { + parts.push(path.call(print, "params", 0)); + } else { + parts.push( + group$1( + concat$2([ + printFunctionParams(path, print, options), + printReturnType(path, print) + ]) + ) + ); + } + + parts.push(" =>"); + + const body = path.call(print, "body"); + const collapsed = concat$2([concat$2(parts), " ", body]); + + // We want to always keep these types of nodes on the same line + // as the arrow. + if ( + n.body.type === "ArrayExpression" || + n.body.type === "ObjectExpression" || + n.body.type === "JSXElement" || + n.body.type === "BlockStatement" + ) { + return group$1(collapsed); + } + + // These nested groups are a little wonky, but because + // `conditionalGroup` suppresses break propagation, we want to + // re-propagate it. We still want to allow the printer to choose + // the more collapsed version, but still break parents if there + // are any hard breaks in the content. + return group$1( + conditionalGroup$1([ + collapsed, + concat$2([ + concat$2(parts), + group$1(indent$2(options.tabWidth, concat$2([line$1, body]))) + ]) + ]), + { shouldBreak: willBreak$2(body) } + ); + case "MethodDefinition": + if (n.static) { + parts.push("static "); + } + + parts.push(printMethod(path, options, print)); + + return concat$2(parts); + case "YieldExpression": + parts.push("yield"); + + if (n.delegate) parts.push("*"); + + if (n.argument) parts.push(" ", path.call(print, "argument")); + + return concat$2(parts); + case "AwaitExpression": + parts.push("await"); + + if (n.all) parts.push("*"); + + if (n.argument) parts.push(" ", path.call(print, "argument")); + + return concat$2(parts); + case "ModuleDeclaration": + parts.push("module", path.call(print, "id")); + + if (n.source) { + assert$5.ok(!n.body); + + parts.push("from", path.call(print, "source")); + } else { + parts.push(path.call(print, "body")); + } + + return join$2(" ", parts); + case "ImportSpecifier": + if (n.imported) { + if (n.importKind) { + parts.push(path.call(print, "importKind"), " "); + } + + parts.push(path.call(print, "imported")); + + if (n.local && n.local.name !== n.imported.name) { + parts.push(" as ", path.call(print, "local")); + } + } else if (n.id) { + parts.push(path.call(print, "id")); + + if (n.name) { + parts.push(" as ", path.call(print, "name")); + } + } + + return concat$2(parts); + case "ExportSpecifier": + if (n.local) { + parts.push(path.call(print, "local")); + + if (n.exported && n.exported.name !== n.local.name) { + parts.push(" as ", path.call(print, "exported")); + } + } else if (n.id) { + parts.push(path.call(print, "id")); + + if (n.name) { + parts.push(" as ", path.call(print, "name")); + } + } + + return concat$2(parts); + case "ExportBatchSpecifier": + return "*"; + case "ImportNamespaceSpecifier": + parts.push("* as "); + + if (n.local) { + parts.push(path.call(print, "local")); + } else if (n.id) { + parts.push(path.call(print, "id")); + } + + return concat$2(parts); + case "ImportDefaultSpecifier": + if (n.local) { + return path.call(print, "local"); + } + + return path.call(print, "id"); + case "ExportDeclaration": + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + return printExportDeclaration(path, options, print); + case "ExportAllDeclaration": + parts.push("export *"); + + if (n.exported) { + parts.push(" as ", path.call(print, "exported")); + } + + parts.push(" from ", path.call(print, "source"), ";"); + + return concat$2(parts); + case "ExportNamespaceSpecifier": + return concat$2(["* as ", path.call(print, "exported")]); + case "ExportDefaultSpecifier": + return path.call(print, "exported"); + case "ImportDeclaration": + parts.push("import "); + + const fromParts = []; + + if (n.importKind && n.importKind !== "value") { + parts.push(n.importKind + " "); + } + + var standalones = []; + var grouped = []; + if (n.specifiers && n.specifiers.length > 0) { + path.each( + function(specifierPath) { + var value = specifierPath.getValue(); + if ( + namedTypes.ImportDefaultSpecifier.check(value) || + namedTypes.ImportNamespaceSpecifier.check(value) + ) { + standalones.push(print(specifierPath)); + } else { + grouped.push(print(specifierPath)); + } + }, + "specifiers" + ); + + if (standalones.length > 0) { + parts.push(join$2(", ", standalones)); + } + + if (standalones.length > 0 && grouped.length > 0) { + parts.push(", "); + } + + if (grouped.length > 0) { + parts.push( + group$1( + concat$2([ + "{", + indent$2( + options.tabWidth, + concat$2([ + options.bracketSpacing ? line$1 : softline$1, + join$2(concat$2([",", line$1]), grouped) + ]) + ), + ifBreak$1(shouldPrintComma(options) ? "," : ""), + options.bracketSpacing ? line$1 : softline$1, + "}" + ]) + ) + ); + } + + fromParts.push(grouped.length === 0 ? line$1 : " ", "from "); + } + + fromParts.push(path.call(print, "source"), ";"); + + // If there's a very long import, break the following way: + // + // import veryLong + // from 'verylong' + // + // In case there are grouped elements, they will already break the way + // we want and this break would take precedence instead. + if (grouped.length === 0) { + return group$1( + concat$2([concat$2(parts), indent$2(options.tabWidth, concat$2(fromParts))]) + ); + } + + return concat$2([concat$2(parts), concat$2(fromParts)]); + + case "Import": { + return "import"; + } + case "BlockStatement": { + var naked = path.call( + function(bodyPath) { + return printStatementSequence(bodyPath, options, print); + }, + "body" + ); + + const hasContent = getFirstString$1(naked); + const hasDirectives = n.directives && n.directives.length > 0; + + var parent = path.getParentNode(); + const parentParent = path.getParentNode(1); + if ( + !hasContent && + !hasDirectives && + !n.comments && + (parent.type === "ArrowFunctionExpression" || + parent.type === "FunctionExpression" || + parent.type === "FunctionDeclaration" || + parent.type === "ObjectMethod" || + parent.type === "ClassMethod" || + (parent.type === "CatchClause" && !parentParent.finalizer)) + ) { + return "{}"; + } + + parts.push("{"); + + // Babel 6 + if (hasDirectives) { + path.each( + function(childPath) { + parts.push( + indent$2( + options.tabWidth, + concat$2([hardline$2, print(childPath), ";"]) + ) + ); + }, + "directives" + ); + } + + if (hasContent) { + parts.push(indent$2(options.tabWidth, concat$2([hardline$2, naked]))); + } + + parts.push(comments$3.printDanglingComments(path, options)); + parts.push(hardline$2, "}"); + + return concat$2(parts); + } + case "ReturnStatement": + parts.push("return"); + + if ( + n.argument && + n.argument.comments && + n.argument.comments.some(comment => comment.leading) + ) { + parts.push( + concat$2([ + " (", + indent$2( + options.tabWidth, + concat$2([softline$1, path.call(print, "argument")]) + ), + line$1, + ")" + ]) + ); + } else if (n.argument) { + parts.push(" ", path.call(print, "argument")); + } + + parts.push(";"); + + return concat$2(parts); + case "CallExpression": { + const parent = path.getParentNode(); + // We detect calls on member lookups and possibly print them in a + // special chain format. See `printMemberChain` for more info. + if (n.callee.type === "MemberExpression") { + return printMemberChain(path, options, print); + } + + return concat$2([ + path.call(print, "callee"), + printArgumentsList(path, options, print) + ]); + } + + case "ObjectExpression": + case "ObjectPattern": + case "ObjectTypeAnnotation": + var allowBreak = false; + var isTypeAnnotation = n.type === "ObjectTypeAnnotation"; + // Leave this here because we *might* want to make this + // configurable later -- flow accepts ";" for type separators + var separator = isTypeAnnotation ? "," : ","; + var fields = []; + var leftBrace = n.exact ? "{|" : "{"; + var rightBrace = n.exact ? "|}" : "}"; + var parent = path.getParentNode(0); + var parentIsUnionTypeAnnotation = parent.type === "UnionTypeAnnotation"; + + if (isTypeAnnotation) { + fields.push("indexers", "callProperties"); + } + + fields.push("properties"); + + var props = []; + let separatorParts = []; + + fields.forEach(function(field) { + path.each( + function(childPath) { + props.push(concat$2(separatorParts)); + props.push(group$1(print(childPath))); + + separatorParts = [separator, line$1]; + if ( + util$4.isNextLineEmpty(options.originalText, childPath.getValue()) + ) { + separatorParts.push(hardline$2); + } + }, + field + ); + }); + + const lastElem = util$4.getLast(n.properties); + const canHaveTrailingComma = !(lastElem && + lastElem.type === "RestProperty"); + + const shouldBreak = util$4.hasNewlineInRange( + options.originalText, + util$4.locStart(n), + util$4.locEnd(n) + ); + + if (props.length === 0) { + return group$1( + concat$2([ + "{", + comments$3.printDanglingComments(path, options), + softline$1, + "}" + ]) + ); + } else { + return group$1( + concat$2([ + leftBrace, + indent$2( + options.tabWidth + (parentIsUnionTypeAnnotation ? 2 : 0), + concat$2([options.bracketSpacing ? line$1 : softline$1, concat$2(props)]) + ), + ifBreak$1( + canHaveTrailingComma && shouldPrintComma(options) ? "," : "" + ), + indent$2( + parentIsUnionTypeAnnotation ? 2 : 0, + concat$2([options.bracketSpacing ? line$1 : softline$1, rightBrace]) + ), + path.call(print, "typeAnnotation") + ]), + { shouldBreak } + ); + } + + case "PropertyPattern": + return concat$2([ + path.call(print, "key"), + ": ", + path.call(print, "pattern") + ]); + // Babel 6 + case "ObjectProperty": // Non-standard AST node type. + case "Property": + if (n.method || n.kind === "get" || n.kind === "set") { + return printMethod(path, options, print); + } + + if (n.shorthand) { + parts.push(path.call(print, "value")); + } else { + if (n.computed) { + parts.push("[", path.call(print, "key"), "]"); + } else { + parts.push(printPropertyKey(path, options, print)); + } + parts.push(concat$2([": ", path.call(print, "value")])); + } + + return concat$2(parts); // Babel 6 + case "ClassMethod": + if (n.static) { + parts.push("static "); + } + + parts = parts.concat(printObjectMethod(path, options, print)); + + return concat$2(parts); // Babel 6 + case "ObjectMethod": + return printObjectMethod(path, options, print); + case "Decorator": + return concat$2(["@", path.call(print, "expression")]); + case "ArrayExpression": + case "ArrayPattern": + if (n.elements.length === 0) { + parts.push( + group$1( + concat$2([ + "[", + comments$3.printDanglingComments(path, options), + softline$1, + "]" + ]) + ) + ); + } else { + const lastElem = util$4.getLast(n.elements); + const canHaveTrailingComma = !(lastElem && + lastElem.type === "RestElement"); + + // JavaScript allows you to have empty elements in an array which + // changes its length based on the number of commas. The algorithm + // is that if the last argument is null, we need to force insert + // a comma to ensure JavaScript recognizes it. + // [,].length === 1 + // [1,].length === 1 + // [1,,].length === 2 + // + // Note that util.getLast returns null if the array is empty, but + // we already check for an empty array just above so we are safe + const needsForcedTrailingComma = canHaveTrailingComma && + lastElem === null; + + var printedElements = []; + let separatorParts = []; + path.each( + function(childPath) { + printedElements.push(concat$2(separatorParts)); + printedElements.push(group$1(print(childPath))); + + separatorParts = [",", line$1]; + if ( + childPath.getValue() && + util$4.isNextLineEmpty(options.originalText, childPath.getValue()) + ) { + separatorParts.push(softline$1); + } + }, + "elements" + ); + + parts.push( + group$1( + concat$2([ + "[", + indent$2( + options.tabWidth, + concat$2([softline$1, concat$2(printedElements)]) + ), + needsForcedTrailingComma ? "," : "", + ifBreak$1( + canHaveTrailingComma && + !needsForcedTrailingComma && + shouldPrintComma(options) + ? "," + : "" + ), + comments$3.printDanglingComments( + path, + options, + /* sameIndent */ true + ), + softline$1, + "]" + ]) + ) + ); + } + + if (n.typeAnnotation) parts.push(path.call(print, "typeAnnotation")); + + return concat$2(parts); + case "SequenceExpression": + return join$2(", ", path.map(print, "expressions")); + case "ThisExpression": + return "this"; + case "Super": + return "super"; // Babel 6 Literal split + case "NullLiteral": + return "null"; // Babel 6 Literal split + case "RegExpLiteral": + return n.extra.raw; + // Babel 6 Literal split + case "NumericLiteral": + return printNumber(n.extra.raw); + // Babel 6 Literal split + case "BooleanLiteral": + // Babel 6 Literal split + case "StringLiteral": + case "Literal": + if (typeof n.value === "number") return printNumber(n.raw); + if (typeof n.value !== "string") return "" + n.value; + + return nodeStr(n, options); // Babel 6 + case "Directive": + return path.call(print, "value"); // Babel 6 + case "DirectiveLiteral": + return nodeStr(n, options); + case "ModuleSpecifier": + if (n.local) { + throw new Error("The ESTree ModuleSpecifier type should be abstract"); + } + + // The Esprima ModuleSpecifier type is just a string-valued + // Literal identifying the imported-from module. + return nodeStr(n, options); + case "UnaryExpression": + parts.push(n.operator); + + if (/[a-z]$/.test(n.operator)) parts.push(" "); + + parts.push(path.call(print, "argument")); + + return concat$2(parts); + case "UpdateExpression": + parts.push(path.call(print, "argument"), n.operator); + + if (n.prefix) parts.reverse(); + + return concat$2(parts); + case "ConditionalExpression": + return group$1( + concat$2([ + path.call(print, "test"), + indent$2( + options.tabWidth, + concat$2([ + line$1, + "? ", + indent$2(2, path.call(print, "consequent")), + line$1, + ": ", + indent$2(2, path.call(print, "alternate")) + ]) + ) + ]) + ); + case "NewExpression": + parts.push("new ", path.call(print, "callee")); + + var args = n.arguments; + + if (args) { + parts.push(printArgumentsList(path, options, print)); + } + + return concat$2(parts); + case "VariableDeclaration": + var printed = path.map( + function(childPath) { + return print(childPath); + }, + "declarations" + ); + + parts = [ + n.kind, + " ", + printed[0], + indent$2( + options.tabWidth, + concat$2(printed.slice(1).map(p => concat$2([",", line$1, p]))) + ) + ]; + + // We generally want to terminate all variable declarations with a + // semicolon, except when they in the () part of for loops. + var parentNode = path.getParentNode(); + + var isParentForLoop = namedTypes.ForStatement.check(parentNode) || + namedTypes.ForInStatement.check(parentNode) || + (namedTypes.ForOfStatement && + namedTypes.ForOfStatement.check(parentNode)) || + (namedTypes.ForAwaitStatement && + namedTypes.ForAwaitStatement.check(parentNode)); + + if (!(isParentForLoop && parentNode.body !== n)) { + parts.push(";"); + } + + return group$1(concat$2(parts)); + case "VariableDeclarator": + return n.init + ? concat$2([ + path.call(print, "id"), + " =", + hasLeadingOwnLineComment(options.originalText, n.init) ? + indent$2(options.tabWidth, concat$2([hardline$2, path.call(print, "init")])) : + concat$2([" ", path.call(print, "init")]), + ]) + : path.call(print, "id"); + case "WithStatement": + return concat$2([ + "with (", + path.call(print, "object"), + ")", + adjustClause(path.call(print, "body"), options) + ]); + case "IfStatement": + const con = adjustClause(path.call(print, "consequent"), options); + + parts = [ + "if (", + group$1( + concat$2([ + indent$2( + options.tabWidth, + concat$2([softline$1, path.call(print, "test")]) + ), + softline$1 + ]) + ), + ")", + con + ]; + + if (n.alternate) { + const hasBraces = isCurlyBracket(con); + const isEmpty = isEmptyBlock(con); + + if (hasBraces && !isEmpty) { + parts.push(" else"); + } else { + // We use `conditionalGroup` to suppress break propagation. + // This allows us to provide a hardline without forcing the + // entire `if` clause to break up. + parts.push(conditionalGroup$1([concat$2([hardline$2, "else"])])); + } + + parts.push( + adjustClause( + path.call(print, "alternate"), + options, + n.alternate.type === "IfStatement" + ) + ); + } + + return group$1(concat$2(parts)); + case "ForStatement": { + const body = adjustClause(path.call(print, "body"), options); + + // We want to keep dangling comments above the loop to stay consistent. + // Any comment positioned between the for statement and the parentheses + // is going to be printed before the statement. + const dangling = comments$3.printDanglingComments( + path, + options, + /* sameLine */ true + ); + const printedComments = dangling ? concat$2([dangling, softline$1]) : ""; + + if (!n.init && !n.test && !n.update) { + return concat$2([printedComments, "for (;;)", body]); + } + + return concat$2([ + printedComments, + "for (", + group$1( + concat$2([ + indent$2( + options.tabWidth, + concat$2([ + softline$1, + path.call(print, "init"), + ";", + line$1, + path.call(print, "test"), + ";", + line$1, + path.call(print, "update") + ]) + ), + softline$1 + ]) + ), + ")", + body + ]); + } + case "WhileStatement": + return concat$2([ + "while (", + group$1( + concat$2([ + indent$2( + options.tabWidth, + concat$2([softline$1, path.call(print, "test")]) + ), + softline$1 + ]) + ), + ")", + adjustClause(path.call(print, "body"), options) + ]); + case "ForInStatement": + // Note: esprima can't actually parse "for each (". + return concat$2([ + n.each ? "for each (" : "for (", + path.call(print, "left"), + " in ", + path.call(print, "right"), + ")", + adjustClause(path.call(print, "body"), options) + ]); + case "ForOfStatement": + return concat$2([ + "for (", + path.call(print, "left"), + " of ", + path.call(print, "right"), + ")", + adjustClause(path.call(print, "body"), options) + ]); + case "ForAwaitStatement": + return concat$2([ + "for await (", + path.call(print, "left"), + " of ", + path.call(print, "right"), + ")", + adjustClause(path.call(print, "body"), options) + ]); + case "DoWhileStatement": + var clause = adjustClause(path.call(print, "body"), options); + var doBody = concat$2(["do", clause]); + var parts = [doBody]; + const hasBraces = isCurlyBracket(clause); + + if (hasBraces) parts.push(" while"); + else parts.push(concat$2([line$1, "while"])); + + parts.push(" (", path.call(print, "test"), ");"); + + return concat$2(parts); + case "DoExpression": + return concat$2(["do ", path.call(print, "body")]); + case "BreakStatement": + parts.push("break"); + + if (n.label) parts.push(" ", path.call(print, "label")); + + parts.push(";"); + + return concat$2(parts); + case "ContinueStatement": + parts.push("continue"); + + if (n.label) parts.push(" ", path.call(print, "label")); + + parts.push(";"); + + return concat$2(parts); + case "LabeledStatement": + if (n.body.type === "EmptyStatement") { + return concat$2([path.call(print, "label"), ":;"]); + } + + return concat$2([ + path.call(print, "label"), + ":", + hardline$2, + path.call(print, "body") + ]); + case "TryStatement": + parts.push("try ", path.call(print, "block")); + + if (n.handler) { + parts.push(" ", path.call(print, "handler")); + } else if (n.handlers) { + path.each( + function(handlerPath) { + parts.push(" ", print(handlerPath)); + }, + "handlers" + ); + } + + if (n.finalizer) { + parts.push(" finally ", path.call(print, "finalizer")); + } + + return concat$2(parts); + case "CatchClause": + parts.push("catch (", path.call(print, "param")); + + if (n.guard) + // Note: esprima does not recognize conditional catch clauses. + parts.push(" if ", path.call(print, "guard")); + + parts.push(") ", path.call(print, "body")); + + return concat$2(parts); + case "ThrowStatement": + return concat$2(["throw ", path.call(print, "argument"), ";"]); + // Note: ignoring n.lexical because it has no printing consequences. + case "SwitchStatement": + return concat$2([ + "switch (", + path.call(print, "discriminant"), + ") {", + n.cases.length > 0 + ? indent$2( + options.tabWidth, + concat$2([hardline$2, join$2(hardline$2, path.map(print, "cases"))]) + ) + : "", + hardline$2, + "}" + ]); + case "SwitchCase": + if (n.test) parts.push("case ", path.call(print, "test"), ":"); + else parts.push("default:"); + + if (n.consequent.find(node => node.type !== "EmptyStatement")) { + const cons = path.call( + function(consequentPath) { + return printStatementSequence(consequentPath, options, print); + }, + "consequent" + ); + + parts.push( + isCurlyBracket(cons) + ? concat$2([" ", cons]) + : indent$2(options.tabWidth, concat$2([hardline$2, cons])) + ); + } + + return concat$2(parts); + // JSX extensions below. + case "DebuggerStatement": + return "debugger;"; + case "JSXAttribute": + parts.push(path.call(print, "name")); + + if (n.value) { + let res; + if ( + (n.value.type === "StringLiteral" || n.value.type === "Literal") && + typeof n.value.value === "string" + ) { + res = '"' + util$4.htmlEscapeInsideDoubleQuote(n.value.value) + '"'; + } else { + res = path.call(print, "value"); + } + parts.push("=", res); + } + + return concat$2(parts); + case "JSXIdentifier": + return "" + n.name; + case "JSXNamespacedName": + return join$2(":", [ + path.call(print, "namespace"), + path.call(print, "name") + ]); + case "JSXMemberExpression": + return join$2(".", [ + path.call(print, "object"), + path.call(print, "property") + ]); + case "JSXSpreadAttribute": + return concat$2(["{...", path.call(print, "argument"), "}"]); + case "JSXExpressionContainer": { + const parent = path.getParentNode(0); + + const shouldInline = n.expression.type === "ArrayExpression" || + n.expression.type === "ObjectExpression" || + n.expression.type === "ArrowFunctionExpression" || + n.expression.type === "CallExpression" || + n.expression.type === "FunctionExpression" || + n.expression.type === "JSXEmptyExpression" || + (parent.type === "JSXElement" && + (n.expression.type === "ConditionalExpression" || + n.expression.type === "LogicalExpression")); + + if (shouldInline) { + return group$1( + concat$2(["{", path.call(print, "expression"), lineSuffixBoundary$1, "}"]) + ); + } + + return group$1( + concat$2([ + "{", + indent$2( + options.tabWidth, + concat$2([softline$1, path.call(print, "expression")]) + ), + softline$1, + lineSuffixBoundary$1, + "}" + ]) + ); + } + case "JSXElement": { + const elem = printJSXElement(path, options, print); + return maybeWrapJSXElementInParens(path, elem, options); + } + case "JSXOpeningElement": { + const n = path.getValue(); + + // don't break up opening elements with a single long text attribute + if ( + n.attributes.length === 1 && + n.attributes[0].value && + n.attributes[0].value.type === "Literal" && + typeof n.attributes[0].value.value === "string" + ) { + return group$1( + concat$2([ + "<", + path.call(print, "name"), + " ", + concat$2(path.map(print, "attributes")), + n.selfClosing ? " />" : ">" + ]) + ); + } + + return group$1( + concat$2([ + "<", + path.call(print, "name"), + concat$2([ + indent$2( + options.tabWidth, + concat$2( + path.map(attr => concat$2([line$1, print(attr)]), "attributes") + ) + ), + n.selfClosing ? line$1 : options.jsxBracketSameLine ? ">" : softline$1 + ]), + n.selfClosing ? "/>" : options.jsxBracketSameLine ? "" : ">" + ]) + ); + } + case "JSXClosingElement": + return concat$2([""]); + case "JSXText": + throw new Error("JSXTest should be handled by JSXElement"); + case "JSXEmptyExpression": + return concat$2([ + comments$3.printDanglingComments(path, options, /* sameIndent */ true), + softline$1 + ]); + case "TypeAnnotatedIdentifier": + return concat$2([ + path.call(print, "annotation"), + " ", + path.call(print, "identifier") + ]); + case "ClassBody": + if (!n.comments && n.body.length === 0) { + return "{}"; + } + + return concat$2([ + "{", + n.body.length > 0 + ? indent$2( + options.tabWidth, + concat$2([ + hardline$2, + path.call( + function(bodyPath) { + return printStatementSequence(bodyPath, options, print); + }, + "body" + ) + ]) + ) + : comments$3.printDanglingComments(path, options), + hardline$2, + "}" + ]); + case "ClassPropertyDefinition": + parts.push("static ", path.call(print, "definition")); + + if (!namedTypes.MethodDefinition.check(n.definition)) parts.push(";"); + + return concat$2(parts); + case "ClassProperty": + if (n.static) parts.push("static "); + + var key; + + if (n.computed) { + key = concat$2(["[", path.call(print, "key"), "]"]); + } else { + key = printPropertyKey(path, options, print); + if (n.variance === "plus") { + key = concat$2(["+", key]); + } else if (n.variance === "minus") { + key = concat$2(["-", key]); + } + } + + parts.push(key); + + if (n.typeAnnotation) parts.push(path.call(print, "typeAnnotation")); + + if (n.value) parts.push(" = ", path.call(print, "value")); + + parts.push(";"); + + return concat$2(parts); + case "ClassDeclaration": + case "ClassExpression": + return concat$2(printClass(path, options, print)); + case "TemplateElement": + return join$2(literalline$1, n.value.raw.split("\n")); + case "TemplateLiteral": + var expressions = path.map(print, "expressions"); + + function removeLines(doc) { + // Force this doc into flat mode by statically converting all + // lines into spaces (or soft lines into nothing). Hard lines + // should still output because there's too great of a chance + // of breaking existing assumptions otherwise. + return docUtils$2.mapDoc(doc, d => { + if (d.type === "line" && !d.hard) { + return d.soft ? "" : " "; + } + else if(d.type === "if-break") { + return d.flatContents || ""; + } + return d; + }); + } + + parts.push("`"); + + path.each( + function(childPath) { + var i = childPath.getName(); + + parts.push(print(childPath)); + + if (i < expressions.length) { + parts.push( + "${", + removeLines(expressions[i]), + lineSuffixBoundary$1, + "}" + ); + } + }, + "quasis" + ); + + parts.push("`"); + + return concat$2(parts); + // These types are unprintable because they serve as abstract + // supertypes for other (printable) types. + case "TaggedTemplateExpression": + return concat$2([path.call(print, "tag"), path.call(print, "quasi")]); + case "Node": + case "Printable": + case "SourceLocation": + case "Position": + case "Statement": + case "Function": + case "Pattern": + case "Expression": + case "Declaration": + case "Specifier": + case "NamedSpecifier": + // Supertype of Block and Line. + case "Comment": + // Flow + case "MemberTypeAnnotation": // Flow + case "Type": + throw new Error("unprintable type: " + JSON.stringify(n.type)); + + // Type Annotations for Facebook Flow, typically stripped out or + // transformed away before printing. + case "TypeAnnotation": + if (n.typeAnnotation) { + if (n.typeAnnotation.type !== "FunctionTypeAnnotation") { + parts.push(": "); + } + + parts.push(path.call(print, "typeAnnotation")); + + return concat$2(parts); + } + + return ""; + case "TupleTypeAnnotation": + return concat$2(["[", join$2(", ", path.map(print, "types")), "]"]); + case "ExistentialTypeParam": + case "ExistsTypeAnnotation": + return "*"; + case "EmptyTypeAnnotation": + return "empty"; + case "AnyTypeAnnotation": + return "any"; + case "MixedTypeAnnotation": + return "mixed"; + case "ArrayTypeAnnotation": + return concat$2([path.call(print, "elementType"), "[]"]); + case "BooleanTypeAnnotation": + return "boolean"; + case "NumericLiteralTypeAnnotation": + case "BooleanLiteralTypeAnnotation": + return "" + n.value; + case "DeclareClass": + return printFlowDeclaration(path, printClass(path, options, print)); + case "DeclareFunction": + return printFlowDeclaration(path, [ + "function ", + path.call(print, "id"), + n.predicate ? " " : "", + path.call(print, "predicate"), + ";" + ]); + case "DeclareModule": + return printFlowDeclaration(path, [ + "module ", + path.call(print, "id"), + " ", + path.call(print, "body") + ]); + case "DeclareModuleExports": + return printFlowDeclaration(path, [ + "module.exports", + path.call(print, "typeAnnotation"), + ";" + ]); + case "DeclareVariable": + return printFlowDeclaration(path, ["var ", path.call(print, "id"), ";"]); + case "DeclareExportAllDeclaration": + return concat$2(["declare export * from ", path.call(print, "source")]); + case "DeclareExportDeclaration": + return concat$2(["declare ", printExportDeclaration(path, options, print)]); + case "FunctionTypeAnnotation": + // FunctionTypeAnnotation is ambiguous: + // declare function foo(a: B): void; OR + // var A: (a: B) => void; + var parent = path.getParentNode(0); + var isArrowFunctionTypeAnnotation = !((!parent.variance && + !parent.optional && + namedTypes.ObjectTypeProperty.check(parent)) || + namedTypes.ObjectTypeCallProperty.check(parent) || + namedTypes.DeclareFunction.check(path.getParentNode(2))); + + var needsColon = isArrowFunctionTypeAnnotation && + namedTypes.TypeAnnotation.check(parent); + + if (isObjectTypePropertyAFunction(parent)) { + isArrowFunctionTypeAnnotation = true; + needsColon = true; + } + + if (needsColon) { + parts.push(": "); + } + + parts.push(path.call(print, "typeParameters")); + + parts.push(group$1(printFunctionParams(path, print, options))); + + // The returnType is not wrapped in a TypeAnnotation, so the colon + // needs to be added separately. + if (n.returnType || n.predicate) { + parts.push( + isArrowFunctionTypeAnnotation ? " => " : ": ", + path.call(print, "returnType"), + path.call(print, "predicate") + ); + } + + return concat$2(parts); + case "FunctionTypeParam": + return concat$2([ + path.call(print, "name"), + n.optional ? "?" : "", + n.name ? ": " : "", + path.call(print, "typeAnnotation") + ]); + case "GenericTypeAnnotation": + return concat$2([ + path.call(print, "id"), + path.call(print, "typeParameters") + ]); + case "DeclareInterface": + case "InterfaceDeclaration": { + if ( + n.type === "DeclareInterface" || + isFlowNodeStartingWithDeclare(n, options) + ) { + parts.push("declare "); + } + + parts.push( + "interface ", + path.call(print, "id"), + path.call(print, "typeParameters"), + " " + ); + + if (n["extends"].length > 0) { + parts.push("extends ", join$2(", ", path.map(print, "extends")), " "); + } + + parts.push(path.call(print, "body")); + + return concat$2(parts); + } + case "ClassImplements": + case "InterfaceExtends": + return concat$2([ + path.call(print, "id"), + path.call(print, "typeParameters") + ]); + case "IntersectionTypeAnnotation": + case "UnionTypeAnnotation": { + const types = path.map(print, "types"); + const isIntersection = n.type === "IntersectionTypeAnnotation"; + const shouldInline = isIntersection && + !(n.types.length > 1 && n.types[0].type === "ObjectTypeAnnotation"); + + // single-line variation + // A | B | C + + // multi-line variation + // | A + // | B + // | C + + // We want & operators to be inlined. + if (shouldInline) { + return join$2(" & ", types); + } + + return group$1( + indent$2( + options.tabWidth, + concat$2([ + ifBreak$1(concat$2([line$1, isIntersection ? "&" : "|", " "])), + join$2(concat$2([line$1, isIntersection ? "&" : "|", " "]), types) + ]) + ) + ); + } + case "NullableTypeAnnotation": + return concat$2(["?", path.call(print, "typeAnnotation")]); + case "NullLiteralTypeAnnotation": + return "null"; + case "ThisTypeAnnotation": + return "this"; + case "NumberTypeAnnotation": + return "number"; + case "ObjectTypeCallProperty": + if (n.static) { + parts.push("static "); + } + + parts.push(path.call(print, "value")); + + return concat$2(parts); + case "ObjectTypeIndexer": + var variance = n.variance === "plus" + ? "+" + : n.variance === "minus" ? "-" : ""; + return concat$2([ + variance, + "[", + path.call(print, "id"), + n.id ? ": " : "", + path.call(print, "key"), + "]: ", + path.call(print, "value") + ]); + case "ObjectTypeProperty": + var variance = n.variance === "plus" + ? "+" + : n.variance === "minus" ? "-" : ""; + // TODO: This is a bad hack and we need a better way to know + // when to emit an arrow function or not. + var isFunction = !n.variance && + !n.optional && + n.value.type === "FunctionTypeAnnotation"; + + if (isObjectTypePropertyAFunction(n)) { + isFunction = true; + } + + return concat$2([ + n.static ? "static " : "", + variance, + path.call(print, "key"), + n.optional ? "?" : "", + isFunction ? "" : ": ", + path.call(print, "value") + ]); + case "QualifiedTypeIdentifier": + return concat$2([ + path.call(print, "qualification"), + ".", + path.call(print, "id") + ]); + case "StringLiteralTypeAnnotation": + return nodeStr(n, options); + case "NumberLiteralTypeAnnotation": + assert$5.strictEqual(typeof n.value, "number"); + + return "" + n.value; + case "StringTypeAnnotation": + return "string"; + case "DeclareTypeAlias": + case "TypeAlias": { + if ( + n.type === "DeclareTypeAlias" || + isFlowNodeStartingWithDeclare(n, options) + ) { + parts.push("declare "); + } + + parts.push( + "type ", + path.call(print, "id"), + path.call(print, "typeParameters"), + " = ", + path.call(print, "right"), + ";" + ); + + return concat$2(parts); + } + case "TypeCastExpression": + return concat$2([ + "(", + path.call(print, "expression"), + path.call(print, "typeAnnotation"), + ")" + ]); + case "TypeParameterDeclaration": + case "TypeParameterInstantiation": + return concat$2(["<", join$2(", ", path.map(print, "params")), ">"]); + case "TypeParameter": + switch (n.variance) { + case "plus": + parts.push("+"); + + break; + case "minus": + parts.push("-"); + + break; + default: + } + + parts.push(path.call(print, "name")); + + if (n.bound) { + parts.push(path.call(print, "bound")); + } + + if (n["default"]) { + parts.push("=", path.call(print, "default")); + } + + return concat$2(parts); + case "TypeofTypeAnnotation": + return concat$2(["typeof ", path.call(print, "argument")]); + case "VoidTypeAnnotation": + return "void"; + case "NullTypeAnnotation": + return "null"; + case "InferredPredicate": + return "%checks"; + // Unhandled types below. If encountered, nodes of these types should + // be either left alone or desugared into AST types that are fully + // supported by the pretty-printer. + case "DeclaredPredicate": + return concat$2(["%checks(", path.call(print, "value"), ")"]); + // TODO + case "ClassHeritage": + // TODO + case "ComprehensionBlock": + // TODO + case "ComprehensionExpression": + // TODO + case "Glob": + // TODO + case "GeneratorExpression": + // TODO + case "LetStatement": + // TODO + case "LetExpression": + // TODO + case "GraphExpression": + // TODO + // XML types that nobody cares about or needs to print. + case "GraphIndexExpression": + case "XMLDefaultDeclaration": + case "XMLAnyName": + case "XMLQualifiedIdentifier": + case "XMLFunctionQualifiedIdentifier": + case "XMLAttributeSelector": + case "XMLFilterExpression": + case "XML": + case "XMLElement": + case "XMLList": + case "XMLEscape": + case "XMLText": + case "XMLStartTag": + case "XMLEndTag": + case "XMLPointTag": + case "XMLName": + case "XMLAttribute": + case "XMLCdata": + case "XMLComment": + case "XMLProcessingInstruction": + default: + debugger; + throw new Error("unknown type: " + JSON.stringify(n.type)); + } + return p; +} + +function printStatementSequence(path, options, print) { + let printed = []; + + path.map(function(stmtPath, i) { + var stmt = stmtPath.getValue(); + + // Just in case the AST has been modified to contain falsy + // "statements," it's safer simply to skip them. + if (!stmt) { + return; + } + + // Skip printing EmptyStatement nodes to avoid leaving stray + // semicolons lying around. + if (stmt.type === "EmptyStatement") { + return; + } + + const stmtPrinted = print(stmtPath); + const text = options.originalText; + const parts = []; + + parts.push(stmtPrinted); + + if (util$4.isNextLineEmpty(text, stmt) && !isLastStatement(stmtPath)) { + parts.push(hardline$2); + } + + printed.push(concat$2(parts)); + }); + + return join$2(hardline$2, printed); +} + +function printPropertyKey(path, options, print) { + const node = path.getNode(); + const key = node.key; + + if ( + (key.type === "StringLiteral" || + (key.type === "Literal" && typeof key.value === "string")) && + isIdentifierName(key.value) && + !node.computed && + // There's a bug in the flow parser where it throws if there are + // unquoted unicode literals as keys. Let's quote them for now. + (options.parser !== "flow" || key.value.match(/[a-zA-Z0-9$_]/)) + ) { + // 'a' -> a + return key.value; + } + return path.call(print, "key"); +} + +function printMethod(path, options, print) { + var node = path.getNode(); + var kind = node.kind; + var parts = []; + + if (node.type === "ObjectMethod" || node.type === "ClassMethod") { + node.value = node; + } else { + namedTypes.FunctionExpression.assert(node.value); + } + + if (node.value.async) { + parts.push("async "); + } + + if (!kind || kind === "init" || kind === "method" || kind === "constructor") { + if (node.value.generator) { + parts.push("*"); + } + } else { + assert$5.ok(kind === "get" || kind === "set"); + + parts.push(kind, " "); + } + + var key = printPropertyKey(path, options, print); + + if (node.computed) { + key = concat$2(["[", key, "]"]); + } + + parts.push( + key, + path.call(print, "value", "typeParameters"), + group$1( + concat$2([ + path.call( + function(valuePath) { + return printFunctionParams(valuePath, print, options); + }, + "value" + ), + path.call(p => printReturnType(p, print), "value") + ]) + ), + " ", + path.call(print, "value", "body") + ); + + return concat$2(parts); +} + +function printArgumentsList(path, options, print) { + var printed = path.map(print, "arguments"); + + if (printed.length === 0) { + return "()"; + } + + const args = path.getValue().arguments; + const lastArg = util$4.getLast(args); + const penultimateArg = util$4.getPenultimate(args); + // This is just an optimization; I think we could return the + // conditional group for all function calls, but it's more expensive + // so only do it for specific forms. + const groupLastArg = (!lastArg.comments || !lastArg.comments.length) && + (lastArg.type === "ObjectExpression" || + lastArg.type === "ArrayExpression" || + lastArg.type === "FunctionExpression" || + (lastArg.type === "ArrowFunctionExpression" && + (lastArg.body.type === "BlockStatement" || + lastArg.body.type === "ArrowFunctionExpression" || + lastArg.body.type === "ObjectExpression" || + lastArg.body.type === "ArrayExpression" || + lastArg.body.type === "CallExpression" || + lastArg.body.type === "JSXElement"))) && + // If the last two arguments are of the same type, + // disable last element expansion. + (!penultimateArg || penultimateArg.type !== lastArg.type); + + if (groupLastArg) { + const shouldBreak = printed.slice(0, -1).some(willBreak$2); + return concat$2([ + printed.some(willBreak$2) ? breakParent$2 : "", + conditionalGroup$1( + [ + concat$2(["(", join$2(concat$2([", "]), printed), ")"]), + concat$2([ + "(", + join$2(concat$2([",", line$1]), printed.slice(0, -1)), + printed.length > 1 ? ", " : "", + group$1(util$4.getLast(printed), { shouldBreak: true }), + ")" + ]), + group$1( + concat$2([ + "(", + indent$2( + options.tabWidth, + concat$2([line$1, join$2(concat$2([",", line$1]), printed)]) + ), + shouldPrintComma(options, "all") ? "," : "", + line$1, + ")" + ]), + { shouldBreak: true } + ) + ], + { shouldBreak } + ) + ]); + } + + return group$1( + concat$2([ + "(", + indent$2( + options.tabWidth, + concat$2([softline$1, join$2(concat$2([",", line$1]), printed)]) + ), + ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), + softline$1, + ")" + ]), + { shouldBreak: printed.some(willBreak$2) } + ); +} + +function printFunctionParams(path, print, options) { + var fun = path.getValue(); + // namedTypes.Function.assert(fun); + var printed = path.map(print, "params"); + + if (fun.defaults) { + path.each( + function(defExprPath) { + var i = defExprPath.getName(); + var p = printed[i]; + + if (p && defExprPath.getValue()) { + printed[i] = concat$2([p, " = ", print(defExprPath)]); + } + }, + "defaults" + ); + } + + if (fun.rest) { + printed.push(concat$2(["...", path.call(print, "rest")])); + } + + if (printed.length === 0) { + return concat$2([ + "(", + comments$3.printDanglingComments(path, options, /* sameIndent */ true), + ")" + ]) + } + + const lastParam = util$4.getLast(path.getValue().params); + const canHaveTrailingComma = !(lastParam && + lastParam.type === "RestElement") && + !fun.rest; + + return concat$2([ + "(", + indent$2( + options.tabWidth, + concat$2([softline$1, join$2(concat$2([",", line$1]), printed)]) + ), + ifBreak$1( + canHaveTrailingComma && shouldPrintComma(options, "all") ? "," : "" + ), + softline$1, + ")" + ]); +} + +function printObjectMethod(path, options, print) { + var objMethod = path.getValue(); + var parts = []; + + if (objMethod.async) parts.push("async "); + + if (objMethod.generator) parts.push("*"); + + if ( + objMethod.method || objMethod.kind === "get" || objMethod.kind === "set" + ) { + return printMethod(path, options, print); + } + + var key = printPropertyKey(path, options, print); + + if (objMethod.computed) { + parts.push("[", key, "]"); + } else { + parts.push(key); + } + + if (objMethod.typeParameters) { + parts.push(path.call(print, "typeParameters")); + } + + parts.push( + group$1( + concat$2([ + printFunctionParams(path, print, options), + printReturnType(path, print) + ]) + ), + " ", + path.call(print, "body") + ); + + return concat$2(parts); +} + +function printReturnType(path, print) { + const n = path.getValue(); + const parts = [path.call(print, "returnType")]; + + if (n.predicate) { + // The return type will already add the colon, but otherwise we + // need to do it ourselves + parts.push(n.returnType ? " " : ": ", path.call(print, "predicate")); + } + + return concat$2(parts); +} + +function printExportDeclaration(path, options, print) { + var decl = path.getValue(); + var parts = ["export "]; + + namedTypes.Declaration.assert(decl); + + if (decl["default"] || decl.type === "ExportDefaultDeclaration") { + parts.push("default "); + } + + parts.push( + comments$3.printDanglingComments(path, options, /* sameIndent */ true) + ); + + if (decl.declaration) { + parts.push(path.call(print, "declaration")); + + if ( + decl.type === "ExportDefaultDeclaration" && + (decl.declaration.type !== "ClassDeclaration" && + decl.declaration.type !== "FunctionDeclaration") + ) { + parts.push(";"); + } + } else { + if (decl.specifiers && decl.specifiers.length > 0) { + if ( + decl.specifiers.length === 1 && + decl.specifiers[0].type === "ExportBatchSpecifier" + ) { + parts.push("*"); + } else if ( + (decl.specifiers.length === 1 && + decl.specifiers[0].type === "ExportDefaultSpecifier") || + decl.specifiers[0].type === "ExportNamespaceSpecifier" + ) { + parts.push(path.map(print, "specifiers")[0]); + } else { + parts.push( + decl.exportKind === "type" ? "type " : "", + group$1( + concat$2([ + "{", + indent$2( + options.tabWidth, + concat$2([ + options.bracketSpacing ? line$1 : softline$1, + join$2(concat$2([",", line$1]), path.map(print, "specifiers")) + ]) + ), + ifBreak$1(shouldPrintComma(options) ? "," : ""), + options.bracketSpacing ? line$1 : softline$1, + "}" + ]) + ) + ); + } + } else { + parts.push("{}"); + } + + if (decl.source) { + parts.push(" from ", path.call(print, "source")); + } + + parts.push(";"); + } + + return concat$2(parts); +} + +function printFlowDeclaration(path, parts) { + var parentExportDecl = util$4.getParentExportDeclaration(path); + + if (parentExportDecl) { + assert$5.strictEqual(parentExportDecl.type, "DeclareExportDeclaration"); + } else { + // If the parent node has type DeclareExportDeclaration, then it + // will be responsible for printing the "declare" token. Otherwise + // it needs to be printed with this non-exported declaration node. + parts.unshift("declare "); + } + + return concat$2(parts); +} + +function printClass(path, options, print) { + const n = path.getValue(); + const parts = ["class"]; + + if (n.id) { + parts.push(" ", path.call(print, "id"), path.call(print, "typeParameters")); + } + + const partsGroup = []; + if (n.superClass) { + partsGroup.push( + line$1, + "extends ", + path.call(print, "superClass"), + path.call(print, "superTypeParameters") + ); + } else if (n.extends && n.extends.length > 0) { + partsGroup.push(line$1, "extends ", join$2(", ", path.map(print, "extends"))); + } + + if (n["implements"] && n["implements"].length > 0) { + partsGroup.push( + line$1, + "implements ", + join$2(", ", path.map(print, "implements")) + ); + } + + if (partsGroup.length > 0) { + parts.push(group$1(indent$2(options.tabWidth, concat$2(partsGroup)))); + } + + parts.push(" ", path.call(print, "body")); + + return parts; +} + +function printMemberLookup(path, options, print) { + const property = path.call(print, "property"); + const n = path.getValue(); + + return concat$2( + n.computed + ? [ + "[", + group$1( + concat$2([ + indent$2(options.tabWidth, concat$2([softline$1, property])), + softline$1 + ]) + ), + "]" + ] + : [".", property] + ); +} + +// We detect calls on member expressions specially to format a +// comman pattern better. The pattern we are looking for is this: +// +// arr +// .map(x => x + 1) +// .filter(x => x > 10) +// .some(x => x % 2) +// +// The way it is structured in the AST is via a nested sequence of +// MemberExpression and CallExpression. We need to traverse the AST +// and make groups out of it to print it in the desired way. +function printMemberChain(path, options, print) { + // The first phase is to linearize the AST by traversing it down. + // + // a().b() + // has the following AST structure: + // CallExpression(MemberExpression(CallExpression(Identifier))) + // and we transform it into + // [Identifier, CallExpression, MemberExpression, CallExpression] + const printedNodes = []; + + function rec(path) { + const node = path.getValue(); + if (node.type === "CallExpression") { + printedNodes.unshift({ + node: node, + printed: comments$3.printComments( + path, + p => printArgumentsList(path, options, print), + options + ) + }); + path.call(callee => rec(callee), "callee"); + } else if (node.type === "MemberExpression") { + printedNodes.unshift({ + node: node, + printed: comments$3.printComments( + path, + p => printMemberLookup(path, options, print), + options + ) + }); + path.call(object => rec(object), "object"); + } else { + printedNodes.unshift({ + node: node, + printed: path.call(print) + }); + } + } + // Note: the comments of the root node have already been printed, so we + // need to extract this first call without printing them as they would + // if handled inside of the recursive call. + printedNodes.unshift({ + node: path.getValue(), + printed: printArgumentsList(path, options, print) + }); + path.call(callee => rec(callee), "callee"); + + // Once we have a linear list of printed nodes, we want to create groups out + // of it. + // + // a().b.c().d().e + // will be grouped as + // [ + // [Identifier, CallExpression], + // [MemberExpression, MemberExpression, CallExpression], + // [MemberExpression, CallExpression], + // [MemberExpression], + // ] + // so that we can print it as + // a() + // .b.c() + // .d() + // .e + + // The first group is the first node followed by + // - as many CallExpression as possible + // < fn()()() >.something() + // - then, as many MemberExpression as possible but the last one + // < this.items >.something() + var groups = []; + var currentGroup = [printedNodes[0]]; + var i = 1; + for (; i < printedNodes.length; ++i) { + if (printedNodes[i].node.type === "CallExpression") { + currentGroup.push(printedNodes[i]); + } else { + break; + } + } + for (; i + 1 < printedNodes.length; ++i) { + if ( + printedNodes[i].node.type === "MemberExpression" && + printedNodes[i + 1].node.type === "MemberExpression" + ) { + currentGroup.push(printedNodes[i]); + } else { + break; + } + } + groups.push(currentGroup); + currentGroup = []; + + // Then, each following group is a sequence of MemberExpression followed by + // a sequence of CallExpression. To compute it, we keep adding things to the + // group until we has seen a CallExpression in the past and reach a + // MemberExpression + var hasSeenCallExpression = false; + for (; i < printedNodes.length; ++i) { + if ( + hasSeenCallExpression && printedNodes[i].node.type === "MemberExpression" + ) { + // [0] should be appended at the end of the group instead of the + // beginning of the next one + if (printedNodes[i].node.computed) { + currentGroup.push(printedNodes[i]); + continue; + } + + groups.push(currentGroup); + currentGroup = []; + hasSeenCallExpression = false; + } + + if (printedNodes[i].node.type === "CallExpression") { + hasSeenCallExpression = true; + } + currentGroup.push(printedNodes[i]); + } + if (currentGroup.length > 0) { + groups.push(currentGroup); + } + + // There are cases like Object.keys(), Observable.of(), _.values() where + // they are the subject of all the chained calls and therefore should + // be kept on the same line: + // + // Object.keys(items) + // .filter(x => x) + // .map(x => x) + // + // In order to detect those cases, we use an heuristic: if the first + // node is just an identifier with the name starting with a capital + // letter, just a sequence of _$ or this. The rationale is that they are + // likely to be factories. + const shouldMerge = groups[0].length === 1 && + (groups[0][0].node.type === "ThisExpression" || + (groups[0][0].node.type === "Identifier" && + groups[0][0].node.name.match(/(^[A-Z])|^[_$]+$/))) && + groups.length >= 2; + + function printGroup(printedGroup) { + return concat$2(printedGroup.map(tuple => tuple.printed)); + } + + function printIndentedGroup(groups) { + return indent$2( + options.tabWidth, + group$1(concat$2([hardline$2, join$2(hardline$2, groups.map(printGroup))])) + ); + } + + const printedGroups = groups.map(printGroup); + const oneLine = concat$2(printedGroups); + const hasComment = groups.length >= 2 && groups[1][0].node.comments; + + // If we only have a single `.`, we shouldn't do anything fancy and just + // render everything concatenated together. + if (groups.length <= (shouldMerge ? 3 : 2) && + !hasComment && + // (a || b).map() should be break before .map() instead of || + groups[0][0].node.type !== "LogicalExpression") { + return group$1(oneLine); + } + + const expanded = concat$2([ + printGroup(groups[0]), + shouldMerge ? concat$2(groups.slice(1, 2).map(printGroup)) : "", + printIndentedGroup(groups.slice(shouldMerge ? 2 : 1)) + ]); + + // If there's a comment, we don't want to print in one line. + if (hasComment) { + return group$1(expanded); + } + + // If any group but the last one has a hard line, we want to force expand + // it. If the last group is a function it's okay to inline if it fits. + if (printedGroups.slice(0, -1).some(willBreak$2)) { + return group$1(expanded); + } + + return conditionalGroup$1([oneLine, expanded]); +} + +function isEmptyJSXElement(node) { + if (node.children.length === 0) return true; + if (node.children.length > 1) return false; + + // if there is one child but it's just a newline, treat as empty + const value = node.children[0].value; + if (!/\S/.test(value) && /\n/.test(value)) { + return true; + } else { + return false; + } +} + +// JSX Children are strange, mostly for two reasons: +// 1. JSX reads newlines into string values, instead of skipping them like JS +// 2. up to one whitespace between elements within a line is significant, +// but not between lines. +// +// So for one thing, '\n' needs to be parsed out of string literals +// and turned into hardlines (with string boundaries otherwise using softline) +// +// For another, leading, trailing, and lone whitespace all need to +// turn themselves into the rather ugly `{' '}` when breaking. +function printJSXChildren(path, options, print, jsxWhitespace) { + const n = path.getValue(); + const children = []; + + // using `map` instead of `each` because it provides `i` + path.map( + function(childPath, i) { + const child = childPath.getValue(); + const isLiteral = namedTypes.Literal.check(child); + + if (isLiteral && typeof child.value === "string") { + // There's a bug in the flow parser where it doesn't unescape the + // value field. To workaround this, we can use rawValue which is + // correctly escaped (since it parsed). + // We really want to use value and re-escape it ourself when possible + // though. + const partiallyEscapedValue = options.parser === "flow" + ? child.raw + : util$4.htmlEscapeInsideAngleBracket(child.value); + const value = partiallyEscapedValue.replace(/\u00a0/g, " "); + + if (/\S/.test(value)) { + // treat each line of text as its own entity + value.split(/(\n\s*)/).forEach(line => { + const newlines = line.match(/\n/g); + if (newlines) { + children.push(hardline$2); + + // allow one extra newline + if (newlines.length > 1) { + children.push(hardline$2); + } + return; + } + + const beginSpace = /^\s+/.test(line); + if (beginSpace) { + children.push(jsxWhitespace); + } + + const stripped = line.replace(/^\s+|\s+$/g, ""); + if (stripped) { + children.push(stripped); + } + + const endSpace = /\s+$/.test(line); + if (endSpace) { + children.push(jsxWhitespace); + } + }); + + if (!isLineNext$1(util$4.getLast(children))) { + children.push(softline$1); + } + } else if (/\n/.test(value)) { + children.push(hardline$2); + + // allow one extra newline + if (value.match(/\n/g).length > 1) { + children.push(hardline$2); + } + } else if (/\s/.test(value)) { + // whitespace-only without newlines, + // eg; a single space separating two elements + children.push(jsxWhitespace); + children.push(softline$1); + } + } else { + children.push(print(childPath)); + + // add a line unless it's followed by a JSX newline + let next = n.children[i + 1]; + if (!(next && /^\s*\n/.test(next.value))) { + children.push(softline$1); + } + } + }, + "children" + ); + + return children; +} + +// JSX expands children from the inside-out, instead of the outside-in. +// This is both to break children before attributes, +// and to ensure that when children break, their parents do as well. +// +// Any element that is written without any newlines and fits on a single line +// is left that way. +// Not only that, any user-written-line containing multiple JSX siblings +// should also be kept on one line if possible, +// so each user-written-line is wrapped in its own group. +// +// Elements that contain newlines or don't fit on a single line (recursively) +// are fully-split, using hardline and shouldBreak: true. +// +// To support that case properly, all leading and trailing spaces +// are stripped from the list of children, and replaced with a single hardline. +function printJSXElement(path, options, print) { + const n = path.getValue(); + + // Turn
into
+ if (isEmptyJSXElement(n)) { + n.openingElement.selfClosing = true; + delete n.closingElement; + } + + // If no children, just print the opening element + const openingLines = path.call(print, "openingElement"); + if (n.openingElement.selfClosing) { + assert$5.ok(!n.closingElement); + return openingLines; + } + + const jsxWhitespace = options.singleQuote + ? ifBreak$1("{' '}", " ") + : ifBreak$1('{" "}', " "); + const children = printJSXChildren(path, options, print, jsxWhitespace); + let forcedBreak = false; + + // Trim trailing lines, recording if there was a hardline + let numTrailingHard = 0; + while (children.length && isLineNext$1(util$4.getLast(children))) { + if (willBreak$2(util$4.getLast(children))) { + ++numTrailingHard; + forcedBreak = true; + } + children.pop(); + } + // allow one extra newline + if (numTrailingHard > 1) { + children.push(hardline$2); + } + + // Trim leading lines, recording if there was a hardline + let numLeadingHard = 0; + while (children.length && isLineNext$1(children[0])) { + if (willBreak$2(children[0])) { + ++numLeadingHard; + forcedBreak = true; + } + children.shift(); + } + // allow one extra newline + if (numLeadingHard > 1) { + children.unshift(hardline$2); + } + + // Group by line, recording if there was a hardline. + let groups = [[]]; // Initialize the first line's group + children.forEach((child, i) => { + // leading and trailing JSX whitespace don't go into a group + if (child === jsxWhitespace) { + if (i === 0) { + groups.unshift(child); + return; + } else if (i === children.length - 1) { + groups.push(child); + return; + } + } + + let prev = children[i - 1]; + if (prev && willBreak$2(prev)) { + forcedBreak = true; + + // On a new line, so create a new group and put this element in it. + groups.push([child]); + } else { + // Not on a newline, so add this element to the current group. + util$4.getLast(groups).push(child); + } + + // Ensure we record hardline of last element. + if (!forcedBreak && i === children.length - 1) { + if (willBreak$2(child)) forcedBreak = true; + } + }); + + const childrenGroupedByLine = [ + hardline$2, + // Conditional groups suppress break propagation; we want to output + // hard lines without breaking up the entire jsx element. + // Note that leading and trailing JSX Whitespace don't go into a group. + concat$2( + groups.map( + contents => + Array.isArray(contents) + ? conditionalGroup$1([concat$2(contents)]) + : contents + ) + ) + ]; + + const closingLines = path.call(print, "closingElement"); + + const multiLineElem = group$1( + concat$2([ + openingLines, + indent$2( + options.tabWidth, + group$1(concat$2(childrenGroupedByLine), { shouldBreak: true }) + ), + hardline$2, + closingLines + ]) + ); + + if (forcedBreak) { + return multiLineElem; + } + + return conditionalGroup$1([ + group$1(concat$2([openingLines, concat$2(children), closingLines])), + multiLineElem + ]); +} + +function maybeWrapJSXElementInParens(path, elem, options) { + const parent = path.getParentNode(); + if (!parent) return elem; + + const NO_WRAP_PARENTS = { + JSXElement: true, + ExpressionStatement: true, + CallExpression: true, + ConditionalExpression: true, + LogicalExpression: true + }; + if (NO_WRAP_PARENTS[parent.type]) { + return elem; + } + + return group$1( + concat$2([ + ifBreak$1("("), + indent$2(options.tabWidth, concat$2([softline$1, elem])), + softline$1, + ifBreak$1(")") + ]) + ); +} + +function isBinaryish(node) { + return node.type === "BinaryExpression" || node.type === "LogicalExpression"; +} + +function shouldInlineLogicalExpression(node) { + return node.type === "LogicalExpression" && + (node.right.type === "ObjectExpression" || + node.right.type === "ArrayExpression"); +} + +// For binary expressions to be consistent, we need to group +// subsequent operators with the same precedence level under a single +// group. Otherwise they will be nested such that some of them break +// onto new lines but not all. Operators with the same precedence +// level should either all break or not. Because we group them by +// precedence level and the AST is structured based on precedence +// level, things are naturally broken up correctly, i.e. `&&` is +// broken before `+`. +function printBinaryishExpressions(path, parts, print, options, isNested) { + let node = path.getValue(); + + // We treat BinaryExpression and LogicalExpression nodes the same. + if (isBinaryish(node)) { + // Put all operators with the same precedence level in the same + // group. The reason we only need to do this with the `left` + // expression is because given an expression like `1 + 2 - 3`, it + // is always parsed like `((1 + 2) - 3)`, meaning the `left` side + // is where the rest of the expression will exist. Binary + // expressions on the right side mean they have a difference + // precedence level and should be treated as a separate group, so + // print them normally. + if ( + util$4.getPrecedence(node.left.operator) === + util$4.getPrecedence(node.operator) + ) { + // Flatten them out by recursively calling this function. The + // printed values will all be appended to `parts`. + path.call( + left => + printBinaryishExpressions( + left, + parts, + print, + options, + /* isNested */ true + ), + "left" + ); + } else { + parts.push(path.call(print, "left")); + } + + const right = concat$2([ + node.operator, + shouldInlineLogicalExpression(node) ? " " : line$1, + path.call(print, "right") + ]); + + // If there's only a single binary expression: everything except && and ||, + // we want to create a group in order to avoid having a small right part + // like -1 be on its own line. + const parent = path.getParentNode(); + const shouldGroup = node.type === "BinaryExpression" && + parent.type !== "BinaryExpression" && + node.left.type !== "BinaryExpression" && + node.right.type !== "BinaryExpression"; + + parts.push(" ", shouldGroup ? group$1(right) : right); + + // The root comments are already printed, but we need to manually print + // the other ones since we don't call the normal print on BinaryExpression, + // only for the left and right parts + if (isNested && node.comments) { + parts.push(comments$3.printComments(path, p => "", options)); + } + } else { + // Our stopping case. Simply print the node normally. + parts.push(path.call(print)); + } + + return parts; +} + +function adjustClause(clause, options, forceSpace) { + if (clause === "") { + return ";"; + } + + if (isCurlyBracket(clause) || forceSpace) { + return concat$2([" ", clause]); + } + + return indent$2(options.tabWidth, concat$2([line$1, clause])); +} + +function isCurlyBracket(doc) { + const str = getFirstString$1(doc); + return str === "{" || str === "{}"; +} + +function isEmptyBlock(doc) { + const str = getFirstString$1(doc); + return str === "{}"; +} + +function nodeStr(node, options) { + const str = node.value; + isString$1.assert(str); + + // Workaround a bug in the Javascript version of the flow parser where + // astral unicode characters like \uD801\uDC28 are incorrectly parsed as + // a sequence of \uFFFD. + if (options.parser === "flow" && str.indexOf("\ufffd") !== -1) { + return node.raw; + } + + const raw = node.extra ? node.extra.raw : node.raw; + // `rawContent` is the string exactly like it appeared in the input source + // code, with its enclosing quote. + const rawContent = raw.slice(1, -1); + + const double = { quote: '"', regex: /"/g }; + const single = { quote: "'", regex: /'/g }; + + const preferred = options.singleQuote ? single : double; + const alternate = preferred === single ? double : single; + + let shouldUseAlternateQuote = false; + + // If `rawContent` contains at least one of the quote preferred for enclosing + // the string, we might want to enclose with the alternate quote instead, to + // minimize the number of escaped quotes. + if (rawContent.includes(preferred.quote)) { + const numPreferredQuotes = (rawContent.match(preferred.regex) || []).length; + const numAlternateQuotes = (rawContent.match(alternate.regex) || []).length; + + shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes; + } + + const enclosingQuote = shouldUseAlternateQuote + ? alternate.quote + : preferred.quote; + + // It might sound unnecessary to use `makeString` even if `node.raw` already + // is enclosed with `enclosingQuote`, but it isn't. `node.raw` could contain + // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes + // sure that we consistently output the minimum amount of escaped quotes. + return makeString(rawContent, enclosingQuote); +} + +function makeString(rawContent, enclosingQuote) { + const otherQuote = enclosingQuote === '"' ? "'" : '"'; + + // Matches _any_ escape and unescaped quotes (both single and double). + const regex = /\\([\s\S])|(['"])/g; + + // Escape and unescape single and double quotes as needed to be able to + // enclose `rawContent` with `enclosingQuote`. + const newContent = rawContent.replace(regex, (match, escaped, quote) => { + // If we matched an escape, and the escaped character is a quote of the + // other type than we intend to enclose the string with, there's no need for + // it to be escaped, so return it _without_ the backslash. + if (escaped === otherQuote) { + return escaped; + } + + // If we matched an unescaped quote and it is of the _same_ type as we + // intend to enclose the string with, it must be escaped, so return it with + // a backslash. + if (quote === enclosingQuote) { + return "\\" + quote; + } + + // Otherwise return the escape or unescaped quote as-is. + return match; + }); + + return enclosingQuote + newContent + enclosingQuote; +} + +function printNumber(rawNumber) { + return rawNumber + .toLowerCase() + // Remove unnecessary plus and zeroes from scientific notation. + .replace(/^([\d.]+e)(?:\+|(-))?0*/, "$1$2") + // Make sure numbers always start with a digit. + .replace(/^\./, "0.") + // Remove trailing dot. + .replace(/\.(?=e|$)/, ""); +} + +function isLastStatement(path) { + const parent = path.getParentNode(); + const node = path.getValue(); + const body = parent.body; + return body && body[body.length - 1] === node; +} + +function hasLeadingOwnLineComment(text, node) { + const res = node.comments && + node.comments.some(comment => + comment.leading && + util$4.hasNewline(text, util$4.locStart(comment), { backwards: true }) && + util$4.hasNewline(text, util$4.locEnd(comment)) + ); + return res; +} + +// Hack to differentiate between the following two which have the same ast +// type T = { method: () => void }; +// type T = { method(): void }; +function isObjectTypePropertyAFunction(node) { + return node.type === "ObjectTypeProperty" && + node.value.type === "FunctionTypeAnnotation" && + !node.static && + util$4.locStart(node.key) !== util$4.locStart(node.value); +} + +function isFlowNodeStartingWithDeclare(node, options) { + if (options.parser !== "flow") { + return false; + } + + return options.originalText + .slice(0, util$4.locStart(node)) + .match(/declare\s*$/); +} + +function printAstToDoc$1(ast, options) { + function printGenerically(path) { + return comments$3.printComments( + path, + p => genericPrint(p, options, printGenerically), + options + ); + } + + const doc = printGenerically(FastPath.from(ast)); + docUtils$2.propagateBreaks(doc); + return doc; +} + +var printer = { printAstToDoc: printAstToDoc$1 }; + +const MODE_BREAK = 1; +const MODE_FLAT = 2; + +function fits(next, restCommands, width) { + let restIdx = restCommands.length; + const cmds = [next]; + while (width >= 0) { + if (cmds.length === 0) { + if (restIdx === 0) { + return true; + } else { + cmds.push(restCommands[restIdx - 1]); + + restIdx--; + + continue; + } + } + + const x = cmds.pop(); + const ind = x[0]; + const mode = x[1]; + const doc = x[2]; + + if (typeof doc === "string") { + width -= doc.length; + } else { + switch (doc.type) { + case "concat": + for (var i = doc.parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, doc.parts[i]]); + } + + break; + case "indent": + cmds.push([ind + doc.n, mode, doc.contents]); + + break; + case "group": + cmds.push([ind, doc.break ? MODE_BREAK : mode, doc.contents]); + + break; + case "if-break": + if (mode === MODE_BREAK) { + if (doc.breakContents) { + cmds.push([ind, mode, doc.breakContents]); + } + } + if (mode === MODE_FLAT) { + if (doc.flatContents) { + cmds.push([ind, mode, doc.flatContents]); + } + } + + break; + case "line": + switch (mode) { + // fallthrough + case MODE_FLAT: + if (!doc.hard) { + if (!doc.soft) { + width -= 1; + } + + break; + } + + case MODE_BREAK: + return true; + } + break; + } + } + } + return false; +} + +function printDocToString$1(doc, width, newLine) { + newLine = newLine || "\n"; + + let pos = 0; + // cmds is basically a stack. We've turned a recursive call into a + // while loop which is much faster. The while loop below adds new + // cmds to the array instead of recursively calling `print`. + let cmds = [[0, MODE_BREAK, doc]]; + let out = []; + let shouldRemeasure = false; + let lineSuffix = []; + + while (cmds.length !== 0) { + const x = cmds.pop(); + const ind = x[0]; + const mode = x[1]; + const doc = x[2]; + + if (typeof doc === "string") { + out.push(doc); + + pos += doc.length; + } else { + switch (doc.type) { + case "concat": + for (var i = doc.parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, doc.parts[i]]); + } + + break; + case "indent": + cmds.push([ind + doc.n, mode, doc.contents]); + + break; + case "group": + switch (mode) { + // fallthrough + case MODE_FLAT: + if (!shouldRemeasure) { + cmds.push([ + ind, + doc.break ? MODE_BREAK : MODE_FLAT, + doc.contents + ]); + + break; + } + + case MODE_BREAK: + shouldRemeasure = false; + + const next = [ind, MODE_FLAT, doc.contents]; + let rem = width - pos; + + if (!doc.break && fits(next, cmds, rem)) { + cmds.push(next); + } else { + // Expanded states are a rare case where a document + // can manually provide multiple representations of + // itself. It provides an array of documents + // going from the least expanded (most flattened) + // representation first to the most expanded. If a + // group has these, we need to manually go through + // these states and find the first one that fits. + if (doc.expandedStates) { + const mostExpanded = doc.expandedStates[ + doc.expandedStates.length - 1 + ]; + + if (doc.break) { + cmds.push([ind, MODE_BREAK, mostExpanded]); + + break; + } else { + for (var i = 1; i < doc.expandedStates.length + 1; i++) { + if (i >= doc.expandedStates.length) { + cmds.push([ind, MODE_BREAK, mostExpanded]); + + break; + } else { + const state = doc.expandedStates[i]; + const cmd = [ind, MODE_FLAT, state]; + + if (fits(cmd, cmds, rem)) { + cmds.push(cmd); + + break; + } + } + } + } + } else { + cmds.push([ind, MODE_BREAK, doc.contents]); + } + } + + break; + } + break; + case "if-break": + if (mode === MODE_BREAK) { + if (doc.breakContents) { + cmds.push([ind, mode, doc.breakContents]); + } + } + if (mode === MODE_FLAT) { + if (doc.flatContents) { + cmds.push([ind, mode, doc.flatContents]); + } + } + + break; + case "line-suffix": + lineSuffix.push([ind, mode, doc.contents]); + break; + case "line-suffix-boundary": + if (lineSuffix.length > 0) { + cmds.push([ind, mode, { type: "line", hard: true }]); + } + break; + case "line": + switch (mode) { + // fallthrough + case MODE_FLAT: + if (!doc.hard) { + if (!doc.soft) { + out.push(" "); + + pos += 1; + } + + break; + } else { + // This line was forced into the output even if we + // were in flattened mode, so we need to tell the next + // group that no matter what, it needs to remeasure + // because the previous measurement didn't accurately + // capture the entire expression (this is necessary + // for nested groups) + shouldRemeasure = true; + } + + case MODE_BREAK: + if (lineSuffix.length) { + cmds.push([ind, mode, doc]); + [].push.apply(cmds, lineSuffix.reverse()); + lineSuffix = []; + break; + } + + if (doc.literal) { + out.push(newLine); + pos = 0; + } else { + if (out.length > 0) { + // Trim whitespace at the end of line + out[out.length - 1] = out[out.length - 1].replace( + /[^\S\n]*$/, + "" + ); + } + + out.push(newLine + " ".repeat(ind)); + pos = ind; + } + break; + } + break; + default: + } + } + } + return out.join(""); +} + +var docPrinter = { printDocToString: printDocToString$1 }; + +var index$28 = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + +var conversions$1 = createCommonjsModule(function (module) { +/* MIT license */ +var cssKeywords = index$28; + +// NOTE: conversions should only return primitive values (i.e. arrays, or +// values that give correct `typeof` results). +// do not use box values types (i.e. Number(), String(), etc.) + +var reverseKeywords = {}; +for (var key in cssKeywords) { + if (cssKeywords.hasOwnProperty(key)) { + reverseKeywords[cssKeywords[key]] = key; + } +} + +var convert = module.exports = { + rgb: {channels: 3, labels: 'rgb'}, + hsl: {channels: 3, labels: 'hsl'}, + hsv: {channels: 3, labels: 'hsv'}, + hwb: {channels: 3, labels: 'hwb'}, + cmyk: {channels: 4, labels: 'cmyk'}, + xyz: {channels: 3, labels: 'xyz'}, + lab: {channels: 3, labels: 'lab'}, + lch: {channels: 3, labels: 'lch'}, + hex: {channels: 1, labels: ['hex']}, + keyword: {channels: 1, labels: ['keyword']}, + ansi16: {channels: 1, labels: ['ansi16']}, + ansi256: {channels: 1, labels: ['ansi256']}, + hcg: {channels: 3, labels: ['h', 'c', 'g']}, + apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, + gray: {channels: 1, labels: ['gray']} +}; + +// hide .channels and .labels properties +for (var model in convert) { + if (convert.hasOwnProperty(model)) { + if (!('channels' in convert[model])) { + throw new Error('missing channels property: ' + model); + } + + if (!('labels' in convert[model])) { + throw new Error('missing channel labels property: ' + model); + } + + if (convert[model].labels.length !== convert[model].channels) { + throw new Error('channel and label counts mismatch: ' + model); + } + + var channels = convert[model].channels; + var labels = convert[model].labels; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], 'channels', {value: channels}); + Object.defineProperty(convert[model], 'labels', {value: labels}); + } +} + +convert.rgb.hsl = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var l; + + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + + h = Math.min(h * 60, 360); + + if (h < 0) { + h += 360; + } + + l = (min + max) / 2; + + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + + return [h, s * 100, l * 100]; +}; + +convert.rgb.hsv = function (rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var v; + + if (max === 0) { + s = 0; + } else { + s = (delta / max * 1000) / 10; + } + + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + + h = Math.min(h * 60, 360); + + if (h < 0) { + h += 360; + } + + v = ((max / 255) * 1000) / 10; + + return [h, s, v]; +}; + +convert.rgb.hwb = function (rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var h = convert.rgb.hsl(rgb)[0]; + var w = 1 / 255 * Math.min(r, Math.min(g, b)); + + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + + return [h, w * 100, b * 100]; +}; + +convert.rgb.cmyk = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var c; + var m; + var y; + var k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + + return [c * 100, m * 100, y * 100, k * 100]; +}; + +/** + * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance + * */ +function comparativeDistance(x, y) { + return ( + Math.pow(x[0] - y[0], 2) + + Math.pow(x[1] - y[1], 2) + + Math.pow(x[2] - y[2], 2) + ); +} + +convert.rgb.keyword = function (rgb) { + var reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + + var currentClosestDistance = Infinity; + var currentClosestKeyword; + + for (var keyword in cssKeywords) { + if (cssKeywords.hasOwnProperty(keyword)) { + var value = cssKeywords[keyword]; + + // Compute comparative distance + var distance = comparativeDistance(rgb, value); + + // Check if its less, if so set as closest + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + } + + return currentClosestKeyword; +}; + +convert.keyword.rgb = function (keyword) { + return cssKeywords[keyword]; +}; + +convert.rgb.xyz = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + + return [x * 100, y * 100, z * 100]; +}; + +convert.rgb.lab = function (rgb) { + var xyz = convert.rgb.xyz(rgb); + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.hsl.rgb = function (hsl) { + var h = hsl[0] / 360; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var t1; + var t2; + var t3; + var rgb; + var val; + + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + + rgb[i] = val * 255; + } + + return rgb; +}; + +convert.hsl.hsv = function (hsl) { + var h = hsl[0]; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var smin = s; + var lmin = Math.max(l, 0.01); + var sv; + var v; + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + v = (l + s) / 2; + sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); + + return [h, sv * 100, v * 100]; +}; + +convert.hsv.rgb = function (hsv) { + var h = hsv[0] / 60; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var hi = Math.floor(h) % 6; + + var f = h - Math.floor(h); + var p = 255 * v * (1 - s); + var q = 255 * v * (1 - (s * f)); + var t = 255 * v * (1 - (s * (1 - f))); + v *= 255; + + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +}; + +convert.hsv.hsl = function (hsv) { + var h = hsv[0]; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var vmin = Math.max(v, 0.01); + var lmin; + var sl; + var l; + + l = (2 - s) * v; + lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= (lmin <= 1) ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + + return [h, sl * 100, l * 100]; +}; + +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +convert.hwb.rgb = function (hwb) { + var h = hwb[0] / 360; + var wh = hwb[1] / 100; + var bl = hwb[2] / 100; + var ratio = wh + bl; + var i; + var v; + var f; + var n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + + if ((i & 0x01) !== 0) { + f = 1 - f; + } + + n = wh + f * (v - wh); // linear interpolation + + var r; + var g; + var b; + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } + + return [r * 255, g * 255, b * 255]; +}; + +convert.cmyk.rgb = function (cmyk) { + var c = cmyk[0] / 100; + var m = cmyk[1] / 100; + var y = cmyk[2] / 100; + var k = cmyk[3] / 100; + var r; + var g; + var b; + + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.rgb = function (xyz) { + var x = xyz[0] / 100; + var y = xyz[1] / 100; + var z = xyz[2] / 100; + var r; + var g; + var b; + + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + + // assume sRGB + r = r > 0.0031308 + ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r * 12.92; + + g = g > 0.0031308 + ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g * 12.92; + + b = b > 0.0031308 + ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b * 12.92; + + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.lab = function (xyz) { + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.lab.xyz = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var x; + var y; + var z; + + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + + var y2 = Math.pow(y, 3); + var x2 = Math.pow(x, 3); + var z2 = Math.pow(z, 3); + y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; + + x *= 95.047; + y *= 100; + z *= 108.883; + + return [x, y, z]; +}; + +convert.lab.lch = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var hr; + var h; + var c; + + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + + if (h < 0) { + h += 360; + } + + c = Math.sqrt(a * a + b * b); + + return [l, c, h]; +}; + +convert.lch.lab = function (lch) { + var l = lch[0]; + var c = lch[1]; + var h = lch[2]; + var a; + var b; + var hr; + + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + + return [l, a, b]; +}; + +convert.rgb.ansi16 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization + + value = Math.round(value / 50); + + if (value === 0) { + return 30; + } + + var ansi = 30 + + ((Math.round(b / 255) << 2) + | (Math.round(g / 255) << 1) + | Math.round(r / 255)); + + if (value === 2) { + ansi += 60; + } + + return ansi; +}; + +convert.hsv.ansi16 = function (args) { + // optimization here; we already know the value and don't need to get + // it converted for us. + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); +}; + +convert.rgb.ansi256 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + + // we use the extended greyscale palette here, with the exception of + // black and white. normal palette only has 4 greyscale shades. + if (r === g && g === b) { + if (r < 8) { + return 16; + } + + if (r > 248) { + return 231; + } + + return Math.round(((r - 8) / 247) * 24) + 232; + } + + var ansi = 16 + + (36 * Math.round(r / 255 * 5)) + + (6 * Math.round(g / 255 * 5)) + + Math.round(b / 255 * 5); + + return ansi; +}; + +convert.ansi16.rgb = function (args) { + var color = args % 10; + + // handle greyscale + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + + color = color / 10.5 * 255; + + return [color, color, color]; + } + + var mult = (~~(args > 50) + 1) * 0.5; + var r = ((color & 1) * mult) * 255; + var g = (((color >> 1) & 1) * mult) * 255; + var b = (((color >> 2) & 1) * mult) * 255; + + return [r, g, b]; +}; + +convert.ansi256.rgb = function (args) { + // handle greyscale + if (args >= 232) { + var c = (args - 232) * 10 + 8; + return [c, c, c]; + } + + args -= 16; + + var rem; + var r = Math.floor(args / 36) / 5 * 255; + var g = Math.floor((rem = args % 36) / 6) / 5 * 255; + var b = (rem % 6) / 5 * 255; + + return [r, g, b]; +}; + +convert.rgb.hex = function (args) { + var integer = ((Math.round(args[0]) & 0xFF) << 16) + + ((Math.round(args[1]) & 0xFF) << 8) + + (Math.round(args[2]) & 0xFF); + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.hex.rgb = function (args) { + var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + + var colorString = match[0]; + + if (match[0].length === 3) { + colorString = colorString.split('').map(function (char) { + return char + char; + }).join(''); + } + + var integer = parseInt(colorString, 16); + var r = (integer >> 16) & 0xFF; + var g = (integer >> 8) & 0xFF; + var b = integer & 0xFF; + + return [r, g, b]; +}; + +convert.rgb.hcg = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var max = Math.max(Math.max(r, g), b); + var min = Math.min(Math.min(r, g), b); + var chroma = (max - min); + var grayscale; + var hue; + + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + + if (chroma <= 0) { + hue = 0; + } else + if (max === r) { + hue = ((g - b) / chroma) % 6; + } else + if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma + 4; + } + + hue /= 6; + hue %= 1; + + return [hue * 360, chroma * 100, grayscale * 100]; +}; + +convert.hsl.hcg = function (hsl) { + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var c = 1; + var f = 0; + + if (l < 0.5) { + c = 2.0 * s * l; + } else { + c = 2.0 * s * (1.0 - l); + } + + if (c < 1.0) { + f = (l - 0.5 * c) / (1.0 - c); + } + + return [hsl[0], c * 100, f * 100]; +}; + +convert.hsv.hcg = function (hsv) { + var s = hsv[1] / 100; + var v = hsv[2] / 100; + + var c = s * v; + var f = 0; + + if (c < 1.0) { + f = (v - c) / (1 - c); + } + + return [hsv[0], c * 100, f * 100]; +}; + +convert.hcg.rgb = function (hcg) { + var h = hcg[0] / 360; + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + if (c === 0.0) { + return [g * 255, g * 255, g * 255]; + } + + var pure = [0, 0, 0]; + var hi = (h % 1) * 6; + var v = hi % 1; + var w = 1 - v; + var mg = 0; + + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; pure[1] = v; pure[2] = 0; break; + case 1: + pure[0] = w; pure[1] = 1; pure[2] = 0; break; + case 2: + pure[0] = 0; pure[1] = 1; pure[2] = v; break; + case 3: + pure[0] = 0; pure[1] = w; pure[2] = 1; break; + case 4: + pure[0] = v; pure[1] = 0; pure[2] = 1; break; + default: + pure[0] = 1; pure[1] = 0; pure[2] = w; + } + + mg = (1.0 - c) * g; + + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; +}; + +convert.hcg.hsv = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var v = c + g * (1.0 - c); + var f = 0; + + if (v > 0.0) { + f = c / v; + } + + return [hcg[0], f * 100, v * 100]; +}; + +convert.hcg.hsl = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var l = g * (1.0 - c) + 0.5 * c; + var s = 0; + + if (l > 0.0 && l < 0.5) { + s = c / (2 * l); + } else + if (l >= 0.5 && l < 1.0) { + s = c / (2 * (1 - l)); + } + + return [hcg[0], s * 100, l * 100]; +}; + +convert.hcg.hwb = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1.0 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; +}; + +convert.hwb.hcg = function (hwb) { + var w = hwb[1] / 100; + var b = hwb[2] / 100; + var v = 1 - b; + var c = v - w; + var g = 0; + + if (c < 1) { + g = (v - c) / (1 - c); + } + + return [hwb[0], c * 100, g * 100]; +}; + +convert.apple.rgb = function (apple) { + return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; +}; + +convert.rgb.apple = function (rgb) { + return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; +}; + +convert.gray.rgb = function (args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; +}; + +convert.gray.hsl = convert.gray.hsv = function (args) { + return [0, 0, args[0]]; +}; + +convert.gray.hwb = function (gray) { + return [0, 100, gray[0]]; +}; + +convert.gray.cmyk = function (gray) { + return [0, 0, 0, gray[0]]; +}; + +convert.gray.lab = function (gray) { + return [gray[0], 0, 0]; +}; + +convert.gray.hex = function (gray) { + var val = Math.round(gray[0] / 100 * 255) & 0xFF; + var integer = (val << 16) + (val << 8) + val; + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.rgb.gray = function (rgb) { + var val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; +}; +}); + +var conversions$3 = conversions$1; + +/* + this function routes a model to all other models. + + all functions that are routed have a property `.conversion` attached + to the returned synthetic function. This property is an array + of strings, each with the steps in between the 'from' and 'to' + color models (inclusive). + + conversions that are not possible simply are not included. +*/ + +// https://jsperf.com/object-keys-vs-for-in-with-closure/3 +var models$1 = Object.keys(conversions$3); + +function buildGraph() { + var graph = {}; + + for (var len = models$1.length, i = 0; i < len; i++) { + graph[models$1[i]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + } + + return graph; +} + +// https://en.wikipedia.org/wiki/Breadth-first_search +function deriveBFS(fromModel) { + var graph = buildGraph(); + var queue = [fromModel]; // unshift -> queue -> pop + + graph[fromModel].distance = 0; + + while (queue.length) { + var current = queue.pop(); + var adjacents = Object.keys(conversions$3[current]); + + for (var len = adjacents.length, i = 0; i < len; i++) { + var adjacent = adjacents[i]; + var node = graph[adjacent]; + + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + + return graph; +} + +function link(from, to) { + return function (args) { + return to(from(args)); + }; +} + +function wrapConversion(toModel, graph) { + var path = [graph[toModel].parent, toModel]; + var fn = conversions$3[graph[toModel].parent][toModel]; + + var cur = graph[toModel].parent; + while (graph[cur].parent) { + path.unshift(graph[cur].parent); + fn = link(conversions$3[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + + fn.conversion = path; + return fn; +} + +var route$1 = function (fromModel) { + var graph = deriveBFS(fromModel); + var conversion = {}; + + var models = Object.keys(graph); + for (var len = models.length, i = 0; i < len; i++) { + var toModel = models[i]; + var node = graph[toModel]; + + if (node.parent === null) { + // no possible conversion, or this node is the source model. + continue; + } + + conversion[toModel] = wrapConversion(toModel, graph); + } + + return conversion; +}; + +var conversions = conversions$1; +var route = route$1; + +var convert = {}; + +var models = Object.keys(conversions); + +function wrapRaw(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + return fn(args); + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +function wrapRounded(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + var result = fn(args); + + // we're assuming the result is an array here. + // see notice in conversions.js; don't use box types + // in conversion functions. + if (typeof result === 'object') { + for (var len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + + return result; + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +models.forEach(function (fromModel) { + convert[fromModel] = {}; + + Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); + Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); + + var routes = route(fromModel); + var routeModels = Object.keys(routes); + + routeModels.forEach(function (toModel) { + var fn = routes[toModel]; + + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); +}); + +var index$26 = convert; + +var index$24 = createCommonjsModule(function (module) { +'use strict'; +const colorConvert = index$26; + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] + } + }; + + // fix humans + styles.color.grey = styles.color.gray; + + Object.keys(styles).forEach(groupName => { + const group = styles[groupName]; + + Object.keys(group).forEach(styleName => { + const style = group[styleName]; + + styles[styleName] = group[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + }); + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + }); + + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = {}; + styles.color.ansi256 = {}; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = {}; + styles.bgColor.ansi256 = {}; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (const key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } + + const suite = colorConvert[key]; + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + + return styles; +} + +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); +}); + +const style = index$24; + +const toString$1 = Object.prototype.toString; +const toISOString = Date.prototype.toISOString; +const errorToString = Error.prototype.toString; +const regExpToString = RegExp.prototype.toString; +const symbolToString = Symbol.prototype.toString; + +const SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; +const NEWLINE_REGEXP = /\n/ig; + +const getSymbols = Object.getOwnPropertySymbols || (obj => []); + +function isToStringedArrayType(toStringed) { + return ( + toStringed === '[object Array]' || + toStringed === '[object ArrayBuffer]' || + toStringed === '[object DataView]' || + toStringed === '[object Float32Array]' || + toStringed === '[object Float64Array]' || + toStringed === '[object Int8Array]' || + toStringed === '[object Int16Array]' || + toStringed === '[object Int32Array]' || + toStringed === '[object Uint8Array]' || + toStringed === '[object Uint8ClampedArray]' || + toStringed === '[object Uint16Array]' || + toStringed === '[object Uint32Array]'); + +} + +function printNumber$1(val) { + if (val != +val) { + return 'NaN'; + } + const isNegativeZero = val === 0 && 1 / val < 0; + return isNegativeZero ? '-0' : '' + val; +} + +function printFunction(val, printFunctionName) { + if (!printFunctionName) { + return '[Function]'; + } else if (val.name === '') { + return '[Function anonymous]'; + } else { + return '[Function ' + val.name + ']'; + } +} + +function printSymbol(val) { + return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)'); +} + +function printError(val) { + return '[' + errorToString.call(val) + ']'; +} + +function printBasicValue(val, printFunctionName, escapeRegex) { + if (val === true || val === false) { + return '' + val; + } + if (val === undefined) { + return 'undefined'; + } + if (val === null) { + return 'null'; + } + + const typeOf = typeof val; + + if (typeOf === 'number') { + return printNumber$1(val); + } + if (typeOf === 'string') { + return '"' + val.replace(/"|\\/g, '\\$&') + '"'; + } + if (typeOf === 'function') { + return printFunction(val, printFunctionName); + } + if (typeOf === 'symbol') { + return printSymbol(val); + } + + const toStringed = toString$1.call(val); + + if (toStringed === '[object WeakMap]') { + return 'WeakMap {}'; + } + if (toStringed === '[object WeakSet]') { + return 'WeakSet {}'; + } + if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') { + return printFunction(val, printFunctionName); + } + if (toStringed === '[object Symbol]') { + return printSymbol(val); + } + if (toStringed === '[object Date]') { + return toISOString.call(val); + } + if (toStringed === '[object Error]') { + return printError(val); + } + if (toStringed === '[object RegExp]') { + if (escapeRegex) { + // https://github.com/benjamingr/RegExp.escape/blob/master/polyfill.js + return regExpToString.call(val).replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); + } + return regExpToString.call(val); + } + if (toStringed === '[object Arguments]' && val.length === 0) { + return 'Arguments []'; + } + if (isToStringedArrayType(toStringed) && val.length === 0) { + return val.constructor.name + ' []'; + } + + if (val instanceof Error) { + return printError(val); + } + + return false; +} + +function printList(list, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + let body = ''; + + if (list.length) { + body += edgeSpacing; + + const innerIndent = prevIndent + indent; + + for (let i = 0; i < list.length; i++) { + body += innerIndent + print(list[i], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + + if (i < list.length - 1) { + body += ',' + spacing; + } + } + + body += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return '[' + body + ']'; +} + +function printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + return (min ? '' : 'Arguments ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); +} + +function printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + return (min ? '' : val.constructor.name + ' ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); +} + +function printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + let result = 'Map {'; + const iterator = val.entries(); + let current = iterator.next(); + + if (!current.done) { + result += edgeSpacing; + + const innerIndent = prevIndent + indent; + + while (!current.done) { + const key = print(current.value[0], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + const value = print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + + result += innerIndent + key + ' => ' + value; + + current = iterator.next(); + + if (!current.done) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; +} + +function printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + const constructor = min ? '' : val.constructor ? val.constructor.name + ' ' : 'Object '; + let result = constructor + '{'; + let keys = Object.keys(val).sort(); + const symbols = getSymbols(val); + + if (symbols.length) { + keys = keys. + filter(key => !(typeof key === 'symbol' || toString$1.call(key) === '[object Symbol]')). + concat(symbols); + } + + if (keys.length) { + result += edgeSpacing; + + const innerIndent = prevIndent + indent; + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const name = print(key, indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + const value = print(val[key], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + + result += innerIndent + name + ': ' + value; + + if (i < keys.length - 1) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; +} + +function printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + let result = 'Set {'; + const iterator = val.entries(); + let current = iterator.next(); + + if (!current.done) { + result += edgeSpacing; + + const innerIndent = prevIndent + indent; + + while (!current.done) { + result += innerIndent + print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + + current = iterator.next(); + + if (!current.done) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; +} + +function printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + refs = refs.slice(); + if (refs.indexOf(val) > -1) { + return '[Circular]'; + } else { + refs.push(val); + } + + currentDepth++; + + const hitMaxDepth = currentDepth > maxDepth; + + if (callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === 'function') { + return print(val.toJSON(), indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + } + + const toStringed = toString$1.call(val); + if (toStringed === '[object Arguments]') { + return hitMaxDepth ? '[Arguments]' : printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + } else if (isToStringedArrayType(toStringed)) { + return hitMaxDepth ? '[Array]' : printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + } else if (toStringed === '[object Map]') { + return hitMaxDepth ? '[Map]' : printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + } else if (toStringed === '[object Set]') { + return hitMaxDepth ? '[Set]' : printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + } + + return hitMaxDepth ? '[Object]' : printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); +} + +function printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + let match = false; + let plugin; + + for (let p = 0; p < plugins.length; p++) { + plugin = plugins[p]; + + if (plugin.test(val)) { + match = true; + break; + } + } + + if (!match) { + return false; + } + + function boundPrint(val) { + return print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + } + + function boundIndent(str) { + const indentation = prevIndent + indent; + return indentation + str.replace(NEWLINE_REGEXP, '\n' + indentation); + } + + const opts = { + edgeSpacing, + min, + spacing }; + + return plugin.print(val, boundPrint, boundIndent, opts, colors); +} + +function print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { + const basic = printBasicValue(val, printFunctionName, escapeRegex); + if (basic) { + return basic; + } + + const plugin = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); + if (plugin) { + return plugin; + } + + return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); +} + +const DEFAULTS = { + callToJSON: true, + escapeRegex: false, + highlight: false, + indent: 2, + maxDepth: Infinity, + min: false, + plugins: [], + printFunctionName: true, + theme: { + content: 'reset', + prop: 'yellow', + tag: 'cyan', + value: 'green' } }; + + + +function validateOptions(opts) { + Object.keys(opts).forEach(key => { + if (!DEFAULTS.hasOwnProperty(key)) { + throw new Error('prettyFormat: Invalid option: ' + key); + } + }); + + if (opts.min && opts.indent !== undefined && opts.indent !== 0) { + throw new Error('prettyFormat: Cannot run with min option and indent'); + } +} + +function normalizeOptions$1(opts) { + const result = {}; + + Object.keys(DEFAULTS).forEach(key => + result[key] = opts.hasOwnProperty(key) ? opts[key] : DEFAULTS[key]); + + + if (result.min) { + result.indent = 0; + } + + return result; +} + +function createIndent(indent) { + return new Array(indent + 1).join(' '); +} + +function prettyFormat(val, opts) { + if (!opts) { + opts = DEFAULTS; + } else { + validateOptions(opts); + opts = normalizeOptions$1(opts); + } + + const colors = {}; + Object.keys(opts.theme).forEach(key => { + if (opts.highlight) { + colors[key] = style[opts.theme[key]]; + } else { + colors[key] = { close: '', open: '' }; + } + }); + + let indent; + let refs; + const prevIndent = ''; + const currentDepth = 0; + const spacing = opts.min ? ' ' : '\n'; + const edgeSpacing = opts.min ? '' : '\n'; + + if (opts && opts.plugins.length) { + indent = createIndent(opts.indent); + refs = []; + const pluginsResult = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min, opts.callToJSON, opts.printFunctionName, opts.escapeRegex, colors); + if (pluginsResult) { + return pluginsResult; + } + } + + const basicResult = printBasicValue(val, opts.printFunctionName, opts.escapeRegex); + if (basicResult) { + return basicResult; + } + + if (!indent) { + indent = createIndent(opts.indent); + } + if (!refs) { + refs = []; + } + return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min, opts.callToJSON, opts.printFunctionName, opts.escapeRegex, colors); +} + +var index$22 = prettyFormat; + +/* eslint-disable no-nested-ternary */ +var arr = []; +var charCodeCache = []; + +var index$30 = function (a, b) { + if (a === b) { + return 0; + } + + var aLen = a.length; + var bLen = b.length; + + if (aLen === 0) { + return bLen; + } + + if (bLen === 0) { + return aLen; + } + + var bCharCode; + var ret; + var tmp; + var tmp2; + var i = 0; + var j = 0; + + while (i < aLen) { + charCodeCache[i] = a.charCodeAt(i); + arr[i] = ++i; + } + + while (j < bLen) { + bCharCode = b.charCodeAt(j); + tmp = j++; + ret = j; + + for (i = 0; i < aLen; i++) { + tmp2 = bCharCode === charCodeCache[i] ? tmp : tmp + 1; + tmp = arr[i]; + ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2; + } + } + + return ret; +}; + +const chalk$1 = index$6; +const BULLET = chalk$1.bold('\u25cf'); +const DEPRECATION = `${BULLET} Deprecation Warning`; +const ERROR$1 = `${BULLET} Validation Error`; +const WARNING = `${BULLET} Validation Warning`; + +const format$3 = value => +typeof value === 'function' ? +value.toString() : +index$22(value, { min: true }); + +class ValidationError$1 extends Error { + + + + constructor(name, message, comment) { + super(); + comment = comment ? '\n\n' + comment : '\n'; + this.name = ''; + this.message = chalk$1.red(chalk$1.bold(name) + ':\n\n' + message + comment); + Error.captureStackTrace(this, () => {}); + }} + + +const logValidationWarning = ( +name, +message, +comment) => +{ + comment = comment ? '\n\n' + comment : '\n'; + console.warn(chalk$1.yellow(chalk$1.bold(name) + ':\n\n' + message + comment)); +}; + +const createDidYouMeanMessage = ( +unrecognized, +allowedOptions) => +{ + const leven = index$30; + const suggestion = allowedOptions.find(option => { + const steps = leven(option, unrecognized); + return steps < 3; + }); + + return suggestion ? + `Did you mean ${chalk$1.bold(format$3(suggestion))}?` : + ''; +}; + +var utils$3 = { + DEPRECATION, + ERROR: ERROR$1, + ValidationError: ValidationError$1, + WARNING, + createDidYouMeanMessage, + format: format$3, + logValidationWarning }; + +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +const asymmetricMatcher = Symbol.for('jest.asymmetricMatcher'); +const SPACE = ' '; + +class ArrayContaining extends Array {} +class ObjectContaining extends Object {} + +const printAsymmetricMatcher = ( +val, +print, +indent, +opts, +colors) => +{ + const stringedValue = val.toString(); + + if (stringedValue === 'ArrayContaining') { + const array = ArrayContaining.from(val.sample); + return opts.spacing === SPACE ? + stringedValue + SPACE + print(array) : + print(array); + } + + if (stringedValue === 'ObjectContaining') { + const object = Object.assign(new ObjectContaining(), val.sample); + return opts.spacing === SPACE ? + stringedValue + SPACE + print(object) : + print(object); + } + + if (stringedValue === 'StringMatching') { + return stringedValue + SPACE + print(val.sample); + } + + if (stringedValue === 'StringContaining') { + return stringedValue + SPACE + print(val.sample); + } + + return val.toAsymmetricMatcher(); +}; + +var AsymmetricMatcher = { + print: printAsymmetricMatcher, + test: object => object && object.$$typeof === asymmetricMatcher }; + +const chalk$2 = index$6; +const prettyFormat$1 = index$22; +const AsymmetricMatcherPlugin = AsymmetricMatcher; + +const PLUGINS = [AsymmetricMatcherPlugin]; + + + + + + + + + + + + + + + +const EXPECTED_COLOR = chalk$2.green; +const EXPECTED_BG = chalk$2.bgGreen; +const RECEIVED_COLOR = chalk$2.red; +const RECEIVED_BG = chalk$2.bgRed; + +const NUMBERS = [ +'zero', +'one', +'two', +'three', +'four', +'five', +'six', +'seven', +'eight', +'nine', +'ten', +'eleven', +'twelve', +'thirteen']; + + +// get the type of a value with handling the edge cases like `typeof []` +// and `typeof null` +const getType$1 = value => { + if (typeof value === 'undefined') { + return 'undefined'; + } else if (value === null) { + return 'null'; + } else if (Array.isArray(value)) { + return 'array'; + } else if (typeof value === 'boolean') { + return 'boolean'; + } else if (typeof value === 'function') { + return 'function'; + } else if (typeof value === 'number') { + return 'number'; + } else if (typeof value === 'string') { + return 'string'; + } else if (typeof value === 'object') { + if (value.constructor === RegExp) { + return 'regexp'; + } else if (value.constructor === Map) { + return 'map'; + } else if (value.constructor === Set) { + return 'set'; + } + return 'object'; + // $FlowFixMe https://github.com/facebook/flow/issues/1015 + } else if (typeof value === 'symbol') { + return 'symbol'; + } + + throw new Error(`value of unknown type: ${value}`); +}; + +const stringify = function (object) {let maxDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; + const MAX_LENGTH = 10000; + let result; + + try { + result = prettyFormat$1(object, { + maxDepth, + min: true, + plugins: PLUGINS }); + + } catch (e) { + result = prettyFormat$1(object, { + callToJSON: false, + maxDepth, + min: true, + plugins: PLUGINS }); + + } + + return result.length >= MAX_LENGTH && maxDepth > 1 ? + stringify(object, Math.floor(maxDepth / 2)) : + result; +}; + +const highlightTrailingWhitespace = (text, bgColor) => +text.replace(/\s+$/gm, bgColor('$&')); + +const printReceived = object => highlightTrailingWhitespace( +RECEIVED_COLOR(stringify(object)), +RECEIVED_BG); + +const printExpected = value => highlightTrailingWhitespace( +EXPECTED_COLOR(stringify(value)), +EXPECTED_BG); + + +const printWithType = ( +name, +received, +print) => +{ + const type = getType$1(received); + return ( + name + ':' + ( + type !== 'null' && type !== 'undefined' ? + '\n ' + type + ': ' : + ' ') + + print(received)); + +}; + +const ensureNoExpected = (expected, matcherName) => { + matcherName || (matcherName = 'This'); + if (typeof expected !== 'undefined') { + throw new Error( + matcherHint('[.not]' + matcherName, undefined, '') + '\n\n' + + 'Matcher does not accept any arguments.\n' + + printWithType('Got', expected, printExpected)); + + } +}; + +const ensureActualIsNumber = (actual, matcherName) => { + matcherName || (matcherName = 'This matcher'); + if (typeof actual !== 'number') { + throw new Error( + matcherHint('[.not]' + matcherName) + '\n\n' + + `Actual value must be a number.\n` + + printWithType('Received', actual, printReceived)); + + } +}; + +const ensureExpectedIsNumber = (expected, matcherName) => { + matcherName || (matcherName = 'This matcher'); + if (typeof expected !== 'number') { + throw new Error( + matcherHint('[.not]' + matcherName) + '\n\n' + + `Expected value must be a number.\n` + + printWithType('Got', expected, printExpected)); + + } +}; + +const ensureNumbers = (actual, expected, matcherName) => { + ensureActualIsNumber(actual, matcherName); + ensureExpectedIsNumber(expected, matcherName); +}; + +const pluralize = +(word, count) => +(NUMBERS[count] || count) + ' ' + word + (count === 1 ? '' : 's'); + +const matcherHint = function ( +matcherName) + + + + + + +{let received = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'received';let expected = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'expected';let options = arguments[3]; + const secondArgument = options && options.secondArgument; + const isDirectExpectCall = options && options.isDirectExpectCall; + return ( + chalk$2.dim('expect' + (isDirectExpectCall ? '' : '(')) + + RECEIVED_COLOR(received) + + chalk$2.dim((isDirectExpectCall ? '' : ')') + matcherName + '(') + + EXPECTED_COLOR(expected) + ( + secondArgument ? `, ${EXPECTED_COLOR(secondArgument)}` : '') + + chalk$2.dim(')')); + +}; + +var index$32 = { + EXPECTED_BG, + EXPECTED_COLOR, + RECEIVED_BG, + RECEIVED_COLOR, + ensureActualIsNumber, + ensureExpectedIsNumber, + ensureNoExpected, + ensureNumbers, + getType: getType$1, + highlightTrailingWhitespace, + matcherHint, + pluralize, + printExpected, + printReceived, + printWithType, + stringify }; + +const chalk = index$6;var _require = +utils$3;const format$2 = _require.format; const ValidationError = _require.ValidationError; const ERROR = _require.ERROR;var _require2 = +index$32;const getType = _require2.getType; + +const errorMessage = ( +option, +received, +defaultValue, +options) => +{ + const message = + ` Option ${chalk.bold(`"${option}"`)} must be of type: + ${chalk.bold.green(getType(defaultValue))} but instead received: - ${UT.bold.red(KT(WP))} + ${chalk.bold.red(getType(received))} Example: { - ${UT.bold(`"${XP}"`)}: ${UT.bold(WT(JP))} - }`,QP=ZP.comment,$P=ZP.title&&ZP.title.error||ZT;throw new JT($P,KP,QP)}},$T=YE;const SA=$T.logValidationWarning,TA=$T.DEPRECATION,PA=(XP,WP)=>{const JP=WP.comment,ZP=WP.title&&WP.title.deprecation||TA;SA(ZP,XP,JP)},_A=$m;var NA=YE;const IA=NA.format,LA=NA.logValidationWarning,RA=NA.createDidYouMeanMessage,OA=NA.WARNING,MA=Object.prototype.toString,YA={deprecationWarning:(XP,WP,JP,ZP)=>{return!!(WP in JP)&&(PA(JP[WP](XP),ZP),!0)}}.deprecationWarning,VA={unknownOptionWarning:(XP,WP,JP,ZP)=>{const KP=RA(JP,Object.keys(WP)),QP=` Unknown option ${_A.bold(`"${JP}"`)} with value ${_A.bold(IA(XP[JP]))} was found.`+(KP&&` ${KP}`)+`\n This is probably a typing mistake. Fixing it will remove this message.`,$P=ZP.comment,S_=ZP.title&&ZP.title.warning||OA;LA(S_,QP,$P)}}.unknownOptionWarning,UA=QT.errorMessage;var XA=YE;const WA=XA.ERROR,JA=XA.DEPRECATION,ZA=XA.WARNING,KA={comment:"",condition:(XP,WP)=>{return null===XP||XP===void 0||MA.call(XP)===MA.call(WP)},deprecate:YA,deprecatedConfig:{},error:UA,exampleConfig:{comment:" A comment",condition:()=>!0,deprecate:()=>!1,deprecatedConfig:{key:()=>{}},error:()=>{},exampleConfig:{key:"value",test:"case"},title:{deprecation:"Deprecation Warning",error:"Validation Error",warning:"Validation Warning"},unknown:()=>{}},title:{deprecation:JA,error:WA,warning:ZA},unknown:VA},QA=(XP,WP)=>{let JP=!1;for(const ZP in XP)if(WP.deprecatedConfig&&ZP in WP.deprecatedConfig&&"function"==typeof WP.deprecate){const KP=WP.deprecate(XP,ZP,WP.deprecatedConfig,WP);JP=JP||KP}else hasOwnProperty.call(WP.exampleConfig,ZP)?"function"!=typeof WP.condition||"function"!=typeof WP.error||WP.condition(XP[ZP],WP.exampleConfig[ZP])||WP.error(ZP,XP[ZP],WP.exampleConfig[ZP],WP):WP.unknown&&WP.unknown(XP,WP.exampleConfig,ZP,WP);return{hasDeprecationWarnings:JP}};var $A={ValidationError:QT.ValidationError,createDidYouMeanMessage:YE.createDidYouMeanMessage,format:YE.format,logValidationWarning:YE.logValidationWarning,validate:(XP,WP)=>{QA(WP,KA);const JP=Object.assign({},KA,WP,{title:Object.assign({},KA.title,WP.title)});var ZP=QA(XP,JP);const KP=ZP.hasDeprecationWarnings;return{hasDeprecationWarnings:KP,isValid:!0}}},SP=$A.validate,TP={useFlowParser:XP=>` The ${"\"useFlowParser\""} option is deprecated. Use ${"\"parser\""} instead. + ${chalk.bold(`"${option}"`)}: ${chalk.bold(format$2(defaultValue))} + }`; + + const comment = options.comment; + const name = options.title && options.title.error || ERROR; + + throw new ValidationError(name, message, comment); +}; + +var errors = { + ValidationError, + errorMessage }; + +var _require$2 = + + + +utils$3;const logValidationWarning$1 = _require$2.logValidationWarning; const DEPRECATION$2 = _require$2.DEPRECATION; + +const deprecationMessage = (message, options) => { + const comment = options.comment; + const name = options.title && options.title.deprecation || DEPRECATION$2; + + logValidationWarning$1(name, message, comment); +}; + +const deprecationWarning$1 = ( +config, +option, +deprecatedOptions, +options) => +{ + if (option in deprecatedOptions) { + deprecationMessage(deprecatedOptions[option](config), options); + + return true; + } + + return false; +}; + +var deprecated = { + deprecationWarning: deprecationWarning$1 }; + +const chalk$3 = index$6;var _require$3 = + + + + + +utils$3;const format$4 = _require$3.format; const logValidationWarning$2 = _require$3.logValidationWarning; const createDidYouMeanMessage$1 = _require$3.createDidYouMeanMessage; const WARNING$2 = _require$3.WARNING; + +const unknownOptionWarning$1 = ( +config, +exampleConfig, +option, +options) => +{ + const didYouMean = + createDidYouMeanMessage$1(option, Object.keys(exampleConfig)); + /* eslint-disable max-len */ + const message = + ` Unknown option ${chalk$3.bold(`"${option}"`)} with value ${chalk$3.bold(format$4(config[option]))} was found.` + ( + didYouMean && ` ${didYouMean}`) + + `\n This is probably a typing mistake. Fixing it will remove this message.`; + /* eslint-enable max-len */ + + const comment = options.comment; + const name = options.title && options.title.warning || WARNING$2; + + logValidationWarning$2(name, message, comment); +}; + +var warnings = { + unknownOptionWarning: unknownOptionWarning$1 }; + +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +const config$1 = { + comment: ' A comment', + condition: (option, validOption) => true, + deprecate: (config, option, deprecatedOptions, options) => false, + deprecatedConfig: { + key: config => {} }, + + error: (option, received, defaultValue, options) => {}, + exampleConfig: { key: 'value', test: 'case' }, + title: { + deprecation: 'Deprecation Warning', + error: 'Validation Error', + warning: 'Validation Warning' }, + + unknown: (config, option, options) => {} }; + + +var exampleConfig$2 = config$1; + +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +const toString$2 = Object.prototype.toString; + +const validationCondition$1 = ( +option, +validOption) => +{ + return ( + option === null || + option === undefined || + toString$2.call(option) === toString$2.call(validOption)); + +}; + +var condition = validationCondition$1; + +var _require$1 = + + + +deprecated;const deprecationWarning = _require$1.deprecationWarning;var _require2$1 = +warnings;const unknownOptionWarning = _require2$1.unknownOptionWarning;var _require3 = +errors;const errorMessage$1 = _require3.errorMessage; +const exampleConfig$1 = exampleConfig$2; +const validationCondition = condition;var _require4 = +utils$3;const ERROR$2 = _require4.ERROR; const DEPRECATION$1 = _require4.DEPRECATION; const WARNING$1 = _require4.WARNING; + +var defaultConfig$1 = { + comment: '', + condition: validationCondition, + deprecate: deprecationWarning, + deprecatedConfig: {}, + error: errorMessage$1, + exampleConfig: exampleConfig$1, + title: { + deprecation: DEPRECATION$1, + error: ERROR$2, + warning: WARNING$1 }, + + unknown: unknownOptionWarning }; + +const defaultConfig = defaultConfig$1; + +const _validate = (config, options) => { + let hasDeprecationWarnings = false; + + for (const key in config) { + if ( + options.deprecatedConfig && + key in options.deprecatedConfig && + typeof options.deprecate === 'function') + { + const isDeprecatedKey = options.deprecate( + config, + key, + options.deprecatedConfig, + options); + + + hasDeprecationWarnings = hasDeprecationWarnings || isDeprecatedKey; + } else if (hasOwnProperty.call(options.exampleConfig, key)) { + if ( + typeof options.condition === 'function' && + typeof options.error === 'function' && + !options.condition(config[key], options.exampleConfig[key])) + { + options.error(key, config[key], options.exampleConfig[key], options); + } + } else { + options.unknown && + options.unknown(config, options.exampleConfig, key, options); + } + } + + return { hasDeprecationWarnings }; +}; + +const validate$1 = (config, options) => { + _validate(options, defaultConfig); // validate against jest-validate config + + const defaultedOptions = Object.assign( + {}, + defaultConfig, + options, + { title: Object.assign({}, defaultConfig.title, options.title) });var _validate2 = + + + _validate(config, defaultedOptions);const hasDeprecationWarnings = _validate2.hasDeprecationWarnings; + + return { + hasDeprecationWarnings, + isValid: true }; + +}; + +var validate_1 = validate$1; + +var index$20 = { + ValidationError: errors.ValidationError, + createDidYouMeanMessage: utils$3.createDidYouMeanMessage, + format: utils$3.format, + logValidationWarning: utils$3.logValidationWarning, + validate: validate_1 }; + +const deprecated$2 = { + useFlowParser: config => + ` The ${'"useFlowParser"'} option is deprecated. Use ${'"parser"'} instead. Prettier now treats your configuration as: { - ${"\"parser\""}: ${XP.useFlowParser?"\"flow\"":"\"babylon\""} - }`},PP={tabWidth:2,printWidth:80,singleQuote:!1,trailingComma:"none",bracketSpacing:!0,jsxBracketSameLine:!1,parser:"babylon"},_P=Object.assign({},PP,{filename:"testFilename",printWidth:80,originalText:"text"}),NP=Se(function(XP,WP){(function(JP){"use strict";function ZP(Fwe,Vwe){throw[0,Fwe,Vwe]}function KP(Fwe,Vwe){if(typeof Vwe===QF)return Fwe.fun=Vwe,0;if(Vwe.fun)return Fwe.fun=Vwe.fun,0;for(var Bwe=Vwe.length;Bwe--;)Fwe[Bwe]=Vwe[Bwe];return 0}function QP(Fwe,Vwe,Bwe){if("number"==typeof Fwe)switch(Fwe){case 0:Vwe.fun=Bwe;break;case 1:default:KP(Vwe,Bwe);}else switch(Fwe[0]){case 0:for(var Uwe=1;Uwe=Bwe&&Bwe==Fwe.length)return Uwe.apply(null,Fwe);for(var Xwe=Rz;0=Bwe.l||2==Bwe.t&&Xwe>=Bwe.c.length))Bwe.c=4==Fwe.t?__(Fwe.c,Vwe,Xwe):0==Vwe&&Fwe.c.length==Xwe?Fwe.c:Fwe.c.substr(Vwe,Xwe),Bwe.t=Bwe.c.length==Bwe.l?0:2;else if(2==Bwe.t&&Uwe==Bwe.c.length)Bwe.c+=4==Fwe.t?__(Fwe.c,Vwe,Xwe):0==Vwe&&Fwe.c.length==Xwe?Fwe.c:Fwe.c.substr(Vwe,Xwe),Bwe.t=Bwe.c.length==Bwe.l?0:2;else{4!=Bwe.t&&N_(Bwe);var Wwe=Fwe.c,qwe=Bwe.c;if(4==Fwe.t)for(var zwe=0;zweXwe?R_(Fwe.apply(null,P_(Vwe,0,Bwe)),P_(Vwe,Bwe,Uwe-Bwe)):function(Wwe){return R_(Fwe,L_(Vwe,Wwe))}}function O_(Fwe,Vwe){if(Vwe.repeat)return Vwe.repeat(Fwe);var Bwe=Rz,Uwe=0;if(0==Fwe)return Bwe;for(;;){if(1&Fwe&&(Bwe+=Vwe),Fwe>>=1,0==Fwe)return Bwe;Vwe+=Vwe,Uwe++,9==Uwe&&Vwe.slice(0,1)}}function M_(Fwe){2==Fwe.t?Fwe.c+=O_(Fwe.l-Fwe.c.length,"\0"):Fwe.c=__(Fwe.c,0,Fwe.c.length),Fwe.t=0}function Y_(Fwe){if(24>Fwe.length){for(var Vwe=0;Vwe$J)return!1;return!0}return!/[^\x00-\x7f]/.test(Fwe)}function V_(Fwe){for(var Vwe=Rz,Bwe=Rz,zwe=0,Jwe=Fwe.length,Uwe,Xwe,Wwe,qwe;zweLV?(Bwe.substr(0,1),Vwe+=Bwe,Bwe=Rz,Vwe+=Fwe.slice(zwe,Hwe)):Bwe+=Fwe.slice(zwe,Hwe),Hwe==Jwe)break;zwe=Hwe}qwe=1,++zweqwe)&&(qwe=2)):(qwe=3,++zweIU)&&(qwe=3)))))),4>qwe?(zwe-=qwe,Bwe+="\uFFFD"):qwe>MJ?Bwe+=String.fromCharCode(55232+(qwe>>10),SG+(qwe&VB)):Bwe+=String.fromCharCode(qwe),Bwe.length>Yq&&(Bwe.substr(0,1),Vwe+=Bwe,Bwe=Rz)}return Vwe+Bwe}function U_(Fwe){switch(Fwe.t){case 9:return Fwe.c;default:M_(Fwe);case 0:if(Y_(Fwe.c))return Fwe.t=9,Fwe.c;Fwe.t=8;case 8:return V_(Fwe.c);}}function X_(Fwe,Vwe,Bwe){this.t=Fwe,this.c=Vwe,this.l=Bwe}function W_(Fwe){return new X_(0,Fwe,Fwe.length)}function J_(Fwe,Vwe){ZP(Fwe,W_(Vwe))}function Z_(Fwe){J_(QG.Invalid_argument,Fwe)}function K_(){Z_(XW)}function Q_(Fwe,Vwe){return Vwe>>>0>=Fwe.length-1&&K_(),Fwe}function $_(Fwe){return isFinite(Fwe)?2.2250738585072014e-308<=Math.abs(Fwe)?0:0==Fwe?2:1:isNaN(Fwe)?4:3}function SN(Fwe,Vwe){var Bwe=Fwe[3]<<16,Uwe=Vwe[3]<<16;return Bwe>Uwe?1:BweVwe[2]?1:Fwe[2]Vwe[1]?1:Fwe[1]Vwe.c?1:0}function _N(Fwe,Vwe,Bwe){for(var Uwe=[];;){if(!(Bwe&&Fwe===Vwe))if(Fwe instanceof X_){if(!(Vwe instanceof X_))return 1;else if(Fwe!==Vwe){var Xwe=PN(Fwe,Vwe);if(0!=Xwe)return Xwe}}else if(Fwe instanceof Array&&Fwe[0]===(0|Fwe[0])){var Wwe=Fwe[0];if(Wwe===MF&&(Wwe=0),Wwe===Mq){Fwe=Fwe[1];continue}else if(Vwe instanceof Array&&Vwe[0]===(0|Vwe[0])){var qwe=Vwe[0];if(qwe===MF&&(qwe=0),qwe===Mq){Vwe=Vwe[1];continue}else{if(Wwe!=qwe)return WweVwe)return 1;if(Fwe!=Vwe){if(!Bwe)return NaN;if(Fwe==Fwe)return 1;if(Vwe==Vwe)return-1}}if(0==Uwe.length)return 0;var zwe=Uwe.pop();Vwe=Uwe.pop(),Fwe=Uwe.pop(),zwe+1Fwe&&Z_("String.create"),new X_(Fwe?2:9,Rz,Fwe)}function LN(Fwe,Vwe){return+(0==_N(Fwe,Vwe,!1))}function RN(Fwe,Vwe,Bwe,Uwe){if(0=Fwe.l||2==Fwe.t&&Bwe>=Fwe.c.length))0==Uwe?(Fwe.c=Rz,Fwe.t=2):(Fwe.c=O_(Bwe,String.fromCharCode(Uwe)),Fwe.t=Bwe==Fwe.l?0:2);else for(4!=Fwe.t&&N_(Fwe),Bwe+=Vwe;Vwe=Xwe;)Bwe.width=10*Bwe.width+Xwe,Uwe++;Uwe--;break;case".":for(Bwe.prec=0,Uwe++;Xwe=Fwe.charCodeAt(Uwe)-48,0<=Xwe&&9>=Xwe;)Bwe.prec=10*Bwe.prec+Xwe,Uwe++;Uwe--;case"d":case"i":Bwe.signedconv=!0;case"u":Bwe.base=10;break;case"x":Bwe.base=16;break;case"X":Bwe.base=16,Bwe.uppercase=!0;break;case"o":Bwe.base=8;break;case"e":case"f":case"g":Bwe.signedconv=!0,Bwe.conv=Xwe;break;case"E":case"F":case"G":Bwe.signedconv=!0,Bwe.uppercase=!0,Bwe.conv=Xwe.toLowerCase();}}return Bwe}function UN(Fwe,Vwe){Fwe.uppercase&&(Vwe=Vwe.toUpperCase());var Bwe=Vwe.length;Fwe.signedconv&&(0>Fwe.sign||Fwe.signstyle!=YX)&&Bwe++,Fwe.alternate&&(8==Fwe.base&&(Bwe+=1),16==Fwe.base&&(Bwe+=2));var Uwe=Rz;if(Fwe.justify==OJ&&Fwe.filler==IH)for(var Xwe=Bwe;XweFwe.sign?Uwe+=YX:Fwe.signstyle!=YX&&(Uwe+=Fwe.signstyle)),Fwe.alternate&&8==Fwe.base&&(Uwe+=SB),Fwe.alternate&&16==Fwe.base&&(Uwe+=OW),Fwe.justify==OJ&&Fwe.filler==SB)for(var Xwe=Bwe;XweUwe.prec?6:Uwe.prec,Bwe;if(0>Vwe&&(Uwe.sign=-1,Vwe=-Vwe),isNaN(Vwe))Bwe=UH,Uwe.filler=IH;else if(!isFinite(Vwe))Bwe="inf",Uwe.filler=IH;else switch(Uwe.conv){case"e":var Bwe=Vwe.toExponential(Xwe),Wwe=Bwe.length;Bwe.charAt(Wwe-3)==LX&&(Bwe=Bwe.slice(0,Wwe-1)+SB+Bwe.slice(Wwe-1));break;case"f":Bwe=Vwe.toFixed(Xwe);break;case"g":Xwe=Xwe?Xwe:1,Bwe=Vwe.toExponential(Xwe-1);var qwe=Bwe.indexOf(LX),zwe=+Bwe.slice(qwe+1);if(-4>zwe||1e21<=Vwe||Vwe.toFixed(0).length>Xwe){for(var Wwe=qwe-1;Bwe.charAt(Wwe)==SB;)Wwe--;Bwe.charAt(Wwe)==RJ&&Wwe--,Bwe=Bwe.slice(0,Wwe+1)+Bwe.slice(qwe),Wwe=Bwe.length,Bwe.charAt(Wwe-3)==LX&&(Bwe=Bwe.slice(0,Wwe-1)+SB+Bwe.slice(Wwe-1));break}else{var Jwe=Xwe;if(0>zwe)Jwe-=zwe+1,Bwe=Vwe.toFixed(Jwe);else for(;Bwe=Vwe.toFixed(Jwe),Bwe.length>Xwe+1;)Jwe--;if(Jwe){for(var Wwe=Bwe.length-1;Bwe.charAt(Wwe)==SB;)Wwe--;Bwe.charAt(Wwe)==RJ&&Wwe--,Bwe=Bwe.slice(0,Wwe+1)}}}return UN(Uwe,Bwe)}function WN(Fwe,Vwe){if(MN(Fwe)==UU)return W_(Rz+Vwe);var Bwe=VN(Fwe);0>Vwe&&(Bwe.signedconv?(Bwe.sign=-1,Vwe=-Vwe):Vwe>>>=0);var Uwe=Vwe.toString(Bwe.base);if(0<=Bwe.prec){Bwe.filler=IH;var Xwe=Bwe.prec-Uwe.length;0=Bwe?(Bwe=0,Fwe/=Math.pow(2,-1026)):(Fwe/=Math.pow(2,Bwe-1027),16>Fwe&&(Fwe*=2,Bwe-=1),0==Bwe&&(Fwe/=2));var Uwe=Math.pow(2,24),Xwe=0|Fwe;Fwe=(Fwe-Xwe)*Uwe;var Wwe=0|Fwe;Fwe=(Fwe-Wwe)*Uwe;var qwe=0|Fwe;return Xwe=15&Xwe|Vwe|Bwe<<4,[QW,qwe,Wwe,Xwe]}function KN(Fwe){return[Fwe[3]>>8,Fwe[3]&QW,Fwe[2]>>16,Fwe[2]>>8&QW,Fwe[2]&QW,Fwe[1]>>16,Fwe[1]>>8&QW,Fwe[1]&QW]}function QN(Fwe,Vwe,Bwe){function Uwe(Wwe){if(Vwe--,!(0>Fwe||0>Vwe))if(Wwe instanceof Array&&Wwe[0]===(0|Wwe[0]))switch(Wwe[0]){case 248:Fwe--,Xwe=0|Xwe*TV+Wwe[2];break;case 250:Vwe++,Uwe(Wwe);break;case 255:Fwe--,Xwe=0|Xwe*TV+Wwe[1]+(Wwe[2]<<24);break;default:Fwe--,Xwe=0|19*Xwe+Wwe[0];for(var qwe=Wwe.length-1;0>24&KF,Fwe>>31&MJ]}function Tk(Fwe){var Vwe=Fwe.length,Bwe=Array(Vwe);for(var Uwe=0;Uwe>24),Xwe=Fwe[3]-Vwe[3]+(Uwe>>24);return[QW,Bwe&KF,Uwe&KF,Xwe&MJ]}function _k(Fwe,Vwe){return Fwe[3]>Vwe[3]?1:Fwe[3]Vwe[2]?1:Fwe[2]Vwe[1]?1:Fwe[1]>23,Fwe[2]=(Fwe[2]<<1|Fwe[1]>>23)&KF,Fwe[1]=Fwe[1]<<1&KF}function Lk(Fwe){Fwe[1]=(Fwe[1]>>>1|Fwe[2]<<23)&KF,Fwe[2]=(Fwe[2]>>>1|Fwe[3]<<23)&KF,Fwe[3]>>>=1}function Rk(Fwe,Vwe){for(var Bwe=0,Uwe=Tk(Fwe),Xwe=Tk(Vwe),Wwe=[QW,0,0,0];0<_k(Uwe,Xwe);)Bwe++,Nk(Xwe);for(;0<=Bwe;)Bwe--,Nk(Wwe),0<=_k(Uwe,Xwe)&&(Wwe[1]++,Uwe=Pk(Uwe,Xwe)),Lk(Xwe);return[0,Wwe,Uwe]}function Ok(Fwe){return Fwe[1]|Fwe[2]<<24}function Mk(Fwe){return 0>Fwe[3]<<16}function Yk(Fwe){var Vwe=-Fwe[1],Bwe=-Fwe[2]+(Vwe>>24),Uwe=-Fwe[3]+(Bwe>>24);return[QW,Vwe&KF,Bwe&KF,Uwe&MJ]}function Vk(Fwe,Vwe){var Bwe=VN(Fwe);Bwe.signedconv&&Mk(Vwe)&&(Bwe.sign=-1,Vwe=Yk(Vwe));var Uwe=Rz,Xwe=Sk(Bwe.base);do{var Wwe=Rk(Vwe,Xwe);Vwe=Wwe[1],Uwe="0123456789abcdef".charAt(Ok(Wwe[2]))+Uwe}while(!$N(Vwe));if(0<=Bwe.prec){Bwe.filler=IH;var qwe=Bwe.prec-Uwe.length;0=Fwe.c.length)return 0;case 0:return Fwe.c.charCodeAt(Vwe);case 4:return Fwe.c[Vwe];}}function Xk(Fwe){return Fwe.l}function Wk(Fwe){var Vwe=0,Bwe=Xk(Fwe),Uwe=10,Xwe=0=Fwe?Fwe-48:65<=Fwe&&90>=Fwe?Fwe-55:97<=Fwe&&122>=Fwe?Fwe-87:-1}function Zk(Fwe){var Vwe=Wk(Fwe),Bwe=Vwe[0],Uwe=Vwe[1],Xwe=Vwe[2],Wwe=Xk(Fwe),qwe=Bwezwe||zwe>=Xwe)&&ON(SX);var Jwe=zwe;for(Bwe++;Bwezwe||zwe>=Xwe)break;Jwe=Xwe*Jwe+zwe,4294967295LV?(Bwe.substr(0,1),Vwe+=Bwe,Bwe=Rz,Vwe+=Fwe.slice(Wwe,zwe)):Bwe+=Fwe.slice(Wwe,zwe),zwe==qwe)break;Wwe=zwe}Uwe>6),Bwe+=String.fromCharCode($V|63&Uwe)):55296>Uwe||Uwe>=JU?Bwe+=String.fromCharCode($W|Uwe>>12,$V|63&Uwe>>6,$V|63&Uwe):56319<=Uwe||Wwe+1==qwe||(Xwe=Fwe.charCodeAt(Wwe+1))JU?Bwe+="\xEF\xBF\xBD":(Wwe++,Uwe=(Uwe<<10)+Xwe-56613888,Bwe+=String.fromCharCode(TW|Uwe>>18,$V|63&Uwe>>12,$V|63&Uwe>>6,$V|63&Uwe)),Bwe.length>Yq&&(Bwe.substr(0,1),Vwe+=Bwe,Bwe=Rz)}return Vwe+Bwe}function $k(Fwe){var Vwe=9;return Y_(Fwe)||(Vwe=8,Fwe=Qk(Fwe)),new X_(Vwe,Fwe,Fwe.length)}function SC(Fwe){Fwe=MN(Fwe);var Vwe=Fwe.length/2,Bwe=Array(Vwe);for(var Uwe=0;Uwe>16;return Bwe}function TC(Fwe){return 4!=Fwe.t&&N_(Fwe),Fwe.c}function PC(Fwe,Vwe,Bwe){var Uwe=6,Xwe=7,Wwe=8,qwe=9;Fwe.lex_default||(Fwe.lex_base=SC(Fwe[1]),Fwe.lex_backtrk=SC(Fwe[2]),Fwe.lex_check=SC(Fwe[5]),Fwe.lex_trans=SC(Fwe[4]),Fwe.lex_default=SC(Fwe[3]));var Jwe=Vwe,Hwe=TC(Bwe[2]),zwe;for(0<=Jwe?(Bwe[Xwe]=Bwe[5]=Bwe[Uwe],Bwe[Wwe]=-1):Jwe=-Jwe-1;;){var Gwe=Fwe.lex_base[Jwe];if(0>Gwe)return-Gwe-1;var Zwe=Fwe.lex_backtrk[Jwe];if(0<=Zwe&&(Bwe[Xwe]=Bwe[Uwe],Bwe[Wwe]=Zwe),Bwe[Uwe]>=Bwe[3]){if(0==Bwe[qwe])return-Jwe-1;zwe=YH}else zwe=Hwe[Bwe[Uwe]],Bwe[Uwe]++;if(Jwe=Fwe.lex_check[Gwe+zwe]==Jwe?Fwe.lex_trans[Gwe+zwe]:Fwe.lex_default[Jwe],!(0>Jwe))zwe==YH&&(Bwe[qwe]=0);else if(Bwe[Uwe]=Bwe[Xwe],-1==Bwe[Wwe])ON($q);else return Bwe[Wwe]}}function _C(Fwe){var Vwe=0;for(var Bwe=Fwe.length-1;0<=Bwe;Bwe--){var Uwe=Fwe[Bwe];Vwe=[0,Uwe,Vwe]}return Vwe}function NC(Fwe,Vwe){var Fwe=0|Fwe+1,Bwe=Array(Fwe);Bwe[0]=0;for(var Uwe=1;Uwe=Xwe){var qwe=IN(Wwe+Uwe);I_(Fwe.file.data,0,qwe,0,Xwe),I_(Bwe,0,qwe,Wwe,Uwe),Fwe.file.data=qwe}return Fwe.offset+=Uwe,Fwe.file.modified(),0}function ZC(Fwe){var Vwe;Vwe=1===Fwe?WC:2===Fwe?XC:JC;var Bwe=QG.fds[Fwe];Bwe.flags.rdonly&&LC(MB+Fwe+" is readonly");var Uwe={file:Bwe.file,offset:Bwe.offset,fd:Fwe,opened:!0,buffer:Rz,output:Vwe};return NZ[Uwe.fd]=Uwe,Uwe}function KC(){var Fwe=0;for(var Vwe in NZ)NZ[Vwe].opened&&(Fwe=[0,NZ[Vwe],Fwe]);return Fwe}function QC(Fwe){throw Fwe}function $C(){QC(QG.Division_by_zero)}function fw(Fwe,Vwe){return 0==Vwe&&$C(),Fwe%Vwe}function Sw(Fwe,Vwe,Bwe,Uwe){for(;;){var Xwe=Fwe.charCodeAt(Vwe);if(Vwe++,Xwe==QW)return;var Wwe=Fwe.charCodeAt(Vwe);Vwe++,Bwe[Xwe+1]=Wwe==QW?Uwe:Bwe[Wwe+1]}}function Tw(Fwe,Vwe,Bwe){for(;;){var Uwe=Fwe.charCodeAt(Vwe);if(Vwe++,Uwe==QW)return;var Xwe=Fwe.charCodeAt(Vwe);Vwe++,Bwe[Uwe+1]=Xwe==QW?-1:Bwe[Xwe+1]}}function Pw(Fwe,Vwe,Bwe){var Uwe=6,Xwe=7,Wwe=8,qwe=9,zwe=10;Fwe.lex_default||(Fwe.lex_base=SC(Fwe[1]),Fwe.lex_backtrk=SC(Fwe[2]),Fwe.lex_check=SC(Fwe[5]),Fwe.lex_trans=SC(Fwe[4]),Fwe.lex_default=SC(Fwe[3])),Fwe.lex_default_code||(Fwe.lex_base_code=SC(Fwe[6]),Fwe.lex_backtrk_code=SC(Fwe[7]),Fwe.lex_check_code=SC(Fwe[10]),Fwe.lex_trans_code=SC(Fwe[9]),Fwe.lex_default_code=SC(Fwe[8])),null==Fwe.lex_code&&(Fwe.lex_code=MN(Fwe[11]));var Hwe=Vwe,Gwe=TC(Bwe[2]),Jwe;for(0<=Hwe?(Bwe[Xwe]=Bwe[5]=Bwe[Uwe],Bwe[Wwe]=-1):Hwe=-Hwe-1;;){var Zwe=Fwe.lex_base[Hwe];if(0>Zwe){var Kwe=Fwe.lex_base_code[Hwe];return Tw(Fwe.lex_code,Kwe,Bwe[zwe]),-Zwe-1}var Qwe=Fwe.lex_backtrk[Hwe];if(0<=Qwe){var Kwe=Fwe.lex_backtrk_code[Hwe];Tw(Fwe.lex_code,Kwe,Bwe[zwe]),Bwe[Xwe]=Bwe[Uwe],Bwe[Wwe]=Qwe}if(Bwe[Uwe]>=Bwe[3]){if(0==Bwe[qwe])return-Hwe-1;Jwe=YH}else Jwe=Gwe[Bwe[Uwe]],Bwe[Uwe]++;var $we=Hwe;if(Hwe=Fwe.lex_check[Zwe+Jwe]==Hwe?Fwe.lex_trans[Zwe+Jwe]:Fwe.lex_default[Hwe],!(0>Hwe)){var eve=Fwe.lex_base_code[$we],Kwe;Kwe=Fwe.lex_check_code[eve+Jwe]==$we?Fwe.lex_trans_code[eve+Jwe]:Fwe.lex_default_code[$we],0>>0>=Fwe.l&&Yw(),Uk(Fwe,Vwe)}function Uw(Fwe,Vwe){return 1-Mw(Fwe,Vwe)}function Xw(Fwe,Vwe,Bwe){if(Bwe&=QW,4!=Fwe.t){if(Vwe==Fwe.c.length)return Fwe.c+=String.fromCharCode(Bwe),Vwe+1==Fwe.l&&(Fwe.t=0),0;N_(Fwe)}return Fwe.c[Vwe]=Bwe,0}function Ww(Fwe,Vwe,Bwe){return Vwe>>>0>=Fwe.l&&Yw(),Xw(Fwe,Vwe,Bwe)}function Jw(){QC(QG.Not_found)}function Zw(Fwe){var Vwe=JP,Bwe=Fwe.toString();return Vwe.process&&Vwe.process.env&&void 0!=Vwe.process.env[Bwe]?$k(Vwe.process.env[Bwe]):void Jw()}function Kw(){var Fwe=new Date^4294967295*Math.random();return[0,Fwe]}function Qw(Fwe){for(var Vwe=1;Fwe&&Fwe.joo_tramp;)Fwe=Fwe.joo_tramp.apply(null,Fwe.joo_args),Vwe++;return Fwe}function $w(Fwe,Vwe){return{joo_tramp:Fwe,joo_args:Vwe}}function Sv(Fwe){return Fwe}function Tv(Fwe){return IZ[Fwe]}function Pv(Fwe){return Fwe instanceof Array?Fwe:JP.RangeError&&Fwe instanceof JP.RangeError&&Fwe.message&&Fwe.message.match(/maximum call stack/i)?Sv(QG.Stack_overflow):JP.InternalError&&Fwe instanceof JP.InternalError&&Fwe.message&&Fwe.message.match(/too much recursion/i)?Sv(QG.Stack_overflow):Fwe instanceof JP.Error?[0,Tv(PV),Fwe]:[0,QG.Failure,$k(Fwe+"")]}function _v(Fwe,Vwe){return 1==Fwe.length?Fwe(Vwe):R_(Fwe,[Vwe])}function Nv(Fwe,Vwe,Bwe){return 2==Fwe.length?Fwe(Vwe,Bwe):R_(Fwe,[Vwe,Bwe])}function Iv(Fwe,Vwe,Bwe,Uwe){return 3==Fwe.length?Fwe(Vwe,Bwe,Uwe):R_(Fwe,[Vwe,Bwe,Uwe])}function Lv(Fwe,Vwe,Bwe,Uwe,Xwe){return 4==Fwe.length?Fwe(Vwe,Bwe,Uwe,Xwe):R_(Fwe,[Vwe,Bwe,Uwe,Xwe])}function Rv(Fwe,Vwe,Bwe,Uwe,Xwe,Wwe){return 5==Fwe.length?Fwe(Vwe,Bwe,Uwe,Xwe,Wwe):R_(Fwe,[Vwe,Bwe,Uwe,Xwe,Wwe])}function Ov(Fwe){if("number"==typeof Fwe)return 0;switch(Fwe[0]){case 0:return[0,Ov(Fwe[1])];case 1:return[1,Ov(Fwe[1])];case 2:return[2,Ov(Fwe[1])];case 3:return[3,Ov(Fwe[1])];case 4:return[4,Ov(Fwe[1])];case 5:return[5,Ov(Fwe[1])];case 6:return[6,Ov(Fwe[1])];case 7:return[7,Ov(Fwe[1])];case 8:var Vwe=Fwe[1];return[8,Vwe,Ov(Fwe[2])];case 9:var Bwe=Fwe[1];return[9,Bwe,Bwe,Ov(Fwe[3])];case 10:return[10,Ov(Fwe[1])];case 11:return[11,Ov(Fwe[1])];case 12:return[12,Ov(Fwe[1])];default:return[13,Ov(Fwe[1])];}}function Mv(Fwe,Vwe){if("number"==typeof Fwe)return Vwe;switch(Fwe[0]){case 0:return[0,Mv(Fwe[1],Vwe)];case 1:return[1,Mv(Fwe[1],Vwe)];case 2:return[2,Mv(Fwe[1],Vwe)];case 3:return[3,Mv(Fwe[1],Vwe)];case 4:return[4,Mv(Fwe[1],Vwe)];case 5:return[5,Mv(Fwe[1],Vwe)];case 6:return[6,Mv(Fwe[1],Vwe)];case 7:return[7,Mv(Fwe[1],Vwe)];case 8:var Bwe=Fwe[1];return[8,Bwe,Mv(Fwe[2],Vwe)];case 9:var Uwe=Fwe[2],Xwe=Fwe[1];return[9,Xwe,Uwe,Mv(Fwe[3],Vwe)];case 10:return[10,Mv(Fwe[1],Vwe)];case 11:return[11,Mv(Fwe[1],Vwe)];case 12:return[12,Mv(Fwe[1],Vwe)];default:return[13,Mv(Fwe[1],Vwe)];}}function Yv(Fwe,Vwe){if("number"==typeof Fwe)return Vwe;switch(Fwe[0]){case 0:return[0,Yv(Fwe[1],Vwe)];case 1:return[1,Yv(Fwe[1],Vwe)];case 2:var Bwe=Fwe[1];return[2,Bwe,Yv(Fwe[2],Vwe)];case 3:var Uwe=Fwe[1];return[3,Uwe,Yv(Fwe[2],Vwe)];case 4:var Xwe=Fwe[3],Wwe=Fwe[2],qwe=Fwe[1];return[4,qwe,Wwe,Xwe,Yv(Fwe[4],Vwe)];case 5:var zwe=Fwe[3],Jwe=Fwe[2],Hwe=Fwe[1];return[5,Hwe,Jwe,zwe,Yv(Fwe[4],Vwe)];case 6:var Gwe=Fwe[3],Zwe=Fwe[2],Kwe=Fwe[1];return[6,Kwe,Zwe,Gwe,Yv(Fwe[4],Vwe)];case 7:var Qwe=Fwe[3],$we=Fwe[2],eve=Fwe[1];return[7,eve,$we,Qwe,Yv(Fwe[4],Vwe)];case 8:var tve=Fwe[3],ave=Fwe[2],nve=Fwe[1];return[8,nve,ave,tve,Yv(Fwe[4],Vwe)];case 9:return[9,Yv(Fwe[1],Vwe)];case 10:return[10,Yv(Fwe[1],Vwe)];case 11:var rve=Fwe[1];return[11,rve,Yv(Fwe[2],Vwe)];case 12:var sve=Fwe[1];return[12,sve,Yv(Fwe[2],Vwe)];case 13:var ive=Fwe[2],ove=Fwe[1];return[13,ove,ive,Yv(Fwe[3],Vwe)];case 14:var lve=Fwe[2],pve=Fwe[1];return[14,pve,lve,Yv(Fwe[3],Vwe)];case 15:return[15,Yv(Fwe[1],Vwe)];case 16:return[16,Yv(Fwe[1],Vwe)];case 17:var dve=Fwe[1];return[17,dve,Yv(Fwe[2],Vwe)];case 18:var cve=Fwe[1];return[18,cve,Yv(Fwe[2],Vwe)];case 19:return[19,Yv(Fwe[1],Vwe)];case 20:var uve=Fwe[2],mve=Fwe[1];return[20,mve,uve,Yv(Fwe[3],Vwe)];case 21:var fve=Fwe[1];return[21,fve,Yv(Fwe[2],Vwe)];case 22:return[22,Yv(Fwe[1],Vwe)];default:var hve=Fwe[1];return[23,hve,Yv(Fwe[2],Vwe)];}}function Vv(Fwe){throw[0,RZ,Fwe]}function Uv(Fwe){throw[0,OZ,Fwe]}function Xv(Fwe,Vwe){return JN(Fwe,Vwe)?Fwe:Vwe}function Wv(Fwe){return 0<=Fwe?Fwe:0|-Fwe}function Jv(Fwe,Vwe){var Bwe=Xk(Fwe),Uwe=Xk(Vwe),Xwe=IN(0|Bwe+Uwe);return I_(Fwe,0,Xwe,0,Bwe),I_(Vwe,0,Xwe,Bwe,Uwe),Xwe}function Zv(Fwe,Vwe){if(Fwe){var Bwe=Fwe[1];return[0,Bwe,Zv(Fwe[2],Vwe)]}return Vwe}function Kv(Fwe){if(Fwe)for(var Vwe=0,Bwe=Fwe,Uwe=Fwe[2],Xwe=Fwe[1];;){if(Bwe){var Vwe=0|Vwe+1,Bwe=Bwe[2];continue}for(var Wwe=NC(Vwe,Xwe),qwe=1,zwe=Uwe;;){if(zwe){var Jwe=zwe[2];Wwe[qwe+1]=zwe[1];var qwe=0|qwe+1,zwe=Jwe;continue}return Wwe}}return[0]}function Qv(Fwe){for(var Vwe=0,Bwe=Fwe;;){if(Bwe){var Vwe=0|Vwe+1,Bwe=Bwe[2];continue}return Vwe}}function $v(Fwe){return Fwe?Fwe[1]:Vv(PK)}function SI(Fwe,Vwe){for(var Bwe=Fwe,Uwe=Vwe;;){if(Bwe){var Xwe=[0,Bwe[1],Uwe],Bwe=Bwe[2],Uwe=Xwe;continue}return Uwe}}function TI(Fwe){return SI(Fwe,0)}function PI(Fwe,Vwe){if(Vwe){var Bwe=Vwe[2],Uwe=_v(Fwe,Vwe[1]);return[0,Uwe,PI(Fwe,Bwe)]}return 0}function _I(Fwe,Vwe){for(var Bwe=Vwe;;){if(Bwe){var Uwe=Bwe[2];_v(Fwe,Bwe[1]);var Bwe=Uwe;continue}return 0}}function NI(Fwe,Vwe,Bwe){for(var Uwe=Vwe,Xwe=Bwe;;){if(Xwe){var Wwe=Xwe[2],Uwe=Nv(Fwe,Uwe,Xwe[1]),Xwe=Wwe;continue}return Uwe}}function II(Fwe,Vwe){for(var Bwe=Fwe,Uwe=Vwe;;){if(0===Bwe)return Uwe;if(Uwe){var Bwe=0|Bwe-1,Uwe=Uwe[2];continue}throw[0,YZ,TK]}}function LI(Fwe){return 0<=Fwe&&!(QWBwe))for(var Uwe=0;;){if(_v(Fwe,Uk(Vwe,Uwe)),Bwe!=Uwe){var Uwe=0|Uwe+1;continue}break}return 0}function KI(Fwe,Vwe,Bwe){var Uwe=PC(Fwe,Vwe,Bwe);if(0<=Uwe){Bwe[11]=Bwe[12];var Xwe=Bwe[12];Bwe[12]=[0,Xwe[1],Xwe[2],Xwe[3],0|Bwe[4]+Bwe[6]]}return Uwe}function QI(Fwe,Vwe,Bwe){var Uwe=Pw(Fwe,Vwe,Bwe);if(0<=Uwe){Bwe[11]=Bwe[12];var Xwe=Bwe[12];Bwe[12]=[0,Xwe[1],Xwe[2],Xwe[3],0|Bwe[4]+Bwe[6]]}return Uwe}function $I(Fwe){return YI(Fwe[2],Fwe[5],0|Fwe[6]-Fwe[5])}function Sj(Fwe,Vwe,Bwe){return YI(Fwe[2],Vwe,0|Bwe-Vwe)}function Tj(Fwe,Vwe){return Vw(Fwe[2],Vwe)}function Pj(Fwe){var Vwe=Fwe[12];return Fwe[12]=[0,Vwe[1],0|Vwe[2]+1,Vwe[4],Vwe[4]],0}function _j(Fwe){function Vwe(fve){return fve?fve[4]:0}function Bwe(fve,hve,yve){var gve=fve?fve[4]:0,bve=yve?yve[4]:0,xve=bve<=gve?0|gve+1:0|bve+1;return[0,fve,hve,yve,xve]}function Uwe(fve,hve,yve){var gve=fve?fve[4]:0,bve=yve?yve[4]:0;if((0|bve+2)>1,Hve=II(Jve,Ive),Gve=_ve(Jve,Ive),Zve=Gve,Kve=_ve(0|vve-Jve,Hve),Qve=0;;){if(Zve){if(Kve){var $ve=Kve[2],eIe=Kve[1],tIe=Zve[2],aIe=Zve[1],nIe=Nv(Ave,aIe,eIe);if(0===nIe){var Zve=tIe,Kve=$ve,Qve=[0,aIe,Qve];continue}if(0>1,Hve=II(Jve,Ive),Gve=Pve(Jve,Ive),Zve=Gve,Kve=Pve(0|vve-Jve,Hve),Qve=0;;){if(Zve){if(Kve){var $ve=Kve[2],eIe=Kve[1],tIe=Zve[2],aIe=Zve[1],nIe=Nv(Ave,aIe,eIe);if(0===nIe){var Zve=tIe,Kve=$ve,Qve=[0,aIe,Qve];continue}if(0<=nIe){var Kve=$ve,Qve=[0,eIe,Qve];continue}var Zve=tIe,Qve=[0,aIe,Qve];continue}return SI(Zve,Qve)}return SI(Kve,Qve)}},Nve=Qv(fve),kve=2<=Nve?Pve(Nve,fve):fve,Cve=function(vve,Ive){if(!(3>>0))switch(vve){case 0:return[0,0,Ive];case 1:if(Ive)return[0,[0,0,Ive[1],0,1],Ive[2]];break;case 2:if(Ive){var jve=Ive[2];if(jve)return[0,[0,[0,0,Ive[1],0,1],jve[1],0,2],jve[2]]}break;default:if(Ive){var Lve=Ive[2];if(Lve){var Dve=Lve[2];if(Dve)return[0,[0,[0,0,Ive[1],0,1],Lve[1],[0,0,Dve[1],0,1],2],Dve[2]]}}}var Rve=0|vve/2,Ove=Cve(Rve,Ive),Mve=Ove[2],Yve=Ove[1];if(Mve){var Fve=Mve[1],Vve=Cve(0|(0|vve-Rve)-1,Mve[2]),Bve=Vve[2];return[0,Bwe(Yve,Fve,Vve[1]),Bve]}throw[0,YZ,$K]};return Cve(Qv(kve),kve)[1]}var wve=Eve[1];return Xwe(wve,Xwe(Tve,Xwe(Sve,Xwe(bve,Wwe(yve)))))}return Xwe(Tve,Xwe(Sve,Xwe(bve,Wwe(yve))))}return Xwe(Sve,Xwe(bve,Wwe(yve)))}return Xwe(bve,Wwe(yve))}return Wwe(yve)}return mve}]}function Nj(){throw bCe}function Ij(Fwe){var Vwe=Fwe[1];Fwe[1]=Nj;try{var Bwe=_v(Vwe,0);return Fwe[1]=Bwe,Nw(Fwe,Mq),Bwe}catch(Uwe){throw Uwe=Pv(Uwe),Fwe[1]=function(){throw Uwe},Uwe}}function Lj(Fwe){var Vwe=1<=Fwe?Fwe:1,Bwe=gCeFwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 1:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 2:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 3:if("number"!=typeof Bwe&&13===Bwe[0]){var AIe=NL(EIe,Bwe[1]);return[0,[23,3,AIe[1]],AIe[2]]}throw SCe;default:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);}else switch(TIe[0]){case 0:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 1:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 2:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 3:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 4:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 5:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 6:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);case 7:return 50>Fwe?_L(1+Fwe,[7,TIe[1],TIe[2]],EIe,Bwe):$w(_L,[0,[7,TIe[1],TIe[2]],EIe,Bwe]);case 8:var PIe=TIe[1],_Ie=IL(TIe[2],EIe,Bwe),NIe=_Ie[2];return[0,[23,[8,PIe,_Ie[1]],NIe[1]],NIe[2]];case 9:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);default:return 50>Fwe?_L(1+Fwe,TIe,EIe,Bwe):$w(_L,[0,TIe,EIe,Bwe]);}}throw SCe}function _L(Fwe,Vwe,Bwe,Uwe){var Xwe=NL(Bwe,Uwe);return[0,[23,Vwe,Xwe[1]],Xwe[2]]}function NL(Fwe,Vwe){return Qw(PL(0,Fwe,Vwe))}function IL(Fwe,Vwe,Bwe){if("number"==typeof Fwe)return[0,0,NL(Vwe,Bwe)];switch(Fwe[0]){case 0:if("number"!=typeof Bwe&&0===Bwe[0]){var Uwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[0,Uwe[1]],Uwe[2]]}break;case 1:if("number"!=typeof Bwe&&1===Bwe[0]){var Xwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[1,Xwe[1]],Xwe[2]]}break;case 2:if("number"!=typeof Bwe&&2===Bwe[0]){var Wwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[2,Wwe[1]],Wwe[2]]}break;case 3:if("number"!=typeof Bwe&&3===Bwe[0]){var qwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[3,qwe[1]],qwe[2]]}break;case 4:if("number"!=typeof Bwe&&4===Bwe[0]){var zwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[4,zwe[1]],zwe[2]]}break;case 5:if("number"!=typeof Bwe&&5===Bwe[0]){var Jwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[5,Jwe[1]],Jwe[2]]}break;case 6:if("number"!=typeof Bwe&&6===Bwe[0]){var Hwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[6,Hwe[1]],Hwe[2]]}break;case 7:if("number"!=typeof Bwe&&7===Bwe[0]){var Gwe=IL(Fwe[1],Vwe,Bwe[1]);return[0,[7,Gwe[1]],Gwe[2]]}break;case 8:if("number"!=typeof Bwe&&8===Bwe[0]){var Zwe=Bwe[1],Kwe=Bwe[2],Qwe=Fwe[2];if(_w([0,Fwe[1]],[0,Zwe]))throw SCe;var $we=IL(Qwe,Vwe,Kwe);return[0,[8,Zwe,$we[1]],$we[2]]}break;case 9:if("number"!=typeof Bwe&&9===Bwe[0]){var eve=Bwe[2],tve=Bwe[1],ave=Bwe[3],nve=Fwe[3],rve=Fwe[2],sve=Fwe[1],ive=[0,Ov(tve)];if(_w([0,Ov(sve)],ive))throw SCe;var ove=[0,Ov(eve)];if(_w([0,Ov(rve)],ove))throw SCe;var lve=Qj($j(Kj(tve),eve)),pve=lve[4];_v(lve[2],0),_v(pve,0);var dve=IL(Ov(nve),Vwe,ave),cve=dve[2];return[0,[9,tve,eve,Kj(dve[1])],cve]}break;case 10:if("number"!=typeof Bwe&&10===Bwe[0]){var uve=IL(Fwe[1],Vwe,Bwe[1]);return[0,[10,uve[1]],uve[2]]}break;case 11:if("number"!=typeof Bwe&&11===Bwe[0]){var mve=IL(Fwe[1],Vwe,Bwe[1]);return[0,[11,mve[1]],mve[2]]}break;case 12:if("number"!=typeof Bwe&&12===Bwe[0]){var fve=IL(Fwe[1],Vwe,Bwe[1]);return[0,[12,fve[1]],fve[2]]}break;default:if("number"!=typeof Bwe&&13===Bwe[0]){var hve=IL(Fwe[1],Vwe,Bwe[1]);return[0,[13,hve[1]],hve[2]]}}throw SCe}function LL(Fwe,Vwe,Bwe){var Uwe=Xk(Bwe),Xwe=0<=Vwe?Fwe:0,Wwe=Wv(Vwe);if(Wwe<=Uwe)return Bwe;var qwe=2===Xwe?48:32,zwe=OI(Wwe,qwe);switch(Xwe){case 0:UI(Bwe,0,zwe,0,Uwe);break;case 1:UI(Bwe,0,zwe,0|Wwe-Uwe,Uwe);break;default:if(0>>0?1:0:65<=Xwe?0:1;else{if(32===Xwe)var qwe=1;else if(43<=Xwe)switch(0|Xwe+PB){case 5:if(Uwe<(0|Bwe+2)&&1qwe))for(var zwe=0;;){var Jwe=Uk(Fwe,zwe),Hwe=14<=Jwe?34===Jwe?1:92===Jwe?1:0:11<=Jwe?13<=Jwe?1:0:8<=Jwe?1:0,Gwe=Hwe?2:Kk(Jwe)?1:4;if(Wwe[1]=0|Wwe[1]+Gwe,qwe!=zwe){var zwe=0|zwe+1;continue}break}if(Wwe[1]===Xk(Fwe))var Zwe=MI(Fwe);else{var Kwe=IN(Wwe[1]);Wwe[1]=0;var Qwe=0|Xk(Fwe)-1;if(!(0>Qwe))for(var $we=0;;){var eve=Uk(Fwe,$we),tve=0|eve-34;if(!(58>>0))var ave=56<(0|tve-1)>>>0?(Xw(Kwe,Wwe[1],92),Wwe[1]++,Xw(Kwe,Wwe[1],eve),0):1;else if(-20<=tve)var ave=1;else{switch(0|tve+34){case 8:Xw(Kwe,Wwe[1],92),Wwe[1]++,Xw(Kwe,Wwe[1],98);var nve=1;break;case 9:Xw(Kwe,Wwe[1],92),Wwe[1]++,Xw(Kwe,Wwe[1],WH);var nve=1;break;case 10:Xw(Kwe,Wwe[1],92),Wwe[1]++,Xw(Kwe,Wwe[1],WU);var nve=1;break;case 13:Xw(Kwe,Wwe[1],92),Wwe[1]++,Xw(Kwe,Wwe[1],MG);var nve=1;break;default:var ave=1,nve=0;}if(nve)var ave=0}if(ave&&(Kk(eve)?Xw(Kwe,Wwe[1],eve):(Xw(Kwe,Wwe[1],92),Wwe[1]++,Xw(Kwe,Wwe[1],0|48+(0|eve/Jz)),Wwe[1]++,Xw(Kwe,Wwe[1],0|48+(0|(0|eve/10)%10)),Wwe[1]++,Xw(Kwe,Wwe[1],0|48+(0|eve%10)))),Wwe[1]++,Qwe!=$we){var $we=0|$we+1;continue}break}var Zwe=Kwe}}else var Zwe=Fwe;return HI(Zwe,Mee)}}function ML(Fwe,Vwe){switch(Fwe){case 0:var Bwe=cee;break;case 1:var Bwe=uee;break;case 2:var Bwe=mee;break;case 3:var Bwe=fee;break;case 4:var Bwe=hee;break;case 5:var Bwe=yee;break;case 6:var Bwe=gee;break;case 7:var Bwe=bee;break;case 8:var Bwe=xee;break;case 9:var Bwe=See;break;case 10:var Bwe=Eee;break;case 11:var Bwe=Tee;break;default:var Bwe=Aee;}return HI(JI(1,Vwe),Bwe)}function YL(Fwe,Vwe){switch(Fwe){case 0:var Bwe=Pee;break;case 1:var Bwe=_ee;break;case 2:var Bwe=Nee;break;case 3:var Bwe=kee;break;case 4:var Bwe=Cee;break;case 5:var Bwe=wee;break;case 6:var Bwe=vee;break;case 7:var Bwe=Iee;break;case 8:var Bwe=jee;break;case 9:var Bwe=Lee;break;case 10:var Bwe=Dee;break;case 11:var Bwe=Ree;break;default:var Bwe=Oee;}return WN(Bwe,Vwe)}function VL(Fwe,Vwe){return WN(ML(Fwe,YF),Vwe)}function UL(Fwe,Vwe){return WN(ML(Fwe,WU),Vwe)}function XL(Fwe,Vwe){return Vk(ML(Fwe,76),Vwe)}function WL(Fwe,Vwe,Bwe){var Uwe=Wv(Wv(Vwe));if(15===Fwe)var Xwe=$z;else{switch(Fwe){case 15:var Wwe=70;break;case 0:case 1:case 2:var Wwe=Qq;break;case 3:case 4:case 5:var Wwe=UW;break;case 6:case 7:case 8:var Wwe=69;break;case 9:case 10:case 11:var Wwe=$z;break;default:var Wwe=71;}var Xwe=Wwe}var qwe=Vj(16);Xj(qwe,37);1===Fwe||4===Fwe||7===Fwe||10===Fwe||13===Fwe?Xj(qwe,43):2===Fwe||5===Fwe||8===Fwe||11===Fwe||14===Fwe?Xj(qwe,32):void 0;Xj(qwe,46),Wj(qwe,W_(Rz+Uwe)),Xj(qwe,Xwe);var zwe=XN(Jj(qwe),Bwe);if(15===Fwe){var Jwe=$_(Bwe),Hwe=Xk(zwe);if(3===Jwe)return 0>Bwe?pee:dee;if(4<=Jwe)return oee;for(var Gwe=0;;){if(Gwe===Hwe)var Zwe=0;else{var Kwe=0|Vw(zwe,Gwe)-46,Qwe=23>>0?55==Kwe?1:0:21<(0|Kwe-1)>>>0?1:0;if(!Qwe){var Gwe=0|Gwe+1;continue}var Zwe=1}return Zwe?zwe:Jv(zwe,lee)}}return zwe}function JL(Fwe,Vwe,Bwe,Uwe,Xwe){for(var Wwe=Vwe,qwe=Uwe,zwe=Xwe;;){if("number"==typeof zwe)return Nv(Wwe,Bwe,qwe);switch(zwe[0]){case 0:var Jwe=zwe[1];return function(kve){return SD(Wwe,Bwe,[5,qwe,kve],Jwe)};case 1:var Hwe=zwe[1];return function(kve){return SD(Wwe,Bwe,[4,qwe,HI(RI(kve),iee)],Hwe)};case 2:var Gwe=zwe[2],Zwe=zwe[1];return 50>Fwe?QL(1+Fwe,Wwe,Bwe,qwe,Gwe,Zwe,function(kve){return kve}):$w(QL,[0,Wwe,Bwe,qwe,Gwe,Zwe,function(kve){return kve}]);case 3:return 50>Fwe?QL(1+Fwe,Wwe,Bwe,qwe,zwe[2],zwe[1],OL):$w(QL,[0,Wwe,Bwe,qwe,zwe[2],zwe[1],OL]);case 4:return 50>Fwe?$L(1+Fwe,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],YL,zwe[1]):$w($L,[0,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],YL,zwe[1]]);case 5:return 50>Fwe?$L(1+Fwe,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],VL,zwe[1]):$w($L,[0,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],VL,zwe[1]]);case 6:return 50>Fwe?$L(1+Fwe,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],UL,zwe[1]):$w($L,[0,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],UL,zwe[1]]);case 7:return 50>Fwe?$L(1+Fwe,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],XL,zwe[1]):$w($L,[0,Wwe,Bwe,qwe,zwe[4],zwe[2],zwe[3],XL,zwe[1]]);case 8:var Kwe=zwe[4],Qwe=zwe[3],$we=zwe[2],eve=zwe[1];if("number"==typeof $we){if("number"==typeof Qwe)return 0===Qwe?function(kve){return SD(Wwe,Bwe,[4,qwe,WL(eve,xCe,kve)],Kwe)}:function(kve,Cve){return SD(Wwe,Bwe,[4,qwe,WL(eve,kve,Cve)],Kwe)};var tve=Qwe[1];return function(kve){return SD(Wwe,Bwe,[4,qwe,WL(eve,tve,kve)],Kwe)}}if(0===$we[0]){var ave=$we[2],nve=$we[1];if("number"==typeof Qwe)return 0===Qwe?function(kve){return SD(Wwe,Bwe,[4,qwe,LL(nve,ave,WL(eve,xCe,kve))],Kwe)}:function(kve,Cve){return SD(Wwe,Bwe,[4,qwe,LL(nve,ave,WL(eve,kve,Cve))],Kwe)};var rve=Qwe[1];return function(kve){return SD(Wwe,Bwe,[4,qwe,LL(nve,ave,WL(eve,rve,kve))],Kwe)}}var sve=$we[1];if("number"==typeof Qwe)return 0===Qwe?function(kve,Cve){return SD(Wwe,Bwe,[4,qwe,LL(sve,kve,WL(eve,xCe,Cve))],Kwe)}:function(kve,Cve,wve){return SD(Wwe,Bwe,[4,qwe,LL(sve,kve,WL(eve,Cve,wve))],Kwe)};var ive=Qwe[1];return function(kve,Cve){return SD(Wwe,Bwe,[4,qwe,LL(sve,kve,WL(eve,ive,Cve))],Kwe)};case 9:var ove=zwe[1];return function(kve){var Cve=kve?ZZ:KZ;return SD(Wwe,Bwe,[4,qwe,Cve],ove)};case 10:var qwe=[7,qwe],zwe=zwe[1];continue;case 11:var qwe=[2,qwe,zwe[1]],zwe=zwe[2];continue;case 12:var qwe=[3,qwe,zwe[1]],zwe=zwe[2];continue;case 13:var lve=zwe[3],pve=zwe[2],dve=Vj(16);Zj(dve,pve);var cve=Jj(dve);return function(){return SD(Wwe,Bwe,[4,qwe,cve],lve)};case 14:var uve=zwe[3],mve=zwe[2];return function(kve){var Cve=kve[1],wve=NL(Cve,Ov(Kj(mve)));if("number"==typeof wve[2])return SD(Wwe,Bwe,qwe,Yv(wve[1],uve));throw SCe};case 15:var fve=zwe[1];return function(kve,Cve){return SD(Wwe,Bwe,[6,qwe,function(wve){return Nv(kve,wve,Cve)}],fve)};case 16:var hve=zwe[1];return function(kve){return SD(Wwe,Bwe,[6,qwe,kve],hve)};case 17:var qwe=[0,qwe,zwe[1]],zwe=zwe[2];continue;case 18:var yve=zwe[1];if(0===yve[0]){var gve=zwe[2],bve=yve[1][1],Wwe=function(kve,Cve,wve){return function(vve,Ive){return SD(Cve,vve,[1,kve,[0,Ive]],wve)}}(qwe,Wwe,gve),qwe=0,zwe=bve;continue}var xve=zwe[2],Sve=yve[1][1],Wwe=function(kve,Cve,wve){return function(vve,Ive){return SD(Cve,vve,[1,kve,[1,Ive]],wve)}}(qwe,Wwe,xve),qwe=0,zwe=Sve;continue;case 19:throw[0,YZ,Q$];case 20:var Eve=zwe[3],Tve=[8,qwe,$$];return function(){return SD(Wwe,Bwe,Tve,Eve)};case 21:var Ave=zwe[2];return function(kve){return SD(Wwe,Bwe,[4,qwe,WN(K$,kve)],Ave)};case 22:var Pve=zwe[1];return function(kve){return SD(Wwe,Bwe,[5,qwe,kve],Pve)};default:var _ve=zwe[2],Nve=zwe[1];if("number"==typeof Nve)switch(Nve){case 0:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 1:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 2:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 3:throw[0,YZ,eee];default:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);}else switch(Nve[0]){case 0:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 1:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 2:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 3:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 4:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 5:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 6:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 7:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);case 8:return 50>Fwe?ZL(1+Fwe,Wwe,Bwe,qwe,Nve[2],_ve):$w(ZL,[0,Wwe,Bwe,qwe,Nve[2],_ve]);case 9:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);default:return 50>Fwe?KL(1+Fwe,Wwe,Bwe,qwe,_ve):$w(KL,[0,Wwe,Bwe,qwe,_ve]);}}}}function ZL(Fwe,Vwe,Bwe,Uwe,Xwe,Wwe){if("number"==typeof Xwe)return 50>Fwe?KL(1+Fwe,Vwe,Bwe,Uwe,Wwe):$w(KL,[0,Vwe,Bwe,Uwe,Wwe]);switch(Xwe[0]){case 0:var qwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,qwe,Wwe)};case 1:var zwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,zwe,Wwe)};case 2:var Jwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,Jwe,Wwe)};case 3:var Hwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,Hwe,Wwe)};case 4:var Gwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,Gwe,Wwe)};case 5:var Zwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,Zwe,Wwe)};case 6:var Kwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,Kwe,Wwe)};case 7:var Qwe=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,Qwe,Wwe)};case 8:var $we=Xwe[2];return function(){return TD(Vwe,Bwe,Uwe,$we,Wwe)};case 9:var eve=Xwe[3],tve=Xwe[2],ave=$j(Kj(Xwe[1]),tve);return function(){return TD(Vwe,Bwe,Uwe,Mv(ave,eve),Wwe)};case 10:var nve=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,nve,Wwe)};case 11:var rve=Xwe[1];return function(){return TD(Vwe,Bwe,Uwe,rve,Wwe)};case 12:throw[0,YZ,tee];default:throw[0,YZ,aee];}}function KL(Fwe,Vwe,Bwe,Uwe,Xwe){return 50>Fwe?JL(1+Fwe,Vwe,Bwe,[8,Uwe,nee],Xwe):$w(JL,[0,Vwe,Bwe,[8,Uwe,nee],Xwe])}function QL(Fwe,Vwe,Bwe,Uwe,Xwe,Wwe,qwe){if("number"==typeof Wwe)return function(Gwe){return SD(Vwe,Bwe,[4,Uwe,_v(qwe,Gwe)],Xwe)};if(0===Wwe[0]){var zwe=Wwe[2],Jwe=Wwe[1];return function(Gwe){return SD(Vwe,Bwe,[4,Uwe,LL(Jwe,zwe,_v(qwe,Gwe))],Xwe)}}var Hwe=Wwe[1];return function(Gwe,Zwe){return SD(Vwe,Bwe,[4,Uwe,LL(Hwe,Gwe,_v(qwe,Zwe))],Xwe)}}function $L(Fwe,Vwe,Bwe,Uwe,Xwe,Wwe,qwe,zwe,Jwe){if("number"==typeof Wwe){if("number"==typeof qwe)return 0===qwe?function(eve){return SD(Vwe,Bwe,[4,Uwe,Nv(zwe,Jwe,eve)],Xwe)}:function(eve,tve){return SD(Vwe,Bwe,[4,Uwe,RL(eve,Nv(zwe,Jwe,tve))],Xwe)};var Hwe=qwe[1];return function(eve){return SD(Vwe,Bwe,[4,Uwe,RL(Hwe,Nv(zwe,Jwe,eve))],Xwe)}}if(0===Wwe[0]){var Gwe=Wwe[2],Zwe=Wwe[1];if("number"==typeof qwe)return 0===qwe?function(eve){return SD(Vwe,Bwe,[4,Uwe,LL(Zwe,Gwe,Nv(zwe,Jwe,eve))],Xwe)}:function(eve,tve){return SD(Vwe,Bwe,[4,Uwe,LL(Zwe,Gwe,RL(eve,Nv(zwe,Jwe,tve)))],Xwe)};var Kwe=qwe[1];return function(eve){return SD(Vwe,Bwe,[4,Uwe,LL(Zwe,Gwe,RL(Kwe,Nv(zwe,Jwe,eve)))],Xwe)}}var Qwe=Wwe[1];if("number"==typeof qwe)return 0===qwe?function(eve,tve){return SD(Vwe,Bwe,[4,Uwe,LL(Qwe,eve,Nv(zwe,Jwe,tve))],Xwe)}:function(eve,tve,ave){return SD(Vwe,Bwe,[4,Uwe,LL(Qwe,eve,RL(tve,Nv(zwe,Jwe,ave)))],Xwe)};var $we=qwe[1];return function(eve,tve){return SD(Vwe,Bwe,[4,Uwe,LL(Qwe,eve,RL($we,Nv(zwe,Jwe,tve)))],Xwe)}}function SD(Fwe,Vwe,Bwe,Uwe){return Qw(JL(0,Fwe,Vwe,Bwe,Uwe))}function TD(Fwe,Vwe,Bwe,Uwe,Xwe){return Qw(ZL(0,Fwe,Vwe,Bwe,Uwe,Xwe))}function PD(Fwe,Vwe){for(var Bwe=Vwe;;){if("number"==typeof Bwe)return 0;switch(Bwe[0]){case 0:var Uwe=Bwe[2],Xwe=Bwe[1];if("number"==typeof Uwe)switch(Uwe){case 0:var Wwe=Yee;break;case 1:var Wwe=Fee;break;case 2:var Wwe=Vee;break;case 3:var Wwe=Bee;break;case 4:var Wwe=Uee;break;case 5:var Wwe=Xee;break;default:var Wwe=Wee;}else switch(Uwe[0]){case 0:var Wwe=Uwe[1];break;case 1:var Wwe=Uwe[1];break;default:var Wwe=Jv(qee,JI(1,Uwe[1]));}return PD(Fwe,Xwe),Yj(Fwe,Wwe);case 1:var qwe=Bwe[2],zwe=Bwe[1];if(0===qwe[0]){var Jwe=qwe[1];PD(Fwe,zwe),Yj(Fwe,ree);var Bwe=Jwe;continue}var Hwe=qwe[1];PD(Fwe,zwe),Yj(Fwe,see);var Bwe=Hwe;continue;case 6:var Gwe=Bwe[2];return PD(Fwe,Bwe[1]),Yj(Fwe,_v(Gwe,0));case 7:var Bwe=Bwe[1];continue;case 8:var Zwe=Bwe[2];return PD(Fwe,Bwe[1]),Uv(Zwe);case 2:case 4:var Kwe=Bwe[2];return PD(Fwe,Bwe[1]),Yj(Fwe,Kwe);default:var Qwe=Bwe[2];return PD(Fwe,Bwe[1]),Mj(Fwe,Qwe);}}}function _D(Fwe){var Vwe=Fwe[1];return SD(function(Bwe,Uwe){var Xwe=Lj(64);return PD(Xwe,Uwe),Rj(Xwe)},0,0,Vwe)}function ND(Fwe){return ECe[1]=[0,Fwe,ECe[1]],0}function ID(Fwe,Vwe){for(var Bwe=Fwe?Fwe[1]:NCe,Uwe=16;;){if(!(Vwe<=Uwe)&&!(yCe<(0|2*Uwe))){var Uwe=0|2*Uwe;continue}if(Bwe){var Xwe=Iw(kCe),Wwe=Mq===Xwe?kCe[1]:Kq===Xwe?Ij(kCe):kCe;Wwe[2]=0|(0|Wwe[2]+1)%55;var qwe=Wwe[2],zwe=Q_(Wwe[1],qwe)[qwe+1],Jwe=0|(0|Wwe[2]+24)%55,Hwe=(0|Q_(Wwe[1],Jwe)[Jwe+1]+(zwe^31&(0|zwe>>>25)))&RU,Gwe=Wwe[2];Q_(Wwe[1],Gwe)[Gwe+1]=Hwe;var Zwe=Hwe}else var Zwe=0;return[0,0,NC(Uwe,0),Zwe,Uwe]}}function LD(Fwe,Vwe){return 3<=Fwe.length-1?SZ(10,Jz,Fwe[3],Vwe)&(0|Fwe[2].length-1-1):fw(QN(10,Jz,Vwe),Fwe[2].length-1)}function RD(Fwe,Vwe,Bwe){var Uwe=LD(Fwe,Vwe),Xwe=[0,Vwe,Bwe,Q_(Fwe[2],Uwe)[Uwe+1]];Q_(Fwe[2],Uwe)[Uwe+1]=Xwe,Fwe[1]=0|Fwe[1]+1;var Wwe=Fwe[2].length-1<<1Kwe))for(var Qwe=0;;){if(Zwe(Q_(qwe,Qwe)[Qwe+1]),Kwe!=Qwe){var Qwe=0|Qwe+1;continue}break}var $we=0}else var $we=Hwe;return $we}return Wwe}function OD(Fwe,Vwe){var Bwe=LD(Fwe,Vwe),Uwe=Q_(Fwe[2],Bwe)[Bwe+1];if(Uwe){var Xwe=Uwe[3],Wwe=Uwe[2];if(0===NN(Vwe,Uwe[1]))return Wwe;if(Xwe){var qwe=Xwe[3],zwe=Xwe[2];if(0===NN(Vwe,Xwe[1]))return zwe;if(qwe){var Jwe=qwe[3],Hwe=qwe[2];if(0===NN(Vwe,qwe[1]))return Hwe;for(var Gwe=Jwe;;){if(Gwe){var Zwe=Gwe[3],Kwe=Gwe[2];if(0===NN(Vwe,Gwe[1]))return Kwe;var Gwe=Zwe;continue}throw MZ}}throw MZ}throw MZ}throw MZ}function MD(Fwe){return Fwe===vCe?0:1}function YD(Fwe,Vwe,Bwe){var Uwe=Bwe[4],Xwe=Xv(0,0|Bwe[4]-Bwe[3]);return[0,Fwe,[0,Vwe[2],0|Vwe[4]-Vwe[3],Vwe[4]],[0,Bwe[2],Xwe,Uwe]]}function VD(Fwe,Vwe){return[0,Fwe[1],Fwe[2],Vwe[3]]}function UD(Fwe){return"number"==typeof Fwe?ste:Fwe[1]}function XD(Fwe){if("number"==typeof Fwe)return 1;switch(Fwe[0]){case 0:return 2;case 3:return 4;default:return 3;}}function WD(Fwe,Vwe){return NN([0,Fwe[1],Fwe[2]],[0,Vwe[1],Vwe[2]])}function JD(Fwe){function Vwe(qIe,zIe){var JIe=Kv(PI(qIe,zIe));return _v(Fwe[4],JIe)}function Bwe(qIe){return _v(Fwe[5],qIe)}function Uwe(qIe,zIe){return zIe?_v(qIe,zIe[1]):Fwe[6]}function Xwe(qIe){var zIe=[0,Aue,Bwe(qIe[2])],JIe=[0,[0,Pue,Bwe(qIe[1])],zIe];return _v(Fwe[3],JIe)}function Wwe(qIe){var zIe=qIe[1];if(zIe)var JIe=zIe[1],HIe="number"==typeof JIe?_v(Fwe[1],xue):_v(Fwe[1],JIe[1]),GIe=HIe;else var GIe=Fwe[6];var ZIe=[0,Sue,Xwe(qIe[3])],KIe=[0,[0,Tue,GIe],[0,Eue,Xwe(qIe[2])],ZIe];return _v(Fwe[3],KIe)}function qwe(qIe,zIe,JIe){var HIe=Bwe(zIe[3][3]),GIe=[0,Bwe(zIe[2][3]),HIe],ZIe=[0,yue,_v(Fwe[4],GIe)],KIe=[0,gue,Wwe(zIe)],QIe=[0,[0,bue,_v(Fwe[1],qIe)],KIe,ZIe],$Ie=QIe.length-1;if(0==$Ie)var eje=JIe.length-1,tje=0==eje?[0]:T_(JIe,0,eje);else var tje=0==JIe.length-1?T_(QIe,0,$Ie):$P(QIe,JIe);return _v(Fwe[3],tje)}function zwe(qIe){return Vwe(Mve,qIe)}function Jwe(qIe,zIe){var JIe=zIe[2],HIe=zIe[1];if("number"==typeof JIe)return 0===JIe?qwe(Gae,HIe,[0]):qwe(Zae,HIe,[0]);switch(JIe[0]){case 0:return 50>qIe?eve(1+qIe,[0,HIe,JIe[1]]):$w(eve,[0,[0,HIe,JIe[1]]]);case 1:return qwe(Qae,HIe,[0,[0,Kae,Yve(JIe[1][1])]]);case 2:var GIe=JIe[1],ZIe=[0,$ae,Uwe(Mve,GIe[3])],KIe=[0,ene,Mve(GIe[2])];return qwe(ane,HIe,[0,[0,tne,Yve(GIe[1])],KIe,ZIe]);case 3:var QIe=JIe[1],$Ie=[0,nne,Mve(QIe[2])];return qwe(sne,HIe,[0,[0,rne,Vve(QIe[1])],$Ie]);case 4:return qwe(one,HIe,[0,[0,ine,Uwe(Vve,JIe[1][1])]]);case 5:return qwe(pne,HIe,[0,[0,lne,Uwe(Vve,JIe[1][1])]]);case 6:var eje=JIe[1],tje=[0,dne,Mve(eje[2])];return qwe(une,HIe,[0,[0,cne,Yve(eje[1])],tje]);case 7:return 50>qIe?ive(1+qIe,[0,HIe,JIe[1]]):$w(ive,[0,[0,HIe,JIe[1]]]);case 8:var aje=JIe[1],nje=[0,mne,Vwe(Uve,aje[2])];return qwe(hne,HIe,[0,[0,fne,Yve(aje[1])],nje]);case 9:return qwe(gne,HIe,[0,[0,yne,Uwe(Yve,JIe[1][1])]]);case 10:return qwe(xne,HIe,[0,[0,bne,Yve(JIe[1][1])]]);case 11:var rje=JIe[1],sje=[0,Sne,Uwe(Wve,rje[3])],ije=[0,Ene,Uwe(Xve,rje[2])];return qwe(Ane,HIe,[0,[0,Tne,Wve(rje[1])],ije,sje]);case 12:var oje=JIe[1],lje=[0,Pne,Mve(oje[2])];return qwe(Nne,HIe,[0,[0,_ne,Yve(oje[1])],lje]);case 13:var pje=JIe[1],dje=[0,kne,Yve(pje[2])];return qwe(wne,HIe,[0,[0,Cne,Mve(pje[1])],dje]);case 14:var cje=JIe[1],uje=function(TLe){return 0===TLe[0]?uIe(TLe[1]):Yve(TLe[1])},mje=[0,vne,Mve(cje[4])],fje=[0,Ine,Uwe(Yve,cje[3])],hje=[0,jne,Uwe(Yve,cje[2])];return qwe(Dne,HIe,[0,[0,Lne,Uwe(uje,cje[1])],hje,fje,mje]);case 15:var yje=JIe[1],gje=yje[1],bje=0===gje[0]?uIe(gje[1]):Yve(gje[1]),xje=[0,Rne,_v(Fwe[2],yje[4])],Sje=[0,One,Mve(yje[3])];return qwe(Fne,HIe,[0,[0,Yne,bje],[0,Mne,Yve(yje[2])],Sje,xje]);case 16:var Eje=JIe[1],Tje=Eje[4]?Vne:Bne,Aje=Eje[1],Pje=0===Aje[0]?uIe(Aje[1]):Yve(Aje[1]),_je=[0,Une,Mve(Eje[3])];return qwe(Tje,HIe,[0,[0,Wne,Pje],[0,Xne,Yve(Eje[2])],_je]);case 17:var Nje=JIe[1],kje=Nje[3],Cje=0===kje[0]?Wve(kje[1]):Yve(kje[1]),wje=[0,Lie,Uwe(AIe,Nje[9])],vje=[0,Die,Uwe(TIe,Nje[8])],Ije=[0,Rie,_v(Fwe[2],Nje[7])],jje=[0,Oie,Uwe(WIe,Nje[6])],Lje=[0,Mie,_v(Fwe[2],Nje[5])],Dje=[0,Yie,_v(Fwe[2],Nje[4])],Rje=[0,Vie,nIe(Nje[2])];return qwe(Uie,HIe,[0,[0,Bie,Uwe(Vve,Nje[1])],Rje,[0,Fie,Cje],Dje,Lje,jje,Ije,vje,wje]);case 18:return 50>qIe?Tve(1+qIe,[0,HIe,JIe[1]]):$w(Tve,[0,[0,HIe,JIe[1]]]);case 19:var Oje=JIe[1],Mje=[0,Loe,Vwe(Yve,Oje[7])],Yje=[0,Doe,Vwe(Kve,Oje[6])],Fje=[0,Roe,Uwe(_Ie,Oje[5])],Vje=[0,Ooe,Uwe(AIe,Oje[4])],Bje=[0,Moe,Uwe(Yve,Oje[3])],Uje=[0,Yoe,Qve(Oje[2])];return qwe(Voe,HIe,[0,[0,Foe,Uwe(Vve,Oje[1])],Uje,Bje,Vje,Fje,Yje,Mje]);case 20:return 50>qIe?dve(1+qIe,[0,HIe,JIe[1]]):$w(dve,[0,[0,HIe,JIe[1]]]);case 21:return 50>qIe?tve(1+qIe,[0,HIe,JIe[1]]):$w(tve,[0,[0,HIe,JIe[1]]]);case 22:return 50>qIe?ave(1+qIe,[0,HIe,JIe[1]]):$w(ave,[0,[0,HIe,JIe[1]]]);case 23:return 50>qIe?nve(1+qIe,[0,HIe,JIe[1]]):$w(nve,[0,[0,HIe,JIe[1]]]);case 24:var Xje=JIe[1],Wje=Xje[1],qje=0===Wje[0]?Vve(Wje[1]):pIe(Wje[1]),zje=0===Xje[3][0]?_v(Fwe[1],qne):_v(Fwe[1],zne);return qwe(Zne,HIe,[0,[0,Gne,qje],[0,Hne,Wve(Xje[2])],[0,Jne,zje]]);case 25:return qwe(Qne,HIe,[0,[0,Kne,TIe(JIe[1])]]);case 26:var Jje=JIe[1],Hje=Jje[3];if(Hje){var Gje=Hje[1];if(0!==Gje[0]&&!Gje[2])return qwe(ere,HIe,[0,[0,$ne,Uwe(pIe,Jje[4])]])}var Zje=Jje[2];if(Zje){var Kje=Zje[1];switch(Kje[0]){case 0:var Qje=qve(Kje[1]);break;case 1:var Qje=zve(Kje[1]);break;case 2:var Qje=Jve(Kje[1]);break;case 3:var Qje=hIe(Kje[1]);break;case 4:var Qje=Zve(Kje[1]);break;default:var Qje=eIe(Kje[1]);}var $je=Qje}else var $je=Fwe[6];var eLe=[0,tre,Uwe(pIe,Jje[4])],tLe=[0,are,Gve(Jje[3])];return qwe(sre,HIe,[0,[0,rre,_v(Fwe[2],Jje[1])],[0,nre,$je],tLe,eLe]);case 27:var aLe=JIe[1],nLe=aLe[2];if(nLe){var rLe=nLe[1];if(0!==rLe[0]&&!rLe[2]){var sLe=Hve(aLe[4]),iLe=[0,ire,_v(Fwe[1],sLe)];return qwe(lre,HIe,[0,[0,ore,Uwe(pIe,aLe[3])],iLe])}}var oLe=Hve(aLe[4]),lLe=[0,pre,_v(Fwe[1],oLe)],pLe=[0,dre,Uwe(pIe,aLe[3])],dLe=[0,cre,Gve(aLe[2])];return qwe(mre,HIe,[0,[0,ure,Uwe(Mve,aLe[1])],dLe,pLe,lLe]);case 28:var cLe=JIe[1],uLe=cLe[1],mLe=0===uLe[0]?Mve(uLe[1]):Yve(uLe[1]),fLe=Hve(cLe[2]);return qwe(yre,HIe,[0,[0,hre,mLe],[0,fre,_v(Fwe[1],fLe)]]);default:var hLe=JIe[1],yLe=hLe[3],gLe=PI(function(TLe){switch(TLe[0]){case 0:var ALe=TLe[1],PLe=ALe[1],_Le=ALe[3],NLe=ALe[2],kLe=NLe?VD(_Le[1],NLe[1][1]):_Le[1],CLe=NLe?NLe[1]:_Le;if(PLe)switch(PLe[1]){case 0:var wLe=_v(Fwe[1],tue),vLe=1;break;case 1:var wLe=_v(Fwe[1],aue),vLe=1;break;default:var vLe=0;}else var vLe=0;if(!vLe)var wLe=Fwe[6];var ILe=[0,rue,Vve(CLe)];return qwe(iue,kLe,[0,[0,sue,Vve(_Le)],ILe,[0,nue,wLe]]);case 1:var jLe=TLe[1],LLe=[0,[0,Kce,Vve(jLe)]];return qwe(Qce,jLe[1],LLe);default:var DLe=TLe[1],RLe=[0,[0,$ce,Vve(DLe[2])]];return qwe(eue,DLe[1],RLe);}},yLe);switch(hLe[1]){case 0:var bLe=gre;break;case 1:var bLe=bre;break;default:var bLe=xre;}var xLe=[0,Sre,_v(Fwe[1],bLe)],SLe=[0,Ere,pIe(hLe[2])],ELe=Kv(gLe);return qwe(Are,HIe,[0,[0,Tre,_v(Fwe[4],ELe)],SLe,xLe]);}}function Hwe(qIe,zIe){var JIe=zIe[2],HIe=zIe[1];if("number"==typeof JIe)return 0===JIe?qwe(Pre,HIe,[0]):qwe(_re,HIe,[0]);switch(JIe[0]){case 0:var GIe=JIe[1][1];return qwe(kre,HIe,[0,[0,Nre,Vwe(function(aLe){return Uwe(oIe,aLe)},GIe)]]);case 1:return qwe(wre,HIe,[0,[0,Cre,Vwe(sIe,JIe[1][1])]]);case 2:return 50>qIe?Gwe(1+qIe,[0,HIe,JIe[1]]):$w(Gwe,[0,[0,HIe,JIe[1]]]);case 3:var ZIe=JIe[1],KIe=ZIe[3],QIe=0===KIe[0]?Wve(KIe[1]):Yve(KIe[1]),$Ie=[0,vre,Uwe(AIe,ZIe[9])],eje=[0,Ire,Uwe(TIe,ZIe[8])],tje=[0,jre,_v(Fwe[2],ZIe[7])],aje=[0,Lre,Uwe(WIe,ZIe[6])],nje=[0,Dre,_v(Fwe[2],ZIe[5])],rje=[0,Rre,_v(Fwe[2],ZIe[4])],sje=[0,Mre,nIe(ZIe[2])];return qwe(Fre,HIe,[0,[0,Yre,Uwe(Vve,ZIe[1])],sje,[0,Ore,QIe],rje,nje,aje,tje,eje,$Ie]);case 4:return qwe(Bre,HIe,[0,[0,Vre,Vwe(Yve,JIe[1][1])]]);case 5:var ije=JIe[1];if(7<=ije[1])return qwe(Xre,HIe,[0,[0,Ure,Yve(ije[3])]]);switch(ije[1]){case 0:var oje=Wre;break;case 1:var oje=qre;break;case 2:var oje=zre;break;case 3:var oje=Jre;break;case 4:var oje=Hre;break;case 5:var oje=Gre;break;case 6:var oje=Zre;break;default:var oje=Vv(Kre);}var lje=[0,Qre,Yve(ije[3])],pje=[0,$re,_v(Fwe[2],ije[2])];return qwe(tse,HIe,[0,[0,ese,_v(Fwe[1],oje)],pje,lje]);case 6:var dje=JIe[1];switch(dje[1]){case 0:var cje=ase;break;case 1:var cje=nse;break;case 2:var cje=rse;break;case 3:var cje=sse;break;case 4:var cje=ise;break;case 5:var cje=ose;break;case 6:var cje=lse;break;case 7:var cje=pse;break;case 8:var cje=dse;break;case 9:var cje=cse;break;case 10:var cje=mse;break;case 11:var cje=fse;break;case 12:var cje=hse;break;case 13:var cje=yse;break;case 14:var cje=gse;break;case 15:var cje=bse;break;case 16:var cje=xse;break;case 17:var cje=Sse;break;case 18:var cje=Ese;break;case 19:var cje=Tse;break;case 20:var cje=Ase;break;default:var cje=Pse;}var uje=[0,_se,Yve(dje[3])],mje=[0,Nse,Yve(dje[2])];return qwe(Cse,HIe,[0,[0,kse,_v(Fwe[1],cje)],mje,uje]);case 7:var fje=JIe[1];switch(fje[1]){case 0:var hje=wse;break;case 1:var hje=vse;break;case 2:var hje=Ise;break;case 3:var hje=jse;break;case 4:var hje=Lse;break;case 5:var hje=Dse;break;case 6:var hje=Rse;break;case 7:var hje=Ose;break;case 8:var hje=Mse;break;case 9:var hje=Yse;break;case 10:var hje=Fse;break;case 11:var hje=Vse;break;default:var hje=Bse;}var yje=[0,Use,Yve(fje[3])],gje=[0,Xse,aIe(fje[2])];return qwe(qse,HIe,[0,[0,Wse,_v(Fwe[1],hje)],gje,yje]);case 8:var bje=JIe[1],xje=0===bje[1]?Jse:zse,Sje=[0,Hse,_v(Fwe[2],bje[3])],Eje=[0,Gse,Yve(bje[2])];return qwe(Kse,HIe,[0,[0,Zse,_v(Fwe[1],xje)],Eje,Sje]);case 9:var Tje=JIe[1],Aje=0===Tje[1]?$se:Qse,Pje=[0,eie,Yve(Tje[3])],_je=[0,tie,Yve(Tje[2])];return qwe(nie,HIe,[0,[0,aie,_v(Fwe[1],Aje)],_je,Pje]);case 10:var Nje=JIe[1],kje=[0,rie,Yve(Nje[3])],Cje=[0,sie,Yve(Nje[2])];return qwe(oie,HIe,[0,[0,iie,Yve(Nje[1])],Cje,kje]);case 11:var wje=JIe[1],vje=[0,lie,Vwe(oIe,wje[2])];return qwe(die,HIe,[0,[0,pie,Yve(wje[1])],vje]);case 12:var Ije=JIe[1],jje=[0,cie,Vwe(oIe,Ije[2])];return qwe(mie,HIe,[0,[0,uie,Yve(Ije[1])],jje]);case 13:var Lje=JIe[1],Dje=Lje[2],Rje=0===Dje[0]?Vve(Dje[1]):Yve(Dje[1]),Oje=[0,fie,_v(Fwe[2],Lje[3])];return qwe(gie,HIe,[0,[0,yie,Yve(Lje[1])],[0,hie,Rje],Oje]);case 14:var Mje=JIe[1],Yje=[0,bie,_v(Fwe[2],Mje[2])];return qwe(Sie,HIe,[0,[0,xie,Uwe(Yve,Mje[1])],Yje]);case 15:var Fje=JIe[1],Vje=[0,Eie,Uwe(Yve,Fje[2])];return qwe(Aie,HIe,[0,[0,Tie,Vwe(lIe,Fje[1])],Vje]);case 16:var Bje=JIe[1],Uje=[0,Pie,Uwe(Yve,Bje[2])];return qwe(Nie,HIe,[0,[0,_ie,Vwe(lIe,Bje[1])],Uje]);case 17:return 50>qIe?Zwe(1+qIe,JIe[1]):$w(Zwe,[0,JIe[1]]);case 18:return 50>qIe?xve(1+qIe,[0,HIe,JIe[1]]):$w(xve,[0,[0,HIe,JIe[1]]]);case 19:return 50>qIe?Sve(1+qIe,[0,HIe,JIe[1]]):$w(Sve,[0,[0,HIe,JIe[1]]]);case 20:var Xje=JIe[1],Wje=[0,wpe,dIe(Xje[2])];return qwe(Ipe,HIe,[0,[0,vpe,Yve(Xje[1])],Wje]);case 21:return 50>qIe?Ove(1+qIe,[0,HIe,JIe[1]]):$w(Ove,[0,[0,HIe,JIe[1]]]);case 22:var qje=JIe[1],zje=[0,Boe,Vwe(Yve,qje[7])],Jje=[0,Uoe,Vwe(Kve,qje[6])],Hje=[0,Xoe,Uwe(_Ie,qje[5])],Gje=[0,Woe,Uwe(AIe,qje[4])],Zje=[0,qoe,Uwe(Yve,qje[3])],Kje=[0,zoe,Qve(qje[2])];return qwe(Hoe,HIe,[0,[0,Joe,Uwe(Vve,qje[1])],Kje,Zje,Gje,Hje,Jje,zje]);case 23:var Qje=JIe[1],$je=[0,kie,TIe(Qje[2])];return qwe(wie,HIe,[0,[0,Cie,Yve(Qje[1])],$je]);default:var eLe=JIe[1],tLe=[0,vie,Vve(eLe[2])];return qwe(jie,HIe,[0,[0,Iie,Vve(eLe[1])],tLe]);}}function Gwe(qIe,zIe){var JIe=zIe[2],HIe=JIe[3],GIe=0===HIe[0]?Wve(HIe[1]):Yve(HIe[1]),ZIe=[0,Xie,Uwe(AIe,JIe[9])],KIe=[0,Wie,Uwe(TIe,JIe[8])],QIe=[0,qie,_v(Fwe[2],JIe[7])],$Ie=[0,zie,Uwe(WIe,JIe[6])],eje=[0,Jie,_v(Fwe[2],JIe[5])],tje=[0,Hie,_v(Fwe[2],JIe[4])],aje=[0,Zie,nIe(JIe[2])],nje=[0,[0,Kie,Uwe(Vve,JIe[1])],aje,[0,Gie,GIe],tje,eje,$Ie,QIe,KIe,ZIe];return qwe(Qie,zIe[1],nje)}function Zwe(qIe,zIe){var JIe=[0,$ie,_v(Fwe[2],0)],HIe=[0,eoe,Fwe[6]],GIe=[0,[0,toe,_v(Fwe[1],zIe[2])],HIe,JIe];return qwe(aoe,zIe[1],GIe)}function Kwe(qIe,zIe,JIe){var HIe=[0,noe,_v(Fwe[2],JIe[3])],GIe=[0,roe,Uwe(TIe,JIe[2])];return qwe(ioe,zIe,[0,[0,soe,_v(Fwe[1],JIe[1][2])],GIe,HIe])}function Qwe(qIe,zIe){var JIe=zIe[2],HIe=[0,ooe,Vwe(Mve,JIe[2])],GIe=[0,[0,loe,Uwe(Yve,JIe[1])],HIe];return qwe(poe,zIe[1],GIe)}function $we(qIe,zIe){var JIe=zIe[2],HIe=[0,doe,Wve(JIe[2])],GIe=[0,[0,coe,aIe(JIe[1])],HIe];return qwe(uoe,zIe[1],GIe)}function eve(qIe,zIe){var JIe=[0,[0,moe,zwe(zIe[2][1])]];return qwe(foe,zIe[1],JIe)}function tve(qIe,zIe){var JIe=zIe[2],HIe=JIe[2],GIe=HIe?HIe[1][1]:JIe[1][1],ZIe=VD(JIe[1][1],GIe),KIe=[0,[0,hoe,Bve(ZIe,[0,JIe[1],JIe[2],0])]];return qwe(yoe,zIe[1],KIe)}function ave(qIe,zIe){var JIe=zIe[2],HIe=VD(JIe[1][1],JIe[2][1]),GIe=[0,goe,Uwe(WIe,JIe[3])],ZIe=[0,[0,boe,Bve(HIe,[0,JIe[1],[0,JIe[2]],0])],GIe];return qwe(xoe,zIe[1],ZIe)}function nve(qIe,zIe){var JIe=zIe[2],HIe=[0,Soe,Vwe(tIe,JIe[4])],GIe=[0,Eoe,xIe(JIe[3])],ZIe=[0,Toe,Uwe(AIe,JIe[2])],KIe=[0,[0,Aoe,Vve(JIe[1])],ZIe,GIe,HIe];return qwe(Poe,zIe[1],KIe)}function rve(qIe,zIe){return 0===zIe?Noe:_oe}function sve(qIe,zIe){if(zIe){var JIe=zIe[1];if(0===JIe[0])return Vwe(UIe,JIe[1]);var HIe=JIe[2];if(HIe){var GIe=[0,[0,koe,Vve(HIe[1])]],ZIe=[0,qwe(Coe,JIe[1],GIe)];return _v(Fwe[4],ZIe)}return _v(Fwe[4],[0])}return _v(Fwe[4],[0])}function ive(qIe,zIe){var JIe=zIe[2],HIe=[0,woe,hIe(JIe[3])],GIe=[0,voe,Uwe(AIe,JIe[2])],ZIe=[0,[0,Ioe,Vve(JIe[1])],GIe,HIe];return qwe(joe,zIe[1],ZIe)}function ove(qIe,zIe){var JIe=zIe[2],HIe=[0,Goe,Uwe(_Ie,JIe[2])],GIe=[0,[0,Zoe,Vve(JIe[1])],HIe];return qwe(Koe,zIe[1],GIe)}function lve(qIe,zIe){var JIe=[0,[0,Qoe,Vwe($ve,zIe[2][1])]];return qwe($oe,zIe[1],JIe)}function pve(qIe,zIe){if(0===zIe[0]){var JIe=zIe[1],HIe=JIe[2],GIe=HIe[2];switch(GIe[0]){case 0:var ZIe=[0,pIe(GIe[1]),0];break;case 1:var ZIe=[0,Vve(GIe[1]),0];break;default:var ZIe=[0,Yve(GIe[1]),1];}switch(HIe[1]){case 0:var KIe=ele;break;case 1:var KIe=tle;break;case 2:var KIe=ale;break;default:var KIe=nle;}var QIe=[0,rle,Vwe(Yve,HIe[5])],$Ie=[0,sle,_v(Fwe[2],ZIe[2])],eje=[0,ile,_v(Fwe[2],HIe[4])],tje=[0,ole,_v(Fwe[1],KIe)],aje=[0,lle,Fve(HIe[3])];return qwe(dle,JIe[1],[0,[0,ple,ZIe[1]],aje,tje,eje,$Ie,QIe])}var nje=zIe[1],rje=nje[2],sje=rje[1];switch(sje[0]){case 0:var ije=[0,pIe(sje[1]),0];break;case 1:var ije=[0,Vve(sje[1]),0];break;default:var ije=[0,Yve(sje[1]),1];}var oje=[0,cle,Uwe(fIe,rje[5])],lje=[0,ule,_v(Fwe[2],rje[4])],pje=[0,mle,_v(Fwe[2],ije[2])],dje=[0,fle,Uwe(TIe,rje[3])],cje=[0,hle,Uwe(Yve,rje[2])];return qwe(gle,nje[1],[0,[0,yle,ije[1]],cje,dje,pje,lje,oje])}function dve(qIe,zIe){var JIe=zIe[2],HIe=[0,ble,Vwe(tIe,JIe[4])],GIe=[0,xle,xIe(JIe[3])],ZIe=[0,Sle,Uwe(AIe,JIe[2])],KIe=[0,[0,Ele,Vve(JIe[1])],ZIe,GIe,HIe];return qwe(Tle,zIe[1],KIe)}function cve(qIe,zIe){var JIe=zIe[2],HIe=JIe[1],GIe=0===HIe[0]?Vve(HIe[1]):SIe(HIe[1]),ZIe=[0,[0,Ple,GIe],[0,Ale,Uwe(_Ie,JIe[2])]];return qwe(_le,zIe[1],ZIe)}function uve(qIe,zIe){var JIe=zIe[2],HIe=zIe[1];switch(JIe[0]){case 0:var GIe=JIe[1],ZIe=[0,Nle,Uwe(TIe,GIe[2])];return qwe(Cle,HIe,[0,[0,kle,Vwe(iIe,GIe[1])],ZIe]);case 1:var KIe=JIe[1],QIe=[0,wle,Uwe(TIe,KIe[2])],$Ie=KIe[1];return qwe(Ile,HIe,[0,[0,vle,Vwe(function(aje){return Uwe(rIe,aje)},$Ie)],QIe]);case 2:var eje=JIe[1],tje=[0,jle,Yve(eje[2])];return qwe(Dle,HIe,[0,[0,Lle,aIe(eje[1])],tje]);case 3:return 50>qIe?Kwe(1+qIe,HIe,JIe[1]):$w(Kwe,[0,HIe,JIe[1]]);default:return 50>qIe?Hwe(1+qIe,JIe[1]):$w(Hwe,[0,JIe[1]]);}}function mve(qIe,zIe){var JIe=zIe[2],HIe=zIe[1];if(JIe){var GIe=JIe[1],ZIe=[0,[0,Rle,aIe(GIe[2][1])]],KIe=qwe(Ole,GIe[1],ZIe),QIe=Kv(TI([0,KIe,TI(PI(aIe,HIe))]));return _v(Fwe[4],QIe)}return Vwe(aIe,HIe)}function fve(qIe,zIe){if(0===zIe[0])return 50>qIe?uve(1+qIe,zIe[1]):$w(uve,[0,zIe[1]]);var JIe=zIe[1],HIe=[0,[0,Mle,aIe(JIe[2][1])]];return qwe(Yle,JIe[1],HIe)}function hve(qIe,zIe){if(0===zIe[0]){var JIe=zIe[1],HIe=JIe[2],GIe=HIe[1];switch(GIe[0]){case 0:var ZIe=[0,pIe(GIe[1]),0];break;case 1:var ZIe=[0,Vve(GIe[1]),0];break;default:var ZIe=[0,Yve(GIe[1]),1];}var KIe=HIe[2];switch(KIe[0]){case 0:var QIe=[0,Yve(KIe[1]),Fle];break;case 1:var QIe=[0,Fve(KIe[1]),Vle];break;default:var QIe=[0,Fve(KIe[1]),Ble];}var $Ie=[0,Ule,_v(Fwe[2],ZIe[2])],eje=[0,Xle,_v(Fwe[2],HIe[4])],tje=[0,Wle,_v(Fwe[2],HIe[3])],aje=[0,qle,_v(Fwe[1],QIe[2])];return qwe(Hle,JIe[1],[0,[0,Jle,ZIe[1]],[0,zle,QIe[1]],aje,tje,eje,$Ie])}var nje=zIe[1],rje=[0,[0,Gle,Yve(nje[2][1])]];return qwe(Zle,nje[1],rje)}function yve(qIe,zIe){if(0===zIe[0]){var JIe=zIe[1],HIe=JIe[2],GIe=HIe[1];switch(GIe[0]){case 0:var ZIe=[0,pIe(GIe[1]),0];break;case 1:var ZIe=[0,Vve(GIe[1]),0];break;default:var ZIe=[0,Yve(GIe[1]),1];}var KIe=[0,Kle,_v(Fwe[2],ZIe[2])],QIe=[0,Qle,_v(Fwe[2],HIe[3])],$Ie=[0,$le,_v(Fwe[2],0)],eje=[0,tpe,_v(Fwe[1],epe)],tje=[0,ape,aIe(HIe[2])];return qwe(rpe,JIe[1],[0,[0,npe,ZIe[1]],tje,eje,$Ie,QIe,KIe])}var aje=zIe[1],nje=[0,[0,spe,aIe(aje[2][1])]];return qwe(ipe,aje[1],nje)}function gve(qIe,zIe){if(0===zIe[0])return 50>qIe?Hwe(1+qIe,zIe[1]):$w(Hwe,[0,zIe[1]]);var JIe=zIe[1],HIe=[0,[0,ope,Yve(JIe[2][1])]];return qwe(lpe,JIe[1],HIe)}function bve(qIe,zIe){var JIe=zIe[2],HIe=[0,ppe,_v(Fwe[2],JIe[3])],GIe=[0,dpe,Yve(JIe[2])],ZIe=[0,[0,cpe,aIe(JIe[1])],GIe,HIe];return qwe(upe,zIe[1],ZIe)}function xve(qIe,zIe){var JIe=zIe[2],HIe=JIe[2],GIe=JIe[1],ZIe=zIe[1];if("number"==typeof GIe)var KIe=Fwe[6];else switch(GIe[0]){case 0:var KIe=_v(Fwe[1],GIe[1]);break;case 1:var KIe=_v(Fwe[2],GIe[1]);break;case 2:var KIe=_v(Fwe[5],GIe[1]);break;default:var QIe=GIe[1],KIe=Iv(Fwe[7],ZIe,QIe[1],QIe[2]);}if("number"==typeof GIe)var $Ie=0;else if(3===GIe[0])var eje=GIe[1],tje=[0,mpe,_v(Fwe[1],eje[2])],aje=[0,[0,fpe,_v(Fwe[1],eje[1])],tje],nje=[0,hpe,_v(Fwe[3],aje)],rje=[0,[0,gpe,KIe],[0,ype,_v(Fwe[1],HIe)],nje],$Ie=1;else var $Ie=0;if(!$Ie)var rje=[0,[0,xpe,KIe],[0,bpe,_v(Fwe[1],HIe)]];return qwe(Spe,ZIe,rje)}function Sve(qIe,zIe){var JIe=zIe[2],HIe=[0,Epe,Vwe(Yve,JIe[2])],GIe=[0,[0,Tpe,Vwe(cIe,JIe[1])],HIe];return qwe(Ape,zIe[1],GIe)}function Eve(qIe,zIe){var JIe=zIe[2],HIe=[0,Ppe,_v(Fwe[1],JIe[1][2])],GIe=[0,[0,_pe,_v(Fwe[1],JIe[1][1])],HIe],ZIe=_v(Fwe[3],GIe),KIe=[0,[0,kpe,ZIe],[0,Npe,_v(Fwe[2],JIe[2])]];return qwe(Cpe,zIe[1],KIe)}function Tve(qIe,zIe){var JIe=zIe[2];switch(JIe[2]){case 0:var HIe=jpe;break;case 1:var HIe=Lpe;break;default:var HIe=Dpe;}var GIe=[0,Rpe,_v(Fwe[1],HIe)],ZIe=[0,[0,Ope,Vwe(mIe,JIe[1])],GIe];return qwe(Mpe,zIe[1],ZIe)}function Ave(qIe,zIe){var JIe=zIe[2],HIe=[0,Ype,Uwe(Yve,JIe[2])],GIe=[0,[0,Fpe,aIe(JIe[1])],HIe];return qwe(Vpe,zIe[1],GIe)}function Pve(qIe,zIe){return 0===zIe[2]?_v(Fwe[1],Upe):_v(Fwe[1],Bpe)}function _ve(qIe,zIe){var JIe=zIe[2],HIe=zIe[1];if("number"==typeof JIe)return 0===JIe?qwe(Xpe,HIe,[0]):1===JIe?qwe(Wpe,HIe,[0]):2===JIe?qwe(qpe,HIe,[0]):3===JIe?qwe(zpe,HIe,[0]):4===JIe?qwe(Jpe,HIe,[0]):5===JIe?qwe(Hpe,HIe,[0]):6===JIe?qwe(Gpe,HIe,[0]):7===JIe?qwe(Zpe,HIe,[0]):qwe(oce,HIe,[0]);switch(JIe[0]){case 0:return qwe(Qpe,HIe,[0,[0,Kpe,hIe(JIe[1])]]);case 1:return 50>qIe?Nve(1+qIe,[0,HIe,JIe[1]]):$w(Nve,[0,[0,HIe,JIe[1]]]);case 2:return 50>qIe?wve(1+qIe,[0,HIe,JIe[1]]):$w(wve,[0,[0,HIe,JIe[1]]]);case 3:return qwe(Mde,HIe,[0,[0,Ode,hIe(JIe[1])]]);case 4:return 50>qIe?Ive(1+qIe,[0,HIe,JIe[1]]):$w(Ive,[0,[0,HIe,JIe[1]]]);case 5:return qwe(qde,HIe,[0,[0,Wde,Vwe(hIe,[0,JIe[1],[0,JIe[2],JIe[3]]])]]);case 6:return qwe(Jde,HIe,[0,[0,zde,Vwe(hIe,[0,JIe[1],[0,JIe[2],JIe[3]]])]]);case 7:return qwe(Gde,HIe,[0,[0,Hde,hIe(JIe[1])]]);case 8:return qwe(Kde,HIe,[0,[0,Zde,Vwe(hIe,JIe[1])]]);case 9:var GIe=JIe[1],ZIe=[0,Qde,_v(Fwe[1],GIe[2])];return qwe(ece,HIe,[0,[0,$de,_v(Fwe[1],GIe[1])],ZIe]);case 10:var KIe=JIe[1],QIe=[0,tce,_v(Fwe[1],KIe[2])];return qwe(nce,HIe,[0,[0,ace,_v(Fwe[5],KIe[1])],QIe]);default:var $Ie=JIe[1],eje=[0,rce,_v(Fwe[1],$Ie[2])];return qwe(ice,HIe,[0,[0,sce,_v(Fwe[2],$Ie[1])],eje]);}}function Nve(qIe,zIe){var JIe=zIe[2],HIe=JIe[1],GIe=[0,$pe,Uwe(AIe,JIe[3])],ZIe=[0,ede,Uwe(bIe,HIe[2])],KIe=[0,tde,hIe(JIe[2])],QIe=[0,[0,ade,Vwe(gIe,HIe[1])],KIe,ZIe,GIe];return qwe(nde,zIe[1],QIe)}function kve(qIe,zIe){var JIe=zIe[2],HIe=[0,rde,_v(Fwe[2],JIe[3])],GIe=[0,sde,hIe(JIe[2])],ZIe=[0,[0,ide,Uwe(Vve,JIe[1])],GIe,HIe];return qwe(ode,zIe[1],ZIe)}function Cve(qIe,zIe){return 50>qIe?kve(1+qIe,zIe[2][1]):$w(kve,[0,zIe[2][1]])}function wve(qIe,zIe){var JIe=zIe[2],HIe=JIe[2],GIe=NI(function(nje,rje){var sje=nje[3],ije=nje[2],oje=nje[1];switch(rje[0]){case 0:var lje=rje[1],pje=lje[2],dje=pje[1];switch(dje[0]){case 0:var cje=pIe(dje[1]);break;case 1:var cje=Vve(dje[1]);break;default:var cje=Vv(fde);}var uje=pje[2];switch(uje[0]){case 0:var mje=[0,hIe(uje[1]),hde];break;case 1:var fje=uje[1],mje=[0,yIe([0,fje[1],fje[2]]),yde];break;default:var hje=uje[1],mje=[0,yIe([0,hje[1],hje[2]]),gde];}var yje=[0,bde,_v(Fwe[1],mje[2])],gje=[0,xde,Uwe(fIe,pje[6])],bje=[0,Sde,_v(Fwe[2],pje[4])],xje=[0,Ede,_v(Fwe[2],pje[3])];return[0,[0,qwe(Pde,lje[1],[0,[0,Ade,cje],[0,Tde,mje[1]],xje,bje,gje,yje]),oje],ije,sje];case 1:var Sje=rje[1],Eje=[0,[0,_de,EIe(Sje[2][1])]];return[0,[0,qwe(Nde,Sje[1],Eje),oje],ije,sje];case 2:var Tje=rje[1],Aje=Tje[2],Pje=[0,kde,Uwe(fIe,Aje[5])],_je=[0,Cde,_v(Fwe[2],Aje[4])],Nje=[0,wde,hIe(Aje[3])],kje=[0,vde,hIe(Aje[2])],Cje=[0,[0,Ide,Uwe(Vve,Aje[1])],kje,Nje,_je,Pje];return[0,oje,[0,qwe(jde,Tje[1],Cje),ije],sje];default:var wje=rje[1],vje=wje[2],Ije=[0,Lde,_v(Fwe[2],vje[2])],jje=[0,[0,Dde,yIe(vje[1])],Ije];return[0,oje,ije,[0,qwe(Rde,wje[1],jje),sje]];}},lde,HIe),ZIe=Kv(TI(GIe[3])),KIe=[0,pde,_v(Fwe[4],ZIe)],QIe=Kv(TI(GIe[2])),$Ie=[0,dde,_v(Fwe[4],QIe)],eje=Kv(TI(GIe[1])),tje=[0,cde,_v(Fwe[4],eje)],aje=[0,[0,ude,_v(Fwe[2],JIe[1])],tje,$Ie,KIe];return qwe(mde,zIe[1],aje)}function vve(qIe,zIe){var JIe=zIe[2],HIe=JIe[1],GIe=0===HIe[0]?Vve(HIe[1]):SIe(HIe[1]),ZIe=[0,[0,Fde,GIe],[0,Yde,Vve(JIe[2])]];return qwe(Vde,zIe[1],ZIe)}function Ive(qIe,zIe){var JIe=zIe[2],HIe=JIe[1],GIe=0===HIe[0]?Vve(HIe[1]):SIe(HIe[1]),ZIe=[0,[0,Ude,GIe],[0,Bde,Uwe(_Ie,JIe[2])]];return qwe(Xde,zIe[1],ZIe)}function jve(qIe,zIe){var JIe=[0,[0,lce,hIe(zIe[2])]];return qwe(pce,zIe[1],JIe)}function Lve(qIe,zIe){var JIe=[0,[0,dce,Vwe(PIe,zIe[2][1])]];return qwe(cce,zIe[1],JIe)}function Dve(qIe,zIe){var JIe=zIe[2],HIe=[0,uce,Uwe(hIe,JIe[4])],GIe=[0,mce,Uwe(fIe,JIe[3])],ZIe=[0,fce,Uwe(TIe,JIe[2])],KIe=[0,[0,hce,_v(Fwe[1],JIe[1])],ZIe,GIe,HIe];return qwe(yce,zIe[1],KIe)}function Rve(qIe,zIe){var JIe=[0,[0,gce,Vwe(hIe,zIe[2][1])]];return qwe(bce,zIe[1],JIe)}function Ove(qIe,zIe){var JIe=zIe[2],HIe=[0,xce,Vwe(OIe,JIe[3])],GIe=[0,Sce,Uwe(CIe,JIe[2])],ZIe=JIe[1],KIe=ZIe[2],QIe=[0,Ace,_v(Fwe[2],KIe[2])],$Ie=[0,Pce,Vwe(kIe,KIe[3])],eje=[0,[0,_ce,MIe(KIe[1])],$Ie,QIe],tje=[0,[0,Ece,qwe(Nce,ZIe[1],eje)],GIe,HIe];return qwe(Tce,zIe[1],tje)}function Mve(qIe){return Qw(Jwe(0,qIe))}function Yve(qIe){return Qw(Hwe(0,qIe))}function Fve(qIe){return Qw(Gwe(0,qIe))}function Vve(qIe){return Qw(Zwe(0,qIe))}function Bve(qIe,zIe){return Qw(Kwe(0,qIe,zIe))}function Uve(qIe){return Qw(Qwe(0,qIe))}function Xve(qIe){return Qw($we(0,qIe))}function Wve(qIe){return Qw(eve(0,qIe))}function qve(qIe){return Qw(tve(0,qIe))}function zve(qIe){return Qw(ave(0,qIe))}function Jve(qIe){return Qw(nve(0,qIe))}function Hve(qIe){return Qw(rve(0,qIe))}function Gve(qIe){return Qw(sve(0,qIe))}function Zve(qIe){return Qw(ive(0,qIe))}function Kve(qIe){return Qw(ove(0,qIe))}function Qve(qIe){return Qw(lve(0,qIe))}function $ve(qIe){return Qw(pve(0,qIe))}function eIe(qIe){return Qw(dve(0,qIe))}function tIe(qIe){return Qw(cve(0,qIe))}function aIe(qIe){return Qw(uve(0,qIe))}function nIe(qIe){return Qw(mve(0,qIe))}function rIe(qIe){return Qw(fve(0,qIe))}function sIe(qIe){return Qw(hve(0,qIe))}function iIe(qIe){return Qw(yve(0,qIe))}function oIe(qIe){return Qw(gve(0,qIe))}function lIe(qIe){return Qw(bve(0,qIe))}function pIe(qIe){return Qw(xve(0,qIe))}function dIe(qIe){return Qw(Sve(0,qIe))}function cIe(qIe){return Qw(Eve(0,qIe))}function uIe(qIe){return Qw(Tve(0,qIe))}function mIe(qIe){return Qw(Ave(0,qIe))}function fIe(qIe){return Qw(Pve(0,qIe))}function hIe(qIe){return Qw(_ve(0,qIe))}function yIe(qIe){return Qw(Nve(0,qIe))}function gIe(qIe){return Qw(kve(0,qIe))}function bIe(qIe){return Qw(Cve(0,qIe))}function xIe(qIe){return Qw(wve(0,qIe))}function SIe(qIe){return Qw(vve(0,qIe))}function EIe(qIe){return Qw(Ive(0,qIe))}function TIe(qIe){return Qw(jve(0,qIe))}function AIe(qIe){return Qw(Lve(0,qIe))}function PIe(qIe){return Qw(Dve(0,qIe))}function _Ie(qIe){return Qw(Rve(0,qIe))}function NIe(qIe){return Qw(Ove(0,qIe))}function kIe(qIe){if(0===qIe[0]){var zIe=qIe[1],JIe=zIe[2],HIe=JIe[1],GIe=0===HIe[0]?BIe(HIe[1]):VIe(HIe[1]),ZIe=[0,[0,vce,GIe],[0,wce,Uwe(YIe,JIe[2])]];return qwe(Ice,zIe[1],ZIe)}var KIe=qIe[1],QIe=[0,[0,jce,Yve(KIe[2][1])]];return qwe(Lce,KIe[1],QIe)}function CIe(qIe){var zIe=[0,[0,kce,MIe(qIe[2][1])]];return qwe(Cce,qIe[1],zIe)}function wIe(qIe,zIe){var JIe=zIe[2],HIe=zIe[1];switch(JIe[0]){case 0:return NIe([0,HIe,JIe[1]]);case 1:return 50>qIe?jIe(1+qIe,[0,HIe,JIe[1]]):$w(jIe,[0,[0,HIe,JIe[1]]]);default:var GIe=JIe[1],ZIe=[0,Mce,_v(Fwe[1],GIe[2])];return qwe(Fce,HIe,[0,[0,Yce,_v(Fwe[1],GIe[1])],ZIe]);}}function vIe(qIe,zIe){switch(zIe[0]){case 0:return 50>qIe?RIe(1+qIe,zIe[1]):$w(RIe,[0,zIe[1]]);case 1:return 50>qIe?DIe(1+qIe,zIe[1]):$w(DIe,[0,zIe[1]]);default:return 50>qIe?LIe(1+qIe,zIe[1]):$w(LIe,[0,zIe[1]]);}}function IIe(qIe,zIe){return 0===zIe[0]?pIe([0,zIe[1],zIe[2]]):50>qIe?jIe(1+qIe,[0,zIe[1],zIe[2]]):$w(jIe,[0,[0,zIe[1],zIe[2]]])}function jIe(qIe,zIe){var JIe=zIe[2][1],HIe=0===JIe[0]?Yve(JIe[1]):qwe(Dce,JIe[1],[0]);return qwe(Oce,zIe[1],[0,[0,Rce,HIe]])}function LIe(qIe,zIe){var JIe=zIe[2],HIe=JIe[1],GIe=0===HIe[0]?BIe(HIe[1]):FIe(HIe[1]),ZIe=[0,[0,Bce,GIe],[0,Vce,BIe(JIe[2])]];return qwe(Uce,zIe[1],ZIe)}function DIe(qIe,zIe){var JIe=zIe[2],HIe=[0,Xce,BIe(JIe[2])],GIe=[0,[0,Wce,BIe(JIe[1])],HIe];return qwe(qce,zIe[1],GIe)}function RIe(qIe,zIe){var JIe=[0,[0,zce,_v(Fwe[1],zIe[2][1])]];return qwe(Jce,zIe[1],JIe)}function OIe(qIe){return Qw(wIe(0,qIe))}function MIe(qIe){return Qw(vIe(0,qIe))}function YIe(qIe){return Qw(IIe(0,qIe))}function FIe(qIe){return Qw(LIe(0,qIe))}function VIe(qIe){return Qw(DIe(0,qIe))}function BIe(qIe){return Qw(RIe(0,qIe))}function UIe(qIe){var zIe=qIe[2],JIe=zIe[2],HIe=JIe?Vve(JIe[1]):Vve(zIe[1]),GIe=[0,[0,Gce,Vve(zIe[1])],[0,Hce,HIe]];return qwe(Zce,qIe[1],GIe)}function XIe(qIe){var zIe=qIe[2],JIe=0===zIe[0]?[0,oue,zIe[1]]:[0,lue,zIe[1]],HIe=[0,[0,pue,_v(Fwe[1],JIe[2])]];return qwe(JIe[1],qIe[1],HIe)}function WIe(qIe){var zIe=qIe[2],JIe=zIe?[0,cue,[0,[0,due,Yve(zIe[1])]]]:[0,uue,[0]];return qwe(JIe[1],qIe[1],JIe[2])}return[0,function(zIe){var JIe=[0,zae,Vwe(XIe,zIe[3])],HIe=[0,[0,Jae,zwe(zIe[2])],JIe];return qwe(Hae,zIe[1],HIe)},Yve,function(zIe){return Vwe(function(JIe){var HIe=JIe[2];if("number"==typeof HIe){var GIe=HIe;if(34<=GIe)switch(GIe){case 34:var ZIe=Bte;break;case 35:var ZIe=Ute;break;case 36:var ZIe=Xte;break;case 37:var ZIe=Wte;break;case 38:var ZIe=qte;break;case 39:var ZIe=zte;break;case 40:var ZIe=Jte;break;case 41:var ZIe=Hte;break;case 42:var ZIe=Gte;break;case 43:var ZIe=Zte;break;case 44:var ZIe=Kte;break;case 45:var ZIe=Qte;break;case 46:var ZIe=Jv(eae,$te);break;case 47:var ZIe=Jv(aae,tae);break;case 48:var ZIe=nae;break;case 49:var ZIe=rae;break;case 50:var ZIe=sae;break;case 51:var ZIe=iae;break;case 52:var ZIe=oae;break;case 53:var ZIe=lae;break;case 54:var ZIe=pae;break;case 55:var ZIe=dae;break;case 56:var ZIe=cae;break;case 57:var ZIe=uae;break;case 58:var ZIe=mae;break;case 59:var ZIe=fae;break;case 60:var ZIe=hae;break;case 61:var ZIe=yae;break;case 62:var ZIe=gae;break;case 63:var ZIe=bae;break;case 64:var ZIe=Jv(Sae,xae);break;case 65:var ZIe=Eae;break;default:var ZIe=Tae;}else switch(GIe){case 0:var ZIe=ite;break;case 1:var ZIe=ote;break;case 2:var ZIe=lte;break;case 3:var ZIe=pte;break;case 4:var ZIe=dte;break;case 5:var ZIe=cte;break;case 6:var ZIe=ute;break;case 7:var ZIe=mte;break;case 8:var ZIe=fte;break;case 9:var ZIe=hte;break;case 10:var ZIe=yte;break;case 11:var ZIe=gte;break;case 12:var ZIe=bte;break;case 13:var ZIe=xte;break;case 14:var ZIe=Ste;break;case 15:var ZIe=Ete;break;case 16:var ZIe=Tte;break;case 17:var ZIe=Ate;break;case 18:var ZIe=Pte;break;case 19:var ZIe=Jv(Nte,_te);break;case 20:var ZIe=kte;break;case 21:var ZIe=Cte;break;case 22:var ZIe=wte;break;case 23:var ZIe=vte;break;case 24:var ZIe=Ite;break;case 25:var ZIe=jte;break;case 26:var ZIe=Lte;break;case 27:var ZIe=Dte;break;case 28:var ZIe=Rte;break;case 29:var ZIe=Ote;break;case 30:var ZIe=Mte;break;case 31:var ZIe=Yte;break;case 32:var ZIe=Fte;break;default:var ZIe=Vte;}}else switch(HIe[0]){case 0:var ZIe=Jv(Aae,HIe[1]);break;case 1:var ZIe=Jv(Pae,HIe[1]);break;case 2:var KIe=HIe[2],QIe=HIe[1],ZIe=Nv(_D(_ae),QIe,KIe);break;case 3:var ZIe=Jv(kae,Jv(HIe[1],Nae));break;case 4:var ZIe=Jv(wae,Jv(HIe[1],Cae));break;case 5:var $Ie=Jv(Iae,Jv(HIe[2],vae)),ZIe=Jv(HIe[1],$Ie);break;case 6:var ZIe=Jv(jae,HIe[1]);break;default:var eje=HIe[1],ZIe=_v(_D(Lae),eje);}var tje=[0,mue,_v(Fwe[1],ZIe)],aje=[0,[0,fue,Wwe(JIe[1])],tje];return _v(Fwe[3],aje)},zIe)}]}function ZD(Fwe,Vwe){Vwe[6]=0|Vwe[6]-Fwe;var Bwe=Vwe[12];return Vwe[12]=[0,Bwe[1],Bwe[2],Bwe[3],0|Bwe[4]-Fwe],0}function KD(Fwe,Vwe){return[0,Vwe[1],Fwe,Vwe[3],Vwe[4],Vwe[5]]}function QD(Fwe,Vwe){return _w(Fwe,Vwe[3])?[0,Vwe[1],Vwe[2],Fwe,Vwe[4],Vwe[5]]:Vwe}function $D(Fwe,Vwe){return YD(Fwe[1],Vwe[11],Vwe[12])}function SR(Fwe){var Vwe=Fwe[2],Bwe=Fwe[1],Uwe=Bwe[5],Xwe=Uwe===UZ?Bwe:[0,Bwe[1],Bwe[2],Bwe[3],Bwe[4],UZ];if("number"==typeof Vwe)var Wwe=0;else switch(Vwe[0]){case 2:var qwe=Vwe[1],zwe=[0,qwe[1],qwe[2][3]],Wwe=1;break;case 3:var Jwe=Vwe[1],Hwe=Jv(kTe,Jwe[3]),Gwe=Jv(CTe,Jv(Jwe[2],Hwe)),zwe=[0,Jwe[1],Gwe],Wwe=1;break;case 1:case 4:var Zwe=Vwe[1],zwe=[0,Zwe[1],Zwe[3]],Wwe=1;break;default:var Wwe=0;}if(!Wwe)var Kwe=$I(Xwe[2]),zwe=[0,$D(Xwe,Xwe[2]),Kwe];var Qwe=TI(Uwe[2]),$we=TI(Uwe[1]);return[0,Xwe,[0,Vwe,zwe[1],zwe[2],$we,Qwe]]}function TR(Fwe,Vwe,Bwe){return[0,Fwe[1],Fwe[2],Fwe[3],Fwe[4],[0,[0,[0,Vwe,Bwe],Fwe[5][1]],Fwe[5][2]]]}function PR(Fwe,Vwe,Bwe){return TR(Fwe,Vwe,[1,Bwe])}function _R(Fwe,Vwe){return TR(Fwe,Vwe,NTe)}function NR(Fwe,Vwe,Bwe,Uwe){var Xwe=$D(Fwe,Vwe);return ZD(Xk(Bwe),Vwe),[0,_R(Fwe,Xwe),Uwe]}function IR(Fwe){var Vwe=Fwe[5];if(Vwe)return[0,Fwe[1],Fwe[2],Fwe[3],Fwe[4],Vwe[2]];throw qCe}function LR(Fwe){var Vwe=[0,0];return ZI(function(Bwe){return Vwe[1]=[0,Bwe,Vwe[1]],0},Fwe),[0,0,0,0,0,TI(Vwe[1])]}function RR(Fwe){var Vwe=Fwe[5];if(Vwe){var Bwe=0|Vwe[1]+PB;if(!(2>>0))switch(Bwe){case 0:return IR(Fwe);case 1:break;default:var Uwe=IR(Fwe);return[0,1,Uwe[2],Uwe[3],Uwe[4],Uwe[5]];}}return Fwe}function OR(Fwe){var Vwe=Fwe[5];if(Vwe&&48===Vwe[1]){var Bwe=Vwe[2];if(Bwe){var Uwe=Bwe[1],Xwe=88===Uwe?0:VV===Uwe?0:1;if(!Xwe)return IR(IR(Fwe))}}throw qCe}function MR(Fwe){var Vwe=HI(_Te,PI(RI,Fwe[5]));try{var Bwe=Zk(Vwe)}catch(Uwe){if(Uwe=Pv(Uwe),Uwe[1]===RZ)throw qCe;throw Uwe}return[0,Fwe[1],Fwe[2],Bwe,Fwe[4],0]}function YR(Fwe){for(var Vwe=Fwe;;){var Bwe=Vwe[5];if(Bwe){var Uwe=Bwe[1];if(81<=Uwe){if(95===Uwe){var Vwe=IR(Vwe);continue}var Xwe=SU===Uwe?1:0}else{if(46===Uwe){if(0===Vwe[4]){var Wwe=IR(Vwe),Vwe=[0,Wwe[1],Wwe[2],Wwe[3],ATe,Wwe[5]];continue}throw qCe}var Xwe=80<=Uwe?1:0}if(Xwe)return MR(IR(Vwe));if(!(48<=Uwe))var qwe=0;else if(57>>0)throw[0,YZ,TTe];return 0|Fwe-48}function ZR(Fwe){if(65<=Fwe){if(97<=Fwe){if(!($z<=Fwe))return 0|(0|Fwe-97)+10;}else if(!(71<=Fwe))return 0|(0|Fwe-65)+10;}else if(!(9<(0|Fwe+XX)>>>0))return 0|Fwe-48;throw[0,YZ,ETe]}function KR(Fwe){if(Pq<=Fwe){var Vwe=[0,LI($V|63&Fwe),0],Bwe=[0,LI($V|63&(0|Fwe>>>6)),Vwe],Uwe=[0,LI($V|63&(0|Fwe>>>12)),Bwe];return[0,LI(0|(TW|Fwe>>>18)),Uwe]}if(NW<=Fwe){var Xwe=[0,LI($V|63&Fwe),0],Wwe=[0,LI($V|63&(0|Fwe>>>6)),Xwe];return[0,LI(0|($W|Fwe>>>12)),Wwe]}if($V<=Fwe){var qwe=[0,LI($V|63&Fwe),0];return[0,LI(0|(XH|Fwe>>>6)),qwe]}return[0,LI(Fwe),0]}function QR(Fwe,Vwe,Bwe){if(0===Fwe)var Uwe=0;else switch(0|Fwe-1){case 0:var Xwe=Zk(Jv(xTe,Vwe)),Uwe=1;break;case 2:var Xwe=UR(Vwe),Uwe=1;break;default:var Uwe=0;}if(!Uwe)var Xwe=Zk(Vwe);var Wwe=Mw(Bwe,STe)?Xwe:-Xwe;return[5,Fwe,Wwe]}function $R(Fwe,Vwe,Bwe){return Bwe[10]=NC(8,-1),50>Fwe?SO(1+Fwe,Vwe,Bwe,0):$w(SO,[0,Vwe,Bwe,0])}function SO(Fwe,Vwe,Bwe,Uwe){for(var Xwe=Uwe;;){var Wwe=QI(XZ,Xwe,Bwe);if(77>>0){_v(Bwe[1],Bwe);var Xwe=Wwe;continue}var qwe=Wwe;if(39<=qwe)switch(qwe){case 39:return[0,Vwe,90];case 40:return[0,Vwe,91];case 41:return[0,Vwe,86];case 42:return[0,Vwe,87];case 43:return[0,Vwe,YU];case 44:return[0,Vwe,YJ];case 45:return[0,Vwe,68];case 46:return[0,Vwe,94];case 47:return[0,Vwe,67];case 48:return[0,Vwe,66];case 49:return[0,Vwe,96];case 50:return[0,Vwe,95];case 51:return[0,Vwe,77];case 52:return[0,Vwe,76];case 53:return[0,Vwe,74];case 54:return[0,Vwe,75];case 55:return[0,Vwe,72];case 56:return[0,Vwe,71];case 57:return[0,Vwe,70];case 58:return[0,Vwe,69];case 59:return[0,Vwe,92];case 60:return[0,Vwe,93];case 61:return[0,Vwe,97];case 62:return[0,Vwe,98];case 63:return[0,Vwe,Jz];case 64:return[0,Vwe,UW];case 65:return[0,Vwe,Qq];case 66:return[0,Vwe,83];case 67:return[0,Vwe,85];case 68:return[0,Vwe,84];case 69:return[0,Vwe,$z];case 70:return[0,Vwe,RF];case 71:return[0,Vwe,78];case 72:return[0,Vwe,12];case 73:return[0,Vwe,73];case 74:return[0,Vwe,99];case 75:return[0,Vwe,14];case 76:var zwe=Vwe[3]?TR(Vwe,$D(Vwe,Bwe),4):Vwe;return[0,zwe,YF];default:return[0,_R(Vwe,$D(Vwe,Bwe)),XB];}switch(qwe){case 0:return Pj(Bwe),50>Fwe?$R(1+Fwe,Vwe,Bwe):$w($R,[0,Vwe,Bwe]);case 1:return 50>Fwe?$R(1+Fwe,_R(Vwe,$D(Vwe,Bwe)),Bwe):$w($R,[0,_R(Vwe,$D(Vwe,Bwe)),Bwe]);case 2:return WR(Bwe),50>Fwe?$R(1+Fwe,Vwe,Bwe):$w($R,[0,Vwe,Bwe]);case 3:var Jwe=$D(Vwe,Bwe),Hwe=Lj($J),Gwe=RO(Vwe,Hwe,Bwe);return 50>Fwe?$R(1+Fwe,XR(Gwe[1],Jwe,Gwe[2],Hwe,1),Bwe):$w($R,[0,XR(Gwe[1],Jwe,Gwe[2],Hwe,1),Bwe]);case 4:var Zwe=Q_(Bwe[10],0)[1],Kwe=Sj(Bwe,0|Bwe[5]+2,Zwe),Qwe=Bwe[6],$we=Sj(Bwe,Q_(Bwe[10],0)[1],Qwe),eve=Sj(Bwe,Bwe[5],Bwe[6]);if(Vwe[4]){var tve=Vwe[3]?PR(Vwe,$D(Vwe,Bwe),eve):Vwe,ave=QD(1,tve);return Uw($we,_ue)?50>Fwe?$R(1+Fwe,ave,Bwe):$w($R,[0,ave,Bwe]):[0,ave,80]}var nve=$D(Vwe,Bwe),rve=Lj($J);Yj(rve,Kwe),Yj(rve,$we);var sve=RO(Vwe,rve,Bwe);return 50>Fwe?$R(1+Fwe,XR(sve[1],nve,sve[2],rve,1),Bwe):$w($R,[0,XR(sve[1],nve,sve[2],rve,1),Bwe]);case 5:return Vwe[3]?50>Fwe?$R(1+Fwe,QD(0,Vwe),Bwe):$w($R,[0,QD(0,Vwe),Bwe]):(ZD(1,Bwe),[0,Vwe,Jz]);case 6:var ive=$D(Vwe,Bwe),ove=Lj($J),lve=OO(Vwe,ove,Bwe);return 50>Fwe?$R(1+Fwe,XR(lve[1],ive,lve[2],ove,0),Bwe):$w($R,[0,XR(lve[1],ive,lve[2],ove,0),Bwe]);case 7:return 0===Bwe[5]?50>Fwe?$R(1+Fwe,OO(Vwe,Lj($J),Bwe)[1],Bwe):$w($R,[0,OO(Vwe,Lj($J),Bwe)[1],Bwe]):[0,Vwe,XB];case 8:var pve=Tj(Bwe,Bwe[5]),dve=$D(Vwe,Bwe),cve=Lj($J),uve=Lj($J);Mj(uve,pve);var mve=IO(Vwe,pve,cve,uve,0,Bwe),fve=mve[3],hve=Rj(uve),yve=Rj(cve),gve=[1,[0,VD(dve,mve[2]),yve,hve,fve]];return[0,mve[1],gve];case 9:var bve=Lj($J),xve=Lj($J),Sve=Lj($J);Yj(Sve,$I(Bwe));var Eve=YO(Vwe,$D(Vwe,Bwe),bve,xve,Sve,Bwe),Tve=Eve[3],Ave=Rj(Sve),Pve=Rj(xve),_ve=[0,Rj(bve),Pve,Ave];return[0,Eve[1],[2,[0,Eve[2],_ve,Tve]]];case 10:var Nve=Bwe[6];return NR(Vwe,Bwe,Sj(Bwe,Q_(Bwe[10],0)[1],Nve),Nue);case 11:return[0,Vwe,kue];case 12:var kve=Bwe[6];return NR(Vwe,Bwe,Sj(Bwe,Q_(Bwe[10],0)[1],kve),Cue);case 13:return[0,Vwe,wue];case 14:var Cve=Bwe[6];return NR(Vwe,Bwe,Sj(Bwe,Q_(Bwe[10],0)[1],Cve),vue);case 15:return[0,Vwe,Iue];case 22:var wve=Sj(Bwe,Bwe[5],Bwe[6]);WR(Bwe);try{var vve=[0,Vwe,OD(zCe,wve)];return vve}catch(jve){if(jve=Pv(jve),jve===MZ)return[0,Vwe,0];throw jve}case 23:return[0,Vwe,1];case 24:return[0,Vwe,2];case 25:return[0,Vwe,5];case 26:return[0,Vwe,6];case 27:return[0,Vwe,7];case 28:return[0,Vwe,8];case 29:return[0,Vwe,13];case 30:return[0,Vwe,11];case 31:return[0,Vwe,9];case 32:return[0,Vwe,10];case 33:return[0,Vwe,80];case 34:return[0,Vwe,79];case 35:return[0,Vwe,82];case 36:return[0,Vwe,81];case 37:return[0,Vwe,88];case 38:return[0,Vwe,89];case 16:case 18:case 20:var Ive=Bwe[6];return NR(Vwe,Bwe,Sj(Bwe,Q_(Bwe[10],0)[1],Ive),jue);default:return[0,Vwe,Lue];}}}function TO(Fwe,Vwe){return Qw($R(0,Fwe,Vwe))}function PO(Fwe,Vwe,Bwe){Bwe[10]=NC(26,-1);var Uwe=Bwe[6];Q_(Bwe[10],17)[18]=Uwe;var Xwe=Bwe[6];Q_(Bwe[10],16)[17]=Xwe;var Wwe=Bwe[6];Q_(Bwe[10],15)[16]=Wwe;var qwe=Bwe[6];Q_(Bwe[10],14)[15]=qwe;var zwe=Bwe[6];Q_(Bwe[10],13)[14]=zwe;var Jwe=Bwe[6];Q_(Bwe[10],12)[13]=Jwe;var Hwe=Bwe[6];Q_(Bwe[10],11)[12]=Hwe;var Gwe=Bwe[6];Q_(Bwe[10],10)[11]=Gwe;var Zwe=Bwe[6];Q_(Bwe[10],9)[10]=Zwe;var Kwe=Bwe[6];Q_(Bwe[10],8)[9]=Kwe;var Qwe=Bwe[6];Q_(Bwe[10],7)[8]=Qwe;var $we=Bwe[6];Q_(Bwe[10],6)[7]=$we;var eve=Bwe[6];Q_(Bwe[10],5)[6]=eve;var tve=Bwe[6];return Q_(Bwe[10],4)[5]=tve,50>Fwe?_O(1+Fwe,Vwe,Bwe,_H):$w(_O,[0,Vwe,Bwe,_H])}function _O(Fwe,Vwe,Bwe,Uwe){for(var Xwe=Uwe;;){var Wwe=QI(XZ,Xwe,Bwe);if(51>>0){_v(Bwe[1],Bwe);var Xwe=Wwe;continue}switch(Wwe){case 0:return Pj(Bwe),50>Fwe?PO(1+Fwe,Vwe,Bwe):$w(PO,[0,Vwe,Bwe]);case 1:return WR(Bwe),50>Fwe?PO(1+Fwe,Vwe,Bwe):$w(PO,[0,Vwe,Bwe]);case 2:var qwe=$D(Vwe,Bwe),zwe=Lj($J),Jwe=RO(Vwe,zwe,Bwe);return 50>Fwe?PO(1+Fwe,XR(Jwe[1],qwe,Jwe[2],zwe,1),Bwe):$w(PO,[0,XR(Jwe[1],qwe,Jwe[2],zwe,1),Bwe]);case 3:var Hwe=Q_(Bwe[10],0)[1],Gwe=Sj(Bwe,0|Bwe[5]+2,Hwe),Zwe=Bwe[6],Kwe=Sj(Bwe,Q_(Bwe[10],0)[1],Zwe),Qwe=Sj(Bwe,Bwe[5],Bwe[6]);if(Vwe[4]){var $we=Vwe[3]?PR(Vwe,$D(Vwe,Bwe),Qwe):Vwe,eve=QD(1,$we);return Uw(Kwe,Due)?50>Fwe?PO(1+Fwe,eve,Bwe):$w(PO,[0,eve,Bwe]):[0,eve,80]}var tve=$D(Vwe,Bwe),ave=Lj($J);Yj(ave,Gwe),Yj(ave,Kwe);var nve=RO(Vwe,ave,Bwe);return 50>Fwe?PO(1+Fwe,XR(nve[1],tve,nve[2],ave,1),Bwe):$w(PO,[0,XR(nve[1],tve,nve[2],ave,1),Bwe]);case 4:return Vwe[3]?50>Fwe?PO(1+Fwe,QD(0,Vwe),Bwe):$w(PO,[0,QD(0,Vwe),Bwe]):(ZD(1,Bwe),[0,Vwe,Jz]);case 5:var rve=$D(Vwe,Bwe),sve=Lj($J),ive=OO(Vwe,sve,Bwe);return 50>Fwe?PO(1+Fwe,XR(ive[1],rve,ive[2],sve,1),Bwe):$w(PO,[0,XR(ive[1],rve,ive[2],sve,1),Bwe]);case 6:var ove=Tj(Bwe,Bwe[5]),lve=$D(Vwe,Bwe),pve=Lj($J),dve=Lj($J);Mj(dve,ove);var cve=IO(Vwe,ove,pve,dve,0,Bwe),uve=cve[3],mve=Rj(dve),fve=Rj(pve),hve=[1,[0,VD(lve,cve[2]),fve,mve,uve]];return[0,cve[1],hve];case 7:var yve=Q_(Bwe[10],0)[1],gve=Sj(Bwe,Bwe[5],yve),bve=Q_(Bwe[10],1)[2],xve=Sj(Bwe,Q_(Bwe[10],0)[1],bve),Sve=Bwe[6],Eve=Sj(Bwe,Q_(Bwe[10],1)[2],Sve);return NR(Vwe,Bwe,Eve,QR(0,xve,gve));case 8:var Tve=Q_(Bwe[10],0)[1],Ave=Sj(Bwe,Bwe[5],Tve),Pve=Bwe[6];return[0,Vwe,QR(0,Sj(Bwe,Q_(Bwe[10],0)[1],Pve),Ave)];case 9:var _ve=Q_(Bwe[10],0)[1],Nve=Sj(Bwe,Bwe[5],_ve),kve=Q_(Bwe[10],1)[2],Cve=Sj(Bwe,Q_(Bwe[10],0)[1],kve),wve=Bwe[6],vve=Sj(Bwe,Q_(Bwe[10],1)[2],wve);return NR(Vwe,Bwe,vve,QR(2,Cve,Nve));case 10:var Ive=Q_(Bwe[10],0)[1],jve=Sj(Bwe,Bwe[5],Ive),Lve=Bwe[6];return[0,Vwe,QR(2,Sj(Bwe,Q_(Bwe[10],0)[1],Lve),jve)];case 11:var Dve=Q_(Bwe[10],0)[1],Rve=Sj(Bwe,Bwe[5],Dve),Ove=Q_(Bwe[10],1)[2],Mve=Sj(Bwe,Q_(Bwe[10],0)[1],Ove),Yve=Bwe[6],Fve=Sj(Bwe,Q_(Bwe[10],1)[2],Yve);return NR(Vwe,Bwe,Fve,QR(1,Mve,Rve));case 12:var Vve=Q_(Bwe[10],0)[1],Bve=Sj(Bwe,Bwe[5],Vve),Uve=Bwe[6];return[0,Vwe,QR(1,Sj(Bwe,Q_(Bwe[10],0)[1],Uve),Bve)];case 13:var Xve=Q_(Bwe[10],0)[1],Wve=Sj(Bwe,Bwe[5],Xve),qve=Q_(Bwe[10],1)[2],zve=Sj(Bwe,Q_(Bwe[10],0)[1],qve),Jve=Bwe[6],Hve=Sj(Bwe,Q_(Bwe[10],1)[2],Jve);try{var Gve=[0,Vwe,QR(3,zve,Wve)],Zve=Gve}catch(AIe){if(AIe=Pv(AIe),!hCe)throw AIe;var Zve=[0,TR(Vwe,$D(Vwe,Bwe),59),Rue]}return NR(Zve[1],Bwe,Hve,Zve[2]);case 14:var Kve=Q_(Bwe[10],0)[1],Qve=Sj(Bwe,Bwe[5],Kve),$ve=Bwe[6],eIe=Sj(Bwe,Q_(Bwe[10],0)[1],$ve);try{var tIe=[0,Vwe,QR(3,eIe,Qve)];return tIe}catch(AIe){if(AIe=Pv(AIe),hCe)return[0,TR(Vwe,$D(Vwe,Bwe),59),Oue];throw AIe}case 15:var aIe=Q_(Bwe[10],0)[1],nIe=Sj(Bwe,Bwe[5],aIe),rIe=Q_(Bwe[10],1)[2],sIe=Sj(Bwe,Q_(Bwe[10],0)[1],rIe),iIe=Bwe[6],oIe=Sj(Bwe,Q_(Bwe[10],1)[2],iIe);return NR(Vwe,Bwe,oIe,QR(3,sIe,nIe));case 16:var lIe=Q_(Bwe[10],0)[1],pIe=Sj(Bwe,Bwe[5],lIe),dIe=Bwe[6];return[0,Vwe,QR(3,Sj(Bwe,Q_(Bwe[10],0)[1],dIe),pIe)];case 17:var cIe=Q_(Bwe[10],0)[1],uIe=Sj(Bwe,Bwe[5],cIe),mIe=Q_(Bwe[10],1)[2],fIe=Sj(Bwe,Q_(Bwe[10],0)[1],mIe),hIe=Bwe[6],yIe=Sj(Bwe,Q_(Bwe[10],1)[2],hIe);return NR(Vwe,Bwe,yIe,QR(3,fIe,uIe));case 18:var gIe=Q_(Bwe[10],0)[1],bIe=Sj(Bwe,Q_(Bwe[10],1)[2],gIe),xIe=Q_(Bwe[10],2)[3];return[0,Vwe,QR(3,Sj(Bwe,Q_(Bwe[10],3)[4],xIe),bIe)];case 19:var SIe=Sj(Bwe,Bwe[5],Bwe[6]);WR(Bwe);try{var EIe=[0,Vwe,OD(JCe,SIe)];return EIe}catch(AIe){if(AIe=Pv(AIe),AIe===MZ)return[0,Vwe,0];throw AIe}case 20:return[0,Vwe,65];case 23:return[0,Vwe,1];case 24:return[0,Vwe,2];case 25:return[0,Vwe,3];case 26:return[0,Vwe,4];case 27:return[0,Vwe,5];case 28:return[0,Vwe,6];case 29:return[0,Vwe,13];case 30:return[0,Vwe,11];case 31:return[0,Vwe,9];case 32:return[0,Vwe,10];case 37:return[0,Vwe,92];case 38:return[0,Vwe,93];case 41:return[0,Vwe,Jz];case 43:return[0,Vwe,83];case 44:return[0,Vwe,85];case 45:return[0,Vwe,46];case 46:return[0,Vwe,12];case 48:return[0,Vwe,97];case 49:return[0,Vwe,98];case 50:var TIe=Vwe[3]?TR(Vwe,$D(Vwe,Bwe),4):Vwe;return[0,TIe,YF];case 51:return[0,Vwe,XB];case 21:case 35:return[0,Vwe,7];case 22:case 36:return[0,Vwe,8];case 33:case 42:return[0,Vwe,80];case 34:case 40:return[0,Vwe,79];default:return[0,Vwe,78];}}}function NO(Fwe,Vwe){return Qw(PO(0,Fwe,Vwe))}function IO(Fwe,Vwe,Bwe,Uwe,Xwe,Wwe){var qwe=Fwe,zwe=Xwe;a:for(;;)for(var Jwe=YH;;){var Hwe=KI(XZ,Jwe,Wwe);if(3>>0){_v(Wwe[1],Wwe);var Jwe=Hwe;continue}switch(Hwe){case 0:var Gwe=Tj(Wwe,Wwe[5]);if(Mj(Uwe,Gwe),Vwe===Gwe)return[0,qwe,$D(qwe,Wwe),zwe];Mj(Bwe,Gwe);continue a;case 1:Mj(Uwe,Tj(Wwe,Wwe[5]));var Zwe=LO(qwe,Bwe,Wwe),Kwe=Zwe[2];Yj(Uwe,$I(Wwe));var qwe=Zwe[1],zwe=Kwe||zwe;continue a;case 2:var Qwe=Sj(Wwe,Wwe[5],Wwe[6]);Yj(Uwe,Qwe);var $we=_R(qwe,$D(qwe,Wwe));return Yj(Bwe,Qwe),[0,$we,$D($we,Wwe),zwe];default:var eve=Tj(Wwe,Wwe[5]);Mj(Uwe,eve),Mj(Bwe,eve);continue a;}}}function LO(Fwe,Vwe,Bwe){for(var Uwe=261;;){var Xwe=KI(XZ,Uwe,Bwe);if(17>>0){_v(Bwe[1],Bwe);var Uwe=Xwe;continue}switch(Xwe){case 0:return[0,Fwe,0];case 1:return Yj(Vwe,Mue),[0,Fwe,0];case 2:var Wwe=Tj(Bwe,0|Bwe[5]+1),qwe=ZR(Tj(Bwe,0|Bwe[5]+2)),zwe=KR(0|(0|16*ZR(Wwe))+qwe);return _I(function(bve){return Mj(Vwe,bve)},zwe),[0,Fwe,0];case 3:var Jwe=Tj(Bwe,Bwe[5]),Hwe=Tj(Bwe,0|Bwe[5]+1),Gwe=Tj(Bwe,0|Bwe[5]+2),Zwe=JR(Gwe),Kwe=JR(Hwe)<<3,Qwe=0|(0|(JR(Jwe)<<6)+Kwe)+Zwe;if(YH<=Qwe){var $we=JR(Hwe),eve=KR(0|(JR(Jwe)<<3)+$we);_I(function(bve){return Mj(Vwe,bve)},eve),Mj(Vwe,Gwe)}else{var tve=KR(Qwe);_I(function(bve){return Mj(Vwe,bve)},tve)}return[0,Fwe,1];case 4:var ave=Tj(Bwe,Bwe[5]),nve=JR(Tj(Bwe,0|Bwe[5]+1)),rve=KR(0|(JR(ave)<<3)+nve);return _I(function(bve){return Mj(Vwe,bve)},rve),[0,Fwe,1];case 5:return Mj(Vwe,LI(0)),[0,Fwe,0];case 6:return Mj(Vwe,LI(8)),[0,Fwe,0];case 7:return Mj(Vwe,LI(12)),[0,Fwe,0];case 8:return Mj(Vwe,LI(10)),[0,Fwe,0];case 9:return Mj(Vwe,LI(13)),[0,Fwe,0];case 10:return Mj(Vwe,LI(9)),[0,Fwe,0];case 11:return Mj(Vwe,LI(11)),[0,Fwe,0];case 12:var sve=KR(JR(Tj(Bwe,Bwe[5])));return _I(function(bve){return Mj(Vwe,bve)},sve),[0,Fwe,1];case 13:var ive=Tj(Bwe,0|Bwe[5]+1),ove=Tj(Bwe,0|Bwe[5]+2),lve=Tj(Bwe,0|Bwe[5]+3),pve=ZR(Tj(Bwe,0|Bwe[5]+4)),dve=ZR(lve)<<4,cve=ZR(ove)<<8,uve=KR(0|(0|(0|(ZR(ive)<<12)+cve)+dve)+pve);return _I(function(bve){return Mj(Vwe,bve)},uve),[0,Fwe,0];case 14:var mve=Zk(Jv(Yue,Sj(Bwe,0|Bwe[5]+2,0|Bwe[6]-1))),fve=IU>>0){_v(Bwe[1],Bwe);var Uwe=Xwe;continue}switch(Xwe){case 0:var Wwe=_R(Fwe,$D(Fwe,Bwe));return[0,Wwe,$D(Wwe,Bwe)];case 1:Pj(Bwe),Mj(Vwe,10);continue a;case 2:var qwe=$D(Fwe,Bwe),zwe=Fwe[3]?TR(Fwe,qwe,[2,Vue,Fue]):Fwe;return[0,zwe,qwe];case 3:if(Fwe[3])return[0,Fwe,$D(Fwe,Bwe)];Yj(Vwe,Bue);continue a;default:Mj(Vwe,Tj(Bwe,Bwe[5]));continue a;}}}function OO(Fwe,Vwe,Bwe){a:for(;;)for(var Uwe=296;;){var Xwe=KI(XZ,Uwe,Bwe);if(2>>0){_v(Bwe[1],Bwe);var Uwe=Xwe;continue}switch(Xwe){case 0:return[0,Fwe,$D(Fwe,Bwe)];case 1:var Wwe=$D(Fwe,Bwe),qwe=Wwe[3];return Pj(Bwe),[0,Fwe,[0,Wwe[1],Wwe[2],[0,qwe[1],0|qwe[2]-1,0|qwe[3]-1]]];default:Mj(Vwe,Tj(Bwe,Bwe[5]));continue a;}}}function MO(Fwe,Vwe,Bwe,Uwe,Xwe){a:for(;;)for(var Wwe=380;;){var qwe=KI(XZ,Wwe,Xwe);if(6>>0){_v(Xwe[1],Xwe);var Wwe=qwe;continue}switch(qwe){case 0:var zwe=Tj(Xwe,Xwe[5]);switch(Vwe){case 0:var Jwe=39===zwe?1:0;break;case 1:var Jwe=34===zwe?1:0;break;default:if(60===zwe)var Hwe=1;else if(123===zwe)var Hwe=1;else var Jwe=0,Hwe=0;if(Hwe)return ZD(0|Xwe[12][4]-Xwe[11][4],Xwe),[0,Fwe,$D(Fwe,Xwe)];}if(Jwe)return[0,Fwe,$D(Fwe,Xwe)];Mj(Uwe,zwe),Mj(Bwe,zwe);continue a;case 1:var Gwe=_R(Fwe,$D(Fwe,Xwe));return[0,Gwe,$D(Gwe,Xwe)];case 2:var Zwe=Sj(Xwe,Xwe[5],Xwe[6]);Yj(Uwe,Zwe),Yj(Bwe,Zwe),Pj(Xwe);continue a;case 3:var Kwe=Sj(Xwe,0|Xwe[5]+3,0|Xwe[6]-1);Yj(Uwe,Sj(Xwe,Xwe[5],Xwe[6]));var Qwe=KR(Zk(Jv(zue,Kwe)));_I(function(WIe){return Mj(Bwe,WIe)},Qwe);continue a;case 4:var $we=Sj(Xwe,0|Xwe[5]+2,0|Xwe[6]-1);Yj(Uwe,Sj(Xwe,Xwe[5],Xwe[6]));var eve=KR(Zk($we));_I(function(WIe){return Mj(Bwe,WIe)},eve);continue a;case 5:var tve=Sj(Xwe,0|Xwe[5]+1,0|Xwe[6]-1);Yj(Uwe,Sj(Xwe,Xwe[5],Xwe[6]));var ave=PN(tve,Jue);if(!(0<=ave)){var Zve=PN(tve,Hue);if(!(0<=Zve)){var SIe=PN(tve,Gue);if(!(0<=SIe)){var jIe=PN(tve,Zue);if(!(0<=jIe)){var YIe=PN(tve,Kue);if(0<=YIe){if(!(0>>0){_v(Wwe[1],Wwe);var zwe=Jwe;continue}switch(Jwe){case 0:var Hwe=_R(qwe,$D(qwe,Wwe));return[0,Hwe,VD(Vwe,$D(Hwe,Wwe)),1];case 1:return Mj(Xwe,96),[0,qwe,VD(Vwe,$D(qwe,Wwe)),1];case 2:return Yj(Xwe,gTe),[0,qwe,VD(Vwe,$D(qwe,Wwe)),0];case 3:Mj(Uwe,92),Mj(Xwe,92);var Gwe=LO(qwe,Bwe,Wwe),Zwe=$I(Wwe);Yj(Uwe,Zwe),Yj(Xwe,Zwe);var qwe=Gwe[1];continue a;case 4:var Kwe=Sj(Wwe,Wwe[5],0|Wwe[5]+2);Yj(Uwe,Kwe),Yj(Xwe,Kwe),Yj(Bwe,bTe),Pj(Wwe);continue a;case 5:var Qwe=Tj(Wwe,Wwe[5]);Mj(Uwe,Qwe),Mj(Xwe,Qwe),Mj(Bwe,10),Pj(Wwe);continue a;default:var $we=Tj(Wwe,Wwe[5]);Mj(Uwe,$we),Mj(Xwe,$we),Mj(Bwe,$we);continue a;}}}function VO(Fwe,Vwe){var Bwe=Fwe[2],Uwe=Bwe.slice();return Uwe[2]=Bwe[2],[0,[0],0,Vwe,KD(Uwe,Fwe)]}function UO(Fwe,Vwe){var Bwe=0|Vwe+1;if(Fwe[1].length-1zwe))for(var Jwe=1;;){if(qwe[Jwe+1]=Xwe(Jwe),zwe!=Jwe){var Jwe=0|Jwe+1;continue}break}var Wwe=qwe}Fwe[1]=Wwe;break}for(;;){if(Fwe[2]<=Vwe){var Hwe=Fwe[4];switch(Fwe[3]){case 0:var Gwe=SR(TO(Hwe,Hwe[2]));break;case 1:var Gwe=SR(NO(Hwe,Hwe[2]));break;case 2:var Zwe=Hwe[2],Kwe=Hwe;b:for(;;){for(var Qwe=342;;){var $we=KI(XZ,Qwe,Zwe);if(14<$we>>>0){_v(Zwe[1],Zwe);var Qwe=$we;continue}switch($we){case 0:var eve=[0,Kwe,YF];break;case 1:Pj(Zwe);continue b;case 2:WR(Zwe);continue b;case 3:var tve=$D(Kwe,Zwe),ave=Lj($J),nve=OO(Kwe,ave,Zwe),Kwe=XR(nve[1],tve,nve[2],ave,1);continue b;case 4:var rve=$D(Kwe,Zwe),sve=Lj($J),ive=RO(Kwe,sve,Zwe),Kwe=XR(ive[1],rve,ive[2],sve,1);continue b;case 5:var eve=[0,Kwe,92];break;case 6:var eve=[0,Kwe,99];break;case 7:var eve=[0,Kwe,93];break;case 8:var eve=[0,Kwe,1];break;case 9:var eve=[0,Kwe,80];break;case 10:var eve=[0,Kwe,11];break;case 11:var eve=[0,Kwe,78];break;case 12:WR(Zwe);var eve=[0,Kwe,SW];break;case 13:var ove=Tj(Zwe,Zwe[5]),lve=$D(Kwe,Zwe),pve=Lj($J),dve=Lj($J);Mj(dve,ove);var cve=39===ove?0:1,uve=MO(Kwe,cve,pve,dve,Zwe);Mj(dve,ove);var mve=Rj(pve),fve=Rj(dve),hve=[4,[0,VD(lve,uve[2]),mve,fve]],eve=[0,uve[1],hve];break;default:var eve=[0,Kwe,XB];}var Gwe=SR(eve);break}break}break;case 3:for(var yve=Hwe[2][12],gve=YD(Hwe[1],yve,yve),bve=Lj($J),xve=Lj($J),Sve=Hwe[2],Eve=373;;){var Tve=KI(XZ,Eve,Sve);if(4>>0){_v(Sve[1],Sve);var Eve=Tve;continue}switch(Tve){case 0:var Ave=Sj(Sve,Sve[5],Sve[6]);Yj(xve,Ave),Yj(bve,Ave),Pj(Sve);var Pve=MO(Hwe,2,bve,xve,Sve),_ve=Rj(bve),Nve=Rj(xve),kve=[4,[0,VD(gve,Pve[2]),_ve,Nve]],Cve=[0,Pve[1],kve];break;case 1:var Cve=[0,Hwe,YF];break;case 2:var Cve=[0,Hwe,92];break;case 3:var Cve=[0,Hwe,1];break;default:var wve=Tj(Sve,Sve[5]);Mj(xve,wve),Mj(bve,wve);var vve=MO(Hwe,2,bve,xve,Sve),Ive=Rj(bve),jve=Rj(xve),Lve=[4,[0,VD(gve,vve[2]),Ive,jve]],Cve=[0,vve[1],Lve];}var Gwe=SR([0,Cve[1],Cve[2]]);break}break;case 4:var Dve=Hwe[2],Rve=Hwe;b:for(;;){for(var Ove=NV;;){var Mve=KI(XZ,Ove,Dve);if(5>>0){_v(Dve[1],Dve);var Ove=Mve;continue}switch(Mve){case 0:Pj(Dve);continue b;case 1:WR(Dve);continue b;case 2:var Yve=$D(Rve,Dve),Fve=Lj($J),Vve=OO(Rve,Fve,Dve),Rve=XR(Vve[1],Yve,Vve[2],Fve,1);continue b;case 3:var Bve=$D(Rve,Dve),Uve=Lj($J),Xve=RO(Rve,Uve,Dve),Rve=XR(Xve[1],Bve,Xve[2],Uve,1);continue b;case 4:var Wve=$D(Rve,Dve),qve=Lj($J),zve=Lj($J),Jve=Lj($J);Yj(Jve,hTe);var Hve=YO(Rve,Wve,qve,zve,Jve,Dve),Gve=Hve[3],Zve=Rj(Jve),Kve=Rj(zve),Qve=[0,Rj(qve),Kve,Zve],$ve=[0,Hve[1],[2,[0,Hve[2],Qve,Gve]]];break;default:var eIe=_R(Rve,$D(Rve,Dve)),$ve=[0,eIe,[2,[0,$D(eIe,Dve),yTe,1]]];}var Gwe=SR($ve);break}break}break;default:var tIe=Hwe[2],aIe=Hwe;b:for(;;){for(var nIe=300;;){var rIe=KI(XZ,nIe,tIe);if(6>>0){_v(tIe[1],tIe);var nIe=rIe;continue}switch(rIe){case 0:var sIe=[0,aIe,YF];break;case 1:Pj(tIe);continue b;case 2:WR(tIe);continue b;case 3:var iIe=$D(aIe,tIe),oIe=Lj($J),lIe=OO(aIe,oIe,tIe),aIe=XR(lIe[1],iIe,lIe[2],oIe,1);continue b;case 4:var pIe=$D(aIe,tIe),dIe=Lj($J),cIe=RO(aIe,dIe,tIe),aIe=XR(cIe[1],pIe,cIe[2],dIe,1);continue b;case 5:var uIe=$D(aIe,tIe),mIe=Lj($J);c:for(;;){for(var fIe=323;;){var hIe=KI(XZ,fIe,tIe);if(7>>0){_v(tIe[1],tIe);var fIe=hIe;continue}switch(hIe){case 0:var yIe=[0,TR(aIe,$D(aIe,tIe),14),Uue];break;case 1:var yIe=[0,TR(aIe,$D(aIe,tIe),14),Xue];break;case 2:Yj(mIe,Sj(tIe,tIe[5],0|tIe[5]+2));continue c;case 3:var yIe=[0,aIe,Sj(tIe,0|tIe[5]+1,tIe[6])];break;case 4:var yIe=[0,aIe,Wue];break;case 5:Mj(mIe,Tj(tIe,tIe[5]));d:for(;;)for(var gIe=335;;){var bIe=KI(XZ,gIe,tIe);if(4>>0){_v(tIe[1],tIe);var gIe=bIe;continue}switch(bIe){case 0:break;case 3:Mj(mIe,Tj(tIe,tIe[5]));break;case 4:Mj(mIe,Tj(tIe,tIe[5]));continue d;default:Yj(mIe,Sj(tIe,tIe[5],0|tIe[5]+2));continue d;}continue c}case 6:var yIe=[0,TR(aIe,$D(aIe,tIe),14),que];break;default:Mj(mIe,Tj(tIe,tIe[5]));continue c;}var xIe=yIe[1],SIe=VD(uIe,$D(xIe,tIe)),EIe=yIe[2],sIe=[0,xIe,[3,[0,SIe,Rj(mIe),EIe]]];break}break}break;default:var sIe=[0,_R(aIe,$D(aIe,tIe)),XB];}var Gwe=SR(sIe);break}break}}var TIe=Gwe[1],AIe=TIe[2],PIe=AIe.slice();PIe[2]=AIe[2];var _Ie=KD(PIe,TIe);Fwe[4]=TIe;var NIe=Fwe[2],kIe=[0,[0,_Ie,Gwe[2]]];Q_(Fwe[1],NIe)[NIe+1]=kIe,Fwe[2]=0|Fwe[2]+1;continue}return 0}}function XO(Fwe){return $v(Fwe[19][1])}function WO(Fwe){return Fwe[23][5]}function JO(Fwe,Vwe){var Bwe=Vwe[2];Fwe[1][1]=[0,[0,Vwe[1],Bwe],Fwe[1][1]];var Uwe=Fwe[18];return Uwe?Nv(Uwe[1],Fwe,Bwe):Uwe}function ZO(Fwe,Vwe){var Bwe=Vwe[2];if(Nv(HCe[3],Bwe,Fwe[4][1]))return JO(Fwe,[0,Vwe[1],[7,Bwe]]);var Uwe=Nv(HCe[4],Bwe,Fwe[4][1]);return Fwe[4][1]=Uwe,0}function KO(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0;if(2>Bwe){var Uwe=Vwe[21][1];UO(Uwe,Bwe);var Xwe=Q_(Uwe[1],Bwe)[Bwe+1];return Xwe?Xwe[1][2]:Vv(p_e)}throw[0,YZ,i_e]}function QO(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[6]=Fwe,Bwe}function $O(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[13]=Fwe,Bwe}function SM(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[8]=Fwe,Bwe}function TM(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[11]=Fwe,Bwe}function PM(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[14]=Fwe,Bwe}function _M(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[7]=Fwe,Bwe}function NM(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[12]=Fwe,Bwe}function IM(Fwe,Vwe){var Bwe=Vwe.slice();return Bwe[18]=[0,Fwe],Bwe}function LM(Fwe){function Vwe(Bwe){return JO(Fwe,Bwe)}return function(Bwe){return _I(Vwe,Bwe)}}function RM(Fwe){return Fwe[5][1]}function OM(Fwe){var Vwe=Fwe.slice();return Vwe[18]=0,Vwe}function MM(Fwe,Vwe,Bwe){var Uwe=Fwe.slice();return Uwe[3]=HCe[1],Uwe[8]=0,Uwe[9]=0,Uwe[10]=1,Uwe[16]=Bwe,Uwe[17]=Vwe,Uwe}function YM(Fwe){return Uw(Fwe,s_e)?0:1}function VM(Fwe){return Uw(Fwe,KPe)&&Uw(Fwe,QPe)&&Uw(Fwe,$Pe)&&Uw(Fwe,e_e)&&Uw(Fwe,t_e)&&Uw(Fwe,a_e)&&Uw(Fwe,n_e)&&Uw(Fwe,r_e)?0:1}function UM(Fwe){return Uw(Fwe,GPe)&&Uw(Fwe,ZPe)?0:1}function XM(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0;return KO([0,Bwe],Vwe)[1]}function WM(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0;return KO([0,Bwe],Vwe)[3]}function JM(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0;return KO([0,Bwe],Vwe)[2]}function ZM(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0;return KO([0,Bwe],Vwe)[4]}function KM(Fwe){var Vwe=RM(Fwe);if(Vwe)var Bwe=Vwe[1][2][1],Uwe=Bwe>>0)){var Uwe=6==Bwe?0:1;if(!Uwe)return Uwe}else if(!(YJ<(0|Bwe+1)>>>0))return 1}return KM(Fwe)}function $M(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0,Uwe=9===XM([0,Bwe],Vwe)?1:0,Xwe=Uwe?[0,JM([0,Bwe],Vwe)]:Uwe;return Xwe}function SY(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0,Uwe=WM([0,Bwe],Vwe),Xwe=XM([0,Bwe],Vwe);if(!VM(Uwe)&&!UM(Uwe)&&!YM(Uwe)){if("number"==typeof Xwe){var Wwe=0|Xwe-1,qwe=58>>0?64<=Wwe?0:1:27==Wwe?1:0;if(qwe)return 1}return 0}return 1}function TY(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0,Uwe=15===XM([0,Bwe],Vwe)?1:0;if(Uwe)var Xwe=Uwe;else var Wwe=63===XM([0,Bwe],Vwe)?1:0,Xwe=Wwe?15===XM([0,0|Bwe+1],Vwe)?1:0:Wwe;return Xwe}function PY(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:0,Uwe=XM([0,Bwe],Vwe);if("number"==typeof Uwe){var Xwe=14===Uwe?1:40===Uwe?1:0;if(Xwe)return 1}return 0}function _Y(Fwe,Vwe){return JO(Fwe,[0,JM(0,Fwe),Vwe])}function NY(Fwe){var Vwe=Fwe[1];if("number"==typeof Vwe)switch(Vwe){case 0:return 2;case 108:return 4;}else switch(Vwe[0]){case 0:return 0;case 1:case 4:return 1;}var Bwe=Fwe[2];return YM(Bwe)?3:VM(Bwe)?40:[1,Bwe]}function IY(Fwe){var Vwe=ZM(0,Fwe);_v(LM(Fwe),Vwe);var Bwe=WM(0,Fwe);return _Y(Fwe,NY([0,XM(0,Fwe),Bwe]))}function LY(Fwe){function Vwe(Bwe){return JO(Fwe,[0,Bwe[1],57])}return function(Bwe){return _I(Vwe,Bwe)}}function RY(Fwe,Vwe){var Bwe=Fwe[6];return Bwe?_Y(Fwe,Vwe):Bwe}function OY(Fwe,Vwe){var Bwe=Fwe[6];return Bwe?JO(Fwe,[0,Vwe[1],Vwe[2]]):Bwe}function MY(Fwe){var Vwe=Fwe[22][1];if(Vwe){var Bwe=JM(0,Fwe),Uwe=XM(0,Fwe),Xwe=WM(0,Fwe),Wwe=[0,Bwe,Uwe,XO(Fwe),Xwe];_v(Vwe[1],Wwe)}var qwe=Fwe[21][1];UO(qwe,0);var zwe=Q_(qwe[1],0)[1],Jwe=zwe?zwe[1][1]:Vv(l_e);Fwe[20][1]=Jwe;var Hwe=ZM(0,Fwe);_v(LM(Fwe),Hwe);var Gwe=KO([0,0],Fwe)[5];_I(function(nve){return Fwe[2][1]=[0,nve,Fwe[2][1]],0},Gwe);var Zwe=[0,JM(0,Fwe)];Fwe[5][1]=Zwe;var Kwe=Fwe[21][1];if(UO(Kwe,0),1(0|eve.length-1-Qwe)?0:0>(0|$we.length-1-Qwe)?0:(S_(eve,1,$we,0,Qwe),1):0;tve||Uv($Z)}var ave=0|Kwe[2]-1;return Q_(Kwe[1],ave)[ave+1]=0,Kwe[2]=0|Kwe[2]-1,0}function YY(Fwe,Vwe){Fwe[19][1]=[0,Vwe,Fwe[19][1]];var Bwe=XO(Fwe),Uwe=VO(Fwe[20][1],Bwe);return Fwe[21][1]=Uwe,0}function VY(Fwe){var Vwe=Fwe[19][1],Bwe=Vwe?Vwe[2]:Vv(HPe);Fwe[19][1]=Bwe;var Uwe=XO(Fwe),Xwe=VO(Fwe[20][1],Uwe);return Fwe[21][1]=Xwe,0}function UY(Fwe){var Vwe=1-QM(Fwe);return Vwe?9===XM(0,Fwe)?MY(Fwe):IY(Fwe):Vwe}function XY(Fwe,Vwe){return _w(XM(0,Fwe),Vwe)&&IY(Fwe),MY(Fwe)}function WY(Fwe,Vwe){var Bwe=LN(XM(0,Fwe),Vwe),Uwe=Bwe?(MY(Fwe),1):Bwe;return Uwe}function JY(Fwe,Vwe){return Uw(WM(0,Fwe),Vwe)&&IY(Fwe),MY(Fwe)}function ZY(Fwe){var Vwe=Fwe[22][1];if(Vwe){var Bwe=[0,0,0],Uwe=[0,function(Wwe){if(0===Bwe[1]){var qwe=[];return KP(qwe,[0,Wwe,qwe]),Bwe[1]=1,Bwe[2]=qwe,0}var zwe=Bwe[2],Jwe=[0,Wwe,zwe[2]];return Bwe[1]=0|Bwe[1]+1,zwe[2]=Jwe,Bwe[2]=Jwe,0}];Fwe[22][1]=Uwe;var Xwe=[0,[0,Vwe[1],Bwe]]}else var Xwe=Vwe;return[0,Fwe[1][1],Fwe[2][1],Fwe[5][1],Fwe[19][1],Fwe[20][1],Xwe]}function KY(Fwe,Vwe,Bwe){if(Bwe){var Uwe=Bwe[1],Xwe=Uwe[1];if(Vwe[22][1]=[0,Xwe],Fwe){var Wwe=Uwe[2],qwe=0>16)*Vwe<<16)+(Fwe&MJ)*Vwe});var $G=Math.imul,SZ=function(){function Fwe(Jwe,Hwe){return Jwe<>>32-Hwe}function Vwe(Jwe,Hwe){return Hwe=$G(Hwe,-862048943),Hwe=Fwe(Hwe,15),Hwe=$G(Hwe,461845907),Jwe^=Hwe,Jwe=Fwe(Jwe,13),0|(0|Jwe+(Jwe<<2))+-430675100}function Bwe(Jwe){return Jwe>>>=16,Jwe=$G(Jwe,-2048144789),Jwe>>>=13,Jwe=$G(Jwe,-1028477387),Jwe>>>=16,Jwe}function Uwe(Jwe,Hwe){var Gwe=Hwe[1]|Hwe[2]<<24,Zwe=Hwe[2]>>>8|Hwe[3]<<16;return Jwe=Vwe(Jwe,Gwe),Jwe=Vwe(Jwe,Zwe),Jwe}function Xwe(Jwe,Hwe){var Gwe=Hwe[1]|Hwe[2]<<24,Zwe=Hwe[2]>>>8|Hwe[3]<<16;return Jwe=Vwe(Jwe,Zwe^Gwe),Jwe}function Wwe(Jwe,Hwe){var Gwe=Hwe.length,Zwe,Kwe;for(Zwe=0;Zwe+4<=Gwe;Zwe+=4)Kwe=Hwe.charCodeAt(Zwe)|Hwe.charCodeAt(Zwe+1)<<8|Hwe.charCodeAt(Zwe+2)<<16|Hwe.charCodeAt(Zwe+3)<<24,Jwe=Vwe(Jwe,Kwe);switch(Kwe=0,3&Gwe){case 3:Kwe=Hwe.charCodeAt(Zwe+2)<<16;case 2:Kwe|=Hwe.charCodeAt(Zwe+1)<<8;case 1:Kwe|=Hwe.charCodeAt(Zwe),Jwe=Vwe(Jwe,Kwe);}return Jwe^=Gwe,Jwe}function qwe(Jwe,Hwe){var Gwe=Hwe.length,Zwe,Kwe;for(Zwe=0;Zwe+4<=Gwe;Zwe+=4)Kwe=Hwe[Zwe]|Hwe[Zwe+1]<<8|Hwe[Zwe+2]<<16|Hwe[Zwe+3]<<24,Jwe=Vwe(Jwe,Kwe);switch(Kwe=0,3&Gwe){case 3:Kwe=Hwe[Zwe+2]<<16;case 2:Kwe|=Hwe[Zwe+1]<<8;case 1:Kwe|=Hwe[Zwe],Jwe=Vwe(Jwe,Kwe);}return Jwe^=Gwe,Jwe}var zwe=YH;return function(Jwe,Hwe,Gwe,Zwe){var Kwe,Qwe,$we,eve,tve,ave,nve,rve,sve;for(eve=Hwe,(0>eve||eve>zwe)&&(eve=zwe),tve=Jwe,ave=Gwe,Kwe=[Zwe],Qwe=0,$we=1;Qwe<$we&&0=eve);rve++)Kwe[$we++]=nve[rve];}else if(nve instanceof X_){switch(6&nve.t){default:M_(nve);case 0:ave=Wwe(ave,nve.c);break;case 2:ave=qwe(ave,nve.c);}tve--}else nve===(0|nve)?(ave=Vwe(ave,nve+nve+1),tve--):nve===+nve&&(ave=Uwe(ave,ZN(nve)),tve--);return ave=Bwe(ave),ave&RU}}(),TZ=function(){function Fwe(zwe,Jwe){return 0|zwe+Jwe}function Vwe(zwe,Jwe,Hwe,Gwe,Zwe,Kwe){return Jwe=Fwe(Fwe(Jwe,zwe),Fwe(Gwe,Kwe)),Fwe(Jwe<>>32-Zwe,Hwe)}function Bwe(zwe,Jwe,Hwe,Gwe,Zwe,Kwe,Qwe){return Vwe(Jwe&Hwe|~Jwe&Gwe,zwe,Jwe,Zwe,Kwe,Qwe)}function Uwe(zwe,Jwe,Hwe,Gwe,Zwe,Kwe,Qwe){return Vwe(Jwe&Gwe|Hwe&~Gwe,zwe,Jwe,Zwe,Kwe,Qwe)}function Xwe(zwe,Jwe,Hwe,Gwe,Zwe,Kwe,Qwe){return Vwe(Jwe^Hwe^Gwe,zwe,Jwe,Zwe,Kwe,Qwe)}function Wwe(zwe,Jwe,Hwe,Gwe,Zwe,Kwe,Qwe){return Vwe(Hwe^(Jwe|~Gwe),zwe,Jwe,Zwe,Kwe,Qwe)}function qwe(zwe,Jwe){var Hwe=Jwe;for(zwe[Hwe>>2]|=$V<<8*(3&Hwe),Hwe=(-4&Hwe)+8;60>(63&Hwe);Hwe+=4)zwe[(Hwe>>2)-1]=0;zwe[(Hwe>>2)-1]=Jwe<<3,zwe[Hwe>>2]=536870911&Jwe>>29;var Gwe=[1732584193,4023233417,2562383102,271733878];for(Hwe=0;HweHwe;Hwe++)for(var tve=0;4>tve;tve++)eve[4*Hwe+tve]=Gwe[Hwe]>>8*tve&QW;return eve}return function(zwe,Jwe,Hwe){var Gwe=[];switch(6&zwe.t){default:M_(zwe);case 0:var Zwe=zwe.c;for(var Kwe=0;Kwe>2]=Zwe.charCodeAt(Qwe)|Zwe.charCodeAt(Qwe+1)<<8|Zwe.charCodeAt(Qwe+2)<<16|Zwe.charCodeAt(Qwe+3)<<24}for(;Kwe>2]|=Zwe.charCodeAt(Kwe+Jwe)<<8*(3&Kwe);break;case 4:var $we=zwe.c;for(var Kwe=0;Kwe>2]=$we[Qwe]|$we[Qwe+1]<<8|$we[Qwe+2]<<16|$we[Qwe+3]<<24}for(;Kwe>2]|=$we[Kwe+Jwe]<<8*(3&Kwe);}return IC(qwe(Gwe,Hwe))}}(),PZ=0;YC.prototype={truncate:function(){this.data=IN(0),this.modified()},modified:function(){var Fwe=MC();this.atime=Fwe,this.mtime=Fwe}},VC.prototype={exists:function(Fwe){return this.content[Fwe]?1:0},mk:function(Fwe,Vwe){this.content[Fwe]=Vwe},get:function(Fwe){return this.content[Fwe]},list:function(){var Fwe=[];for(var Vwe in this.content)Fwe.push(Vwe);return Fwe},remove:function(Fwe){delete this.content[Fwe]}};var _Z=new VC;_Z.mk(Rz,new VC),UC(0,new YC(IN(0))),UC(1,new YC(IN(0))),UC(2,new YC(IN(0)));var NZ=[],IZ={},LZ=0,RZ=[TB,W_(XV),-3],OZ=[TB,W_(XF),-4],MZ=[TB,W_(Kz),-7],YZ=[TB,W_(RG),-11],VZ=[0,W_(Rz),1,0,0],UZ=[0,0,0],XZ=[0,W_("\0\0\xB2\xFF\xB3\xFF\xB9\xFFB\0C\0T\0W\0F\0I\0J\0K\0M\0e\0\xDD\xFF\xDE\xFF\xDF\xFF\xE0\xFF\xE3\xFF\xE4\xFF\xE5\xFF\xE6\xFF\xE7\xFF\xE8\xFF\xC0\0L\0e\0\x17\x01n\x01\xF6\xFF\xF7\xFFl\0u\0v\0\0\0\x0E\0\x0F\0\x07\x003\x01\xFE\xFF\xFF\xFF\x01\0\x12\0(\0\f\0\x15\0*\0\f\0=\0-\0\t\0\xB6\xFF\xF9\xFF\xE0\x01B\0u\0\x0F\x000\x004\0\x17\0\xE5\x01(\x008\0\x1A\0K\0:\0\x17\0\xFB\xFFh\0a\0\xAC\0q\0m\0y\0q\0i\0{\0{\0\xA8\0\xCA\xFF\xFA\xFF\xC9\xFF\xF8\xFF\x0B\x02\xA5\x02\xFC\x02S\x03\xAA\x03\x01\x04X\x04\xAF\x04\x06\x05]\x05\xB4\x05\x0B\x06b\x06\xB9\x06\xC3\x01\x10\x07g\x07\xBE\x07\x15\bl\b\xC3\b\x1A\tq\t\xC8\t\xB8\0\xE2\xFFE\x02\xC7\xFF\xDC\xFF\xC6\xFF\xDB\xFF\xB7\xFF\xAA\0\xDA\xFF\xAB\0\xD9\xFF\xAC\0\xD8\xFF\xD2\xFF\xAD\0\xD7\xFF\xB0\0\xD0\xFF\xCF\xFF\xCC\xFF\xD4\xFF\xCB\xFF\xD3\xFF\xC8\xFF\xC5\xFF:\n\xCC\xFF\xCD\xFF\xCF\xFF\xD3\xFF\xB0\0\xD9\xFF\xDA\xFF\xDD\xFF\xDE\xFF\xDF\xFF\xE0\xFF\xE3\xFF\xE4\xFF~\0\xE7\xFF\x80\0\xE9\xFF\xEA\xFF\x9A\0\x94\n\xFA\n\xD6\x01Q\x0B\xA8\x0B\x1A\f\xF9\xFF\xCF\0\xF1\0D\0\x9C\0\x9D\0\xA3\0\xC4\x0B\xFF\xFF\x83\0\xC1\0\xD1\0\xF9\0\xB4\0\xC4\0\xA7\0\xCB\t\xD4\0\x96\0\xFA\xFF\x1F\f\xEA\0\x1D\x01\xB7\0\xF3\0\xF4\0\xFA\0$\f\xE9\0\x15\x01\xF7\0\xDF\x0B\x17\x01\xD9\0\xFC\xFF,\x01&\x01{\x01@\x01<\x01H\x01@\x018\x01J\x01d\x01\xFB\xFF\xF3\x01\x0F\x01K\x01j\x01c\x01K\f>\x01N\x01P\x01\xEC\x0Bp\x01?\x01x\f\xFF\fV\r\xAD\r\0\x02\x04\x0E[\x0E\xB2\x0E\t\x0F`\x0F\xB7\x0F\x0E\x10e\x10\xBC\x10\x13\x11j\x11\xC1\x11\x18\x12o\x12\xC6\x12\x1D\x13t\x13\xCB\x13\"\x14\xD1\x01\xE2\xFFy\x14\xD0\x14'\x15~\x15\x99\x01\x9D\x01\xAD\x01\xA6\x01\x9F\x01\xEB\xFF\xE6\xFF\xE5\xFF\xD1\xFF\x1B\f\xFC\xFF\xFD\xFF\xFE\xFF\xFF\xFF\xCF\x15\xEE\xFF\x01\0\xEF\xFF\x18\x16\xF4\xFF\xF5\xFF\xF6\xFF\xF7\xFF\xF8\xFF\xF9\xFF\xF1\x02H\x03>\x16\xFE\xFF\xFF\xFFU\x16\xFD\xFF\x9F\x03\xFC\xFF{\x16\x92\x16\xB8\x16\xCF\x16\xF2\xFF\xF5\x16\xF1\xFF\xD7\x02\xFB\xFF\xEA\x01\xFE\xFF\xFF\xFF\xE4\x01\xFD\xFF\xFC\xFF;\x02\xFD\xFF\xFE\xFF\xFF\xFF\0\x17\xF9\xFF\xEE\x01`\x01\x9C\x01\xA0\x01*\x02)\fC\x15\xFE\xFF\xFF\xFFc\x01\xAD\x01\xC7\x01+\x02\xA0\x01\xBA\x01\xAA\x01\x87\x15\xCA\x01\xA7\x01\xFB\xFF\xFC\xFF\x0B\x16\xF8\xFF\x04\0\xF9\xFF\xFA\xFF8\x17,\x03\xFF\xFF\xFD\xFF\x05\0\xFE\xFF\xC0\x17\x96\t\xFB\xFF\xFC\xFF\x0B\x02\xFF\xFF\xFD\xFF\xFE\xFF2\x18\xF1\xFF\xF2\xFF\x8A\x18\xF4\xFF\xF5\xFF\xF6\xFF\xF7\xFF\xF8\xFF\xFA\xFFv\x02\xB0\x01!\x02\"\x023\x02\x88\x167\x18\xFE\xFF\xFF\xFF\x05\x02L\x02_\x02\xF3\x02@\x02Q\x02C\x02\xBD\x16c\x02%\x02\xFB\xFF\xFC\xFF|\f\xFB\xFF\xFC\xFF\xFD\xFF\xFE\xFF\x06\0\xFF\xFF\xFC\x18\xF9\xFF\xF8\x18\x07\0\xFD\xFF\xFE\xFF\xFF\xFFO\x19\xDF\n_\f\x84\x17\x9C\x19\xFC\xFF\xFB\xFF\xD3\x19\xFA\xFF*\x1A\x81\x1A\xD8\x1A/\x1B\x86\x1B\xAA\x02\xF8\x1B\xFA\xFF\xFB\xFF\xD6\x02G\x02\x83\x02\xA9\x02J\x03\x04\x19K\x1B\xFF\xFFp\x02\xB7\x02\xD7\x02\x8D\x03\xAA\x02\xBA\x02\x9D\x02\xC9\x16\xD9\x02\x9B\x02\xFC\xFF\xFD\xFF\xC3\x16\xF9\xFF\xFA\xFF\b\0\xFC\xFF\xE1\x02\xFE\xFF\xFF\xFF\xFD\xFF\xFB\xFF"),W_("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFD\0A\0>\0=\0<\0;\0E\0G\0B\0C\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\0K\0\x1E\0\x15\0\x15\0\xFF\xFF\xFF\xFFM\0?\0J\0M\0M\0M\0M\0\x02\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x03\0\xFF\xFF\x04\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF@\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x14\0\x14\0\x15\0\x14\0\x0F\0\x14\0\x14\0\x0B\0\n\0\r\0\f\0\x0E\0\x0E\0\x0E\0\xFF\xFF\x0E\0\x0E\0\x13\0\x12\0\x11\0\x10\0\x15\0\x13\0\x12\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF)\0\xFF\xFF*\0\xFF\xFF.\0\xFF\xFF\xFF\xFF2\0\xFF\xFF1\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF'\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF+\0\xFF\xFF\x17\0\xFF\xFF\xFF\xFF3\0\x13\0\x13\0\x1E\0\x12\0\x12\x001\0\xFF\xFF)\x003\x003\x003\x003\x003\0\x01\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x02\0\xFF\xFF\x03\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x12\0\x11\0\x11\0\x10\0\xFF\xFF\x10\0\x0F\0\x0F\0\x12\0\x11\0\f\0\x11\0\x11\0\b\0\x07\0\n\0\t\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0E\0\r\0\xFF\xFF\xFF\xFF\x13\0\x13\0\x13\0\x13\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x10\0\xFF\xFF\x0F\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\f\0\x05\0\x0F\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x05\0\x06\0\x06\0\x06\0\x06\0\x02\0\x01\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x06\0\xFF\xFF\xFF\xFF\x04\0\x07\0\xFF\xFF\xFF\xFF\x01\0\xFF\xFF\x03\0\xFF\xFF\xFF\xFF\xFF\xFF\x04\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\f\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x06\0\x0E\0\x0E\0\x0E\0\x0E\0\x02\0\x01\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\x06\0\x02\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x05\0\x05\0\x05\0\x05\0\x05\0\x01\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x05\0\xFF\xFF\x06\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"),W_("\x01\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\0\0\0\0\0\0\0\0\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\0\0\xFF\xFF\0\0\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\0\0\0\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\0\0\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\x06\x01\0\0\xFF\xFF\0\0\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\0\0!\x01\0\0\xFF\xFF\0\0\0\0\xFF\xFF\0\0\0\0)\x01\0\0\0\0\0\0-\x01\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0D\x01\0\0\xFF\xFF\0\0\0\0\xFF\xFFK\x01\0\0\0\0\xFF\xFF\0\0\xFF\xFFP\x01\0\0\0\0\xFF\xFF\0\0\0\0\0\0W\x01\0\0\0\0\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0v\x01\0\0\0\0\0\0\0\0\xFF\xFF\0\0}\x01\0\0\xFF\xFF\xFF\xFF\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x01\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\xAA\x01\0\0\0\0\xFF\xFF\0\0\xFF\xFF\0\0\0\0\0\0\0\0"),W_("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0(\0\b\x01&\0&\0F\x01M\x01{\x01\x80\x01\xB2\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\n\0\x1E\0\x1F\0\x18\0\x05\0\r\0\x1E\0\x15\0\x14\0 \0\x07\0\x10\0\x06\0\x1A\0!\0\x1C\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x0F\0\x11\0\t\0\x0B\0\b\0\x0E\0\x19\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x13\0'\0\x12\0\x04\0\x18\0\x1D\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x17\0\f\0\x16\0\x03\0\x84\0\x83\0\x82\0\x80\0{\0z\0w\0x\0u\0s\0r\0p\0o\0m\0R\x001\x000\0/\0\x81\x001\0k\0\x7F\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0N\x005\0.\0n\0&\0P\x004\0.\0-\x000\0/\0&\0&\0-\0&\0D\0C\0A\0>\0O\x003\0@\0?\0<\0=\0<\0<\0<\x002\x002\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0q\0B\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0E\0F\0G\0H\0I\0J\0K\0L\0M\0C\0%\0$\0#\0\x18\0Q\0l\0t\0v\0y\0}\0|\0&\0~\0\xFF\0\"\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0<\0\xFE\0\xFD\0\xF7\0\xCC\0\xB1\0\x02\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\xB3\0\xB0\0\xAF\0\xAE\0\x18\0\xB2\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0S\0&\0\xAD\0\xB1\0&\0&\0\xB0\0\xA6\0\xAC\0\xA6\0U\0\xA6\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\xAF\0\xAE\0&\0\xA6\0\xA6\0\xC2\0\xC1\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xC0\0\xBF\0\xBE\0\xBD\0S\0\xBA\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xAD\0\xBC\0\xBA\0\xBA\0\xBA\0\xBA\0\xAC\0\xBB\0\xC3\0U\0\xC4\0W\0W\0W\0W\0W\0W\0W\0W\0\x1B\0\x1B\0\xC5\0\xC6\0\xC7\0\xC8\0\xC9\0\xCA\0\xCB\0S\0Y\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0X\0S\0S\0S\0S\0S\0S\0S\0S\0V\0S\0S\0\xC1\0\xD8\0\xD7\0\xD2\0S\0\xD2\0S\0Y\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0X\0S\0S\0S\0S\0S\0S\0S\0S\0V\0S\0S\0<\0\xD6\0\xD5\0<\0<\0<\0\xD2\0\xD2\0<\0<\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xD4\0\xD2\0\xF2\0<\0\xF8\0\xF9\0\xD3\0\xF1\0<\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xFA\0\xFB\0\xFC\0'\x01,\0+\0*\0%\x01A\x01&\x017\0@\x01?\x01B\x01@\x017\0>\x01=\x01)\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0?\x013\x01S\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\x003\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0*\x016\0>\x01=\x013\x013\x016\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\x003\x01U\x01T\x01\x18\0S\0r\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0s\x01q\x01p\x01o\x01\x18\0t\x01\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0r\x01;\0:\x009\0<\x01<\x01;\0:\x009\0S\0;\x01;\x01q\x01n\x01e\x018\0a\0e\x01a\0m\x018\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0p\x01o\x01#\x01e\x01e\x01e\x01\x8B\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xA7\x01\"\x01\xA6\x01\xA5\x01S\0\xA8\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\xA4\x01\xA3\x01\xA6\x01h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0M\x01\xA5\x01\x9A\x01L\x01\x9A\x01+\x01\x9A\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xA4\x01\xA3\x01\x9A\x01\x9A\x01S\0\xB1\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\0\0\0\0\0\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0n\x01\0\0\0\0\0\0\0\0\0\0m\x01f\0f\0f\0f\0f\0f\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0f\0f\0f\0f\0f\0f\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0_\0\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01$\x01U\0\0\0W\0W\0W\0W\0W\0W\0W\0W\0^\0^\0\xA2\x01\0\0\0\0\0\0\0\0\0\0\xA1\x01_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0S\0\0\0\xA2\x01\0\0\0\0\0\0\0\0\xFF\xFF\xA1\x01\0\0\0\0\0\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0S\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\0Z\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\0Z\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0[\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0[\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0]\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0]\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0]\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\0\0\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0\0\0\0\0a\0\0\0a\0\0\0\0\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0c\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0c\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0e\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0e\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0f\0f\0f\0f\0f\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0g\0\0\0f\0f\0f\0f\0f\0f\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0g\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0j\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0j\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0\0\0R\x01Q\x01\0\0\0\0\0\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0j\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\xA6\0\xA7\0\0\0\xA6\0\xA6\0\0\0\0\0\0\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\0\0\0\0\0\0\0\0\xA6\0\0\0\x9F\0\0\0\x99\0\x98\0\x89\0\x9F\0\x92\0\x91\0\xA0\0\x88\0\x8F\0\x9E\0\x9B\0\xA1\0\x9D\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x8E\0\x90\0\x8C\0\x8A\0\x8B\0\x8D\0\xA6\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x97\0S\x01\x96\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x9A\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x95\0\x93\0\x94\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\0\0\0\0\xA5\0\xA4\0\xA3\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA2\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\x87\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\x86\x01\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xF3\0\x99\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE1\0\0\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDB\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDB\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xA6\0\0\0\0\0\xA6\0\xA6\0\0\0\0\0\0\0\0\0\xE1\0\0\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\x9C\0\x9C\0\0\0\0\0\xA6\0\0\0\0\0\0\0\0\0\xDA\0\xE5\0\xDA\0\xDA\0\xDB\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xE4\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xE2\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xE5\0\xDA\0\xDA\0\xDB\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xE4\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xE2\0\xDA\0\xDA\0\xD2\0\0\0\x02\x01\xD2\0\xD2\0\xBA\0\0\0\0\0\xBA\0\xBA\0\xBA\0\0\0\0\0\xBA\0\xBA\x003\x01\0\0\0\x003\x013\x01\0\0\0\0\0\0\xD2\0\0\0\0\0\x04\x01\0\0\xBA\0\0\0\0\0\x04\x01\0\0\xBA\0\0\0\0\0\0\0\xCD\x003\x01\x9D\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\xD2\0\0\0\0\0\xD2\0\xD2\0\xB5\0\0\0\0\0\0\0\0\0\xB5\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\0\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\x03\x01\0\0\xCD\0\0\0\x9D\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\xB4\0{\x01\0\0\0\0z\x01\xB4\0\0\0\0\0\0\0\xBA\0\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\0\0\x89\x01\xD2\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAB\0\xAA\0\xA9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\0\0\xA8\0\0\0\0\0\0\0\0\0x\x01\xDA\0\xDA\0\xDA\0\xDA\0\xDB\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDB\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0w\x01\0\0\0\0\0\0\xD1\0\xD0\0\xCF\0\0\0\0\0\xB9\0\xB8\0\xB7\0\0\0\0\0\xB9\0\xB8\0\xB7\0\0\0\xCE\0:\x019\x018\x01\0\0\xB6\0\0\0\0\0\0\0\0\0\xB6\0\0\0\0\0\0\0\0\x007\x01\0\0\0\0\x02\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD1\0\xD0\0\xCF\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\xCE\0\0\0\0\0\0\0\0\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0y\x01\0\0\0\0\0\0\0\0\xDD\0\0\0\xDD\0\0\0\0\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xE0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\0\0\0\0\0\0\0\0\xE0\0\0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\0\0\0\0\0\0\0\0\xDF\0\0\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\0\0\0\0\0\0\0\0\xDF\0\0\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xE0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\0\0\0\0\0\0\0\0\xE0\0\0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE1\0\0\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xEA\0\xEA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEC\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\0\0\0\0\0\0\0\0\xEB\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEC\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\0\xE6\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\0\0\0\0\0\0\0\0\xDA\0\0\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\0\xE6\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\0\0\0\0\0\0\0\0\xE7\0\0\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\0\0\0\0\0\0\0\0\xE7\0\0\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE9\0\xE9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\0\0\0\0\0\0\0\0\xE9\0\0\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\0\0\0\0\0\0\0\0\xE9\0\0\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE1\0\0\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEC\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\0\0\0\0\0\0\0\0\xEB\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEC\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\0\0\0\0\0\0\0\0\xEB\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\xDD\0\0\0\xDD\0\0\0\0\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\0\0\0\0\0\0\0\0\xEB\0\0\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\0\0\0\0\0\0\0\0\xEE\0\0\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\0\0\0\0\0\0\0\0\xEE\0\0\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xF0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\0\0\0\0\0\0\0\0\xF0\0\0\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\0\0\0\0\0\0\0\0\xF0\0\0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xF4\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\xF5\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\x003\x015\x01\0\x003\x013\x01\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\x003\x01\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xF6\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\b\x01\0\0\0\0\x07\x01\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\0\0\0\0\0\0F\x01\0\0\0\0E\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\x019\x018\x01\0\0\0\0\0\0\0\0\x13\x01\0\0\0\0\0\0\0\0\0\0\x0F\x017\x01\0\0\0\0\x0E\x013\x01\0\0\0\0\0\0H\x01\0\0\0\0\r\x01\0\0\0\0\0\0\f\x01\0\0\x0B\x01\t\x01\n\x01\0\0\x12\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0G\x01I\x01\0\0\0\0\0\0\0\0\0\0\0\0\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\0\0\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\0\0\0\0e\x01\0\0\x19\x01e\x01e\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\0\0\0\0\0\0\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\0\0\0\0\0\0e\x01\0\0\0\0\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\0\0\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\0\0\xAB\x01\0\0\x14\x01\xAC\x01\0\0\0\0\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\0\0\0\0\0\0\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\0\0\0\0\0\0\0\0\0\0\xAE\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\0\0\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x013\x015\x01J\x013\x014\x01\0\0\0\0\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\0\0\0\0\0\0\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\xAD\x013\x01\0\0\0\0\xAF\x01\0\0\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01.\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1D\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\0\0e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01\0\0\x9A\x01\x9A\x01\x9A\x01\x9A\x01\x9A\x01\x9A\x01\x9A\x01\x9A\x01\x9A\x01\x9A\x01\x9A\x01\0\0\0\0\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01N\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l\x01k\x01j\x01e\x01\0\0\0\0\0\0\0\0\0\0\x1F\x01\0\0\0\0\0\0\0\0i\x01\x9A\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\0\0\0\0\0\0\0\0N\x01\0\0N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\0\0\0\0\0\0\xB0\x01\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\x011\x010\x01N\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x006\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\0\0\0\0\0\0\0\0N\x01\0\0N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01e\x01g\x01\0\0e\x01f\x01e\x01g\x01\0\0e\x01e\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\x01\0\0X\x01\0\0Y\x01e\x01\0\0X\x01\0\0\0\0\0\0\0\0\0\0\0\0[\x01`\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\x01\0\0_\x01Z\x01^\x01\0\0\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\0\0\0\0\0\0Y\x01\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01]\x01Y\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\x01\0\0\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\0\0\0\0\0\0Y\x01\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\x80\x01\0\0\0\0\x7F\x01\0\0\0\0\0\0\x9A\x01\0\0\0\0\x9A\x01\x9A\x01\0\0d\x01c\x01b\x01\0\0\0\0l\x01k\x01j\x01\x84\x01\x83\x01\0\0\x82\x01\0\0\0\0a\x01~\x01\x82\x01\x9A\x01\0\0i\x01\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01h\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\x83\x01\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x8A\x01\0\0\0\0\0\0\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\0\0\0\0\0\0\0\0\x8A\x01\0\0\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\0\0\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\x88\x01\0\0\0\0\0\0\0\0\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\xA0\x01\x9F\x01\x9E\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9D\x01\0\0\0\0\0\0\x8C\x01\0\0\0\0\0\0\0\0\x81\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\0\0\x8B\x01\0\0\0\0\0\0\0\0\0\0\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\0\0\0\0\0\0\0\0\x8C\x01\0\0\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8D\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\0\0\x8B\x01\0\0\0\0\0\0\0\0\0\0\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\0\0\0\0\0\0\0\0\x8D\x01\0\0\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8E\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\0\0\x8B\x01\0\0\0\0\0\0\0\0\0\0\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\0\0\0\0\0\0\0\0\x8E\x01\0\0\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8F\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\0\0\x8B\x01\0\0\0\0\0\0\0\0\0\0\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\0\0\0\0\0\0\0\0\x8F\x01\0\0\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x90\x01\x9A\x01\x9C\x01\0\0\x9A\x01\x9A\x01\0\0\0\0\0\0\0\0\0\0\0\0\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\0\0\x8B\x01\x9A\x01\0\0\0\0\0\0\0\0\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\0\0\0\0\0\0\0\0\x90\x01\0\0\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x91\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\0\0\x8B\x01\0\0\0\0\0\0\0\0\0\0\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\0\0\0\0\0\0\0\0\x91\x01\0\0\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x9A\x01\x9C\x01\0\0\x9A\x01\x9B\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9A\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\xA0\x01\x9F\x01\x9E\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9D\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\x01\x98\x01\x97\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x96\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF"),W_("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\x07\x01\0\0\0\0E\x01L\x01z\x01\x7F\x01\xAC\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\x05\0\x06\0\x07\0\b\0\b\0\t\0\t\0\n\0\x0B\0\x0B\0\f\0\r\0\x19\0\x1F\0#\0$\0$\0\x06\0*\0\x1A\0\x07\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0 \0!\0%\0\r\0-\0 \0!\0,\0%\0+\0+\0.\0/\0,\x001\x006\x007\x009\0;\0 \0!\0:\0:\0=\0;\0>\0?\0A\0\"\0)\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x002\0\f\x008\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0B\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0\0\0\0\0\0\0\x18\0N\0k\0s\0u\0w\0z\0z\x000\0|\0\x8A\0\0\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0@\0\x93\0\x95\0\x98\0\xA0\0\xA2\0\0\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\xA1\0\xA3\0\xA4\0\xA4\0\x18\0\xA1\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x1B\0&\0\xA5\0\xA8\0&\0&\0\xA9\0\xAC\0\xA5\0\xAD\0\x1B\0\xAE\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\xAA\0\xAA\0&\0\xB0\0\xB1\0\xB4\0\xB5\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\xB6\0\xB7\0\xB8\0\xB8\0\x1B\0\xBB\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1C\0\xAB\0\xB9\0\xBC\0\xBD\0\xBF\0\xC0\0\xAB\0\xB9\0\xC2\0\x1C\0\xC3\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\xC4\0\xC5\0\xC6\0\xC7\0\xC8\0\xC9\0\xCA\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\xCB\0\xCE\0\xCF\0\xD3\0\x1C\0\xD4\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\x005\0\xD0\0\xD0\x005\x005\0<\0\xD5\0\xD7\0<\0<\0a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\xD1\0\xD8\0\xF1\x005\0\xF7\0\xF8\0\xD1\0\x9B\0<\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\xF9\0\xFA\0\xFB\0%\x01&\0&\0&\0\"\x01.\x01\"\x015\0/\x010\x01.\x017\x01<\x001\x011\x01&\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\x008\x01;\x01S\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0<\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0(\x015\x009\x019\x01=\x01?\x01<\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0@\x01R\x01R\x01m\0S\0a\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0`\x01b\x01c\x01c\x01m\0`\x01m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0i\x015\x005\x005\x002\x01:\x01<\0<\0<\0T\x002\x01:\x01j\x01d\x01m\x015\0T\0n\x01T\0d\x01<\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0k\x01k\x01 \x01o\x01q\x01r\x01\x91\x01T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0\x95\x01 \x01\x96\x01\x97\x01T\0\x95\x01T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0U\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x98\x01\x98\x01\x9D\x01U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0I\x01\x9E\x01\xA1\x01I\x01\xA2\x01(\x01\xA3\x01U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0\x9F\x01\x9F\x01\xA5\x01\xA6\x01U\0\xAE\x01U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0V\0\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\xFF\xFF\xFF\xFF\xFF\xFFV\0V\0V\0V\0V\0V\0V\0V\0V\0V\0l\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFl\x01V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFV\0\xFF\xFFV\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0W\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01 \x01W\0\xFF\xFFW\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\x99\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x01W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFW\0\xFF\xFFW\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0X\0\xFF\xFF\xA0\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFI\x01\xA0\x01\xFF\xFF\xFF\xFF\xFF\xFFX\0X\0X\0X\0X\0X\0X\0X\0X\0X\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFX\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFX\0\xFF\xFFX\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0Y\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFY\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFY\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFY\0\xFF\xFFY\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFZ\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFZ\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFZ\0\xFF\xFFZ\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0[\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF[\0\xFF\xFF[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\\\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\\\0\xFF\xFF\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0]\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]\0\xFF\xFF]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0^\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF^\0\xFF\xFF^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF^\0\xFF\xFF^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0_\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF_\0\xFF\xFF_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0`\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\0\xFF\xFF`\0\xFF\xFF\xFF\xFF`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\0\xFF\xFF`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0b\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFb\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFb\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFb\0\xFF\xFFb\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0c\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFc\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFc\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFc\0\xFF\xFFc\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0d\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFd\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFd\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFd\0\xFF\xFFd\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0e\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFe\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFe\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFe\0\xFF\xFFe\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0f\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFf\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFf\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFf\0\xFF\xFFf\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0g\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFg\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFg\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFg\0\xFF\xFFg\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0h\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFh\0h\0h\0h\0h\0h\0h\0h\0h\0h\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFh\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFh\0\xFF\xFFh\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0i\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFi\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFi\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFi\0\xFF\xFFi\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0j\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFO\x01O\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFj\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFj\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFj\0\xFF\xFFj\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\x85\0\x85\0\xFF\xFF\x85\0\x85\0\xFF\xFF\xFF\xFF\xFF\xFF\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\0\xFF\xFF\x85\0\xFF\xFF\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\xAF\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0O\x01\x85\0\xFF\xFF\x85\0\xFF\xFF\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x99\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\0\xFF\xFF\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xFF\xFF\xFF\xFF\x85\0\x85\0\x85\0\x9A\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\xFF\xFF\xFF\xFF\x84\x01\xFF\xFF\x9A\0\xFF\xFF\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9C\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9C\0\xFF\xFF\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9C\0\xFF\xFF\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9D\0\xA6\0\xFF\xFF\xFF\xFF\xA6\0\xA6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9D\0\xFF\xFF\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\xFF\xFF\xFF\xFF\xA6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9D\0\xFF\xFF\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9E\0\xFF\xFF\0\x01\x9E\0\x9E\0\xB3\0\xFF\xFF\xFF\xFF\xB3\0\xB3\0\xBA\0\xFF\xFF\xFF\xFF\xBA\0\xBA\x003\x01\xFF\xFF\xFF\xFF3\x013\x01\xFF\xFF\xFF\xFF\xFF\xFF\x9E\0\xFF\xFF\xFF\xFF\0\x01\xFF\xFF\xB3\0\xFF\xFF\xFF\xFF\0\x01\xFF\xFF\xBA\0\xFF\xFF\xFF\xFF\xFF\xFF\x9E\x003\x01\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\xD2\0\xFF\xFF\xFF\xFF\xD2\0\xD2\0\xB3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBA\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xFF\xFF\xD2\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\0\x01\xFF\xFF\xD2\0\xFF\xFF\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xB3\0u\x01\xFF\xFF\xFF\xFFu\x01\xBA\0\xFF\xFF\xFF\xFF\xFF\xFF\xBE\0\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\xFF\xFF\x85\x01\xD6\0\xD9\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA6\0\xA6\0\xA6\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xFF\xFF\xA6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFu\x01\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xD9\0\xFF\xFF\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFu\x01\xFF\xFF\xFF\xFF\xFF\xFF\x9E\0\x9E\0\x9E\0\xFF\xFF\xFF\xFF\xB3\0\xB3\0\xB3\0\xFF\xFF\xFF\xFF\xBA\0\xBA\0\xBA\0\xFF\xFF\x9E\x003\x013\x013\x01\xFF\xFF\xB3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBA\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF3\x01\xFF\xFF\xFF\xFF\0\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDA\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xD2\0\xD2\0\xD2\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xFF\xFF\xD2\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDA\0\xFF\xFF\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDA\0\xDB\0\xFF\xFFu\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDB\0\xFF\xFF\xDB\0\xFF\xFF\xFF\xFF\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDB\0\xFF\xFF\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDC\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\0\xFF\xFF\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDE\0\xFF\xFF\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDF\0\xFF\xFF\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xDF\0\xE0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\0\xFF\xFF\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE0\0\xE1\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\0\xFF\xFF\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE2\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2\0\xFF\xFF\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE3\0\xFF\xFF\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE3\0\xFF\xFF\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE4\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE4\0\xFF\xFF\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE5\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE5\0\xFF\xFF\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE5\0\xE6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE6\0\xFF\xFF\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE6\0\xE7\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE7\0\xFF\xFF\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE7\0\xE8\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE8\0\xFF\xFF\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE9\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE9\0\xFF\xFF\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xE9\0\xEA\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEA\0\xFF\xFF\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEA\0\xFF\xFF\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEB\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEB\0\xFF\xFF\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEB\0\xEC\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEC\0\xFF\xFF\xEC\0\xFF\xFF\xFF\xFF\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEC\0\xFF\xFF\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xED\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xED\0\xFF\xFF\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xEE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEE\0\xFF\xFF\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEE\0\xEF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEF\0\xFF\xFF\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xF0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF0\0\xFF\xFF\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF0\0\xF3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF3\0\xFF\xFF\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF4\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF4\0\xFF\xFF\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF4\0\xF5\x004\x014\x01\xFF\xFF4\x014\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xFF\xFF\xFF\xFF4\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF5\0\xFF\xFF\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF5\0\xF6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\x05\x01\xFF\xFF\xFF\xFF\x05\x01\xF6\0\xFF\xFF\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xF6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01\xFF\xFF\xFF\xFF\xFF\xFFC\x01\xFF\xFF\xFF\xFFC\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF4\x014\x014\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x05\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x05\x014\x01\xFF\xFF\xFF\xFF\x05\x01>\x01\xFF\xFF\xFF\xFF\xFF\xFFC\x01\xFF\xFF\xFF\xFF\x05\x01\xFF\xFF\xFF\xFF\xFF\xFF\x05\x01\xFF\xFF\x05\x01\x05\x01\x05\x01\xFF\xFF\x05\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFC\x01C\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\xFF\xFF\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\xFF\xFF\xFF\xFFe\x01\xFF\xFF\t\x01e\x01e\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\xFF\xFF\xFF\xFF\xFF\xFF\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\xFF\xFF\xFF\xFF\xFF\xFFe\x01\xFF\xFF\xFF\xFF\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\xFF\xFF\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\xFF\xFF\xA9\x01\xFF\xFF\x05\x01\xA9\x01\xFF\xFF\xFF\xFF\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\xFF\xFF\xFF\xFF\xFF\xFF\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA9\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\xFF\xFF\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1A\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01,\x01,\x01C\x01,\x01,\x01\xFF\xFF\xFF\xFF\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\xFF\xFF\xFF\xFF\xFF\xFF\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x1B\x01\xA9\x01,\x01\xFF\xFF\xFF\xFF\xA9\x01\xFF\xFF\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01,\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1C\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\xFF\xFFp\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xFF\xFF\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xA4\x01\xFF\xFF\xFF\xFF\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01\x1E\x01H\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFe\x01e\x01e\x01p\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x1E\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFe\x01\xA4\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFH\x01\xFF\xFFH\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01\xFF\xFF\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA9\x01\xFF\xFF\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF,\x01,\x01,\x01N\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF,\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF,\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFN\x01\xFF\xFFN\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01V\x01V\x01\xFF\xFFV\x01V\x01f\x01f\x01\xFF\xFFf\x01f\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFV\x01\xFF\xFFV\x01\xFF\xFFV\x01f\x01\xFF\xFFV\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFV\x01V\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFV\x01\xFF\xFFV\x01V\x01V\x01\xFF\xFF\xFF\xFFV\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFV\x01\xFF\xFFV\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01Y\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFY\x01\xFF\xFF\xFF\xFFY\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFY\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFY\x01\xFF\xFFY\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\xFF\xFF|\x01\xFF\xFF\xFF\xFF|\x01\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x01\xFF\xFF\xFF\xFF\x9A\x01\x9A\x01\xFF\xFFV\x01V\x01V\x01\xFF\xFF\xFF\xFFf\x01f\x01f\x01~\x01~\x01\xFF\xFF|\x01\xFF\xFF\xFF\xFFV\x01|\x01|\x01\x9A\x01\xFF\xFFf\x01\xFF\xFF~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01V\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF~\x01\xFF\xFF~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01\x83\x01\xFF\xFF\xFF\xFF\xFF\xFF|\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x01\xFF\xFF\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xFF\xFF\xFF\xFF\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\xFF\xFF\x87\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\xFF\xFF\xFF\xFF\x9A\x01\x9A\x01\x9A\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x01\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\xFF\xFF\x8A\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x01\xFF\xFF\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8A\x01\x8C\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\xFF\xFF\x8C\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x01\xFF\xFF\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8C\x01\x8D\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\xFF\xFF\x8D\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8D\x01\xFF\xFF\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8D\x01\x8E\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\xFF\xFF\x8E\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8E\x01\xFF\xFF\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8E\x01\x8F\x01\x9B\x01\x9B\x01\xFF\xFF\x9B\x01\x9B\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\xFF\xFF\x8F\x01\x9B\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8F\x01\xFF\xFF\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x8F\x01\x90\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\xFF\xFF\x90\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x01\xFF\xFF\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x92\x01\x92\x01\xFF\xFF\x92\x01\x92\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9B\x01\x9B\x01\x9B\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9B\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x01\x92\x01\x92\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x01"),W_("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\x16\0\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x01\0\f\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\x006\0_\0B\0v\0L\0N\0\0\0\x81\0\0\0\x98\0\0\0\xA2\0\xAC\0\xB6\0\0\0\xC0\0\0\0\xCA\0\0\0\xE1\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0E\x01\x1A\x01&\x01W\x01\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\x0B\0\r\0\x0F\0\xE5\0\x1A\0\b\0h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\x01\0\0\0\0\0\0\0\0y\x01\r\0\x1C\0\x10\0\x1A\x01\x1D\0E\0\x83\x01\0\0\x8D\x01\x9A\x01\xA4\x01\xAE\x01\0\0\0\0\xB8\x01\xC2\x01\xDB\x01\xE5\x01\x89\0\x8B\0\0\0\xF9\x01\0\0\x03\x02\0\0\r\x02\x17\x02\0\0!\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),W_("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0F\0\x0F\0\0\0\x0F\0\0\0\x0F\0\x0F\0\0\0#\0\0\0&\0)\0)\0)\0\0\0)\0)\0\0\0,\0\0\0/\0\0\0\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0W\0W\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0W\0k\0k\0s\0\0\0s\0v\0v\0W\0k\0~\0k\0k\0&\0\x8F\0/\0\x94\0\x99\0\x99\0\x99\0\x99\0\x99\0\x9E\0\xA1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),W_("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),W_("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\t\0\t\0\t\0\t\0\t\0e\0\0\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\t\0\0\0\0\0\0\0\0\0e\0\0\0e\0\t\0e\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x01\0\x01\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x01\0\x01\0 \0 \0 \0 \0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0e\0\t\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0e\0e\x002\x002\x002\0\0\0\t\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0e\x002\0\t\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x8C\0\x8C\0\x8C\0\x8C\0\0\0\0\0\t\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x01\0e\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\x002\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\x002\0\0\0\0\0M\0M\0M\0M\0M\0M\0M\0M\0M\0M\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0\0\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0M\0\0\0`\0`\0`\0`\0`\0`\0`\0`\0R\0R\x002\0\0\0\0\x002\x002\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\0M\0M\0M\0M\0M\0M\0M\0M\0M\0M\x002\0\0\0\0\x002\x002\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0\0\0\0\0\0\0e\0\0\0\0\0\0\0\0\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\0\0\0\0\0\0\0\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0\0\0\0\x002\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0R\0\0\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x86\0\x86\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0R\0\0\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),W_("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF5\0\xFF\xFF<\x005\x005\0<\0<\0\xB3\0\xFF\xFF\xBA\0\xB3\0\xB3\0\xBA\0\xBA\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF5\0\xFF\xFF<\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xB3\0\xFF\xFF\xBA\0!\0\xA1\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1B\0\xFF\xFF\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1C\0\xFF\xFF\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0W\0\xFF\xFFW\0W\0W\0W\0W\0W\0W\0W\0W\0W\0Y\0Y\0Z\0Z\0>\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0A\0\xBC\0=\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0\xBB\0\xBF\0\xD3\0\xD4\0\xD7\0\xFF\xFF?\0V\0V\0V\0V\0V\0V\0X\0X\0X\0X\0X\0X\0X\0X\0\xBD\0\xD5\0@\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\xE5\0\xE5\0\xE6\0\xE6\0\xFF\xFF\xFF\xFFB\0V\0V\0V\0V\0V\0V\0^\0\xC0\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\xD8\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFf\0f\0f\0f\0f\0f\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFf\0f\0f\0f\0f\0f\0\x85\0\xFF\xFF\xFF\xFF\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9B\0\x9C\0\xFF\xFF\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9D\0\xFF\xFF\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9E\0\xFF\xFF\xFF\xFF\x9E\0\x9E\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9E\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xD2\0\xFF\xFF\xFF\xFF\xD2\0\xD2\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\xFF\xFF\xFF\xFF\xFF\xFF\xBE\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xD2\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xD6\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD2\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xD9\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xDB\0\xFF\xFF\xFF\xFF\xD6\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDC\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDD\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xDE\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE1\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE3\0\xFF\xFF\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE3\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xE4\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE2\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xE8\0\xEA\0\xFF\xFF\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEA\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xEC\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xED\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xEF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"),W_("\xFF\x01\xFF\xFF\x03\xFF\x01\xFF\xFF\x02\xFF\xFF\0\x02\xFF\0\x01\xFF\x06\xFF\xFF\x07\xFF\xFF\x01\xFF\x03\xFF\xFF\x05\xFF\xFF\x04\xFF\xFF\0\x04\xFF\0\x05\xFF\0\x03\xFF\0\x06\xFF\0\x07\xFF\x11\xFF\x10\xFF\x0E\xFF\r\xFF\f\xFF\x0B\xFF\n\xFF\t\xFF\b\xFF\x07\xFF\x06\xFF\x05\xFF\x04\xFF\xFF\x13\xFF\x12\xFF\xFF\x12\xFF\x13\xFF\xFF\x03\x11\x02\x12\x01\x0F\0\x10\xFF\x16\xFF\x13\xFF\xFF\x14\xFF\xFF\0\x14\xFF\x01\x13\0\x0E\xFF\x15\xFF\xFF\0\r\xFF\x01\x15\0\f\xFF\x19\xFF\xFF\0\t\xFF\x13\xFF\x16\xFF\xFF\x13\xFF\xFF\x18\xFF\xFF\x17\xFF\xFF\x01\x17\0\x04\xFF\x01\x18\0\x06\xFF\x01\x16\0\b\xFF\0\x0B\xFF\x01\x19\0\n\xFF")],WZ=[0,0,0,0,0,1,0],JZ=[0,1];Lw(11,[TB,W_(OH),-12],OH),Lw(10,YZ,RG),Lw(9,[TB,W_(RB),Tz],RB),Lw(8,[TB,W_(Oz),-9],Oz),Lw(7,[TB,W_(TJ),-8],TJ),Lw(6,MZ,Kz),Lw(5,[TB,W_(JB),-6],JB),Lw(4,[TB,W_(YV),-5],YV),Lw(3,OZ,XF),Lw(2,RZ,XV),Lw(1,[TB,W_($B),-2],$B),Lw(0,[TB,W_(YW),-1],YW);var ZZ=W_(WG),KZ=W_(SH),QZ=W_("Pervasives.Exit"),$Z=W_("Array.blit"),SK=W_("Array.Bottom"),TK=[0,W_("list.ml"),LJ,11],PK=W_("hd"),_K=W_("\\b"),NK=W_("\\t"),IK=W_("\\n"),LK=W_("\\r"),RK=W_("\\\\"),OK=W_("\\'"),MK=W_("Char.chr"),YK=W_("String.contains_from / Bytes.contains_from"),VK=W_("String.blit / Bytes.blit_string"),UK=W_("Bytes.blit"),XK=W_("String.sub / Bytes.sub"),WK=W_(Rz),JK=W_("Sys.Break"),ZK=W_("Set.remove_min_elt"),KK=[0,0,0,0],QK=[0,0,0],$K=[0,W_("set.ml"),372,18],SQ=W_(NG),TQ=W_(NG),PQ=W_(NG),_Q=W_(NG),NQ=W_("Queue.Empty"),IQ=W_("CamlinternalLazy.Undefined"),LQ=W_("Buffer.add: cannot grow buffer"),RQ=W_("%c"),OQ=W_("%s"),MQ=W_(VG),YQ=W_("%li"),VQ=W_("%ni"),UQ=W_("%Li"),XQ=W_("%f"),WQ=W_("%B"),JQ=W_("%{"),ZQ=W_("%}"),KQ=W_("%("),QQ=W_("%)"),$Q=W_("%a"),S$=W_("%t"),T$=W_("%r"),P$=W_("%_r"),_$=[0,W_(WB),793,23],N$=[0,W_(WB),761,21],I$=[0,W_(WB),762,21],L$=[0,W_(WB),765,21],R$=[0,W_(WB),766,21],O$=[0,W_(WB),769,22],M$=[0,W_(WB),770,22],Y$=[0,W_(WB),774,30],V$=[0,W_(WB),775,30],U$=[0,W_(WB),779,26],X$=[0,W_(WB),OU,26],W$=[0,W_(WB),IX,28],J$=[0,W_(WB),790,28],Z$=[0,W_(WB),794,23],K$=W_(MU),Q$=[0,W_(WB),1415,4],$$=W_("Printf: bad conversion %["),eee=[0,W_(WB),1483,39],tee=[0,W_(WB),1505,31],aee=[0,W_(WB),1506,31],nee=W_("Printf: bad conversion %_"),ree=W_("@{"),see=W_("@["),iee=[0,W_(ZU),[0,W_(ZU),0]],oee=W_(UH),lee=W_(RJ),pee=W_("neg_infinity"),dee=W_("infinity"),cee=[0,W_(IG),[0,W_(RX),0]],uee=[0,W_(PG),[0,W_(RX),0]],mee=[0,W_(Iz),[0,W_(RX),0]],fee=[0,W_(IG),[0,W_(VF),0]],hee=[0,W_(PG),[0,W_(VF),0]],yee=[0,W_(Iz),[0,W_(VF),0]],gee=[0,W_(IG),[0,W_(TU),0]],bee=[0,W_(LB),[0,W_(TU),0]],xee=[0,W_(IG),[0,W_(MX),0]],See=[0,W_(LB),[0,W_(MX),0]],Eee=[0,W_(IG),[0,W_(_V),0]],Tee=[0,W_(LB),[0,W_(_V),0]],Aee=[0,W_(IG),[0,W_("u"),0]],Pee=W_(UU),_ee=W_("%+d"),Nee=W_("% d"),kee=W_(VG),Cee=W_("%+i"),wee=W_("% i"),vee=W_("%x"),Iee=W_("%#x"),jee=W_("%X"),Lee=W_("%#X"),Dee=W_("%o"),Ree=W_("%#o"),Oee=W_(MU),Mee=[0,W_(WF),[0,W_(WF),0]],Yee=W_("@]"),Fee=W_("@}"),Vee=W_("@?"),Bee=W_("@\n"),Uee=W_("@."),Xee=W_("@@"),Wee=W_("@%"),qee=W_("@"),zee=W_("CamlinternalFormat.Type_mismatch"),Jee=W_(TU),Hee=W_("OCAMLRUNPARAM"),Gee=W_("CAMLRUNPARAM"),Zee=W_(Rz),Kee=W_("TMPDIR"),Qee=W_("TEMP"),$ee=W_("Cygwin"),ete=W_(KU),tte=W_("Win32"),ate=[0,W_("filename.ml"),NJ,9],nte=W_("Js.Error"),rte=W_(PV),ste=W_(MV),ite=W_("Unexpected number"),ote=W_("Unexpected string"),lte=W_("Unexpected identifier"),pte=W_("Unexpected reserved word"),dte=W_("Unexpected end of input"),cte=W_("Unexpected variance sigil"),ute=W_("Type aliases are not allowed in untyped mode"),mte=W_("Type annotations are not allowed in untyped mode"),fte=W_("Type declarations are not allowed in untyped mode"),hte=W_("Type imports are not allowed in untyped mode"),yte=W_("Type exports are not allowed in untyped mode"),gte=W_("Interfaces are not allowed in untyped mode"),bte=W_("Illegal newline after throw"),xte=W_("Invalid regular expression"),Ste=W_("Invalid regular expression: missing /"),Ete=W_("Invalid left-hand side in assignment"),Tte=W_("Invalid left-hand side in exponentiation expression"),Ate=W_("Invalid left-hand side in for-in"),Pte=W_("Invalid left-hand side in for-of"),_te=W_("found an expression instead"),Nte=W_("Expected an object pattern, array pattern, or an identifier but "),kte=W_("More than one default clause in switch statement"),Cte=W_("Missing catch or finally after try"),wte=W_("Illegal continue statement"),vte=W_("Illegal break statement"),Ite=W_("Illegal return statement"),jte=W_("Illegal yield expression"),Lte=W_("Strict mode code may not include a with statement"),Dte=W_("Catch variable may not be eval or arguments in strict mode"),Rte=W_("Variable name may not be eval or arguments in strict mode"),Ote=W_("Parameter name eval or arguments is not allowed in strict mode"),Mte=W_("Strict mode function may not have duplicate parameter names"),Yte=W_("Function name may not be eval or arguments in strict mode"),Fte=W_("Octal literals are not allowed in strict mode."),Vte=W_("Delete of an unqualified identifier in strict mode."),Bte=W_("Duplicate data property in object literal not allowed in strict mode"),Ute=W_("Object literal may not have data and accessor property with the same name"),Xte=W_("Object literal may not have multiple get/set accessors with the same name"),Wte=W_("Assignment to eval or arguments is not allowed in strict mode"),qte=W_("Postfix increment/decrement may not have eval or arguments operand in strict mode"),zte=W_("Prefix increment/decrement may not have eval or arguments operand in strict mode"),Jte=W_("Use of future reserved word in strict mode"),Hte=W_("JSX attributes must only be assigned a non-empty expression"),Gte=W_("JSX value should be either an expression or a quoted JSX text"),Zte=W_("Const must be initialized"),Kte=W_("Destructuring assignment must be initialized"),Qte=W_("Illegal newline before arrow"),$te=W_(" declared at top level or immediately within another function."),eae=W_("In strict mode code, functions can only be"),tae=W_("elements must be wrapped in an enclosing parent tag"),aae=W_("Unexpected token <. Remember, adjacent JSX "),nae=W_("Rest parameter must be final parameter of an argument list"),rae=W_("async is an implementation detail and isn't necessary for your declare function statement. It is sufficient for your declare function to just have a Promise return type."),sae=W_("`declare export let` is not supported. Use `declare export var` instead."),iae=W_("`declare export const` is not supported. Use `declare export var` instead."),oae=W_("`declare export type` is not supported. Use `export type` instead."),lae=W_("`declare export interface` is not supported. Use `export interface` instead."),pae=W_("`export * as` is an early-stage proposal and is not enabled by default. To enable support in the parser, use the `esproposal_export_star_as` option"),dae=W_("When exporting a class as a named export, you must specify a class name. Did you mean `export default class ...`?"),cae=W_("When exporting a function as a named export, you must specify a function name. Did you mean `export default function ...`?"),uae=W_("Found a decorator in an unsupported position."),mae=W_("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."),fae=W_("The Windows version of OCaml has a bug in how it parses hexidecimal numbers. It is fixed in OCaml 4.03.0. Until we can switch to 4.03.0, please avoid either hexidecimal notation or Windows."),hae=W_("Duplicate `declare module.exports` statement!"),yae=W_("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module xor they are a CommonJS module."),gae=W_("Getter should have zero parameters"),bae=W_("Setter should have exactly one parameter"),xae=W_("`import type` or `import typeof`!"),Sae=W_("Imports within a `declare module` body must always be "),Eae=W_("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements"),Tae=W_("Missing comma between import specifiers"),Aae=W_("Unexpected parser state: "),Pae=W_("Unexpected token "),_ae=[0,[11,W_("Unexpected token `"),[2,0,[11,W_("`. Did you mean `"),[2,0,[11,W_("`?"),0]]]]],W_("Unexpected token `%s`. Did you mean `%s`?")],Nae=W_(ZU),kae=W_("Invalid flags supplied to RegExp constructor '"),Cae=W_(ZU),wae=W_("Undefined label '"),vae=W_("' has already been declared"),Iae=W_(" '"),jae=W_("Expected corresponding JSX closing tag for "),Lae=[0,[11,W_("Duplicate export for `"),[2,0,[12,96,0]]],W_("Duplicate export for `%s`")],Dae=W_("Parse_error.Error"),Rae=[0,W_(NB),18,6],Oae=[0,W_(NB),39,6],Mae=[0,W_(NB),44,6],Yae=[0,W_(NB),$U,6],Fae=[0,W_(NB),515,6],Vae=[0,W_(NB),OU,6],Bae=[0,W_(NB),883,6],Uae=[0,W_(NB),Wz,6],Xae=[0,W_(NB),WW,6],Wae=[0,W_(NB),1008,6],qae=[0,W_(NB),1031,6],zae=W_("comments"),Jae=W_(RW),Hae=W_("Program"),Gae=W_("EmptyStatement"),Zae=W_("DebuggerStatement"),Kae=W_(JH),Qae=W_("ExpressionStatement"),$ae=W_(_J),ene=W_(IV),tne=W_(PH),ane=W_("IfStatement"),nne=W_(RW),rne=W_(WV),sne=W_("LabeledStatement"),ine=W_(WV),one=W_("BreakStatement"),lne=W_(WV),pne=W_("ContinueStatement"),dne=W_(RW),cne=W_(VU),une=W_("WithStatement"),mne=W_("cases"),fne=W_("discriminant"),hne=W_("SwitchStatement"),yne=W_(Zz),gne=W_("ReturnStatement"),bne=W_(Zz),xne=W_("ThrowStatement"),Sne=W_("finalizer"),Ene=W_("handler"),Tne=W_("block"),Ane=W_("TryStatement"),Pne=W_(RW),_ne=W_(PH),Nne=W_("WhileStatement"),kne=W_(PH),Cne=W_(RW),wne=W_("DoWhileStatement"),vne=W_(RW),Ine=W_("update"),jne=W_(PH),Lne=W_(Pz),Dne=W_("ForStatement"),Rne=W_(QB),One=W_(RW),Mne=W_(_W),Yne=W_(PW),Fne=W_("ForInStatement"),Vne=W_("ForAwaitStatement"),Bne=W_("ForOfStatement"),Une=W_(RW),Xne=W_(_W),Wne=W_(PW),qne=W_("CommonJS"),zne=W_("ES"),Jne=W_(VJ),Hne=W_(RW),Gne=W_(XG),Zne=W_("DeclareModule"),Kne=W_(QH),Qne=W_("DeclareModuleExports"),$ne=W_(Vq),ere=W_("DeclareExportAllDeclaration"),tre=W_(Vq),are=W_(_G),nre=W_(Zq),rre=W_(Lz),sre=W_("DeclareExportDeclaration"),ire=W_(Mz),ore=W_(Vq),lre=W_("ExportAllDeclaration"),pre=W_(Mz),dre=W_(Vq),cre=W_(_G),ure=W_(Zq),mre=W_("ExportNamedDeclaration"),fre=W_(Mz),hre=W_(Zq),yre=W_("ExportDefaultDeclaration"),gre=W_(Oq),bre=W_(JW),xre=W_(KH),Sre=W_(ZG),Ere=W_(Vq),Tre=W_(_G),Are=W_("ImportDeclaration"),Pre=W_("ThisExpression"),_re=W_("Super"),Nre=W_(KB),kre=W_("ArrayExpression"),Cre=W_(Rq),wre=W_("ObjectExpression"),vre=W_(JJ),Ire=W_(OX),jre=W_(JH),Lre=W_(KX),Dre=W_(Sz),Rre=W_(WX),Ore=W_(RW),Mre=W_(KV),Yre=W_(XG),Fre=W_("ArrowFunctionExpression"),Vre=W_(UF),Bre=W_("SequenceExpression"),Ure=W_(Zz),Xre=W_("AwaitExpression"),Wre=W_(YX),qre=W_(OJ),zre=W_("!"),Jre=W_("~"),Hre=W_(JW),Gre=W_(LH),Zre=W_(ZJ),Kre=W_("matched above"),Qre=W_(Zz),$re=W_(UJ),ese=W_(TX),tse=W_("UnaryExpression"),ase=W_("=="),nse=W_("!="),rse=W_("==="),sse=W_("!=="),ise=W_("<"),ose=W_("<="),lse=W_(">"),pse=W_(">="),dse=W_("<<"),cse=W_(">>"),mse=W_(">>>"),fse=W_(OJ),hse=W_(YX),yse=W_("*"),gse=W_("**"),bse=W_(LG),xse=W_(IG),Sse=W_("|"),Ese=W_("^"),Tse=W_(RV),Ase=W_(Nq),Pse=W_(Vz),_se=W_(_W),Nse=W_(PW),kse=W_(TX),Cse=W_("BinaryExpression"),wse=W_("="),vse=W_("+="),Ise=W_("-="),jse=W_("*="),Lse=W_("**="),Dse=W_("/="),Rse=W_("%="),Ose=W_("<<="),Mse=W_(">>="),Yse=W_(">>>="),Fse=W_("|="),Vse=W_("^="),Bse=W_("&="),Use=W_(_W),Xse=W_(PW),Wse=W_(TX),qse=W_("AssignmentExpression"),zse=W_("--"),Jse=W_("++"),Hse=W_(UJ),Gse=W_(Zz),Zse=W_(TX),Kse=W_("UpdateExpression"),Qse=W_("&&"),$se=W_("||"),eie=W_(_W),tie=W_(PW),aie=W_(TX),nie=W_("LogicalExpression"),rie=W_(_J),sie=W_(IV),iie=W_(PH),oie=W_("ConditionalExpression"),lie=W_(Xq),pie=W_(VX),die=W_("NewExpression"),cie=W_(Xq),uie=W_(VX),mie=W_("CallExpression"),fie=W_(YG),hie=W_(OG),yie=W_(VU),gie=W_("MemberExpression"),bie=W_("delegate"),xie=W_(Zz),Sie=W_("YieldExpression"),Eie=W_(OF),Tie=W_(KJ),Aie=W_("ComprehensionExpression"),Pie=W_(OF),_ie=W_(KJ),Nie=W_("GeneratorExpression"),kie=W_(QH),Cie=W_(JH),wie=W_("TypeCastExpression"),vie=W_(OG),Iie=W_("meta"),jie=W_("MetaProperty"),Lie=W_(JJ),Die=W_(OX),Rie=W_(JH),Oie=W_(KX),Mie=W_(Sz),Yie=W_(WX),Fie=W_(RW),Vie=W_(KV),Bie=W_(XG),Uie=W_("FunctionDeclaration"),Xie=W_(JJ),Wie=W_(OX),qie=W_(JH),zie=W_(KX),Jie=W_(Sz),Hie=W_(WX),Gie=W_(RW),Zie=W_(KV),Kie=W_(XG),Qie=W_("FunctionExpression"),$ie=W_(MW),eoe=W_(QH),toe=W_(NX),aoe=W_(ZF),noe=W_(MW),roe=W_(QH),soe=W_(NX),ioe=W_(ZF),ooe=W_(IV),loe=W_(PH),poe=W_("SwitchCase"),doe=W_(RW),coe=W_("param"),uoe=W_("CatchClause"),moe=W_(RW),foe=W_("BlockStatement"),hoe=W_(XG),yoe=W_("DeclareVariable"),goe=W_(KX),boe=W_(XG),xoe=W_("DeclareFunction"),Soe=W_(JG),Eoe=W_(RW),Toe=W_(JJ),Aoe=W_(XG),Poe=W_("DeclareClass"),_oe=W_(KH),Noe=W_(Oq),koe=W_(SV),Coe=W_("ExportNamespaceSpecifier"),woe=W_(_W),voe=W_(JJ),Ioe=W_(XG),joe=W_("TypeAlias"),Loe=W_(PU),Doe=W_(Xz),Roe=W_(YB),Ooe=W_(JJ),Moe=W_(XJ),Yoe=W_(RW),Foe=W_(XG),Voe=W_("ClassDeclaration"),Boe=W_(PU),Uoe=W_(Xz),Xoe=W_(YB),Woe=W_(JJ),qoe=W_(XJ),zoe=W_(RW),Joe=W_(XG),Hoe=W_("ClassExpression"),Goe=W_(JJ),Zoe=W_(XG),Koe=W_("ClassImplements"),Qoe=W_(RW),$oe=W_("ClassBody"),ele=W_(_B),tle=W_(XU),ale=W_(JF),nle=W_(QX),rle=W_(PU),sle=W_(YG),ile=W_(Jq),ole=W_(VJ),lle=W_(KH),ple=W_(TH),dle=W_("MethodDefinition"),cle=W_($F),ule=W_(Jq),mle=W_(YG),fle=W_(QH),hle=W_(KH),yle=W_(TH),gle=W_("ClassProperty"),ble=W_(JG),xle=W_(RW),Sle=W_(JJ),Ele=W_(XG),Tle=W_("InterfaceDeclaration"),Ale=W_(JJ),Ple=W_(XG),_le=W_("InterfaceExtends"),Nle=W_(QH),kle=W_(Rq),Cle=W_("ObjectPattern"),wle=W_(QH),vle=W_(KB),Ile=W_("ArrayPattern"),jle=W_(_W),Lle=W_(PW),Dle=W_("AssignmentPattern"),Rle=W_(Zz),Ole=W_(RH),Mle=W_(Zz),Yle=W_(RH),Fle=W_(Pz),Vle=W_(JF),Ble=W_(QX),Ule=W_(YG),Xle=W_(QV),Wle=W_(XU),qle=W_(VJ),zle=W_(KH),Jle=W_(TH),Hle=W_(Uz),Gle=W_(Zz),Zle=W_("SpreadProperty"),Kle=W_(YG),Qle=W_(QV),$le=W_(XU),epe=W_(Pz),tpe=W_(VJ),ape=W_(KH),npe=W_(TH),rpe=W_(Uz),spe=W_(Zz),ipe=W_("RestProperty"),ope=W_(Zz),lpe=W_("SpreadElement"),ppe=W_(QB),dpe=W_(_W),cpe=W_(PW),upe=W_("ComprehensionBlock"),mpe=W_("flags"),fpe=W_("pattern"),hpe=W_("regex"),ype=W_(SJ),gpe=W_(KH),bpe=W_(SJ),xpe=W_(KH),Spe=W_("Literal"),Epe=W_(UF),Tpe=W_("quasis"),Ape=W_("TemplateLiteral"),Ppe=W_("cooked"),_pe=W_(SJ),Npe=W_("tail"),kpe=W_(KH),Cpe=W_("TemplateElement"),wpe=W_("quasi"),vpe=W_("tag"),Ipe=W_("TaggedTemplateExpression"),jpe=W_(UB),Lpe=W_(MH),Dpe=W_(WJ),Rpe=W_(VJ),Ope=W_("declarations"),Mpe=W_("VariableDeclaration"),Ype=W_(Pz),Fpe=W_(XG),Vpe=W_("VariableDeclarator"),Bpe=W_($H),Upe=W_("plus"),Xpe=W_("AnyTypeAnnotation"),Wpe=W_("MixedTypeAnnotation"),qpe=W_("EmptyTypeAnnotation"),zpe=W_("VoidTypeAnnotation"),Jpe=W_("NullLiteralTypeAnnotation"),Hpe=W_("NumberTypeAnnotation"),Gpe=W_("StringTypeAnnotation"),Zpe=W_("BooleanTypeAnnotation"),Kpe=W_(QH),Qpe=W_("NullableTypeAnnotation"),$pe=W_(JJ),ede=W_("rest"),tde=W_(OX),ade=W_(KV),nde=W_("FunctionTypeAnnotation"),rde=W_(MW),sde=W_(QH),ide=W_(NX),ode=W_("FunctionTypeParam"),lde=[0,0,0,0],pde=W_("callProperties"),dde=W_("indexers"),cde=W_(Rq),ude=W_("exact"),mde=W_("ObjectTypeAnnotation"),fde=W_("There should not be computed object type property keys"),hde=W_(Pz),yde=W_(JF),gde=W_(QX),bde=W_(VJ),xde=W_($F),Sde=W_(Jq),Ede=W_(MW),Tde=W_(KH),Ade=W_(TH),Pde=W_("ObjectTypeProperty"),_de=W_(Zz),Nde=W_("ObjectTypeSpreadProperty"),kde=W_($F),Cde=W_(Jq),wde=W_(KH),vde=W_(TH),Ide=W_(XG),jde=W_("ObjectTypeIndexer"),Lde=W_(Jq),Dde=W_(KH),Rde=W_("ObjectTypeCallProperty"),Ode=W_("elementType"),Mde=W_("ArrayTypeAnnotation"),Yde=W_(XG),Fde=W_("qualification"),Vde=W_("QualifiedTypeIdentifier"),Bde=W_(JJ),Ude=W_(XG),Xde=W_("GenericTypeAnnotation"),Wde=W_($X),qde=W_("UnionTypeAnnotation"),zde=W_($X),Jde=W_("IntersectionTypeAnnotation"),Hde=W_(Zz),Gde=W_("TypeofTypeAnnotation"),Zde=W_($X),Kde=W_("TupleTypeAnnotation"),Qde=W_(SJ),$de=W_(KH),ece=W_("StringLiteralTypeAnnotation"),tce=W_(SJ),ace=W_(KH),nce=W_("NumberLiteralTypeAnnotation"),rce=W_(SJ),sce=W_(KH),ice=W_("BooleanLiteralTypeAnnotation"),oce=W_("ExistsTypeAnnotation"),lce=W_(QH),pce=W_("TypeAnnotation"),dce=W_(KV),cce=W_("TypeParameterDeclaration"),uce=W_(Lz),mce=W_($F),fce=W_("bound"),hce=W_(NX),yce=W_("TypeParameter"),gce=W_(KV),bce=W_("TypeParameterInstantiation"),xce=W_("children"),Sce=W_("closingElement"),Ece=W_("openingElement"),Tce=W_("JSXElement"),Ace=W_("selfClosing"),Pce=W_("attributes"),_ce=W_(NX),Nce=W_("JSXOpeningElement"),kce=W_(NX),Cce=W_("JSXClosingElement"),wce=W_(KH),vce=W_(NX),Ice=W_("JSXAttribute"),jce=W_(Zz),Lce=W_("JSXSpreadAttribute"),Dce=W_("JSXEmptyExpression"),Rce=W_(JH),Oce=W_("JSXExpressionContainer"),Mce=W_(SJ),Yce=W_(KH),Fce=W_("JSXText"),Vce=W_(OG),Bce=W_(VU),Uce=W_("JSXMemberExpression"),Xce=W_(NX),Wce=W_("namespace"),qce=W_("JSXNamespacedName"),zce=W_(NX),Jce=W_("JSXIdentifier"),Hce=W_(SV),Gce=W_(JV),Zce=W_("ExportSpecifier"),Kce=W_(JV),Qce=W_("ImportDefaultSpecifier"),$ce=W_(JV),eue=W_("ImportNamespaceSpecifier"),tue=W_(Oq),aue=W_(JW),nue=W_(ZG),rue=W_(JV),sue=W_("imported"),iue=W_("ImportSpecifier"),oue=W_("Block"),lue=W_("Line"),pue=W_(KH),due=W_(KH),cue=W_("DeclaredPredicate"),uue=W_("InferredPredicate"),mue=W_("message"),fue=W_(Tq),yue=W_("range"),gue=W_(Tq),bue=W_(Oq),xue=W_(MV),Sue=W_("end"),Eue=W_("start"),Tue=W_(Vq),Aue=W_("column"),Pue=W_("line"),_ue=W_(VH),Nue=[0,0],kue=[0,0],Cue=[0,2],wue=[0,2],vue=[0,1],Iue=[0,1],jue=[0,3],Lue=[0,3],Due=W_(VH),Rue=[5,3,IX],Oue=[5,3,IX],Mue=W_("\\"),Yue=W_(OW),Fue=W_(ZX),Vue=W_("*/"),Bue=W_(ZX),Uue=W_(Rz),Xue=W_(Rz),Wue=W_(Rz),que=W_(Rz),zue=W_(OW),Jue=W_("iexcl"),Hue=W_("aelig"),Gue=W_("Nu"),Zue=W_("Eacute"),Kue=W_("Atilde"),Que=W_("'int'"),$ue=W_("AElig"),eme=W_("Aacute"),tme=W_("Acirc"),ame=W_("Agrave"),nme=W_("Alpha"),rme=W_("Aring"),sme=[0,197],ime=[0,913],ome=[0,XH],lme=[0,194],pme=[0,193],dme=[0,198],cme=[0,8747],ume=W_("Auml"),mme=W_("Beta"),fme=W_("Ccedil"),hme=W_("Chi"),yme=W_("Dagger"),gme=W_("Delta"),bme=W_("ETH"),xme=[0,208],Sme=[0,916],Eme=[0,8225],Tme=[0,935],Ame=[0,hq],Pme=[0,914],_me=[0,196],Nme=[0,195],kme=W_("Icirc"),Cme=W_("Ecirc"),wme=W_("Egrave"),vme=W_("Epsilon"),Ime=W_("Eta"),jme=W_("Euml"),Lme=W_("Gamma"),Dme=W_("Iacute"),Rme=[0,205],Ome=[0,915],Mme=[0,203],Yme=[0,919],Fme=[0,917],Vme=[0,200],Bme=[0,202],Ume=W_("Igrave"),Xme=W_("Iota"),Wme=W_("Iuml"),qme=W_("Kappa"),zme=W_("Lambda"),Jme=W_("Mu"),Hme=W_("Ntilde"),Gme=[0,209],Zme=[0,924],Kme=[0,923],Qme=[0,922],$me=[0,207],efe=[0,921],tfe=[0,204],afe=[0,206],nfe=[0,201],rfe=W_("Sigma"),sfe=W_("Otilde"),ife=W_("OElig"),ofe=W_("Oacute"),lfe=W_("Ocirc"),pfe=W_("Ograve"),dfe=W_("Omega"),cfe=W_("Omicron"),ufe=W_("Oslash"),mfe=[0,IW],ffe=[0,927],hfe=[0,937],yfe=[0,210],gfe=[0,212],bfe=[0,211],xfe=[0,338],Sfe=W_("Ouml"),Efe=W_("Phi"),Tfe=W_("Pi"),Afe=W_("Prime"),Pfe=W_("Psi"),_fe=W_("Rho"),Nfe=W_("Scaron"),kfe=[0,352],Cfe=[0,929],wfe=[0,936],vfe=[0,8243],Ife=[0,928],jfe=[0,934],Lfe=[0,214],Dfe=[0,213],Rfe=W_("Uuml"),Ofe=W_("THORN"),Mfe=W_("Tau"),Yfe=W_("Theta"),Ffe=W_("Uacute"),Vfe=W_("Ucirc"),Bfe=W_("Ugrave"),Ufe=W_("Upsilon"),Xfe=[0,933],Wfe=[0,217],qfe=[0,219],zfe=[0,$U],Jfe=[0,920],Hfe=[0,932],Gfe=[0,222],Zfe=W_("Xi"),Kfe=W_("Yacute"),Qfe=W_("Yuml"),$fe=W_("Zeta"),ehe=W_("aacute"),the=W_("acirc"),ahe=W_("acute"),nhe=[0,180],rhe=[0,226],she=[0,225],ihe=[0,918],ohe=[0,376],lhe=[0,221],phe=[0,926],dhe=[0,220],che=[0,931],uhe=[0,925],mhe=W_("delta"),fhe=W_("cap"),hhe=W_("aring"),yhe=W_("agrave"),ghe=W_("alefsym"),bhe=W_("alpha"),xhe=W_("amp"),She=W_("and"),Ehe=W_("ang"),The=W_("apos"),Ahe=[0,39],Phe=[0,8736],_he=[0,8743],Nhe=[0,38],khe=[0,945],Che=[0,8501],whe=[0,$W],vhe=W_("asymp"),Ihe=W_("atilde"),jhe=W_("auml"),Lhe=W_("bdquo"),Dhe=W_("beta"),Rhe=W_("brvbar"),Ohe=W_("bull"),Mhe=[0,8226],Yhe=[0,166],Fhe=[0,946],Vhe=[0,8222],Bhe=[0,228],Uhe=[0,227],Xhe=[0,8776],Whe=[0,229],qhe=W_("copy"),zhe=W_("ccedil"),Jhe=W_("cedil"),Hhe=W_("cent"),Ghe=W_("chi"),Zhe=W_("circ"),Khe=W_("clubs"),Qhe=W_("cong"),$he=[0,8773],eye=[0,9827],tye=[0,710],aye=[0,967],nye=[0,162],rye=[0,184],sye=[0,231],iye=W_("crarr"),oye=W_("cup"),lye=W_("curren"),pye=W_("dArr"),dye=W_("dagger"),cye=W_("darr"),uye=W_("deg"),mye=[0,176],fye=[0,8595],hye=[0,8224],yye=[0,8659],gye=[0,164],bye=[0,8746],xye=[0,8629],Sye=[0,169],Eye=[0,8745],Tye=W_("fnof"),Aye=W_("ensp"),Pye=W_("diams"),_ye=W_("divide"),Nye=W_("eacute"),kye=W_("ecirc"),Cye=W_("egrave"),wye=W_(ZV),vye=W_("emsp"),Iye=[0,8195],jye=[0,8709],Lye=[0,232],Dye=[0,234],Rye=[0,233],Oye=[0,247],Mye=[0,9830],Yye=W_("epsilon"),Fye=W_("equiv"),Vye=W_("eta"),Bye=W_("eth"),Uye=W_("euml"),Xye=W_("euro"),Wye=W_("exist"),qye=[0,8707],zye=[0,8364],Jye=[0,235],Hye=[0,TW],Gye=[0,951],Zye=[0,8801],Kye=[0,949],Qye=[0,8194],$ye=W_("gt"),ege=W_("forall"),tge=W_("frac12"),age=W_("frac14"),nge=W_("frac34"),rge=W_("frasl"),sge=W_("gamma"),ige=W_("ge"),oge=[0,8805],lge=[0,947],pge=[0,8260],dge=[0,190],cge=[0,188],uge=[0,NJ],mge=[0,8704],fge=W_("hArr"),hge=W_("harr"),yge=W_("hearts"),gge=W_("hellip"),bge=W_("iacute"),xge=W_("icirc"),Sge=[0,238],Ege=[0,237],Tge=[0,8230],Age=[0,9829],Pge=[0,8596],_ge=[0,8660],Nge=[0,62],kge=[0,NV],Cge=[0,Wz],wge=[0,230],vge=W_("prime"),Ige=W_("ndash"),jge=W_("le"),Lge=W_("kappa"),Dge=W_("igrave"),Rge=W_("image"),Oge=W_("infin"),Mge=W_("iota"),Yge=W_("iquest"),Fge=W_("isin"),Vge=W_("iuml"),Bge=[0,239],Uge=[0,8712],Xge=[0,191],Wge=[0,953],qge=[0,8734],zge=[0,8465],Jge=[0,236],Hge=W_("lArr"),Gge=W_("lambda"),Zge=W_("lang"),Kge=W_("laquo"),Qge=W_("larr"),$ge=W_("lceil"),ebe=W_("ldquo"),tbe=[0,8220],abe=[0,8968],nbe=[0,8592],rbe=[0,171],sbe=[0,10216],ibe=[0,WW],obe=[0,8656],lbe=[0,954],pbe=W_("macr"),dbe=W_("lfloor"),cbe=W_("lowast"),ube=W_("loz"),mbe=W_("lrm"),fbe=W_("lsaquo"),hbe=W_("lsquo"),ybe=W_("lt"),gbe=[0,60],bbe=[0,8216],xbe=[0,8249],Sbe=[0,8206],Ebe=[0,9674],Tbe=[0,8727],Abe=[0,8970],Pbe=W_("mdash"),_be=W_("micro"),Nbe=W_("middot"),kbe=W_($H),Cbe=W_("mu"),wbe=W_("nabla"),vbe=W_("nbsp"),Ibe=[0,160],jbe=[0,8711],Lbe=[0,956],Dbe=[0,8722],Rbe=[0,183],Obe=[0,181],Mbe=[0,8212],Ybe=[0,175],Fbe=[0,8804],Vbe=W_("or"),Bbe=W_("oacute"),Ube=W_("ne"),Xbe=W_("ni"),Wbe=W_("not"),qbe=W_("notin"),zbe=W_("nsub"),Jbe=W_("ntilde"),Hbe=W_("nu"),Gbe=[0,957],Zbe=[0,241],Kbe=[0,8836],Qbe=[0,8713],$be=[0,172],exe=[0,8715],txe=[0,8800],axe=W_("ocirc"),nxe=W_("oelig"),rxe=W_("ograve"),sxe=W_("oline"),ixe=W_("omega"),oxe=W_("omicron"),lxe=W_("oplus"),pxe=[0,8853],dxe=[0,959],cxe=[0,969],uxe=[0,8254],mxe=[0,242],fxe=[0,339],hxe=[0,244],yxe=[0,243],gxe=W_("part"),bxe=W_("ordf"),xxe=W_("ordm"),Sxe=W_("oslash"),Exe=W_("otilde"),Txe=W_("otimes"),Axe=W_("ouml"),Pxe=W_("para"),_xe=[0,182],Nxe=[0,Kq],kxe=[0,8855],Cxe=[0,TG],wxe=[0,TB],vxe=[0,186],Ixe=[0,170],jxe=W_("permil"),Lxe=W_("perp"),Dxe=W_("phi"),Rxe=W_("pi"),Oxe=W_("piv"),Mxe=W_("plusmn"),Yxe=W_("pound"),Fxe=[0,163],Vxe=[0,177],Bxe=[0,982],Uxe=[0,960],Xxe=[0,966],Wxe=[0,8869],qxe=[0,8240],zxe=[0,8706],Jxe=[0,8744],Hxe=[0,8211],Gxe=W_("sup1"),Zxe=W_("rlm"),Kxe=W_("raquo"),Qxe=W_("prod"),$xe=W_("prop"),eSe=W_("psi"),tSe=W_("quot"),aSe=W_("rArr"),nSe=W_("radic"),rSe=W_("rang"),sSe=[0,10217],iSe=[0,8730],oSe=[0,8658],lSe=[0,34],pSe=[0,968],dSe=[0,8733],cSe=[0,8719],uSe=W_("rarr"),mSe=W_("rceil"),fSe=W_("rdquo"),hSe=W_("real"),ySe=W_("reg"),gSe=W_("rfloor"),bSe=W_("rho"),xSe=[0,961],SSe=[0,8971],ESe=[0,174],TSe=[0,8476],ASe=[0,8221],PSe=[0,8969],_Se=[0,8594],NSe=[0,187],kSe=W_("sigma"),CSe=W_("rsaquo"),wSe=W_("rsquo"),vSe=W_("sbquo"),ISe=W_("scaron"),jSe=W_("sdot"),LSe=W_("sect"),DSe=W_("shy"),RSe=[0,173],OSe=[0,167],MSe=[0,8901],YSe=[0,353],FSe=[0,8218],VSe=[0,8217],BSe=[0,8250],USe=W_("sigmaf"),XSe=W_("sim"),WSe=W_("spades"),qSe=W_("sub"),zSe=W_("sube"),JSe=W_("sum"),HSe=W_("sup"),GSe=[0,8835],ZSe=[0,8721],KSe=[0,8838],QSe=[0,8834],$Se=[0,9824],eEe=[0,8764],tEe=[0,962],aEe=[0,963],nEe=[0,8207],rEe=W_("uarr"),sEe=W_("thetasym"),iEe=W_("sup2"),oEe=W_("sup3"),lEe=W_("supe"),pEe=W_("szlig"),dEe=W_("tau"),cEe=W_("there4"),uEe=W_("theta"),mEe=[0,952],fEe=[0,8756],hEe=[0,964],yEe=[0,LJ],gEe=[0,8839],bEe=[0,179],xEe=[0,178],SEe=W_("thinsp"),EEe=W_("thorn"),TEe=W_("tilde"),AEe=W_("times"),PEe=W_("trade"),_Ee=W_("uArr"),NEe=W_("uacute"),kEe=[0,Mq],CEe=[0,8657],wEe=[0,8482],vEe=[0,215],IEe=[0,732],jEe=[0,MF],LEe=[0,8201],DEe=[0,977],REe=W_("xi"),OEe=W_("ucirc"),MEe=W_("ugrave"),YEe=W_("uml"),FEe=W_("upsih"),VEe=W_("upsilon"),BEe=W_("uuml"),UEe=W_("weierp"),XEe=[0,8472],WEe=[0,QJ],qEe=[0,965],zEe=[0,978],JEe=[0,168],HEe=[0,249],GEe=[0,251],ZEe=W_("yacute"),KEe=W_("yen"),QEe=W_("yuml"),$Ee=W_("zeta"),eTe=W_("zwj"),tTe=W_("zwnj"),aTe=[0,8204],nTe=[0,8205],rTe=[0,950],sTe=[0,QW],iTe=[0,165],oTe=[0,253],lTe=[0,958],pTe=[0,8593],dTe=[0,185],cTe=[0,8242],uTe=[0,161],mTe=W_(";"),fTe=W_(RV),hTe=W_("}"),yTe=[0,W_(Rz),W_(Rz),W_(Rz)],gTe=W_("${"),bTe=W_(VW),xTe=W_(ZB),STe=W_(Rz),ETe=[0,W_(Lq),620,11],TTe=[0,W_(Lq),614,11],ATe=[0,0],PTe=[0,W_(Lq),556,4],_Te=W_(Rz),NTe=[1,W_("ILLEGAL")],kTe=W_(LG),CTe=W_(LG),wTe=W_("T_IDENTIFIER"),vTe=W_("T_LCURLY"),ITe=W_("T_RCURLY"),jTe=W_("T_LCURLYBAR"),LTe=W_("T_RCURLYBAR"),DTe=W_("T_LPAREN"),RTe=W_("T_RPAREN"),OTe=W_("T_LBRACKET"),MTe=W_("T_RBRACKET"),YTe=W_("T_SEMICOLON"),FTe=W_("T_COMMA"),VTe=W_("T_PERIOD"),BTe=W_("T_ARROW"),UTe=W_("T_ELLIPSIS"),XTe=W_("T_AT"),WTe=W_("T_FUNCTION"),qTe=W_("T_IF"),zTe=W_("T_IN"),JTe=W_("T_INSTANCEOF"),HTe=W_("T_RETURN"),GTe=W_("T_SWITCH"),ZTe=W_("T_THIS"),KTe=W_("T_THROW"),QTe=W_("T_TRY"),$Te=W_("T_VAR"),eAe=W_("T_WHILE"),tAe=W_("T_WITH"),aAe=W_("T_CONST"),nAe=W_("T_LET"),rAe=W_("T_NULL"),sAe=W_("T_FALSE"),iAe=W_("T_TRUE"),oAe=W_("T_BREAK"),lAe=W_("T_CASE"),pAe=W_("T_CATCH"),dAe=W_("T_CONTINUE"),cAe=W_("T_DEFAULT"),uAe=W_("T_DO"),mAe=W_("T_FINALLY"),fAe=W_("T_FOR"),hAe=W_("T_CLASS"),yAe=W_("T_EXTENDS"),gAe=W_("T_STATIC"),bAe=W_("T_ELSE"),xAe=W_("T_NEW"),SAe=W_("T_DELETE"),EAe=W_("T_TYPEOF"),TAe=W_("T_VOID"),AAe=W_("T_ENUM"),PAe=W_("T_EXPORT"),_Ae=W_("T_IMPORT"),NAe=W_("T_SUPER"),kAe=W_("T_IMPLEMENTS"),CAe=W_("T_INTERFACE"),wAe=W_("T_PACKAGE"),vAe=W_("T_PRIVATE"),IAe=W_("T_PROTECTED"),jAe=W_("T_PUBLIC"),LAe=W_("T_YIELD"),DAe=W_("T_DEBUGGER"),RAe=W_("T_DECLARE"),OAe=W_("T_TYPE"),MAe=W_("T_OF"),YAe=W_("T_ASYNC"),FAe=W_("T_AWAIT"),VAe=W_("T_CHECKS"),BAe=W_("T_RSHIFT3_ASSIGN"),UAe=W_("T_RSHIFT_ASSIGN"),XAe=W_("T_LSHIFT_ASSIGN"),WAe=W_("T_BIT_XOR_ASSIGN"),qAe=W_("T_BIT_OR_ASSIGN"),zAe=W_("T_BIT_AND_ASSIGN"),JAe=W_("T_MOD_ASSIGN"),HAe=W_("T_DIV_ASSIGN"),GAe=W_("T_MULT_ASSIGN"),ZAe=W_("T_EXP_ASSIGN"),KAe=W_("T_MINUS_ASSIGN"),QAe=W_("T_PLUS_ASSIGN"),$Ae=W_("T_ASSIGN"),ePe=W_("T_PLING"),tPe=W_("T_COLON"),aPe=W_("T_OR"),nPe=W_("T_AND"),rPe=W_("T_BIT_OR"),sPe=W_("T_BIT_XOR"),iPe=W_("T_BIT_AND"),oPe=W_("T_EQUAL"),lPe=W_("T_NOT_EQUAL"),pPe=W_("T_STRICT_EQUAL"),dPe=W_("T_STRICT_NOT_EQUAL"),cPe=W_("T_LESS_THAN_EQUAL"),uPe=W_("T_GREATER_THAN_EQUAL"),mPe=W_("T_LESS_THAN"),fPe=W_("T_GREATER_THAN"),hPe=W_("T_LSHIFT"),yPe=W_("T_RSHIFT"),gPe=W_("T_RSHIFT3"),bPe=W_("T_PLUS"),xPe=W_("T_MINUS"),SPe=W_("T_DIV"),EPe=W_("T_MULT"),TPe=W_("T_EXP"),APe=W_("T_MOD"),PPe=W_("T_NOT"),_Pe=W_("T_BIT_NOT"),NPe=W_("T_INCR"),kPe=W_("T_DECR"),CPe=W_("T_ERROR"),wPe=W_("T_EOF"),vPe=W_("T_JSX_IDENTIFIER"),IPe=W_("T_ANY_TYPE"),jPe=W_("T_MIXED_TYPE"),LPe=W_("T_EMPTY_TYPE"),DPe=W_("T_BOOLEAN_TYPE"),RPe=W_("T_NUMBER_TYPE"),OPe=W_("T_STRING_TYPE"),MPe=W_("T_VOID_TYPE"),YPe=W_("T_NUMBER"),FPe=W_("T_STRING"),VPe=W_("T_TEMPLATE_PART"),BPe=W_("T_REGEXP"),UPe=W_("T_JSX_TEXT"),XPe=W_("T_NUMBER_SINGLETON_TYPE"),WPe=W_("Lexer_flow.FloatOfString.No_good"),qPe=_C([[0,W_(QF),15],[0,W_("if"),16],[0,W_(Nq),17],[0,W_(Vz),18],[0,W_("return"),19],[0,W_("switch"),20],[0,W_("this"),21],[0,W_("throw"),22],[0,W_("try"),23],[0,W_(UB),24],[0,W_("while"),25],[0,W_("with"),26],[0,W_(WJ),27],[0,W_(MH),28],[0,W_(KG),29],[0,W_(SH),30],[0,W_(WG),31],[0,W_("break"),32],[0,W_("case"),33],[0,W_("catch"),34],[0,W_("continue"),35],[0,W_(Lz),36],[0,W_("do"),37],[0,W_("finally"),38],[0,W_("for"),39],[0,W_("class"),40],[0,W_(JG),41],[0,W_(Jq),42],[0,W_("else"),43],[0,W_(UV),44],[0,W_(ZJ),45],[0,W_(JW),46],[0,W_(LH),47],[0,W_(_q),48],[0,W_("export"),49],[0,W_("import"),50],[0,W_("super"),51],[0,W_(Xz),52],[0,W_(Uq),53],[0,W_(ZW),54],[0,W_(Nz),55],[0,W_(_U),56],[0,W_(Sq),57],[0,W_(IB),58],[0,W_("debugger"),59],[0,W_("declare"),60],[0,W_(Oq),61],[0,W_("of"),62],[0,W_(WX),63],[0,W_("await"),64]]),zPe=_C([[0,W_(Jq),42],[0,W_(JW),46],[0,W_("any"),WU],[0,W_("mixed"),111],[0,W_(ZV),SU],[0,W_("bool"),_z],[0,W_("boolean"),_z],[0,W_(WG),31],[0,W_(SH),30],[0,W_("number"),MG],[0,W_("string"),115],[0,W_(LH),WH],[0,W_(KG),29]]),JPe=W_(QU),HPe=W_(QU),GPe=W_(Xq),ZPe=W_("eval"),KPe=W_(Xz),QPe=W_(Uq),$Pe=W_(ZW),e_e=W_(Nz),t_e=W_(_U),a_e=W_(Sq),n_e=W_(Jq),r_e=W_(IB),s_e=W_(_q),i_e=[0,W_("src/parser/parser_env.ml"),291,2],o_e=[0,0,0],l_e=W_(KW),p_e=W_(KW),d_e=W_("Parser_env.Try.Rollback"),c_e=[0,W_("did not consume any tokens")],u_e=[0,1],m_e=[0,0,0],f_e=[0,0,0],h_e=[0,W_(Qz),496,6],y_e=W_(Jq),g_e=W_(JF),b_e=W_(QX),x_e=W_(JF),S_e=[0,1],E_e=[0,[0,0,0]],T_e=[0,1],A_e=[0,1],P_e=[0,1],__e=[0,0],N_e=[0,1],k_e=[0,2],C_e=[0,7],w_e=[0,5],v_e=[0,6],I_e=[0,3],j_e=[0,4],L_e=[0,W_(Qz),YF,17],D_e=[0,W_(Qz),87,17],R_e=[0,W_(Qz),65,11],O_e=[0,W_(Qz),69,11],M_e=[0,W_(Qz),47,14],Y_e=[0,0,0],F_e=[0,31],V_e=[0,0,0],B_e=[0,31],U_e=[0,1],X_e=[0,29],W_e=[0,W_(OV),810,13],q_e=[0,W_(OV),712,17],z_e=[0,[0,W_(Rz),W_(Rz)],1],J_e=W_(KG),H_e=W_(ZB),G_e=[0,0,0],Z_e=[0,31],K_e=W_(UV),Q_e=W_("target"),$_e=[0,1],eNe=[0,0],tNe=[0,1],aNe=[0,0],nNe=[0,1],rNe=[0,0],sNe=[0,2],iNe=[0,3],oNe=[0,7],lNe=[0,6],pNe=[0,4],dNe=[0,5],cNe=[0,[0,17,[0,2]]],uNe=[0,[0,18,[0,3]]],mNe=[0,[0,19,[0,4]]],fNe=[0,[0,0,[0,5]]],hNe=[0,[0,1,[0,5]]],yNe=[0,[0,2,[0,5]]],gNe=[0,[0,3,[0,5]]],bNe=[0,[0,5,[0,6]]],xNe=[0,[0,7,[0,6]]],SNe=[0,[0,4,[0,6]]],ENe=[0,[0,6,[0,6]]],TNe=[0,[0,8,[0,7]]],ANe=[0,[0,9,[0,7]]],PNe=[0,[0,10,[0,7]]],_Ne=[0,[0,11,[0,8]]],NNe=[0,[0,12,[0,8]]],kNe=[0,[0,15,[0,9]]],CNe=[0,[0,13,[0,9]]],wNe=[0,[0,14,[1,10]]],vNe=[0,[0,16,[0,9]]],INe=[0,[0,21,[0,6]]],jNe=[0,[0,20,[0,6]]],LNe=[0,9],DNe=[0,8],RNe=[0,7],ONe=[0,11],MNe=[0,10],YNe=[0,12],FNe=[0,6],VNe=[0,5],BNe=[0,3],UNe=[0,4],XNe=[0,2],WNe=[0,1],qNe=[0,0],zNe=W_(WX),JNe=W_(VH),HNe=W_(RJ),GNe=[0,0,0],ZNe=W_(Rz),KNe=[0,W_(Rz)],QNe=[0,0,0],$Ne=W_(_B),eke=W_(_B),tke=[0,1],ake=[0,1],nke=[0,1],rke=[0,1],ske=W_(JF),ike=W_(QX),oke=[0,0,0],lke=W_(JF),pke=W_(QX),dke=W_(Oq),cke=[0,1,[0,0]],uke=W_(JW),mke=[0,1,[0,1]],fke=[0,0,0],hke=W_(UG),yke=W_(UG),gke=W_(UG),bke=[0,1,0],xke=[0,2,0],Ske=W_(_X),Eke=W_(UG),Tke=W_(_X),Ake=W_(UG),Pke=W_(UG),_ke=W_(_X),Nke=[0,W_(JX),1109,15],kke=W_("other than an interface declaration!"),Cke=W_("Internal Flow Error! Parsed `export interface` into something "),wke=[0,1],vke=W_("other than a type alias!"),Ike=W_("Internal Flow Error! Parsed `export type` into something "),jke=W_(UG),Lke=W_(UG),Dke=W_(Lz),Rke=W_(_X),Oke=W_("Internal Flow Error! Unexpected export statement declaration!"),Mke=W_(UG),Yke=W_(UG),Fke=W_(_X),Vke=[0,1],Bke=W_(Wq),Uke=[0,1],Xke=W_(Wq),Wke=W_("exports"),qke=[0,1],zke=[0,1],Jke=W_(NH),Hke=W_(NH),Gke=[0,1],Zke=[0,1],Kke=W_("Label"),Qke=[0,27],$ke=[0,0,0],eCe=[0,0,0],tCe=[0,W_(JX),hq,20],aCe=[0,W_(JX),IW,20],nCe=W_("Parser error: No such thing as an expression pattern!"),rCe=[0,1],sCe=W_("use strict"),iCe=[0,0,0],oCe=W_(VW),lCe=W_("Nooo: "),pCe=[0,W_("src/parser/parser_flow.ml"),39,28],dCe=[0,0],cCe=W_(" errors");Ow([TB,QZ,0]),function(Vwe){var Bwe=QG.fds[Vwe];return Bwe.flags.wronly&&LC(MB+Vwe+" is writeonly"),{file:Bwe.file,offset:Bwe.offset,fd:Vwe,opened:!0,refill:null}}(0),ZC(1),ZC(2),Ow([TB,SK,0]);var uCe=PN,mCe=function(){return[0,W_(KU),32,0]}(0)[1],fCe=function(){return 32}(0),hCe=function(){return 0}(0),yCe=0|(1<<(0|fCe+Tz))-1,gCe=0|$G(0|fCe/8,yCe)-1;Ow([TB,JK,0]),Ow([TB,NQ,0]);var bCe=Ow([TB,IQ,0]),xCe=6,SCe=Ow([TB,zee,0]),ECe=[0,0];try{var TCe=Zw(Hee),ACe=TCe}catch(Fwe){if(Fwe=Pv(Fwe),Fwe!==MZ)throw Fwe;try{var PCe=Zw(Gee),_Ce=PCe}catch(Vwe){if(Vwe=Pv(Vwe),Vwe!==MZ)throw Vwe;var _Ce=Zee}var ACe=_Ce}var NCe=function(Vwe,Bwe){return WI(Vwe,0,Bwe)}(ACe,82),kCe=[Kq,function(){for(var Fwe=Kw(0),Vwe=[0,NC(55,0),0],Bwe=0==Fwe.length-1?[0,0]:Fwe,Uwe=Bwe.length-1,Xwe=0;;){if(Q_(Vwe[1],Xwe)[Xwe+1]=Xwe,54!=Xwe){var Xwe=0|Xwe+1;continue}var Wwe=[0,Jee],qwe=0|54+Xv(55,Uwe);if(!(0>qwe))for(var zwe=0;;){var Jwe=0|zwe%55,Hwe=fw(zwe,Uwe),Gwe=Q_(Bwe,Hwe)[Hwe+1],Zwe=Jv(Wwe[1],W_(Rz+Gwe));Wwe[1]=TZ(Zwe,0,Xk(Zwe));var Kwe=Wwe[1],Qwe=0|(0|(0|Vw(Kwe,0)+(Vw(Kwe,1)<<8))+(Vw(Kwe,2)<<16))+(Vw(Kwe,3)<<24),$we=(Q_(Vwe[1],Jwe)[Jwe+1]^Qwe)&RU;if(Q_(Vwe[1],Jwe)[Jwe+1]=$we,qwe!=zwe){var zwe=0|zwe+1;continue}break}return Vwe[2]=0,Vwe}}],CCe=QP,wCe=function(Vwe,Bwe){function Uwe(){ZP(QG.Undefined_recursive_module,Vwe)}function Xwe(qwe,zwe,Jwe){if("number"==typeof qwe)zwe[Jwe]=0===qwe?{fun:Uwe}:1===qwe?[Kq,Uwe]:[];else switch(qwe[0]){case 0:zwe[Jwe]=[0];for(var Hwe=1;Hwe>>0?Nv(uve,vve,_v(Zwe,vve)):Nv(mve,vve,_v(Vwe[14],vve)[1])}function Uwe(vve,Ive,jve){var Lve=_v(hve,vve);XY(vve,80);var Dve=_v(Zwe,vve);return[0,VD(Ive,Dve[1]),[0,Lve,Dve,jve]]}function Xwe(vve,Ive,jve,Lve){var Dve=Uwe(vve,Ive,Nv(Tve,0,vve)),Rve=[0,Dve[1],[1,Dve[2]]];return[0,[0,Rve[1],[0,Lve,[0,Rve],0,jve,1,0]]]}function Wwe(vve,Ive,jve,Lve,Dve){1-WO(vve)&&_Y(vve,7);var Rve=WY(vve,79);XY(vve,80);var Ove=_v(Zwe,vve);return[0,[0,VD(Ive,Ove[1]),[0,Dve,[0,Ove],Rve,jve,0,Lve]]]}function qwe(vve,Ive){var jve=XM(0,Ive);if("number"==typeof jve&&!(11<=jve))switch(jve){case 2:if(!vve)return 0;break;case 4:if(vve)return 0;break;case 9:case 10:return MY(Ive);}return IY(Ive)}function zwe(vve,Ive){return Ive?JO(vve,[0,Ive[1][1],5]):Ive}function Jwe(vve){var Ive=PM(0,vve),jve=XM(0,Ive);if("number"==typeof jve&&65===jve){var Lve=JM(0,Ive);if(XY(Ive,65),5===XM(0,Ive)){XY(Ive,5),YY(Ive,0);var Dve=_v(Vwe[8],Ive);VY(Ive);var Rve=JM(0,Ive);XY(Ive,6);var Ove=[0,VD(Lve,Rve),[0,Dve]]}else var Ove=[0,Lve,0];return[0,Ove]}return 0}function Hwe(vve){var Ive=XM(0,vve),jve=XM(u_e,vve);if("number"==typeof Ive&&80===Ive){if("number"==typeof jve&&65===jve)return XY(vve,80),[0,0,Jwe(vve)];var Lve=_v(kve,vve);return[0,Lve,Jwe(vve)]}return m_e}function Gwe(vve,Ive){var jve=QO(1,Ive);YY(jve,1);var Lve=_v(vve,jve);return VY(jve),Lve}var Zwe=[],Kwe=[],Qwe=[],$we=[],eve=[],tve=[],ave=[],nve=[],rve=[],sve=[],ive=[],ove=[],lve=[],pve=[],dve=[],cve=[],uve=[],mve=[],fve=[],hve=[],yve=[],gve=[],bve=[],xve=[],Sve=[],Eve=[],Tve=[],Ave=[],Pve=[],_ve=[],Nve=[],kve=[];KP(Zwe,function(vve){return _v(eve,vve)}),KP(Kwe,function(vve){1-WO(vve)&&_Y(vve,7);var Ive=JM(0,vve);XY(vve,80);var jve=_v(Zwe,vve),Lve=RM(vve);if(Lve)return[0,VD(Ive,Lve[1]),jve];throw[0,YZ,M_e]}),KP(Qwe,function(vve){var Ive=JM(0,vve),jve=XM(0,vve);if("number"==typeof jve){if(97===jve)return MY(vve),[0,[0,Ive,0]];if(98===jve)return MY(vve),[0,[0,Ive,1]]}return 0}),KP($we,function(vve){if(vve){var Ive=vve[1][1],jve=TI(vve);if(jve)return[0,VD(jve[1][1],Ive),jve];throw[0,YZ,O_e]}throw[0,YZ,R_e]}),KP(eve,function(vve){return WY(vve,83),Nv(tve,vve,_v(ave,vve))}),KP(tve,function(vve,Ive){if(83===XM(0,vve))for(var jve=[0,Ive,0];;){var Lve=XM(0,vve);if("number"==typeof Lve&&83===Lve){XY(vve,83);var jve=[0,_v(ave,vve),jve];continue}var Dve=_v($we,jve),Rve=Dve[2];if(Rve){var Ove=Rve[2];if(Ove)return[0,Dve[1],[5,Rve[1],Ove[1],Ove[2]]]}throw[0,YZ,D_e]}return Ive}),KP(ave,function(vve){return WY(vve,85),Nv(nve,vve,_v(rve,vve))}),KP(nve,function(vve,Ive){if(85===XM(0,vve))for(var jve=[0,Ive,0];;){var Lve=XM(0,vve);if("number"==typeof Lve&&85===Lve){XY(vve,85);var jve=[0,_v(rve,vve),jve];continue}var Dve=_v($we,jve),Rve=Dve[2];if(Rve){var Ove=Rve[2];if(Ove)return[0,Dve[1],[6,Rve[1],Ove[1],Ove[2]]]}throw[0,YZ,L_e]}return Ive}),KP(rve,function(vve){return Nv(sve,vve,_v(ive,vve))}),KP(sve,function(vve,Ive){var jve=XM(0,vve);if("number"==typeof jve&&12===jve&&!vve[14]){var Lve=Nv(uve,vve,Ive);return Lv(Sve,vve,Lve[1],0,[0,[0,Lve,0],0])}return Ive}),KP(ive,function(vve){var Ive=XM(0,vve);if("number"==typeof Ive&&79===Ive){var jve=JM(0,vve);XY(vve,79);var Lve=_v(ive,vve);return[0,VD(jve,Lve[1]),[0,Lve]]}return _v(ove,vve)}),KP(ove,function(vve){return Nv(lve,vve,_v(pve,vve))}),KP(lve,function(vve,Ive){if(!KM(vve)&&WY(vve,7)){var jve=JM(0,vve);return XY(vve,8),Nv(lve,vve,[0,VD(Ive[1],jve),[3,Ive]])}return Ive}),KP(pve,function(vve){var Ive=JM(0,vve),jve=XM(0,vve);if("number"==typeof jve)switch(jve){case 0:var Lve=_v(Pve,vve);return[0,Lve[1],[4,Lve[2]]];case 5:return _v(bve,vve);case 7:return _v(cve,vve);case 46:var Dve=JM(0,vve);XY(vve,46);var Rve=_v(pve,vve);return[0,VD(Dve,Rve[1]),[7,Rve]];case 92:return _v(xve,vve);case 100:return XY(vve,Jz),[0,Ive,8];case 1:case 3:var Ove=Lv(Eve,0,1,1,vve);return[0,Ove[1],[2,Ove[2]]];case 30:case 31:var Mve=WM(0,vve);return XY(vve,jve),[0,Ive,[11,[0,31===jve?1:0,Mve]]];}else switch(jve[0]){case 1:var Yve=jve[1],Fve=Yve[4],Vve=Yve[3],Bve=Yve[2],Uve=Yve[1];return Fve&&RY(vve,32),XY(vve,[1,[0,Uve,Bve,Vve,Fve]]),[0,Uve,[9,[0,Bve,Vve]]];case 5:var Xve=jve[2],Wve=jve[1],qve=WM(0,vve);return XY(vve,[5,Wve,Xve]),1===Wve&&RY(vve,32),[0,Ive,[10,[0,Xve,qve]]];}var zve=_v(dve,jve);return zve?(XY(vve,jve),[0,Ive,zve[1]]):(IY(vve),[0,Ive,0])}),KP(dve,function(vve){if("number"==typeof vve){if(29===vve)return j_e;if(WU<=vve)switch(0|vve-110){case 0:return __e;case 1:return N_e;case 2:return k_e;case 3:return C_e;case 4:return w_e;case 5:return v_e;default:return I_e;}}return 0}),KP(cve,function(vve){var Ive=JM(0,vve);XY(vve,7);for(var jve=0;;){var Lve=XM(0,vve);if("number"==typeof Lve){var Dve=8===Lve?1:YF===Lve?1:0;if(Dve){var Rve=TI(jve),Ove=JM(0,vve);return XY(vve,8),[0,VD(Ive,Ove),[8,Rve]]}}var Mve=[0,_v(Zwe,vve),jve];8!==XM(0,vve)&&XY(vve,10);var jve=Mve;continue}}),KP(uve,function(vve,Ive){return[0,Ive[1],[0,0,Ive,0]]}),KP(mve,function(vve,Ive){1-WO(vve)&&_Y(vve,7);var jve=WY(vve,79);XY(vve,80);var Lve=_v(Zwe,vve);return[0,VD(Ive[1],Lve[1]),[0,[0,Ive],Lve,jve]]}),KP(fve,function(vve){return function(Ive){for(var jve=Ive;;){var Lve=XM(0,vve);if("number"==typeof Lve){var Dve=0|Lve-6,Rve=7>>0?Qq==Dve?1:0:5<(0|Dve-1)>>>0?1:0;if(Rve){var Ove=13===Lve?1:0;if(Ove){var Mve=JM(0,vve);XY(vve,13);var Yve=Bwe(vve),Fve=[0,[0,VD(Mve,Yve[1]),[0,Yve]]]}else var Fve=Ove;return[0,TI(jve),Fve]}}var Vve=[0,Bwe(vve),jve];6!==XM(0,vve)&&XY(vve,10);var jve=Vve;continue}}}),KP(hve,function(vve){XY(vve,5);var Ive=Nv(fve,vve,0);return XY(vve,6),Ive}),KP(yve,function(vve){XY(vve,5);var Ive=PM(0,vve),jve=XM(0,Ive);if("number"!=typeof jve)var Dve=0;else if(13<=jve){if(YF===jve)var Lve=1;else if(14<=jve)var Dve=0,Lve=0;else var Lve=1;if(Lve)var Rve=[0,Nv(fve,Ive,0)],Dve=1}else if(6===jve)var Rve=E_e,Dve=1;else if(0===jve)var Rve=_v(gve,Ive),Dve=1;else var Dve=0;if(!Dve){if(_v(dve,jve)){var Ove=XM(T_e,Ive);if("number"!=typeof Ove)var Mve=0;else if(1<(0|Ove+Yz)>>>0)var Mve=0;else var Yve=[0,Nv(fve,Ive,0)],Mve=1;if(!Mve)var Yve=[1,_v(Zwe,Ive)];var Fve=Yve}else var Fve=[1,_v(Zwe,Ive)];var Rve=Fve}if(0===Rve[0])var Vve=Rve;else{var Bve=Rve[1];if(vve[14])var Uve=Rve;else{var Xve=XM(0,vve);if("number"!=typeof Xve)var qve=0;else if(6===Xve){if(12===XM(A_e,vve))var Wve=[0,Nv(fve,vve,[0,Nv(uve,vve,Bve),0])],qve=1;else var Wve=[1,Bve],qve=1;}else if(10===Xve){XY(vve,10);var Wve=[0,Nv(fve,vve,[0,Nv(uve,vve,Bve),0])],qve=1}else var qve=0;if(!qve)var Wve=Rve;var Uve=Wve}var Vve=Uve}return XY(vve,6),Vve}),KP(gve,function(vve){var Ive=Nv(Vwe[13],0,vve),jve=XM(0,vve);if("number"==typeof jve&&!(1<(0|jve+Yz)>>>0)){var Lve=Nv(mve,vve,Ive);return WY(vve,10),[0,Nv(fve,vve,[0,Lve,0])]}return[1,Nv(tve,vve,Nv(nve,vve,Nv(sve,vve,Nv(lve,vve,Nv(Nve,vve,Ive)))))]}),KP(bve,function(vve){var Ive=JM(0,vve),jve=_v(yve,vve);return 0===jve[0]?Lv(Sve,vve,Ive,0,jve[1]):jve[1]}),KP(xve,function(vve){var Ive=JM(0,vve),jve=Nv(Tve,0,vve);return Lv(Sve,vve,Ive,jve,_v(hve,vve))}),KP(Sve,function(vve,Ive,jve,Lve){XY(vve,12);var Dve=_v(Zwe,vve);return[0,VD(Ive,Dve[1]),[1,[0,Lve,Dve,jve]]]}),KP(Eve,function(vve,Ive,jve,Lve){var Dve=Ive?3===XM(0,Lve)?1:0:Ive,Rve=JM(0,Lve),Ove=Dve?3:1;XY(Lve,Ove);for(var Mve=0;;){if(vve&&jve)throw[0,YZ,h_e];var Yve=JM(0,Lve),Fve=vve?WY(Lve,42):vve,Vve=_v(Qwe,Lve),Bve=XM(0,Lve);if("number"==typeof Bve){if(92===Bve)var Uve=1;else{if(YF===Bve)var Xve=TI(Mve),Wve=1;else if(14<=Bve)var Uve=0,Wve=0;else switch(Bve){case 2:if(Dve)var Uve=0,Wve=0;else var Xve=TI(Mve),Wve=1;break;case 4:if(Dve)var Xve=TI(Mve),Wve=1;else var Uve=0,Wve=0;break;case 7:XY(Lve,7);var qve=80===XM(S_e,Lve)?1:0;if(qve){var zve=_v(Vwe[14],Lve);XY(Lve,80);var Jve=[0,zve[1]]}else var Jve=qve;var Hve=_v(Zwe,Lve);XY(Lve,8),XY(Lve,80);var Gve=_v(Zwe,Lve),Zve=[2,[0,VD(Yve,Gve[1]),[0,Jve,Hve,Gve,Fve,Vve]]];qwe(Dve,Lve);var Mve=[0,Zve,Mve];continue;case 13:if(jve){MY(Lve);var Kve=_v(Pve,Lve),Qve=[1,[0,VD(Yve,Kve[1]),[0,Kve]]];qwe(Dve,Lve);var Mve=[0,Qve,Mve];continue}var Uve=0,Wve=0;break;case 5:var Uve=1,Wve=0;break;default:var Uve=0,Wve=0;}if(Wve){var $ve=JM(0,Lve),eIe=Dve?4:2;return XY(Lve,eIe),[0,VD(Rve,$ve),[0,Dve,Xve]]}}if(Uve){zwe(Lve,Vve);var tIe=Nv(Tve,0,Lve),aIe=Uwe(Lve,JM(0,Lve),tIe),nIe=[3,[0,VD(Yve,aIe[1]),[0,aIe,Fve]]];qwe(Dve,Lve);var Mve=[0,nIe,Mve];continue}}if(0===Fve)var rIe=0;else if(Vve)var rIe=0;else if("number"!=typeof Bve)var rIe=0;else if(80===Bve){OY(Lve,[0,Yve,40]);var sIe=[1,[0,Yve,y_e]],iIe=XM(0,Lve),oIe=0;if("number"==typeof iIe){if(5===iIe)var lIe=1;else if(92===iIe)var lIe=1;else var pIe=0,lIe=0;if(lIe){zwe(Lve,Vve);var dIe=Xwe(Lve,Yve,oIe,sIe),pIe=1}}else var pIe=0;if(!pIe)var dIe=Wwe(Lve,Yve,oIe,Vve,sIe);var cIe=dIe,rIe=1}else var rIe=0;if(!rIe){var uIe=function(YIe){YY(YIe,0);var FIe=_v(Vwe[21],YIe);return VY(YIe),FIe},mIe=uIe(Lve)[2];if(1===mIe[0]){var fIe=mIe[1][2];if(!Uw(fIe,g_e))var yIe=1;else if(Uw(fIe,b_e))var hIe=0,yIe=0;else var yIe=1;if(yIe){var gIe=XM(0,Lve);if("number"==typeof gIe){var bIe=0|gIe-6;if(85>>0){if(87<(0|bIe+1)>>>0)var xIe=0,SIe=0;else{zwe(Lve,Vve);var EIe=Xwe(Lve,Yve,Fve,mIe),SIe=1}}else if(1<(0|bIe-73)>>>0)var xIe=0,SIe=0;else var EIe=Wwe(Lve,Yve,Fve,Vve,mIe),SIe=1;if(SIe)var TIe=EIe,xIe=1}else var xIe=0;if(!xIe){var AIe=uIe(Lve),PIe=Mw(fIe,x_e),_Ie=Uwe(Lve,Yve,0),NIe=_Ie[2][1],kIe=AIe[1];if(0===PIe){var CIe=NIe[1];if(NIe[2])JO(Lve,[0,kIe,63]);else{var wIe=CIe?CIe[2]?0:1:0;wIe||JO(Lve,[0,kIe,63])}}else{var vIe=NIe[1]?0:NIe[2]?0:1;vIe||JO(Lve,[0,kIe,62])}var IIe=PIe?[1,_Ie]:[2,_Ie],jIe=[0,AIe[2],IIe,0,Fve,0,Vve],TIe=[0,[0,VD(Yve,_Ie[1]),jIe]]}var LIe=TIe,hIe=1}}else var hIe=0;if(!hIe){var DIe=XM(0,Lve);if("number"==typeof DIe){if(5===DIe)var RIe=1;else if(92===DIe)var RIe=1;else var OIe=0,RIe=0;if(RIe){zwe(Lve,Vve);var MIe=Xwe(Lve,Yve,Fve,mIe),OIe=1}}else var OIe=0;if(!OIe)var MIe=Wwe(Lve,Yve,Fve,Vve,mIe);var LIe=MIe}var cIe=LIe}qwe(Dve,Lve);var Mve=[0,cIe,Mve];continue}}),KP(Tve,function(vve,Ive){var jve=JM(0,Ive),Lve=92===XM(0,Ive)?1:0;if(Lve){1-WO(Ive)&&_Y(Ive,7),XY(Ive,92);for(var Dve=0,Rve=0;;){var Ove=_v(Qwe,Ive),Mve=Iv(Vwe[15],Ive,0,29),Yve=Mve[2],Fve=Mve[1],Vve=XM(0,Ive);if(0===vve)var Bve=f_e;else{if(!("number"==typeof Vve))var Uve=0;else if(78===Vve){MY(Ive);var Bve=[0,[0,_v(Zwe,Ive)],1],Uve=1}else var Uve=0;if(!Uve){Dve&&JO(Ive,[0,Fve,58]);var Bve=[0,0,Dve]}}var Xve=[0,[0,Fve,[0,Yve[1][2],Yve[2],Ove,Bve[1]]],Rve],Wve=XM(0,Ive);if("number"==typeof Wve){if(93===Wve)var qve=1;else if(YF===Wve)var qve=1;else var zve=0,qve=0;if(qve)var Jve=TI(Xve),zve=1}else var zve=0;if(!zve){if(XY(Ive,10),93!==XM(0,Ive)){var Dve=Bve[2],Rve=Xve;continue}var Jve=TI(Xve)}var Hve=VD(jve,JM(0,Ive));XY(Ive,93);var Gve=[0,[0,Hve,[0,Jve]]];break}}else var Gve=Lve;return Gve}),KP(Ave,function(vve){var Ive=JM(0,vve),jve=92===XM(0,vve)?1:0;if(jve){XY(vve,92);for(var Lve=0;;){var Dve=XM(0,vve);if("number"==typeof Dve){if(93===Dve)var Rve=1;else if(YF===Dve)var Rve=1;else var Ove=0,Rve=0;if(Rve){var Mve=TI(Lve),Yve=VD(Ive,JM(0,vve));XY(vve,93);var Fve=[0,[0,Yve,[0,Mve]]],Ove=1}}else var Ove=0;if(!Ove){var Vve=[0,_v(Zwe,vve),Lve];93!==XM(0,vve)&&XY(vve,10);var Lve=Vve;continue}break}}else var Fve=jve;return Fve}),KP(Pve,function(vve){return Nv(_ve,vve,Nv(Vwe[13],0,vve))}),KP(_ve,function(vve,Ive){for(var jve=[0,Ive[1],[0,Ive]];;){var Lve=jve[2],Dve=jve[1];if(11===XM(0,vve)){XY(vve,11);var Rve=Nv(Vwe[13],0,vve),Ove=VD(Dve,Rve[1]),jve=[0,Ove,[1,[0,Ove,[0,Lve,Rve]]]];continue}var Mve=_v(Ave,vve),Yve=Mve?VD(Dve,Mve[1][1]):Dve;return[0,Yve,[0,Lve,Mve]]}}),KP(Nve,function(vve,Ive){var jve=Nv(_ve,vve,Ive);return[0,jve[1],[4,jve[2]]]}),KP(kve,function(vve){var Ive=XM(0,vve);return"number"==typeof Ive&&80===Ive?[0,_v(Kwe,vve)]:0});var Cve=_v(Tve,1),wve=_v(Tve,0);return[0,function(vve){return Gwe(Zwe,vve)},function(Ive){return Gwe(wve,Ive)},function(Ive){return Gwe(Cve,Ive)},function(Ive){return Gwe(Ave,Ive)},function(vve){return Gwe(Pve,vve)},function(Ive,jve){return Gwe(Iv(Eve,Ive,0,0),jve)},function(Ive){return Gwe(hve,Ive)},function(Ive){return Gwe(Kwe,Ive)},function(Ive){return Gwe(kve,Ive)},function(Ive){return Gwe(Jwe,Ive)},function(Ive){return Gwe(Hwe,Ive)}]}($Ce),twe=_v(function(Vwe){return function(Bwe){function Uwe(nve,rve){for(var sve=rve;;){var ive=sve[2];switch(ive[0]){case 0:return NI(Xwe,nve,ive[1][1]);case 1:return NI(Wwe,nve,ive[1][1]);case 2:var sve=ive[1][1];continue;case 3:var ove=ive[1][1],lve=ove[2],pve=nve[2],dve=nve[1];Nv(ZCe[3],lve,pve)&&JO(dve,[0,ove[1],30]);var cve=qwe([0,dve,pve],ove),uve=Nv(ZCe[4],lve,cve[2]);return[0,cve[1],uve];default:return JO(nve[1],[0,sve[1],19]),nve;}}}function Xwe(nve,rve){if(0===rve[0]){var sve=rve[1][2],ive=sve[1],ove=1===ive[0]?qwe(nve,ive[1]):nve;return Uwe(ove,sve[2])}return Uwe(nve,rve[1][2][1])}function Wwe(nve,rve){if(rve){var sve=rve[1];return 0===sve[0]?Uwe(nve,sve[1]):Uwe(nve,sve[1][2][1])}return nve}function qwe(nve,rve){var sve=rve[2],ive=rve[1],ove=nve[1];UM(sve)&&OY(ove,[0,ive,29]);var lve=YM(sve),pve=lve||VM(sve);return pve&&OY(ove,[0,ive,40]),[0,ove,nve[2]]}function zwe(nve,rve,sve,ive,ove){var lve=rve||1-sve;if(lve){var pve=ove[2],dve=rve?QO(1-nve[6],nve):nve;if(ive){var cve=ive[1],uve=cve[2],mve=cve[1];UM(uve)&&OY(dve,[0,mve,31]);var fve=YM(uve),hve=fve||VM(uve);hve&&OY(dve,[0,mve,40])}var yve=NI(Uwe,[0,dve,ZCe[1]],ove[1]),gve=pve?(Uwe(yve,pve[1][2][1]),0):pve,bve=gve}else var bve=lve;return bve}function Jwe(nve){XY(nve,5);for(var rve=0;;){var sve=XM(0,nve);if("number"==typeof sve){var ive=0|sve-6,ove=7>>0?Qq==ive?1:0:5<(0|ive-1)>>>0?1:0;if(ove){var lve=13===sve?1:0;if(lve){var pve=JM(0,nve);XY(nve,13);var dve=Nv(Vwe[19],nve,29),cve=[0,[0,VD(pve,dve[1]),[0,dve]]]}else var cve=lve;6!==XM(0,nve)&&_Y(nve,48);var uve=[0,TI(rve),cve];return XY(nve,6),uve}}var mve=Nv(Vwe[19],nve,29);if(78===XM(0,nve)){XY(nve,78);var fve=_v(Vwe[9],nve),hve=[0,VD(mve[1],fve[1]),[2,[0,mve,fve]]]}else var hve=mve;6!==XM(0,nve)&&XY(nve,10);var rve=[0,hve,rve];continue}}function Hwe(nve,rve,sve){var ive=MM(nve,rve,sve),ove=_v(Vwe[17],ive),lve=ove[1];return[0,lve,[0,[0,lve,ove[2]]],ove[3]]}function Gwe(nve){return WY(nve,Jz)}function Zwe(nve){return WY(nve,63)}function Kwe(nve){var rve=0===nve[2]?1:0;if(rve)for(var sve=nve[1];;){if(sve){var ive=sve[2],ove=3===sve[1][2][0]?1:0;if(ove){var sve=ive;continue}return ove}return 1}return rve}function Qwe(nve){for(var rve=0,sve=0;;){var ive=Nv(Vwe[19],nve,28),ove=78===XM(0,nve)?(XY(nve,78),[0,[0,_v(Vwe[9],nve)],0]):3===ive[2][0]?Y_e:[0,0,[0,[0,ive[1],44],0]],lve=ove[1],pve=lve?lve[1][1]:ive[1],dve=ove[2],cve=[0,[0,VD(ive[1],pve),[0,ive,lve]],rve],uve=Zv(dve,sve);if(10===XM(0,nve)){XY(nve,10);var rve=cve,sve=uve;continue}var mve=$v(cve),fve=TI(cve),hve=$v(cve),yve=TI(uve);return[0,VD(hve[1],mve[1]),fve,yve]}}function $we(nve,rve,sve){var ive=JM(0,sve);XY(sve,nve);var ove=Qwe(sve),lve=ove[3],pve=[0,ove[2],rve];return[0,[0,VD(ive,ove[1]),pve],lve]}function eve(nve){return $we(24,0,nve)}function tve(nve){var rve=$we(27,2,$O(1,nve)),sve=rve[1],ive=sve[2],ove=ive[1],lve=rve[2],pve=TI(NI(function(dve,cve){return cve[2][2]?dve:[0,[0,cve[1],43],dve]},lve,ove));return[0,[0,sve[1],ive],pve]}function ave(nve){return $we(28,1,$O(1,nve))}return[0,Zwe,Gwe,function(rve,sve,nve){var ive=JM(0,rve),ove=XM(0,rve);if(!("number"==typeof ove))var pve=0;else if(97===ove){MY(rve);var lve=[0,[0,ive,0]],pve=1}else if(98===ove){MY(rve);var lve=[0,[0,ive,1]],pve=1}else var pve=0;if(!pve)var lve=0;if(lve){var dve=sve?0:nve?0:1;if(!dve)return JO(rve,[0,lve[1][1],5]),0}return lve},Jwe,Hwe,Kwe,zwe,function(nve,rve,sve){var ive=nve.slice();ive[10]=1;var ove=XM(0,ive);if("number"==typeof ove&&1===ove){var lve=Hwe(ive,rve,sve);return[0,lve[2],lve[3]]}var pve=MM(ive,rve,sve),dve=_v(Vwe[9],pve);return[0,[1,dve],pve[6]]},function(nve){var rve=JM(0,nve),sve=XM(0,nve);if("number"==typeof sve){var ive=0|sve+UX;if(4>>0)var ove=0;else{switch(ive){case 0:var lve=eve(nve),pve=1;break;case 3:var lve=tve(nve),pve=1;break;case 4:var lve=ave(nve),pve=1;break;default:var ove=0,pve=0;}if(pve)var dve=lve,ove=1}}else var ove=0;if(!ove){IY(nve);var dve=eve(nve)}var cve=dve[1],uve=dve[2],mve=[18,cve[2]];return[0,[0,VD(rve,cve[1]),mve],uve]},Qwe,ave,tve,eve,function(rve){var sve=JM(0,rve),ive=Zwe(rve);XY(rve,15);var ove=Gwe(rve),lve=rve[7],pve=XM(0,rve);if(0===lve)var dve=0;else if(!("number"==typeof pve))var dve=0;else if(5===pve)var cve=V_e,dve=1;else if(92===pve)var uve=_v(Bwe[2],rve),mve=5===XM(0,rve)?0:[0,Nv(Vwe[13],F_e,rve)],cve=[0,uve,mve],dve=1;else var dve=0;if(!dve)var nve=[0,Nv(Vwe[13],B_e,rve)],cve=[0,_v(Bwe[2],rve),nve];var fve=cve[2],hve=Jwe(rve),yve=_v(Bwe[11],rve),gve=Hwe(rve,ive,ove),bve=gve[2],xve=Kwe(hve);zwe(rve,gve[3],xve,fve,hve);var Sve=0===bve[0]?[0,bve[1][1],0]:[0,bve[1][1],1],Eve=[17,[0,fve,hve,bve,ive,ove,yve[2],Sve[2],yve[1],cve[1]]];return[0,VD(sve,Sve[1]),Eve]}]}}($Ce),ewe),awe=_v(_v(function(Vwe){return function(Bwe){return function(Uwe){function Xwe(Pve){var _ve=_v(tve,Pve),Nve=_v(eve,Pve);if(Nve){1-_v($we,_ve)&&JO(Pve,[0,_ve[1],15]);var kve=_ve[2],Cve="number"==typeof kve?0:17===kve[0]?UM(kve[1][2])?(OY(Pve,[0,_ve[1],37]),1):0:0,wve=Nv(Vwe[20],Pve,_ve),vve=_v(Zwe,Pve),Ive=VD(wve[1],vve[1]);return[0,Ive,[7,[0,Nve[1],wve,vve]]]}return _ve}function Wwe(){throw GCe}function qwe(Pve){var _ve=IM(Wwe,Pve),Nve=Xwe(_ve),kve=XM(0,_ve);if("number"==typeof kve){var Cve=12===kve?1:80===kve?1:0;if(Cve)throw GCe}if(SY(0,_ve)){var wve=Nve[2];if("number"!=typeof wve&&17===wve[0]&&!Uw(wve[1][2],zNe)&&!KM(_ve))throw GCe;return Nve}return Nve}function zwe(Pve,_ve,Nve,kve){return[0,kve,[9,[0,Nve,Pve,_ve]]]}function Jwe(Pve,_ve,Nve){for(var kve=_ve,Cve=Nve;;){var wve=XM(0,Pve);if("number"==typeof wve&&82===wve){XY(Pve,82);var vve=TF(nve,Pve),Ive=VD(Cve,vve[1]),kve=zwe(kve,vve[2],1,Ive),Cve=Ive;continue}return[0,Cve,kve]}}function Hwe(Pve,_ve,Nve,kve){return[0,kve,[6,[0,Nve,Pve,_ve]]]}function Gwe(Pve,_ve){if("number"==typeof _ve){var Nve=0|_ve-29,kve=16>>0?19==Nve?1:0:14<(0|Nve-1)>>>0?1:0;if(kve)return 0}throw GCe}var Zwe=[],Kwe=[],Qwe=[],$we=[],eve=[],tve=[],ave=[],nve=[],rve=[],sve=[],ive=[],ove=[],lve=[],pve=[],dve=[],cve=[],uve=[],mve=[],fve=[],hve=[],yve=[],gve=[],bve=[],xve=[],Sve=[],Eve=[],Tve=[],Ave=[];return KP(Zwe,function(Pve){var _ve=XM(0,Pve),Nve=SY(0,Pve);if("number"==typeof _ve){var kve=0|_ve-6;if(85>>0)var Cve=87<(0|kve+1)>>>0?0:1;else if(52==kve){if(Pve[16])return _v(Kwe,Pve);var Cve=0}else var Cve=0}else var Cve=0;if(!Cve&&0===Nve)return Xwe(Pve);var wve=SF(Pve,qwe);if(wve)return wve[1];var vve=SF(Pve,Eve);return vve?vve[1]:Xwe(Pve)}),KP(Kwe,function(Pve){var _ve=JM(0,Pve);XY(Pve,58),1-Pve[16]&&_Y(Pve,25);var Nve=WY(Pve,Jz),kve=9===XM(0,Pve)?1:0,Cve=kve||QM(Pve),wve=Nve||1-Cve,vve=wve?[0,_v(Zwe,Pve)]:wve;if(vve)var Ive=vve[1][1];else{var jve=$M(0,Pve),Lve=jve?jve[1]:_ve;UY(Pve);var Ive=Lve}return[0,VD(_ve,Ive),[14,[0,vve,Nve]]]}),KP(Qwe,function(Pve){var _ve=Pve[2];if("number"!=typeof _ve)switch(_ve[0]){case 13:case 17:case 24:return 1;}return 0}),KP($we,function(Pve){var _ve=Pve[2];if("number"!=typeof _ve)switch(_ve[0]){case 0:case 1:case 13:case 17:case 24:return 1;}return 0}),KP(eve,function(Pve){var _ve=XM(0,Pve);if("number"==typeof _ve){var Nve=0|_ve+LW;if(12>>0)var kve=0;else{switch(Nve){case 0:var Cve=LNe;break;case 1:var Cve=DNe;break;case 2:var Cve=RNe;break;case 3:var Cve=ONe;break;case 4:var Cve=MNe;break;case 5:var Cve=YNe;break;case 6:var Cve=FNe;break;case 7:var Cve=VNe;break;case 8:var Cve=BNe;break;case 9:var Cve=UNe;break;case 10:var Cve=XNe;break;case 11:var Cve=WNe;break;default:var Cve=qNe;}var wve=Cve,kve=1}}else var kve=0;if(!kve)var wve=0;return 0!==wve&&MY(Pve),wve}),KP(tve,function(Pve){var _ve=JM(0,Pve),Nve=_v(ave,Pve);if(79===XM(0,Pve)){XY(Pve,79);var kve=_v(Zwe,TM(0,Pve));XY(Pve,80);var Cve=TF(Zwe,Pve),wve=VD(_ve,Cve[1]);return[0,wve,[10,[0,Nve,kve,Cve[2]]]]}return Nve}),KP(ave,function(Pve){for(var _ve=TF(nve,Pve),Nve=Jwe(Pve,_ve[2],_ve[1]),kve=Nve[2],c=Nve[1];;){var Cve=XM(0,Pve);if("number"==typeof Cve&&81===Cve){XY(Pve,81);var wve=TF(nve,Pve),vve=Jwe(Pve,wve[2],wve[1]),Ive=VD(Ive,vve[1]),kve=zwe(kve,vve[2],0,Ive);continue}return kve}}),KP(nve,function(Pve){var _ve=0;a:for(;;){var Nve=JM(0,Pve),kve=0===_v(rve,Pve)?0:1,Cve=_v(sve,TM(0,Pve)),wve=RM(Pve),vve=wve?wve[1]:Cve[1],Ive=VD(Nve,vve);if(92===XM(0,Pve))var jve=Cve[2],Lve="number"==typeof jve?0:21===jve[0]?(_Y(Pve,47),1):0;var Dve=XM(0,Pve);if("number"==typeof Dve){var Rve=0|Dve-17;if(1>>0){if(66<=Rve)switch(0|Rve+LW){case 0:var Ove=cNe,Mve=1;break;case 1:var Ove=uNe,Mve=1;break;case 2:var Ove=mNe,Mve=1;break;case 3:var Ove=fNe,Mve=1;break;case 4:var Ove=hNe,Mve=1;break;case 5:var Ove=yNe,Mve=1;break;case 6:var Ove=gNe,Mve=1;break;case 7:var Ove=bNe,Mve=1;break;case 8:var Ove=xNe,Mve=1;break;case 9:var Ove=SNe,Mve=1;break;case 10:var Ove=ENe,Mve=1;break;case 11:var Ove=TNe,Mve=1;break;case 12:var Ove=ANe,Mve=1;break;case 13:var Ove=PNe,Mve=1;break;case 14:var Ove=_Ne,Mve=1;break;case 15:var Ove=NNe,Mve=1;break;case 16:var Ove=kNe,Mve=1;break;case 17:var Ove=CNe,Mve=1;break;case 18:var Ove=wNe,Mve=1;break;case 19:var Ove=vNe,Mve=1;break;default:var Yve=0,Mve=0;}else var Yve=0,Mve=0;}else if(0!=Rve)var Ove=INe,Mve=1;else if(Pve[11])var Ove=0,Mve=1;else var Ove=jNe,Mve=1;if(Mve)var Fve=Ove,Yve=1}else var Yve=0;if(!Yve)var Fve=0;if(0!==Fve&&MY(Pve),Fve){var Vve=Fve[1],Bve=Vve[1],Uve=kve?14===Bve?1:0:kve;Uve&&JO(Pve,[0,Ive,16]);for(var Xve=Cve,Wve=[0,Bve,Vve[2]],qve=Ive,zve=_ve;;){var Jve=Wve[2],Hve=Wve[1];if(zve){var Gve=zve[1],Zve=Gve[2],Kve=Zve[2],Qve=0===Kve[0]?Kve[1]:0|Kve[1]-1;if(Jve[1]<=Qve){var $ve=VD(Gve[3],qve),eIe=Hwe(Gve[1],Xve,Zve[1],$ve),Xve=eIe,Wve=[0,Hve,Jve],qve=$ve,zve=zve[2];continue}}var _ve=[0,[0,Xve,[0,Hve,Jve],qve],zve];continue a}}for(var tIe=Cve,E=Ive,aIe=_ve;;){if(aIe){var nIe=aIe[1],rIe=VD(nIe[3],rIe),sIe=aIe[2],tIe=Hwe(nIe[1],tIe,nIe[2][1],rIe),aIe=sIe;continue}return tIe}}}),KP(rve,function(Pve){var _ve=XM(0,Pve);if("number"==typeof _ve)if(48<=_ve){if(97<=_ve){if(!(YU<=_ve))switch(0|_ve+NU){case 0:return nNe;case 1:return rNe;case 6:return sNe;case 7:return iNe;}}else if(64===_ve&&Pve[17])return oNe;}else if(45<=_ve)switch(0|_ve-45){case 0:return lNe;case 1:return pNe;default:return dNe;}return 0}),KP(sve,function(Pve){var _ve=JM(0,Pve),Nve=_v(rve,Pve);if(Nve){var kve=Nve[1];MY(Pve);var Cve=_v(sve,Pve),wve=VD(_ve,Cve[1]);if(6===kve)var vve=Cve[2],Ive="number"==typeof vve?0:17===vve[0]?(OY(Pve,[0,wve,33]),1):0;else var Ive=0;return[0,wve,[5,[0,kve,1,Cve]]]}var jve=XM(0,Pve);if("number"!=typeof jve)var Dve=0;else if(YU===jve)var Lve=aNe,Dve=1;else if(YJ===jve)var Lve=tNe,Dve=1;else var Dve=0;if(!Dve)var Lve=0;if(Lve){MY(Pve);var Rve=_v(sve,Pve);1-_v(Qwe,Rve)&&JO(Pve,[0,Rve[1],15]);var Ove=Rve[2],Mve="number"==typeof Ove?0:17===Ove[0]?UM(Ove[1][2])?(RY(Pve,39),1):0:0,Yve=[8,[0,Lve[1],Rve,1]];return[0,VD(_ve,Rve[1]),Yve]}return _v(ive,Pve)}),KP(ive,function(Pve){var _ve=_v(ove,Pve);if(KM(Pve))return _ve;var Nve=XM(0,Pve);if("number"!=typeof Nve)var Cve=0;else if(YU===Nve)var kve=eNe,Cve=1;else if(YJ===Nve)var kve=$_e,Cve=1;else var Cve=0;if(!Cve)var kve=0;if(kve){1-_v(Qwe,_ve)&&JO(Pve,[0,_ve[1],15]);var wve=_ve[2],vve="number"==typeof wve?0:17===wve[0]?UM(wve[1][2])?(RY(Pve,38),1):0:0,Ive=JM(0,Pve);MY(Pve);var jve=[8,[0,kve[1],_ve,0]];return[0,VD(_ve[1],Ive),jve]}return _ve}),KP(ove,function(Pve){var _ve=JM(0,Pve),Nve=Pve.slice(),kve=1-Pve[15];Nve[15]=0;var Cve=XM(0,Nve);if("number"!=typeof Cve)var vve=0;else if(44!==Cve)var vve=0;else if(kve)var wve=_v(pve,Nve),vve=1;else var vve=0;if(!vve)var wve=TY(0,Nve)?_v(uve,Nve):_v(fve,Nve);var Ive=Iv(cve,Nve,_ve,wve),jve=XM(0,Nve);if("number"==typeof jve){if(5===jve)return Iv(lve,Nve,_ve,Ive);}else if(2===jve[0])return Iv(cve,Nve,_ve,Lv(gve,Nve,_ve,Ive,jve[1]));return Ive}),KP(lve,function(Pve,_ve,Nve){var kve=XM(0,Pve);if("number"==typeof kve)switch(kve){case 5:if(!Pve[12]){var Cve=_v(dve,Pve),wve=VD(_ve,Cve[1]);return Iv(lve,Pve,_ve,[0,wve,[12,[0,Nve,Cve[2]]]])}break;case 7:XY(Pve,7);var vve=_v(Vwe[7],Pve),Ive=VD(_ve,JM(0,Pve));return XY(Pve,8),Iv(lve,Pve,_ve,[0,Ive,[13,[0,Nve,[1,vve],1]]]);case 11:XY(Pve,11);var jve=_v(Ave,Pve)[1];return Iv(lve,Pve,_ve,[0,VD(_ve,jve[1]),[13,[0,Nve,[0,jve],0]]]);}else if(2===kve[0])return Lv(gve,Pve,_ve,Nve,kve[1]);return Nve}),KP(pve,function(Pve){var _ve=JM(0,Pve);if(XY(Pve,44),Pve[10]&&11===XM(0,Pve)){XY(Pve,11);var Nve=[0,_ve,K_e];if(Mw(WM(0,Pve),Q_e)){var kve=Nv(Vwe[13],0,Pve);return[0,VD(_ve,kve[1]),[24,[0,Nve,kve]]]}return IY(Pve),MY(Pve),[0,_ve,[17,Nve]]}var Cve=JM(0,Pve),wve=XM(0,Pve);if("number"!=typeof wve)var Ive=0;else if(44===wve)var vve=_v(pve,Pve),Ive=1;else var Ive=0;if(!Ive)var vve=TY(0,Pve)?_v(uve,Pve):_v(fve,Pve);var jve=Iv(cve,NM(1,Pve),Cve,vve),Lve=XM(0,Pve);if("number"==typeof Lve)var Dve=0;else if(2===Lve[0])var Rve=Lv(gve,Pve,Cve,jve,Lve[1]),Dve=1;else var Dve=0;if(!Dve)var Rve=jve;var Ove=XM(0,Pve);if("number"!=typeof Ove)var Yve=0;else if(5===Ove)var Mve=_v(dve,Pve),Yve=1;else var Yve=0;if(!Yve)var Mve=[0,Rve[1],0];var Fve=[11,[0,Rve,Mve[2]]];return[0,VD(_ve,Mve[1]),Fve]}),KP(dve,function(Pve){var _ve=JM(0,Pve);XY(Pve,5);for(var Nve=0;;){var kve=XM(0,Pve);if("number"==typeof kve){var Cve=6===kve?1:YF===kve?1:0;if(Cve){var wve=TI(Nve),vve=JM(0,Pve);return XY(Pve,6),[0,VD(_ve,vve),wve]}}var Ive=XM(0,Pve);if("number"!=typeof Ive)var Rve=0;else if(13===Ive){var jve=JM(0,Pve);XY(Pve,13);var Lve=_v(Zwe,Pve),Dve=[1,[0,VD(jve,Lve[1]),[0,Lve]]],Rve=1}else var Rve=0;if(!Rve)var Dve=[0,_v(Zwe,Pve)];6!==XM(0,Pve)&&XY(Pve,10);var Nve=[0,Dve,Nve];continue}}),KP(cve,function(Pve,_ve,Nve){var kve=XM(0,Pve);if("number"==typeof kve){if(7===kve){XY(Pve,7);var Cve=NM(0,Pve),wve=_v(Vwe[7],Cve),vve=JM(0,Pve);return XY(Pve,8),Iv(lve,Pve,_ve,[0,VD(_ve,vve),[13,[0,Nve,[1,wve],1]]])}if(11===kve){XY(Pve,11);var Ive=_v(Ave,Pve)[1];return Iv(lve,Pve,_ve,[0,VD(_ve,Ive[1]),[13,[0,Nve,[0,Ive],0]]])}}return Nve}),KP(uve,function(Pve){var _ve=JM(0,Pve),Nve=_v(Uwe[1],Pve);XY(Pve,15);var kve=_v(Uwe[2],Pve);if(5===XM(0,Pve))var Cve=G_e;else{var wve=XM(0,Pve);if("number"==typeof wve){var vve=92===wve?0:1;if(vve)var Ive=0;else var jve=vve,Ive=1}else var Ive=0;if(!Ive)var jve=[0,Nv(Vwe[13],Z_e,Pve)];var Cve=[0,jve,_v(Bwe[2],Pve)]}var Lve=Cve[1],Dve=_v(Uwe[4],Pve),Rve=_v(Bwe[11],Pve),Ove=Iv(Uwe[5],Pve,Nve,kve),Mve=Ove[2],Yve=_v(Uwe[6],Dve);Rv(Uwe[7],Pve,Ove[3],Yve,Lve,Dve);var Fve=0===Mve[0]?0:1,Vve=[2,[0,Lve,Dve,Mve,Nve,kve,Rve[2],Fve,Rve[1],Cve[2]]];return[0,VD(_ve,Ove[1]),Vve]}),KP(mve,function(Pve,_ve){var Nve=WM(0,Pve);if(0===_ve)var kve=0;else switch(0|_ve-1){case 0:RY(Pve,32);var Cve=Zk(Jv(H_e,Nve)),kve=1;break;case 2:var wve=1;try{var vve=UR(Nve)}catch(Ive){if(wve=0,Ive=Pv(Ive),!hCe)throw Ive;_Y(Pve,59);var Cve=IX,kve=1}if(wve)var Cve=vve,kve=1;break;default:var kve=0;}if(!kve)var Cve=Zk(Nve);return XY(Pve,[0,_ve]),Cve}),KP(fve,function(Pve){var _ve=JM(0,Pve),Nve=XM(0,Pve);if("number"==typeof Nve)switch(Nve){case 1:return _v(hve,Pve);case 5:return _v(bve,Pve);case 7:var kve=_v(xve,Pve);return[0,kve[1],[0,kve[2]]];case 21:return XY(Pve,21),[0,_ve,0];case 29:var Cve=WM(0,Pve);return XY(Pve,29),[0,_ve,[18,[0,0,Cve]]];case 40:return _v(Vwe[23],Pve);case 51:var wve=JM(0,Pve);return XY(Pve,51),[0,wve,1];case 92:var vve=_v(Vwe[18],Pve);return[0,vve[1],[21,vve[2]]];case 30:case 31:var Ive=WM(0,Pve);return XY(Pve,Nve),[0,_ve,[18,[0,[1,31===Nve?1:0],Ive]]];case 73:case 99:return _v(Sve,Pve);}else switch(Nve[0]){case 0:var jve=WM(0,Pve);return[0,_ve,[18,[0,[2,Nv(mve,Pve,Nve[1])],jve]]];case 1:var Lve=Nve[1],Dve=Lve[4],Rve=Lve[3],Ove=Lve[2],Mve=Lve[1];return Dve&&RY(Pve,32),XY(Pve,[1,[0,Mve,Ove,Rve,Dve]]),[0,Mve,[18,[0,[0,Ove],Rve]]];case 2:var Yve=Nv(yve,Pve,Nve[1]);return[0,Yve[1],[19,Yve[2]]];}if(SY(0,Pve)){var Fve=Nv(Vwe[13],0,Pve);return[0,Fve[1],[17,Fve]]}return IY(Pve),XB===Nve&&MY(Pve),[0,_ve,[18,[0,0,J_e]]]}),KP(hve,function(Pve){var _ve=_v(Vwe[11],Pve);return[0,_ve[1],[1,_ve[2]]]}),KP(yve,function(Pve,_ve){var Nve=_ve[3],kve=_ve[2],Cve=_ve[1];XY(Pve,[2,_ve]);var wve=[0,Cve,[0,[0,kve[2],kve[1]],Nve]];if(Nve)var vve=[0,Cve,[0,wve,0],0];else for(var Ive=[0,wve,0],jve=0;;){var Lve=_v(Vwe[7],Pve),Dve=[0,Lve,jve],Rve=XM(0,Pve);if("number"!=typeof Rve)var zve=0;else if(2===Rve){YY(Pve,4);var Ove=XM(0,Pve);if("number"==typeof Ove)var Mve=1;else if(2===Ove[0]){var Yve=Ove[1],Fve=Yve[3],Vve=Yve[2];MY(Pve);var Bve=Yve[1],Uve=[0,[0,Vve[2],Vve[1]],Fve];VY(Pve);var Xve=[0,[0,Bve,Uve],Ive];if(!Fve){var Ive=Xve,jve=Dve;continue}var Wve=TI(Dve),qve=[0,Bve,TI(Xve),Wve],zve=1,Mve=0}else var Mve=1;if(Mve)throw[0,YZ,q_e]}else var zve=0;if(!zve){IY(Pve);var Jve=[0,Lve[1],z_e],Hve=TI(Dve),Gve=TI([0,Jve,Ive]),qve=[0,Lve[1],Gve,Hve]}var vve=qve;break}var Zve=VD(Cve,vve[1]);return[0,Zve,[0,vve[2],vve[3]]]}),KP(gve,function(Pve,_ve,Nve,kve){var Cve=Nv(yve,Pve,kve);return[0,VD(_ve,Cve[1]),[20,[0,Nve,Cve]]]}),KP(bve,function(Pve){XY(Pve,5);var _ve=_v(Zwe,Pve),Nve=XM(0,Pve);if("number"!=typeof Nve)var Cve=0;else if(10===Nve)var kve=Nv(Tve,Pve,[0,_ve,0]),Cve=1;else if(80===Nve)var wve=_v(Bwe[8],Pve),kve=[0,VD(_ve[1],wve[1]),[23,[0,_ve,wve]]],Cve=1;else var Cve=0;if(!Cve)var kve=_ve;return XY(Pve,6),kve}),KP(xve,function(Pve){var _ve=JM(0,Pve);XY(Pve,7);for(var Nve=0;;){var kve=XM(0,Pve);if("number"==typeof kve){if(14<=kve)var Cve=YF===kve?1:0;else if(8<=kve)switch(0|kve-8){case 2:XY(Pve,10);var Nve=[0,0,Nve];continue;case 5:var wve=JM(0,Pve);XY(Pve,13);var vve=_v(Zwe,Pve),Ive=[1,[0,VD(wve,vve[1]),[0,vve]]];8!==XM(0,Pve)&&XY(Pve,10);var Nve=[0,[0,Ive],Nve];continue;case 0:var Cve=1;break;default:var Cve=0;}else var Cve=0;if(Cve){var jve=TI(Nve),Lve=JM(0,Pve);return XY(Pve,8),[0,VD(_ve,Lve),[0,jve]]}}var Dve=[0,_v(Zwe,Pve)];8!==XM(0,Pve)&&XY(Pve,10);var Nve=[0,[0,Dve],Nve];continue}}),KP(Sve,function(Pve){YY(Pve,5);var _ve=JM(0,Pve),Nve=XM(0,Pve);if("number"!=typeof Nve&&3===Nve[0]){var kve=Nve[1],Cve=WM(0,Pve);MY(Pve);var wve=kve[3],vve=kve[2];VY(Pve);var Ive=Lj(Xk(wve));ZI(function(Lve){var Dve=0|Lve-103;if(!(18>>0))switch(Dve){case 0:case 2:case 6:case 14:case 18:return Mj(Ive,Lve);}return 0},wve);var jve=Rj(Ive);return Uw(jve,wve)&&_Y(Pve,[3,wve]),[0,_ve,[18,[0,[3,[0,vve,jve]],Cve]]]}throw[0,YZ,W_e]}),KP(Eve,function(Pve){var _ve=IM(Gwe,Pve),Nve=JM(0,_ve),kve=12===XM(U_e,_ve)?0:1,Cve=kve?_v(Uwe[1],_ve):kve,wve=_v(Bwe[2],_ve);if(!SY(0,_ve))var Lve=0;else if(0===wve)var vve=Nv(Vwe[13],X_e,_ve),Ive=vve[1],jve=[0,[0,[0,[0,Ive,[3,[0,[0,Ive,vve[2]],0,0]]],0],0],0,0],Lve=1;else var Lve=0;if(!Lve)var Dve=_v(Uwe[4],_ve),Rve=PM(1,_ve),Ove=_v(Bwe[11],Rve),jve=[0,Dve,Ove[1],Ove[2]];var Mve=jve[1];if(Mve[2])var Yve=0;else if(Mve[1])var Fve=_ve,Yve=1;else var Yve=0;if(!Yve)var Fve=OM(_ve);var Vve=KM(Fve),Bve=Vve?12===XM(0,Fve)?1:0:Vve;Bve&&_Y(Fve,45),XY(Fve,12);var Uve=OM(Fve),Xve=Uwe[8],Wve=TF(function(Zve){return Iv(Xve,Zve,Cve,0)},Uve),qve=Wve[2],zve=qve[1],Jve=_v(Uwe[6],Mve);Rv(Uwe[7],Uve,qve[2],Jve,0,Mve);var Hve=0===zve[0]?0:1,Gve=VD(Nve,Wve[1]);return[0,Gve,[3,[0,0,Mve,zve,Cve,0,jve[3],Hve,jve[2],wve]]]}),KP(Tve,function(Pve,_ve){var Nve=XM(0,Pve);if("number"==typeof Nve&&10===Nve)return XY(Pve,10),Nv(Tve,Pve,[0,_v(Zwe,Pve),_ve]);var kve=$v(_ve),Cve=TI(_ve),wve=$v(Cve);return[0,VD(wve[1],kve[1]),[4,[0,Cve]]]}),KP(Ave,function(Pve){var _ve=XM(0,Pve),Nve=WM(0,Pve),kve=JM(0,Pve);if("number"==typeof _ve){var Cve=60<=_ve?64<=_ve?0:1:0===_ve?1:0;if(Cve)return[0,Nv(Vwe[13],0,Pve),0]}if("number"==typeof _ve){if(65<=_ve){if(WU===_ve)var wve=1;else if(_z<=_ve)var wve=1;else var vve=0,wve=0;}else if(60<=_ve){if(64<=_ve)var wve=1;else var vve=0,wve=0;}else if(15<=_ve)var wve=1;else var vve=0,wve=0;if(wve)var Ive=[0,[0,kve,NY([0,_ve,Nve])]],vve=1}else var vve=0;if(!vve){IY(Pve);var Ive=0}return MY(Pve),[0,[0,kve,Nve],Ive]}),[0,xve,Zwe,tve,Ave,$we,ove,mve,Tve]}}}($Ce),ewe),twe),nwe=_v(_v(_v(function(Vwe){return function(Bwe){return function(Uwe){return function(Xwe){function Wwe(eve){var tve=eve[23][3];if(tve)for(var ave=0;;){var nve=XM(0,eve);if("number"==typeof nve&&14===nve){MY(eve);var ave=[0,_v(Xwe[6],eve),ave];continue}return TI(ave)}return tve}function qwe(eve){var tve=XM(0,eve);if("number"!=typeof tve)switch(tve[0]){case 0:var ive=WM(0,eve),ove=JM(0,eve);return[0,ove,[0,[0,ove,[0,[2,Nv(Xwe[7],eve,tve[1])],ive]]]];case 1:var lve=tve[1],pve=lve[4],dve=lve[3],cve=lve[2],uve=lve[1];return pve&&RY(eve,32),XY(eve,[1,[0,uve,cve,dve,pve]]),[0,uve,[0,[0,uve,[0,[0,cve],dve]]]];}else if(7===tve){var ave=JM(0,eve);XY(eve,7);var nve=TM(0,eve),rve=_v(Vwe[9],nve),sve=JM(0,eve);return XY(eve,8),[0,VD(ave,sve),[2,rve]]}var mve=_v(Xwe[4],eve)[1];return[0,mve[1],[1,mve]]}function zwe(eve,tve){var ave=_v(Uwe[2],eve),nve=qwe(eve),rve=nve[1],sve=JM(0,eve),ive=_v(Uwe[4],eve),ove=0;if(0===tve){var lve=ive[1];if(ive[2])JO(eve,[0,rve,63]);else{var pve=lve?lve[2]?0:1:0;pve||JO(eve,[0,rve,63])}}else{var dve=ive[1]?0:ive[2]?0:1;dve||JO(eve,[0,rve,62])}var cve=_v(Bwe[9],eve),uve=Iv(Uwe[5],eve,ove,ave),mve=uve[2],fve=_v(Uwe[6],ive);Rv(Uwe[7],eve,uve[3],fve,0,ive);var hve=0===mve[0]?[0,mve[1][1],0]:[0,mve[1][1],1],yve=VD(sve,hve[1]);return[0,nve[2],[0,yve,[0,0,ive,mve,ove,ave,0,hve[2],cve,0]]]}function Jwe(eve,tve,ave,nve,rve){var sve=XM(0,eve);if("number"==typeof sve){if(92===sve)var ive=1;else if(11<=sve)var ove=0,ive=0;else switch(sve){case 5:var ive=1;break;case 2:case 10:switch(ave[0]){case 0:var lve=ave[1],pve=[0,lve[1],[18,lve[2]]];break;case 1:var dve=ave[1],pve=[0,dve[1],[17,dve]];break;default:var pve=ave[1];}var cve=[0,pve,1,0],ove=1,ive=0;break;default:var ove=0,ive=0;}if(ive){var uve=JM(0,eve),mve=_v(Bwe[2],eve),fve=_v(Uwe[4],eve),hve=_v(Bwe[9],eve),yve=Iv(Uwe[5],eve,nve,rve),gve=yve[2],bve=_v(Uwe[6],fve);Rv(Uwe[7],eve,yve[3],bve,0,fve);var xve=0===gve[0]?[0,gve[1][1],0]:[0,gve[1][1],1],Sve=VD(uve,xve[1]),cve=[0,[0,Sve,[2,[0,0,fve,gve,nve,rve,0,xve[2],hve,mve]]],0,1],ove=1}}else var ove=0;if(!ove){XY(eve,80);var cve=[0,_v(Vwe[9],eve),0,0]}var Eve=cve[1],Tve=[0,ave,[0,Eve],cve[3],cve[2]];return[0,VD(tve,Eve[1]),Tve]}function Hwe(eve,tve){return tve?JO(eve,[0,tve[1][1],5]):tve}function Gwe(eve,tve,ave,nve,rve,sve,ive,ove){for(;;){var lve=XM(0,eve);if("number"==typeof lve){var pve=0|lve-78;if(2>>0)var dve=LU==pve?0:1;else{if(1==pve){IY(eve),MY(eve);continue}var dve=0}if(!dve&&!rve&&!sve){var cve=_v(Bwe[9],eve),uve=eve[23],mve=78===XM(0,eve)?1:0;if(mve){var fve=ive?uve[2]:ive;if(fve)var hve=fve;else var yve=1-ive,hve=yve?uve[1]:yve;var gve=hve?(XY(eve,78),[0,_v(Vwe[7],eve)]):hve}else var gve=mve;var bve=JM(0,eve);if(!WY(eve,9)){var xve=7===XM(0,eve)?1:0,Sve=xve||(5===XM(0,eve)?1:0);Sve&&IY(eve)}return[1,[0,VD(tve,bve),[0,nve,gve,cve,ive,ove]]]}}Hwe(eve,ove);var Eve=JM(0,eve),Tve=_v(Bwe[2],eve),Ave=_v(Uwe[4],eve),Pve=_v(Bwe[9],eve),_ve=Iv(Uwe[5],eve,rve,sve),Nve=_ve[2],kve=_v(Uwe[6],Ave);Rv(Uwe[7],eve,_ve[3],kve,0,Ave);var Cve=0===Nve[0]?[0,Nve[1][1],0]:[0,Nve[1][1],1],wve=Cve[1],vve=VD(Eve,wve),Ive=[0,vve,[0,0,Ave,Nve,rve,sve,0,Cve[2],Pve,Tve]];if(0===ive){switch(nve[0]){case 0:var jve=nve[1][2][1];if("number"==typeof jve)var Lve=1;else if(0!==jve[0])var Lve=1;else if(Uw(jve[1],$Ne))var Dve=0,Rve=0,Lve=0;else var Rve=1,Lve=0;if(Lve)var Dve=0,Rve=0;break;case 1:if(Uw(nve[1][2],eke))var Dve=0,Rve=0;else var Rve=1;break;default:var Dve=0,Rve=0;}if(Rve)var Ove=0,Dve=1}else var Dve=0;if(!Dve)var Ove=1;return[0,[0,VD(tve,wve),[0,Ove,nve,Ive,ive,ave]]]}}var Zwe=[],Kwe=[],Qwe=[],$we=[];return KP(Zwe,function(eve){if(41===XM(0,eve)){XY(eve,41);var tve=eve.slice();tve[16]=0;var ave=_v(Xwe[6],tve),nve=[0,[0,ave],_v(Bwe[4],eve)]}else var nve=oke;var rve=52===XM(0,eve)?1:0;if(rve){1-WO(eve)&&_Y(eve,11),XY(eve,52);var sve=Nv(Kwe,eve,0)}else var sve=rve;var ive=_v(Qwe,eve);return[0,ive,nve[1],nve[2],sve]}),KP(Kwe,function(eve,tve){var ave=Nv(Vwe[13],0,eve),nve=_v(Bwe[4],eve),rve=nve?VD(ave[1],nve[1][1]):ave[1],sve=[0,[0,rve,[0,ave,nve]],tve],ive=XM(0,eve);return"number"==typeof ive&&10===ive?(XY(eve,10),Nv(Kwe,eve,sve)):TI(sve)}),KP(Qwe,function(eve){var tve=JM(0,eve);XY(eve,1);for(var ave=0;;){var nve=XM(0,eve);if("number"==typeof nve){var rve=0|nve-3;if(RF>>0){if(!(YJ<(0|rve+1)>>>0)){var sve=TI(ave),ive=JM(0,eve);return XY(eve,2),[0,VD(tve,ive),[0,sve]]}}else if(6==rve){XY(eve,9);continue}}var ave=[0,_v($we,eve),ave];continue}}),KP($we,function(eve){var tve=JM(0,eve),ave=Wwe(eve),nve=5===XM(tke,eve)?0:1;if(nve)var rve=92===XM(ake,eve)?0:1,sve=rve?WY(eve,42):rve;else var sve=nve;var ive=5===XM(nke,eve)?0:1;if(ive)var ove=80===XM(rke,eve)?0:1,lve=ove?_v(Uwe[1],eve):ove;else var lve=ive;var pve=_v(Uwe[2],eve),dve=Iv(Uwe[3],eve,lve,pve);if(0!==pve)var uve=0;else if(dve)var cve=_v(Uwe[2],eve),uve=1;else var uve=0;if(!uve)var cve=pve;var mve=qwe(eve);if(0===lve&&0===cve){var fve=mve[2];if(1===fve[0]){var hve=fve[1][2];if(!Uw(hve,ske)){var yve=XM(0,eve);if("number"==typeof yve){var gve=78<=yve?81<=yve?92===yve?1:0:79===yve?0:1:5===yve?1:9===yve?1:0;if(gve)return Gwe(eve,tve,ave,fve,lve,cve,sve,dve)}Hwe(eve,dve);var bve=zwe(eve,1),xve=bve[2],Sve=[0,2,bve[1],xve,sve,ave];return[0,[0,VD(tve,xve[1]),Sve]]}if(!Uw(hve,ike)){var Eve=XM(0,eve);if("number"==typeof Eve){var Tve=78<=Eve?81<=Eve?92===Eve?1:0:79===Eve?0:1:5===Eve?1:9===Eve?1:0;if(Tve)return Gwe(eve,tve,ave,fve,lve,cve,sve,dve)}Hwe(eve,dve);var Ave=zwe(eve,0),Pve=Ave[2],_ve=[0,3,Ave[1],Pve,sve,ave];return[0,[0,VD(tve,Pve[1]),_ve]]}}}return Gwe(eve,tve,ave,mve[2],lve,cve,sve,dve)}),[0,qwe,function(eve){var tve=JM(0,eve);XY(eve,1);for(var ave=0;;){var nve=XM(0,eve);if("number"==typeof nve){var rve=2===nve?1:YF===nve?1:0;if(rve){var sve=TI(ave),ive=JM(0,eve);return XY(eve,2),[0,VD(tve,ive),[0,sve]]}}var ove=JM(0,eve);if(13===XM(0,eve)){XY(eve,13);var lve=_v(Vwe[9],eve),pve=[1,[0,VD(ove,lve[1]),[0,lve]]]}else{var dve=JZ[1],cve=SY([0,dve],eve);if(cve)var uve=cve,mve=0;else{var fve=XM([0,dve],eve);if("number"==typeof fve)var hve=1;else if(1>>0){if(LU<=Rve)var Ove=0,Mve=0;else switch(0|Rve+80){case 2:case 5:case 10:var Mve=1;break;default:var Ove=0,Mve=0;}}else if(10<(0|Rve-1)>>>0)var Mve=1;else var Ove=0,Mve=0;if(Mve)var Yve=Jwe(eve,ove,Sve,0,0),Ove=1}else var Ove=0;if(!Ove)var Fve=zwe(eve,1),Vve=Fve[2],Bve=Vve[1],Uve=[0,Fve[1],[1,[0,Bve,Vve[2]]],0,0],Yve=[0,VD(ove,Bve),Uve];var Lve=Yve,Ave=1}else if(Uw(Eve,pke))var Tve=0,Ave=0;else{var Pve=XM(0,eve);if("number"==typeof Pve){var _ve=0|Pve+PX;if(12<_ve>>>0){if(LU<=_ve)var Nve=0,kve=0;else switch(0|_ve+80){case 2:case 5:case 10:var kve=1;break;default:var Nve=0,kve=0;}}else if(10<(0|_ve-1)>>>0)var kve=1;else var Nve=0,kve=0;if(kve)var Cve=Jwe(eve,ove,Sve,0,0),Nve=1}else var Nve=0;if(!Nve)var wve=zwe(eve,0),vve=wve[2],Ive=vve[1],jve=[0,wve[1],[2,[0,Ive,vve[2]]],0,0],Cve=[0,VD(ove,Ive),jve];var Lve=Cve,Ave=1}if(Ave)var Xve=Lve,Tve=1}else var Tve=0}else var Tve=0;if(!Tve)var Xve=Jwe(eve,ove,xve[2],gve,bve);var pve=[0,Xve]}2!==XM(0,eve)&&XY(eve,10);var ave=[0,pve,ave];continue}},function(tve,eve){var ave=QO(1,tve),nve=JM(0,ave),rve=Zv(eve,Wwe(ave));XY(ave,40);var sve=$O(1,ave),ive=ave[7],ove=SY(0,sve);if(0===ive)var lve=0;else{var pve=0===ove?0:1;if(pve)var lve=0;else var dve=pve,lve=1}if(!lve)var dve=[0,Nv(Vwe[13],0,sve)];var cve=_v(Bwe[3],ave),uve=_v(Zwe,ave),mve=uve[1],fve=VD(nve,mve[1]);return[0,fve,[19,[0,dve,mve,uve[2],cve,uve[3],uve[4],rve]]]},function(eve){var tve=JM(0,eve),ave=Wwe(eve);XY(eve,40);var nve=XM(0,eve);if("number"==typeof nve){var rve=0|nve-1;if(40>>0){if(91==rve)var sve=1;else var ive=0,sve=0;}else if(38<(0|rve-1)>>>0)var sve=1;else var ive=0,sve=0;if(sve)var ove=QNe,ive=1}else var ive=0;if(!ive)var lve=[0,Nv(Vwe[13],0,eve)],ove=[0,lve,_v(Bwe[3],eve)];var pve=_v(Zwe,eve),dve=pve[1],cve=VD(tve,dve[1]);return[0,cve,[22,[0,ove[1],dve,pve[2],ove[2],pve[3],pve[4],ave]]]},Wwe]}}}}($Ce),ewe),twe),awe),rwe=_v(_v(_v(function(Vwe){return function(Bwe){return function(Uwe){return function(Xwe){function Wwe(jve,Lve){for(var Dve=Lve;;){var Rve=Dve[2];switch(Rve[0]){case 0:var Ove=Rve[1][1];return NI(function(Yve,Fve){var Vve=0===Fve[0]?Fve[1][2][2]:Fve[1][2][1];return Wwe(Yve,Vve)},jve,Ove);case 1:var Mve=Rve[1][1];return NI(function(Yve,Fve){if(Fve){var Vve=Fve[1],Bve=0===Vve[0]?Vve[1]:Vve[1][2][1];return Wwe(Yve,Bve)}return Yve},jve,Mve);case 2:var Dve=Rve[1][1];continue;case 3:return[0,Rve[1][1],jve];default:return Vv(nCe);}}}function qwe(jve,Lve,Dve){if(Dve){var Rve=Dve[1];if(0===Rve[0]){var Ove=Rve[1],Mve=Ove[2][1];if(Mve&&!Mve[1][2][2]){var Yve=Mve[2];if(!Yve)return Yve}return JO(jve,[0,Ove[1],Lve])}var Fve=Rve[1],Vve=Fve[1],Bve=1-_v(Vwe[24],[0,Vve,Fve[2]]);return Bve?JO(jve,[0,Vve,Lve]):Bve}return _Y(jve,Lve)}function zwe(jve,Lve){for(var Dve=Lve;;){var Rve=[0,_v(Bwe[5],jve),Dve],Ove=XM(0,jve);if("number"==typeof Ove&&10===Ove){XY(jve,10);var Dve=Rve;continue}return TI(Rve)}}function Jwe(jve){JY(jve,Tke);var Lve=XM(0,jve);if("number"!=typeof Lve&&1===Lve[0]){var Dve=Lve[1],Rve=Dve[4],Ove=Dve[3],Mve=Dve[2],Yve=Dve[1];return Rve&&RY(jve,32),XY(jve,[1,[0,Yve,Mve,Ove,Rve]]),[0,Yve,[0,[0,Mve],Ove]]}var Fve=WM(0,jve),Vve=[0,JM(0,jve),[0,[0,Fve],Fve]];return IY(jve),Vve}function Hwe(jve,Lve){var Dve=JM(0,jve),Rve=XM(0,jve);if("number"==typeof Rve&&Jz===Rve){XY(jve,Jz),JY(jve,Eke);var Ove=Nv(Vwe[13],0,jve);return[0,[2,[0,VD(Dve,Ove[1]),Ove]],0]}XY(jve,1);for(var Mve=0,Yve=0;;){var Fve=Mve?Mve[1]:1,Vve=XM(0,jve);if("number"==typeof Vve){var Bve=2===Vve?1:YF===Vve?1:0;if(Bve){var Uve=TI(Yve);return XY(jve,2),Uve}}1-Fve&&JO(jve,[0,JM(0,jve),66]);var Xve=_v(Vwe[14],jve),Wve=Xve[2],qve=Xve[1],zve=qve[2],Jve=Mw(zve,dke)?cke:Mw(zve,uke)?mke:fke,Hve=Jve[2],Gve=Jve[1];if(Mw(WM(0,jve),hke)){var Zve=Nv(Vwe[13],0,jve);if(!Gve)var Kve=0;else if(SY(0,jve))var Kve=0;else{Lve&&JO(jve,[0,qve[1],65]);var Qve=[0,[0,Hve,0,Zve]],Kve=1}if(!Kve)var Qve=[0,[0,0,[0,Nv(Vwe[13],0,jve)],qve]];var $ve=Qve}else{if(!Gve)var rIe=0;else if(SY(0,jve)){Lve&&JO(jve,[0,qve[1],65]);var eIe=_v(Vwe[14],jve),tIe=eIe[2];tIe&&JO(jve,tIe[1]);var aIe=Mw(WM(0,jve),yke),nIe=aIe?(JY(jve,gke),[0,Nv(Vwe[13],0,jve)]):aIe,$ve=[0,[0,Hve,nIe,eIe[1]]],rIe=1}else var rIe=0;if(!rIe){Wve&&JO(jve,Wve[1]);var $ve=[0,[0,0,0,qve]]}}var Mve=[0,WY(jve,10)],Yve=[0,$ve,Yve];continue}}var Gwe=[],Zwe=[],Kwe=[],Qwe=[],$we=[],eve=[],tve=[],ave=[],nve=[],rve=[],sve=[],ive=[],ove=[],lve=[],pve=[],dve=[],cve=[],uve=[],mve=[],fve=[],hve=[],yve=[],gve=[],bve=[],xve=[],Sve=[],Eve=[],Tve=[],Ave=[],Pve=[],_ve=[],Nve=[],kve=[],Cve=[],wve=[],vve=[],Ive=[];return KP(Gwe,function(jve){var Lve=JM(0,jve);return XY(jve,9),[0,Lve,0]}),KP(Zwe,function(jve){var Lve=JM(0,jve);if(XY(jve,32),9===XM(0,jve))var Dve=0;else if(QM(jve))var Dve=0;else{var Rve=Nv(Vwe[13],0,jve),Ove=Rve[2];1-Nv(KCe[3],Ove,jve[3])&&_Y(jve,[4,Ove]);var Mve=[0,Rve],Dve=1}if(!Dve)var Mve=0;var Yve=$M(0,jve),Fve=Yve?Yve[1]:Mve?Mve[1][1]:Lve,Vve=VD(Lve,Fve),Bve=0===Mve?1:0;if(Bve)var Uve=jve[8],Xve=Uve||jve[9],Wve=1-Xve;else var Wve=Bve;return Wve&&JO(jve,[0,Vve,23]),UY(jve),[0,Vve,[4,[0,Mve]]]}),KP(Kwe,function(jve){var Lve=JM(0,jve);if(XY(jve,35),9===XM(0,jve))var Dve=0;else if(QM(jve))var Dve=0;else{var Rve=Nv(Vwe[13],0,jve),Ove=Rve[2];1-Nv(KCe[3],Ove,jve[3])&&_Y(jve,[4,Ove]);var Mve=[0,Rve],Dve=1}if(!Dve)var Mve=0;var Yve=$M(0,jve),Fve=Yve?Yve[1]:Mve?Mve[1][1]:Lve,Vve=VD(Lve,Fve);return 1-jve[8]&&JO(jve,[0,Vve,22]),UY(jve),[0,Vve,[5,[0,Mve]]]}),KP(Qwe,function(jve){var Lve=JM(0,jve);XY(jve,59);var Dve=$M(0,jve),Rve=Dve?Dve[1]:Lve;return UY(jve),[0,VD(Lve,Rve),1]}),KP($we,function(jve){var Lve=JM(0,jve);XY(jve,37);var Dve=SM(1,jve),Rve=_v(Vwe[2],Dve);XY(jve,25),XY(jve,5);var Ove=_v(Vwe[7],jve),Mve=JM(0,jve);XY(jve,6);var Yve=$M(0,jve),Fve=Yve?Yve[1]:Mve;return 9===XM(0,jve)&&UY(jve),[0,VD(Lve,Fve),[13,[0,Rve,Ove]]]}),KP(eve,function(jve){var Lve=JM(0,jve);XY(jve,39);var Dve=jve[17],Rve=Dve?WY(jve,64):Dve;XY(jve,5);var Ove=XM(0,jve);if("number"!=typeof Ove)var Mve=0;else if(24<=Ove){if(29<=Ove)var Mve=0;else switch(0|Ove+UX){case 0:var Yve=TM(1,jve),Fve=_v(Uwe[13],Yve),Vve=[0,[0,[0,Fve[1]]],Fve[2]],Mve=1;break;case 3:var Bve=TM(1,jve),Uve=_v(Uwe[12],Bve),Vve=[0,[0,[0,Uve[1]]],Uve[2]],Mve=1;break;case 4:var Xve=TM(1,jve),Wve=_v(Uwe[11],Xve),Vve=[0,[0,[0,Wve[1]]],Wve[2]],Mve=1;break;default:var Mve=0;}}else if(9===Ove)var Vve=eCe,Mve=1;else var Mve=0;if(!Mve)var qve=$O(1,TM(1,jve)),Vve=[0,[0,[1,_v(Vwe[7],qve)]],0];var zve=Vve[1],Jve=XM(0,jve);if(62!==Jve&&!Rve){if("number"==typeof Jve&&17===Jve){if(qwe(jve,17,zve),zve){var Hve=zve[1],Gve=0===Hve[0]?[0,Hve[1]]:[1,Hve[1]];XY(jve,17);var Zve=_v(Vwe[7],jve);XY(jve,6);var Kve=SM(1,jve),Qve=_v(Vwe[2],Kve);return[0,VD(Lve,Qve[1]),[15,[0,Gve,Zve,Qve,0]]]}throw[0,YZ,aCe]}var $ve=Vve[2];_I(function(hIe){return JO(jve,hIe)},$ve),XY(jve,9);var eIe=XM(0,jve);if("number"==typeof eIe){var tIe=9===eIe?0:1;if(tIe)var aIe=0;else var nIe=tIe,aIe=1}else var aIe=0;if(!aIe)var nIe=[0,_v(Vwe[7],jve)];XY(jve,9);var rIe=XM(0,jve);if("number"==typeof rIe){var sIe=6===rIe?0:1;if(sIe)var iIe=0;else var oIe=sIe,iIe=1}else var iIe=0;if(!iIe)var oIe=[0,_v(Vwe[7],jve)];XY(jve,6);var lIe=SM(1,jve),pIe=_v(Vwe[2],lIe);return[0,VD(Lve,pIe[1]),[14,[0,zve,nIe,oIe,pIe]]]}if(qwe(jve,18,zve),zve){var dIe=zve[1],cIe=0===dIe[0]?[0,dIe[1]]:[1,dIe[1]];XY(jve,62);var uIe=_v(Vwe[9],jve);XY(jve,6);var mIe=SM(1,jve),fIe=_v(Vwe[2],mIe);return[0,VD(Lve,fIe[1]),[16,[0,cIe,uIe,fIe,Rve]]]}throw[0,YZ,tCe]}),KP(tve,function(jve){var Lve=JM(0,jve);XY(jve,16),XY(jve,5);var Dve=_v(Vwe[7],jve);XY(jve,6),XM(0,jve);var Rve=TY(0,jve)?(RY(jve,46),_v(Uwe[14],jve)):_v(Vwe[2],jve),Ove=43===XM(0,jve)?1:0,Mve=Ove?(XY(jve,43),[0,_v(Vwe[2],jve)]):Ove,Yve=Mve?Mve[1][1]:Rve[1];return[0,VD(Lve,Yve),[2,[0,Dve,Rve,Mve]]]}),KP(ave,function(jve){1-jve[10]&&_Y(jve,24);var Lve=JM(0,jve);if(XY(jve,19),9===XM(0,jve))var Dve=0;else if(QM(jve))var Dve=0;else var Rve=[0,_v(Vwe[7],jve)],Dve=1;if(!Dve)var Rve=0;var Ove=$M(0,jve),Mve=Ove?Ove[1]:Rve?Rve[1][1]:Lve;return UY(jve),[0,VD(Lve,Mve),[9,[0,Rve]]]}),KP(nve,function(jve){var Lve=JM(0,jve);XY(jve,20),XY(jve,5);var Dve=_v(Vwe[7],jve);XY(jve,6),XY(jve,1);for(var Rve=$ke;;){var Ove=Rve[2],Mve=Rve[1],Yve=XM(0,jve);if("number"==typeof Yve){var Fve=2===Yve?1:YF===Yve?1:0;if(Fve){var Vve=TI(Ove),Bve=JM(0,jve);return XY(jve,2),[0,VD(Lve,Bve),[8,[0,Dve,Vve]]]}}var Uve=JM(0,jve),Xve=XM(0,jve);if("number"!=typeof Xve)var qve=0;else if(36===Xve){Mve&&_Y(jve,20),XY(jve,36);var Wve=0,qve=1}else var qve=0;if(!qve){XY(jve,33);var Wve=[0,_v(Vwe[7],jve)]}var zve=Mve||(0===Wve?1:0),Jve=JM(0,jve);XY(jve,80);var Hve=function($ve){if("number"==typeof $ve){var eIe=0|$ve-2,tIe=31>>0?34==eIe?1:0:29<(0|eIe-1)>>>0?1:0;if(tIe)return 1}return 0},Gve=jve.slice();Gve[9]=1;var Zve=Nv(Vwe[4],Hve,Gve),Kve=TI(Zve),Qve=Kve?Kve[1][1]:Jve,Rve=[0,zve,[0,[0,VD(Uve,Qve),[0,Wve,Zve]],Ove]];continue}}),KP(rve,function(jve){var Lve=JM(0,jve);XY(jve,22),KM(jve)&&JO(jve,[0,Lve,12]);var Dve=_v(Vwe[7],jve),Rve=$M(0,jve),Ove=Rve?Rve[1]:Dve[1];return UY(jve),[0,VD(Lve,Ove),[10,[0,Dve]]]}),KP(sve,function(jve){var Lve=JM(0,jve);XY(jve,23);var Dve=_v(Vwe[16],jve),Rve=XM(0,jve);if("number"!=typeof Rve)var Bve=0;else if(34===Rve){var Ove=JM(0,jve);XY(jve,34),XY(jve,5);var Mve=Nv(Vwe[13],Qke,jve),Yve=[0,Mve[1],[3,[0,Mve,0,0]]];XY(jve,6);var Fve=_v(Vwe[16],jve),Vve=[0,[0,VD(Ove,Fve[1]),[0,Yve,Fve]]],Bve=1}else var Bve=0;if(!Bve)var Vve=0;var Uve=XM(0,jve);if("number"!=typeof Uve)var Wve=0;else if(38===Uve){XY(jve,38);var Xve=[0,_v(Vwe[16],jve)],Wve=1}else var Wve=0;if(!Wve)var Xve=0;var qve=Xve?Xve[1][1]:Vve?Vve[1][1]:(JO(jve,[0,Dve[1],21]),Dve[1]);return[0,VD(Lve,qve),[11,[0,Dve,Vve,Xve]]]}),KP(ive,function(jve){var Lve=_v(Uwe[9],jve),Dve=Lve[1],Rve=Dve[1],Ove=$M(0,jve),Mve=Ove?Ove[1]:Rve;UY(jve);var Yve=Lve[2];_I(function(Vve){return JO(jve,Vve)},Yve);var Fve=Dve[2];return[0,VD(Rve,Mve),Fve]}),KP(ove,function(jve){var Lve=JM(0,jve);XY(jve,28);var Dve=$O(1,jve),Rve=_v(Uwe[10],Dve),Ove=[18,[0,Rve[2],1]],Mve=$M(0,jve),Yve=Mve?Mve[1]:Rve[1];UY(jve);var Fve=Rve[3];return _I(function(Vve){return JO(jve,Vve)},Fve),[0,VD(Lve,Yve),Ove]}),KP(lve,function(jve){var Lve=JM(0,jve);XY(jve,25),XY(jve,5);var Dve=_v(Vwe[7],jve);XY(jve,6);var Rve=SM(1,jve),Ove=_v(Vwe[2],Rve);return[0,VD(Lve,Ove[1]),[12,[0,Dve,Ove]]]}),KP(pve,function(jve){var Lve=JM(0,jve);XY(jve,26),XY(jve,5);var Dve=_v(Vwe[7],jve);XY(jve,6);var Rve=_v(Vwe[2],jve),Ove=VD(Lve,Rve[1]);return OY(jve,[0,Ove,26]),[0,Ove,[6,[0,Dve,Rve]]]}),KP(dve,function(jve){var Lve=_v(Vwe[16],jve);return[0,Lve[1],[0,Lve[2]]]}),KP(cve,function(jve){var Lve=_v(Vwe[7],jve),Dve=XM(0,jve),Rve=Lve[2],Ove=Lve[1];if("number"!=typeof Rve&&17===Rve[0]&&"number"==typeof Dve&&80===Dve){var Mve=Rve[1],Yve=Mve[2];XY(jve,80),Nv(KCe[3],Yve,jve[3])&&JO(jve,[0,Ove,[5,Kke,Yve]]);var Fve=jve.slice();Fve[3]=Nv(HCe[4],Yve,jve[3]);var Vve=_v(Vwe[2],Fve);return[0,VD(Ove,Vve[1]),[3,[0,Mve,Vve]]]}var Bve=$M(0,jve),Uve=Bve?Bve[1]:Lve[1];return UY(jve),[0,VD(Lve[1],Uve),[1,[0,Lve]]]}),KP(uve,function(jve){var Lve=TF(Vwe[7],jve),Dve=Lve[1],Rve=$M(0,jve),Ove=Rve?VD(Dve,Rve[1]):Dve;return UY(jve),[0,Ove,[1,[0,Lve[2]]]]}),KP(mve,function(jve){var Lve=JM(0,jve);1-WO(jve)&&_Y(jve,6),XY(jve,61),YY(jve,1);var Dve=Nv(Vwe[13],0,jve),Rve=_v(Bwe[3],jve);XY(jve,78);var Ove=_v(Bwe[1],jve),Mve=$M(0,jve),Yve=Mve?Mve[1]:Ove[1];return UY(jve),VY(jve),[0,VD(Lve,Yve),[0,Dve,Rve,Ove]]}),KP(fve,function(jve){if(SY(Zke,jve)){var Lve=_v(mve,jve);return[0,Lve[1],[7,Lve[2]]]}return _v(Vwe[2],jve)}),KP(hve,function(jve){var Lve=JM(0,jve);1-WO(jve)&&_Y(jve,11),XY(jve,53);var Dve=Nv(Vwe[13],0,jve),Rve=_v(Bwe[3],jve),Ove=41===XM(0,jve)?1:0;if(Ove){XY(jve,41);for(var Mve=0;;){var Yve=[0,_v(Bwe[5],jve),Mve],Fve=XM(0,jve);if("number"==typeof Fve&&10===Fve){XY(jve,10);var Mve=Yve;continue}var Vve=TI(Yve);break}}else var Vve=Ove;var Bve=Nv(Bwe[6],1,jve);return[0,VD(Lve,Bve[1]),[0,Dve,Rve,Bve,Vve,0]]}),KP(yve,function(jve){if(SY(Gke,jve)){var Lve=_v(hve,jve);return[0,Lve[1],[20,Lve[2]]]}return _v(uve,jve)}),KP(gve,function(jve,Lve){var Dve=QO(1,jve);XY(Dve,40);var Rve=Nv(Vwe[13],0,Dve),Ove=_v(Bwe[3],Dve),Mve=41===XM(0,Dve)?1:0,Yve=Mve?(XY(Dve,41),zwe(Dve,0)):Mve,Fve=Mw(WM(0,Dve),Jke),Vve=Fve?(JY(Dve,Hke),zwe(Dve,0)):Fve,Bve=Nv(Bwe[6],1,Dve);return[0,VD(Lve,Bve[1]),[0,Rve,Ove,Bve,Yve,Vve]]}),KP(bve,function(jve,Lve){var Dve=Nv(gve,jve,Lve);return[0,Dve[1],[23,Dve[2]]]}),KP(xve,function(jve,Lve){XY(jve,15);var Dve=Nv(Vwe[13],0,jve),Rve=JM(0,jve),Ove=_v(Bwe[2],jve),Mve=_v(Bwe[7],jve);XY(jve,80);var Yve=_v(Bwe[1],jve),Fve=Yve[1],Vve=_v(Bwe[10],jve),Bve=[0,VD(Rve,Fve),[1,[0,Mve,Yve,Ove]]],Uve=[0,Bve[1],Bve],Xve=Dve[2],Wve=[0,VD(Dve[1],Fve),Xve],qve=$M(0,jve),zve=qve?qve[1]:Fve;return UY(jve),[0,VD(Lve,zve),[0,Wve,Uve,Vve]]}),KP(Sve,function(jve,Lve){var Dve=Nv(xve,jve,Lve);return[0,Dve[1],[22,Dve[2]]]}),KP(Eve,function(jve,Lve){XY(jve,24);var Dve=Iv(Vwe[15],jve,zke,28),Rve=Dve[2],Ove=$M(0,jve),Mve=Ove?Ove[1]:Dve[1],Yve=VD(Lve,Mve);return UY(jve),[0,Yve,[0,Rve[1],Rve[2]]]}),KP(Tve,function(jve,Lve){var Dve=Nv(Eve,jve,Lve);return[0,Dve[1],[21,Dve[2]]]}),KP(Ave,function(jve,Lve){var Dve=XM(0,jve);if("number"==typeof Dve)var Rve=0;else if(1===Dve[0]){var Ove=Dve[1],Mve=Ove[4],Yve=Ove[3],Fve=Ove[2],Vve=Ove[1];Mve&&RY(jve,32),XY(jve,[1,[0,Vve,Fve,Yve,Mve]]);var Bve=[1,[0,Vve,[0,[0,Fve],Yve]]],Rve=1}else var Rve=0;if(!Rve)var Bve=[0,Nv(Vwe[13],0,jve)];var Uve=JM(0,jve);XY(jve,1);for(var Xve=0,Wve=0;;){var qve=XM(0,jve);if("number"==typeof qve){var zve=2===qve?1:YF===qve?1:0;if(zve){var Jve=TI(Wve);XY(jve,2);var Hve=[0,VD(Uve,JM(0,jve)),[0,Jve]],Gve=VD(Lve,Hve[1]),Zve=Xve?Xve[1]:[0,Gve];return[0,Gve,[24,[0,Bve,Hve,Zve]]]}}var Kve=Nv(_ve,qke,jve),Qve=Kve[2],$ve=Kve[1];if(Xve){if(0===Xve[1][0]){if("number"==typeof Qve)var eIe=0;else switch(Qve[0]){case 25:_Y(jve,60);var tIe=Xve,eIe=1;break;case 26:var aIe=Qve[1][2],nIe=aIe?3>>0)var Wve=0;else switch($ve){case 22:XY(Dve,36),ZO(Dve,[0,VD(Rve,JM(0,Dve)),Dke]);var eIe=XM(0,Dve);if("number"!=typeof eIe)var nIe=0;else if(15===eIe)var tIe=_v(Uwe[14],Dve),aIe=[0,tIe[1],[0,tIe]],nIe=1;else var nIe=0;if(!nIe)if(PY(0,Dve))var rIe=Nv(Xwe[3],Dve,Lve),aIe=[0,rIe[1],[0,rIe]];else{var sIe=_v(Vwe[9],Dve),iIe=$M(0,Dve),oIe=iIe?iIe[1]:sIe[1];UY(Dve);var aIe=[0,oIe,[1,sIe]]}var lIe=[28,[0,aIe[2],1]];return[0,VD(Rve,aIe[1]),lIe];case 0:case 1:case 10:case 13:case 14:case 26:var Wve=1;break;default:var Wve=0;}}if(Wve){var pIe=Nv(Vwe[3],[0,Lve],Dve),dIe=pIe[2],cIe=pIe[1];if("number"==typeof dIe)var uIe=0;else switch(dIe[0]){case 17:var mIe=dIe[1][1];if(mIe)var fIe=mIe[1],uIe=2;else{JO(Dve,[0,cIe,56]);var hIe=0,uIe=1}break;case 18:var yIe=dIe[1][1],hIe=NI(function(vIe,IIe){return NI(Wwe,vIe,[0,IIe[2][1],0])},0,yIe),uIe=1;break;case 19:var gIe=dIe[1][1];if(gIe)var fIe=gIe[1],uIe=2;else{JO(Dve,[0,cIe,55]);var hIe=0,uIe=1}break;default:var uIe=0;}switch(uIe){case 0:var hIe=Vv(Oke),bIe=0;break;case 1:var bIe=0;break;default:var xIe=[0,[0,cIe,_v(kve,fIe)],0],bIe=1;}if(!bIe)var xIe=hIe;return _I(function(vIe){return ZO(Dve,vIe)},xIe),[0,VD(Rve,pIe[1]),[27,[0,[0,pIe],0,0,1]]]}}var SIe=XM(0,Dve);if("number"!=typeof SIe)var TIe=0;else if(61===SIe){MY(Dve);var EIe=0,TIe=1}else var TIe=0;if(!TIe)var EIe=1;XY(Dve,1);var AIe=Iv(Cve,Dve,0,0),PIe=[0,[0,AIe[1]]],_Ie=JM(0,Dve);if(XY(Dve,2),Mw(WM(0,Dve),Rke))var NIe=[0,_v(Nve,Dve)];else{var kIe=AIe[2];_I(function(vIe){return JO(Dve,vIe)},kIe);var NIe=0}var CIe=$M(0,Dve),wIe=CIe?CIe[1]:NIe?NIe[1][1]:_Ie;return UY(Dve),[0,VD(Rve,wIe),[27,[0,0,PIe,NIe,EIe]]]}),KP(vve,function(jve,Lve){var Dve=jve?jve[1]:jve;1-WO(Lve)&&_Y(Lve,8);var Rve=JM(0,Lve);XY(Lve,60);var Ove=_M(1,QO(1,Lve));XY(Ove,49);var Mve=XM(0,Ove);if("number"==typeof Mve)if(54<=Mve){if(61===Mve){if(Dve){var Yve=_v(mve,Ove),Fve=Yve[1],Vve=VD(Rve,Fve);return[0,Vve,[26,[0,0,[0,[4,[0,Fve,Yve[2]]]],0,0]]]}}else if(Jz===Mve){var Bve=JM(0,Ove);XY(Ove,Jz);var Uve=Ove[23][4],Xve=Mw(WM(0,Ove),Ake),Wve=Xve?(JY(Ove,Pke),Uve?[0,Nv(Vwe[13],0,Ove)]:(_Y(Ove,8),0)):Xve,qve=_v(Nve,Ove),zve=$M(0,Ove),Jve=zve?zve[1]:qve[1];return UY(Ove),[0,VD(Rve,Jve),[26,[0,0,0,[0,[1,Bve,Wve]],[0,qve]]]]}}else if(41<=Mve){if(53<=Mve&&Dve){var Hve=_v(hve,Ove),Gve=Hve[1],Zve=VD(Rve,Gve);return[0,Zve,[26,[0,0,[0,[5,[0,Gve,Hve[2]]]],0,0]]]}}else if(15<=Mve)switch(0|Mve-15){case 21:XY(Ove,36);var Kve=XM(0,Ove);if("number"!=typeof Kve)var eIe=0;else if(15===Kve)var Qve=Nv(xve,Ove,Rve),$ve=[0,Qve[1],[0,[1,Qve]]],eIe=1;else if(40===Kve)var tIe=Nv(gve,Ove,Rve),$ve=[0,tIe[1],[0,[2,tIe]]],eIe=1;else var eIe=0;if(!eIe){var aIe=_v(Bwe[1],Ove),nIe=$M(0,Ove),rIe=nIe?nIe[1]:aIe[1];UY(Ove);var $ve=[0,rIe,[0,[3,aIe]]]}var sIe=[26,[0,1,$ve[2],0,0]];return[0,VD(Rve,$ve[1]),sIe];case 0:case 9:case 12:case 13:case 25:var iIe=XM(0,Ove);if("number"==typeof iIe){if(25<=iIe){if(!(29<=iIe))var pIe=27<=iIe?1:0;else if(40===iIe)var oIe=Nv(gve,Ove,Rve),lIe=[0,oIe[1],[0,[2,oIe]]],pIe=2;else var pIe=0;}else if(15===iIe)var dIe=Nv(xve,Ove,Rve),lIe=[0,dIe[1],[0,[1,dIe]]],pIe=2;else var pIe=24<=iIe?1:0;switch(pIe){case 0:var cIe=0;break;case 1:var uIe="number"==typeof iIe?27===iIe?(_Y(Ove,51),1):28===iIe?(_Y(Ove,50),1):0:0,mIe=Nv(Eve,Ove,Rve),lIe=[0,mIe[1],[0,[0,mIe]]],cIe=1;break;default:var cIe=1;}if(cIe){var fIe=[26,[0,0,lIe[2],0,0]];return[0,VD(Rve,lIe[1]),fIe]}}throw[0,YZ,Nke];}var hIe=XM(0,Ove),yIe="number"==typeof hIe?53===hIe?(_Y(Ove,53),1):61===hIe?(_Y(Ove,52),1):0:0;XY(Ove,1);var gIe=Iv(Cve,Ove,0,0),bIe=[0,[0,gIe[1]]],xIe=JM(0,Ove);if(XY(Ove,2),Mw(WM(0,Ove),_ke))var SIe=[0,_v(Nve,Ove)];else{var EIe=gIe[2];_I(function(PIe){return JO(Ove,PIe)},EIe);var SIe=0}var TIe=$M(0,Ove),AIe=TIe?TIe[1]:SIe?SIe[1][1]:xIe;return UY(Ove),[0,VD(Rve,AIe),[26,[0,0,0,bIe,SIe]]]}),KP(Ive,function(jve){var Lve=QO(1,jve),Dve=JM(0,Lve);XY(Lve,50);var Rve=XM(0,Lve);if("number"!=typeof Rve)var Mve=0;else if(46===Rve){1-WO(Lve)&&_Y(Lve,9),XY(Lve,46);var Ove=bke,Mve=1}else if(61===Rve){1-WO(Lve)&&_Y(Lve,9);var Ove=[0,0,[0,Nv(Vwe[13],0,Lve)]],Mve=1}else var Mve=0;if(!Mve)var Ove=xke;var Yve=Ove[2],Fve=Ove[1],Vve=2===Fve?0:1,Bve=XM(0,Lve),Uve=SY(0,Lve);if("number"==typeof Bve)var Xve=10===Bve?1:0;else if(1===Bve[0]){if(2===Fve){var Wve=Bve[1],qve=Wve[4],zve=Wve[3],Jve=Wve[2],Hve=Wve[1];qve&&RY(Lve,32),XY(Lve,[1,[0,Hve,Jve,zve,qve]]);var Gve=$M(0,Lve),Zve=Gve?Gve[1]:Hve;return UY(Lve),[0,VD(Dve,Zve),[29,[0,Fve,[0,Hve,[0,[0,Jve],zve]],0]]]}var Xve=0}else var Xve=0;if(!Xve&&0===Uve){var Kve=Hwe(Lve,Vve),Qve=Jwe(Lve),$ve=$M(0,Lve),eIe=$ve?$ve[1]:Qve[1];return UY(Lve),[0,VD(Dve,eIe),[29,[0,Fve,Qve,Kve]]]}var tIe=XM(0,Lve),aIe=WM(0,Lve);if(!Yve)var sIe=0;else if("number"==typeof tIe){var nIe=Yve[1];if(10===tIe)var rIe=1;else if(0!==tIe)var sIe=0,rIe=0;else if(Uw(aIe,Ske))var sIe=0,rIe=0;else var rIe=1;if(rIe)var iIe=[0,2,[1,nIe]],sIe=1}else var sIe=0;if(!sIe)var iIe=[0,Fve,[1,Nv(Vwe[13],0,Lve)]];var oIe=XM(0,Lve);if("number"!=typeof oIe)var pIe=0;else if(10===oIe){XY(Lve,10);var lIe=Hwe(Lve,Vve),pIe=1}else var pIe=0;if(!pIe)var lIe=0;var dIe=Jwe(Lve),cIe=$M(0,Lve),uIe=cIe?cIe[1]:dIe[1];UY(Lve);var mIe=[29,[0,iIe[1],dIe,[0,iIe[2],lIe]]];return[0,VD(Dve,uIe),mIe]}),[0,eve,tve,ove,sve,lve,pve,dve,Zwe,Kwe,Qwe,_ve,vve,$we,Gwe,wve,uve,Ive,yve,cve,ave,nve,rve,fve,ive]}}}}($Ce),ewe),twe),nwe),swe=_v(function(Vwe){return function(Bwe){function Uwe(Jwe,Hwe){var Gwe=Hwe[2][1],Zwe=[0,[0,PI(function(Kwe){if(0===Kwe[0]){var Qwe=Kwe[1],$we=Qwe[2],eve=$we[2],tve=$we[1];switch(tve[0]){case 0:var ave=[0,tve[1]];break;case 1:var ave=[1,tve[1]];break;default:var ave=[2,tve[1]];}if(0===eve[0])var nve=Nv(Vwe[20],Jwe,eve[1]);else{var rve=eve[1],sve=rve[1];JO(Jwe,[0,sve,2]);var nve=[0,sve,[4,[0,sve,[2,rve[2]]]]]}return[0,[0,Qwe[1],[0,ave,nve,$we[4]]]]}var ive=Kwe[1],ove=[0,Nv(Vwe[20],Jwe,ive[2][1])];return[1,[0,ive[1],ove]]},Gwe),0]];return[0,Hwe[1],Zwe]}function Xwe(Jwe,Hwe){var Gwe=Hwe[2][1],Zwe=[1,[0,PI(function(Kwe){if(Kwe){var Qwe=Kwe[1];if(0===Qwe[0]){var $we=Qwe[1];return[0,[0,Nv(Vwe[20],Jwe,[0,$we[1],$we[2]])]]}var eve=Qwe[1],tve=[0,Nv(Vwe[20],Jwe,eve[2][1])];return[0,[1,[0,eve[1],tve]]]}return Kwe},Gwe),0]];return[0,Hwe[1],Zwe]}function Wwe(Jwe){return function(Hwe){var Gwe=JM(0,Hwe);XY(Hwe,1);for(var Zwe=0;;){var Kwe=XM(0,Hwe);if("number"==typeof Kwe){var Qwe=2===Kwe?1:YF===Kwe?1:0;if(Qwe){var $we=TI(Zwe),eve=JM(0,Hwe);if(XY(Hwe,2),80===XM(0,Hwe))var tve=_v(Bwe[8],Hwe),ave=[0,tve[1],[0,tve]];else var ave=[0,eve,0];var nve=[0,[0,$we,ave[2]]];return[0,VD(Gwe,ave[1]),nve]}}var rve=JM(0,Hwe);if(WY(Hwe,13))var sve=zwe(Hwe,Jwe),ive=[0,[1,[0,VD(rve,sve[1]),[0,sve]]]];else{var ove=_v(Vwe[21],Hwe)[2];switch(ove[0]){case 0:var lve=[0,ove[1]];break;case 1:var lve=[1,ove[1]];break;default:var lve=[2,ove[1]];}var pve=XM(0,Hwe);if(!("number"==typeof pve))var cve=0;else if(80===pve){XY(Hwe,80);var dve=[0,[0,zwe(Hwe,Jwe),0]],cve=1}else var cve=0;if(!cve)if(1===lve[0])var uve=lve[1],dve=[0,[0,[0,uve[1],[3,[0,uve,0,0]]],1]];else{IY(Hwe);var dve=0}if(dve){var mve=dve[1],fve=mve[1],hve=XM(0,Hwe);if("number"!=typeof hve)var bve=0;else if(78===hve){XY(Hwe,78);var yve=_v(Vwe[9],Hwe),gve=[0,VD(fve[1],yve[1]),[2,[0,fve,yve]]],bve=1}else var bve=0;if(!bve)var gve=fve;var xve=VD(rve,gve[1]),Sve=[0,[0,[0,xve,[0,lve,gve,mve[2]]]]]}else var Sve=dve;var ive=Sve}if(ive){2!==XM(0,Hwe)&&XY(Hwe,10);var Zwe=[0,ive[1],Zwe];continue}continue}}}function qwe(Jwe){return function(Hwe){var Gwe=JM(0,Hwe);XY(Hwe,7);for(var Zwe=0;;){var Kwe=XM(0,Hwe);if("number"==typeof Kwe){if(14<=Kwe)var Qwe=YF===Kwe?1:0;else if(8<=Kwe)switch(0|Kwe-8){case 2:XY(Hwe,10);var Zwe=[0,0,Zwe];continue;case 5:var $we=JM(0,Hwe);XY(Hwe,13);var eve=zwe(Hwe,Jwe),Zwe=[0,[0,[1,[0,VD($we,eve[1]),[0,eve]]]],Zwe];continue;case 0:var Qwe=1;break;default:var Qwe=0;}else var Qwe=0;if(Qwe){var tve=TI(Zwe),ave=JM(0,Hwe);if(XY(Hwe,8),80===XM(0,Hwe))var nve=_v(Bwe[8],Hwe),rve=[0,nve[1],[0,nve]];else var rve=[0,ave,0];var sve=[1,[0,tve,rve[2]]];return[0,VD(Gwe,rve[1]),sve]}}var ive=zwe(Hwe,Jwe),ove=XM(0,Hwe);if(!("number"==typeof ove))var dve=0;else if(78===ove){XY(Hwe,78);var lve=_v(Vwe[7],Hwe),pve=[0,VD(ive[1],lve[1]),[2,[0,ive,lve]]],dve=1}else var dve=0;if(!dve)var pve=ive;8!==XM(0,Hwe)&&XY(Hwe,10);var Zwe=[0,[0,[0,pve]],Zwe];continue}}}function zwe(Jwe,Hwe){var Gwe=XM(0,Jwe);if("number"==typeof Gwe){if(1===Gwe)return _v(Wwe(Hwe),Jwe);if(7===Gwe)return _v(qwe(Hwe),Jwe)}var Zwe=Iv(Vwe[15],Jwe,0,Hwe);return[0,Zwe[1],[3,Zwe[2]]]}return[0,Uwe,Xwe,function(Jwe,Hwe){var Gwe=Hwe[2],Zwe=Hwe[1];if("number"!=typeof Gwe)switch(Gwe[0]){case 0:return Xwe(Jwe,[0,Zwe,Gwe[1]]);case 1:return Uwe(Jwe,[0,Zwe,Gwe[1]]);case 7:var Kwe=Gwe[1];if(0===Kwe[1])return[0,Zwe,[2,[0,Kwe[2],Kwe[3]]]];break;case 17:return[0,Zwe,[3,[0,Gwe[1],0,0]]];}return[0,Zwe,[4,[0,Zwe,Gwe]]]},Wwe,qwe,zwe]}}($Ce),ewe),iwe=[],owe=[],lwe=[],pwe=[],dwe=[],cwe=[],uwe=[],mwe=[],fwe=[],hwe=[],ywe=[],gwe=[],bwe=[],xwe=[],Swe=function(Vwe){function Bwe(Qwe){YY(Qwe,0);var $we=JM(0,Qwe);XY(Qwe,1),XY(Qwe,13);var eve=_v(Vwe[9],Qwe),tve=JM(0,Qwe);return XY(Qwe,2),VY(Qwe),[0,VD($we,tve),[0,eve]]}function Uwe(Qwe){YY(Qwe,0);var $we=JM(0,Qwe);if(XY(Qwe,1),2===XM(0,Qwe))var eve=JM(0,Qwe)[2],tve=[1,[0,$we[1],$we[3],eve]];else var tve=[0,_v(Vwe[7],Qwe)];var ave=JM(0,Qwe);return XY(Qwe,2),VY(Qwe),[0,VD($we,ave),[0,tve]]}function Xwe(Qwe){var $we=JM(0,Qwe),eve=WM(0,Qwe);return XY(Qwe,SW),[0,$we,[0,eve]]}function Wwe(Qwe){var $we=Xwe(Qwe),eve=XM(0,Qwe);if("number"==typeof eve){if(11===eve){XY(Qwe,11);for(var tve=Xwe(Qwe),ave=[0,VD($we[1],tve[1]),[0,[0,$we],tve]];;){var nve=XM(0,Qwe);if("number"==typeof nve&&11===nve){XY(Qwe,11);var rve=Xwe(Qwe),ave=[0,VD(ave[1],rve[1]),[0,[1,ave],rve]];continue}return[2,ave]}}if(80===eve){XY(Qwe,80);var sve=Xwe(Qwe);return[1,[0,VD($we[1],sve[1]),[0,$we,sve]]]}}return[0,$we]}function qwe(Qwe){var $we=JM(0,Qwe),eve=Xwe(Qwe);if(80===XM(0,Qwe)){XY(Qwe,80);var tve=Xwe(Qwe),ave=VD(eve[1],tve[1]),nve=[0,ave,[1,[0,ave,[0,eve,tve]]]]}else var nve=[0,eve[1],[0,eve]];if(78===XM(0,Qwe)){XY(Qwe,78);var rve=XM(0,Qwe);if("number"==typeof rve){if(1===rve){var sve=Uwe(Qwe),ive=sve[2],ove=sve[1];0!==ive[1][0]&&JO(Qwe,[0,ove,41]);var lve=[0,ove,[0,[1,ove,ive]]],pve=1}else var pve=0;}else if(4===rve[0]){var dve=rve[1],cve=dve[1];XY(Qwe,rve);var lve=[0,cve,[0,[0,cve,[0,[0,dve[2]],dve[3]]]]],pve=1}else var pve=0;if(!pve){_Y(Qwe,42);var uve=JM(0,Qwe),lve=[0,uve,[0,[0,uve,[0,KNe,ZNe]]]]}var mve=lve}else var mve=[0,nve[1],0];var fve=[0,nve[2],mve[2]];return[0,VD($we,mve[1]),fve]}function zwe(Qwe,$we){for(var eve=0,tve=Wwe(Qwe);;){var ave=XM(0,Qwe);if("number"==typeof ave){if(94<=ave)var nve=99===ave?1:YF===ave?1:0;else{if(1===ave){var eve=[0,[1,Bwe(Qwe)],eve];continue}var nve=93<=ave?1:0}if(nve){var rve=TI(eve),sve=99===XM(0,Qwe)?1:0;sve&&XY(Qwe,99);var ive=JM(0,Qwe);return XY(Qwe,93),VY(Qwe),[0,VD($we,ive),[0,tve,sve,rve]]}}var eve=[0,[0,qwe(Qwe)],eve];continue}}function Jwe(Qwe,$we){XY(Qwe,99);var eve=Wwe(Qwe),tve=JM(0,Qwe);XY(Qwe,93);var ave=Qwe[19][1];if(ave){var nve=ave[2];if(nve)var rve=nve[2],sve=1;else var sve=0}else var sve=0;if(!sve)var rve=Vv(JPe);Qwe[19][1]=rve;var ive=XO(Qwe),ove=VO(Qwe[20][1],ive);return Qwe[21][1]=ove,[0,VD($we,tve),[0,eve]]}function Hwe(Qwe){switch(Qwe[0]){case 0:return Qwe[1][2][1];case 1:var $we=Qwe[1][2],eve=Jv(JNe,$we[2][2][1]);return Jv($we[1][2][1],eve);default:var tve=Qwe[1][2],ave=tve[1],nve=0===ave[0]?ave[1][2][1]:Hwe([2,ave[1]]);return Jv(nve,Jv(HNe,tve[2][2][1]));}}var Gwe=[],Zwe=[],Kwe=[];return KP(Gwe,function(Qwe){var $we=XM(0,Qwe);if("number"==typeof $we){if(1===$we){var eve=Uwe(Qwe);return[0,eve[1],[1,eve[2]]]}}else if(4===$we[0]){var tve=$we[1];return XY(Qwe,$we),[0,tve[1],[2,[0,tve[2],tve[3]]]]}var ave=_v(Kwe,Qwe);return[0,ave[1],[0,ave[2]]]}),KP(Zwe,function(Qwe,$we){var eve=zwe(Qwe,$we);if(eve[2][2])var tve=GNe;else{YY(Qwe,3);for(var ave=0;;){var nve=XM(0,Qwe);if("number"==typeof nve){if(92===nve){YY(Qwe,2);var rve=JM(0,Qwe);XY(Qwe,92);var sve=XM(0,Qwe);if("number"==typeof sve){if(99===sve)var ive=1;else if(YF===sve)var ive=1;else var ove=0,ive=0;if(ive)var lve=[0,Jwe(Qwe,rve)],ove=1}else var ove=0;if(!ove)var lve=[1,Nv(Zwe,Qwe,rve)];if(0!==lve[0]){var pve=lve[1],ave=[0,[0,pve[1],[0,pve[2]]],ave];continue}var dve=[0,lve[1]],cve=[0,TI(ave),dve],uve=1}else if(YF===nve){IY(Qwe);var cve=[0,TI(ave),0],uve=1}else var mve=0,uve=0;if(uve)var tve=cve,mve=1}else var mve=0;if(!mve){var ave=[0,_v(Gwe,Qwe),ave];continue}break}}var fve=tve[2];if(fve){var hve=fve[1],yve=Hwe(eve[2][1]);Uw(Hwe(hve[2][1]),yve)&&_Y(Qwe,[6,yve]);var gve=hve[1]}else var gve=eve[1];var bve=[0,eve,fve,tve[1]];return[0,VD(eve[1],gve),bve]}),KP(Kwe,function(Qwe){var $we=JM(0,Qwe);return YY(Qwe,2),XY(Qwe,92),Nv(Zwe,Qwe,$we)}),[0,Bwe,Uwe,Xwe,Wwe,qwe,zwe,Jwe,Gwe,Zwe,Kwe]}($Ce),Ewe=nwe[3],Twe=awe[3],Awe=awe[2],Pwe=awe[6],_we=nwe[2],Nwe=nwe[1],kwe=nwe[4],Cwe=awe[1],wwe=awe[5],vwe=awe[4],Iwe=Swe[10],jwe=swe[6],Lwe=swe[3];KP(iwe,function(Fwe){var Vwe=Nv(pwe,Fwe,function(){return 0}),Bwe=JM(0,Fwe);if(XY(Fwe,YF),Vwe)var Uwe=$v(TI(Vwe))[1],Xwe=VD($v(Vwe)[1],Uwe);else var Xwe=Bwe;return[0,Xwe,Vwe,TI(Fwe[2][1])]}),KP(owe,function(Fwe,Vwe,Bwe){for(var Uwe=Fwe,Xwe=iCe;;){var Wwe=Xwe[2],qwe=Xwe[1],zwe=XM(0,Uwe);if("number"!=typeof zwe)var Hwe=0;else if(YF===zwe)var Jwe=[0,Uwe,qwe,Wwe],Hwe=1;else var Hwe=0;if(!Hwe)if(_v(Vwe,zwe))var Jwe=[0,Uwe,qwe,Wwe];else{var Gwe=XM(0,Uwe),Zwe=[0,JM(0,Uwe),Gwe],Kwe=_v(Bwe,Uwe),Qwe=[0,Kwe,Wwe],$we=Kwe[2];if("number"!=typeof $we&&1===$we[0]){var eve=$we[1][1],tve=eve[2];if("number"==typeof tve)var ave=0;else if(18===tve[0]){var nve=tve[1][1];if("number"!=typeof nve&&0===nve[0]){var rve=eve[1],sve=Uwe[6],ive=0|rve[3][2]-rve[2][2];if(sve)var ove=sve;else var lve=Mw(nve[1],sCe),ove=lve?12==ive?1:0:lve;var Uwe=QO(ove,Uwe),Xwe=[0,[0,Zwe,qwe],Qwe];continue}var ave=1}else var ave=0}var Jwe=[0,Uwe,qwe,Qwe]}var pve=TI(qwe);return _I(function(dve){var cve=dve[2];if("number"!=typeof cve&&1===cve[0]){var uve=cve[1][4];return uve?OY(Uwe,[0,dve[1],32]):uve}if("number"==typeof cve){var mve=cve;if(59<=mve)switch(mve){case 59:var fve=DAe;break;case 60:var fve=RAe;break;case 61:var fve=OAe;break;case 62:var fve=MAe;break;case 63:var fve=YAe;break;case 64:var fve=FAe;break;case 65:var fve=VAe;break;case 66:var fve=BAe;break;case 67:var fve=UAe;break;case 68:var fve=XAe;break;case 69:var fve=WAe;break;case 70:var fve=qAe;break;case 71:var fve=zAe;break;case 72:var fve=JAe;break;case 73:var fve=HAe;break;case 74:var fve=GAe;break;case 75:var fve=ZAe;break;case 76:var fve=KAe;break;case 77:var fve=QAe;break;case 78:var fve=$Ae;break;case 79:var fve=ePe;break;case 80:var fve=tPe;break;case 81:var fve=aPe;break;case 82:var fve=nPe;break;case 83:var fve=rPe;break;case 84:var fve=sPe;break;case 85:var fve=iPe;break;case 86:var fve=oPe;break;case 87:var fve=lPe;break;case 88:var fve=pPe;break;case 89:var fve=dPe;break;case 90:var fve=cPe;break;case 91:var fve=uPe;break;case 92:var fve=mPe;break;case 93:var fve=fPe;break;case 94:var fve=hPe;break;case 95:var fve=yPe;break;case 96:var fve=gPe;break;case 97:var fve=bPe;break;case 98:var fve=xPe;break;case 99:var fve=SPe;break;case 100:var fve=EPe;break;case 101:var fve=TPe;break;case 102:var fve=APe;break;case 103:var fve=PPe;break;case 104:var fve=_Pe;break;case 105:var fve=NPe;break;case 106:var fve=kPe;break;case 107:var fve=CPe;break;case 108:var fve=wPe;break;case 109:var fve=vPe;break;case 110:var fve=IPe;break;case 111:var fve=jPe;break;case 112:var fve=LPe;break;case 113:var fve=DPe;break;case 114:var fve=RPe;break;case 115:var fve=OPe;break;default:var fve=MPe;}else switch(mve){case 0:var fve=wTe;break;case 1:var fve=vTe;break;case 2:var fve=ITe;break;case 3:var fve=jTe;break;case 4:var fve=LTe;break;case 5:var fve=DTe;break;case 6:var fve=RTe;break;case 7:var fve=OTe;break;case 8:var fve=MTe;break;case 9:var fve=YTe;break;case 10:var fve=FTe;break;case 11:var fve=VTe;break;case 12:var fve=BTe;break;case 13:var fve=UTe;break;case 14:var fve=XTe;break;case 15:var fve=WTe;break;case 16:var fve=qTe;break;case 17:var fve=zTe;break;case 18:var fve=JTe;break;case 19:var fve=HTe;break;case 20:var fve=GTe;break;case 21:var fve=ZTe;break;case 22:var fve=KTe;break;case 23:var fve=QTe;break;case 24:var fve=$Te;break;case 25:var fve=eAe;break;case 26:var fve=tAe;break;case 27:var fve=aAe;break;case 28:var fve=nAe;break;case 29:var fve=rAe;break;case 30:var fve=sAe;break;case 31:var fve=iAe;break;case 32:var fve=oAe;break;case 33:var fve=lAe;break;case 34:var fve=pAe;break;case 35:var fve=dAe;break;case 36:var fve=cAe;break;case 37:var fve=uAe;break;case 38:var fve=mAe;break;case 39:var fve=fAe;break;case 40:var fve=hAe;break;case 41:var fve=yAe;break;case 42:var fve=gAe;break;case 43:var fve=bAe;break;case 44:var fve=xAe;break;case 45:var fve=SAe;break;case 46:var fve=EAe;break;case 47:var fve=TAe;break;case 48:var fve=AAe;break;case 49:var fve=PAe;break;case 50:var fve=_Ae;break;case 51:var fve=NAe;break;case 52:var fve=kAe;break;case 53:var fve=CAe;break;case 54:var fve=wAe;break;case 55:var fve=vAe;break;case 56:var fve=IAe;break;case 57:var fve=jAe;break;default:var fve=LAe;}}else switch(cve[0]){case 0:var fve=YPe;break;case 1:var fve=FPe;break;case 2:var fve=VPe;break;case 3:var fve=BPe;break;case 4:var fve=UPe;break;default:var fve=XPe;}return Vv(Jv(lCe,Jv(fve,oCe)))},pve),[0,Uwe,Jwe[3]]}}),KP(lwe,function(Fwe){var Vwe=_v(nwe[5],Fwe),Bwe=XM(0,Fwe);if("number"==typeof Bwe){var Uwe=0|Bwe-49;if(!(11>>0))switch(Uwe){case 0:return Nv(rwe[15],Fwe,Vwe);case 1:return _v(LY(Fwe),Vwe),_v(rwe[17],Fwe);case 11:if(49===XM(rCe,Fwe))return _v(LY(Fwe),Vwe),Nv(rwe[12],0,Fwe);}}return Nv(mwe,[0,Vwe],Fwe)}),KP(pwe,function(Fwe,Vwe){var Bwe=Iv(owe,Fwe,Vwe,lwe),Uwe=Nv(dwe,Vwe,Bwe[1]),Xwe=Bwe[2];return NI(function(Wwe,qwe){return[0,qwe,Wwe]},Uwe,Xwe)}),KP(dwe,function(Fwe,Vwe){for(var Bwe=0;;){var Uwe=XM(0,Vwe);if("number"==typeof Uwe&&YF===Uwe)return TI(Bwe);if(_v(Fwe,Uwe))return TI(Bwe);var Bwe=[0,_v(lwe,Vwe),Bwe];continue}}),KP(cwe,function(Fwe,Vwe){var Bwe=Iv(owe,Vwe,Fwe,function(zwe){return Nv(mwe,0,zwe)}),Uwe=Bwe[1],Xwe=Nv(uwe,Fwe,Uwe),Wwe=Bwe[2],qwe=NI(function(zwe,Jwe){return[0,Jwe,zwe]},Xwe,Wwe);return[0,qwe,Uwe[6]]}),KP(uwe,function(Fwe,Vwe){for(var Bwe=0;;){var Uwe=XM(0,Vwe);if("number"==typeof Uwe&&YF===Uwe)return TI(Bwe);if(_v(Fwe,Uwe))return TI(Bwe);var Bwe=[0,Nv(mwe,0,Vwe),Bwe];continue}}),KP(mwe,function(Fwe,Vwe){var Bwe=Fwe?Fwe[1]:Fwe;1-PY(0,Vwe)&&_v(LY(Vwe),Bwe);var Uwe=XM(0,Vwe);if("number"==typeof Uwe){if(27===Uwe)return _v(rwe[24],Vwe);if(28===Uwe)return _v(rwe[3],Vwe)}if(TY(0,Vwe))return _v(twe[14],Vwe);if(PY(0,Vwe))return Nv(Ewe,Vwe,Bwe);if("number"==typeof Uwe){var Xwe=0|Uwe+OB;if(!(8>>0))switch(Xwe){case 0:return _v(rwe[18],Vwe);case 7:return Nv(rwe[11],0,Vwe);case 8:return _v(rwe[23],Vwe);}}return _v(fwe,Vwe)}),KP(fwe,function(Fwe){var Vwe=XM(0,Fwe);if("number"==typeof Vwe){if(YF===Vwe)return IY(Fwe),[0,JM(0,Fwe),0];if(!(60<=Vwe))switch(Vwe){case 1:return _v(rwe[7],Fwe);case 9:return _v(rwe[14],Fwe);case 16:return _v(rwe[2],Fwe);case 19:return _v(rwe[20],Fwe);case 20:return _v(rwe[21],Fwe);case 22:return _v(rwe[22],Fwe);case 23:return _v(rwe[4],Fwe);case 24:return _v(rwe[24],Fwe);case 25:return _v(rwe[5],Fwe);case 26:return _v(rwe[6],Fwe);case 32:return _v(rwe[8],Fwe);case 35:return _v(rwe[9],Fwe);case 37:return _v(rwe[13],Fwe);case 39:return _v(rwe[1],Fwe);case 59:return _v(rwe[10],Fwe);}}if(SY(0,Fwe))return _v(rwe[19],Fwe);if("number"==typeof Vwe){if(33<=Vwe){if(51<=Vwe)var Bwe=80===Vwe?1:0;else if(40<=Vwe)switch(0|Vwe+PJ){case 3:return _v(rwe[2],Fwe);case 1:case 2:case 9:case 10:var Bwe=1;break;default:var Bwe=0;}else var Bwe=1;}else if(21<=Vwe)var Bwe=0;else switch(Vwe){case 0:case 1:case 3:case 4:case 5:case 7:case 14:case 15:case 16:var Bwe=0;break;default:var Bwe=1;}if(Bwe)return IY(Fwe),MY(Fwe),_v(fwe,Fwe)}return _v(rwe[16],Fwe)}),KP(hwe,function(Fwe){var Vwe=_v(awe[2],Fwe),Bwe=XM(0,Fwe);return"number"==typeof Bwe&&10===Bwe?Nv(awe[8],Fwe,[0,Vwe,0]):Vwe}),KP(ywe,function(Fwe,Vwe){var Bwe=JM(0,Vwe),Uwe=WM(0,Vwe),Xwe=XM(0,Vwe);if("number"!=typeof Xwe)var Wwe=0;else if(28===Xwe){Vwe[6]?RY(Vwe,40):Vwe[13]&&_Y(Vwe,[1,Uwe]),MY(Vwe);var Wwe=1}else var Wwe=0;if(!Wwe)if(VM(Uwe))RY(Vwe,40),MY(Vwe);else{var qwe="number"==typeof Xwe?4<(0|Xwe-60)>>>0?0:(XY(Vwe,Xwe),1):0;qwe||XY(Vwe,0)}return Fwe?UM(Uwe)?(OY(Vwe,[0,Bwe,Fwe[1]]),1):0:0,[0,Bwe,Uwe]}),KP(gwe,function(Fwe,Vwe,Bwe){var Uwe=Vwe?Vwe[1]:Vwe;return TF(function(Xwe){var Wwe=1-Uwe,qwe=Nv(ywe,[0,Bwe],Xwe),zwe=Wwe?79===XM(0,Xwe)?1:0:Wwe;zwe&&(1-WO(Xwe)&&_Y(Xwe,7),XY(Xwe,79));var Jwe=80===XM(0,Xwe)?1:0,Hwe=Jwe?[0,_v(ewe[8],Xwe)]:Jwe;return[0,qwe,Hwe,zwe]},Fwe)}),KP(bwe,function(Fwe){var Vwe=JM(0,Fwe);XY(Fwe,1);var Bwe=Nv(uwe,function(Xwe){return 2===Xwe?1:0},Fwe),Uwe=JM(0,Fwe);return XY(Fwe,2),[0,VD(Vwe,Uwe),[0,Bwe]]}),KP(xwe,function(Fwe){var Vwe=JM(0,Fwe);XY(Fwe,1);var Bwe=Nv(cwe,function(qwe){return 2===qwe?1:0},Fwe),Uwe=JM(0,Fwe);XY(Fwe,2);var Xwe=Bwe[2],Wwe=[0,Bwe[1]];return[0,VD(Vwe,Uwe),Wwe,Xwe]}),Iv(CCe,[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],$Ce,[0,iwe,fwe,mwe,uwe,cwe,dwe,hwe,Twe,Awe,Pwe,_we,Cwe,ywe,vwe,gwe,bwe,xwe,Iwe,jwe,Lwe,Nwe,Ewe,kwe,wwe]);var Dwe=[0,0],Rwe=function(Vwe){return Vwe.toString()},Owe=function(Vwe){var Bwe={};for(var Uwe=1;UwePC)return!1;if(NC+=_C[IC+1],NC>=PC)return!0}}function KP(PC){return 65>PC?36==PC:!!(91>PC)||(97>PC?95==PC:!!(123>PC)||(65535>=PC?170<=PC&&Y_.test(String.fromCharCode(PC)):ZP(PC,U_)))}function QP(PC){return 48>PC?36==PC:!!(58>PC)||!(65>PC)&&(!!(91>PC)||(97>PC?95==PC:!!(123>PC)||(65535>=PC?170<=PC&&V_.test(String.fromCharCode(PC)):ZP(PC,U_)||ZP(PC,X_))))}function $P(PC){var _C={};for(var NC in W_)_C[NC]=PC&&NC in PC?PC[NC]:W_[NC];return _C}function S_(PC){return 10===PC||13===PC||8232===PC||8233===PC}function T_(PC,_C){for(var NC=1,IC=0;;){YN.lastIndex=IC;var LC=YN.exec(PC);if(LC&&LC.index<_C)++NC,IC=LC.index+LC[0].length;else return new WN(NC,_C-IC)}}function P_(PC){return 65535>=PC?String.fromCharCode(PC):String.fromCharCode((PC-65536>>10)+55296,(1023&PC-65536)+56320)}function __(PC,_C,NC,IC){return PC.type=_C,PC.end=NC,PC.loc.end=IC,this.processComment(PC),PC}function N_(PC){return PC[PC.length-1]}function I_(PC){return"JSXIdentifier"===PC.type?PC.name:"JSXNamespacedName"===PC.type?PC.namespace.name+":"+PC.name.name:"JSXMemberExpression"===PC.type?I_(PC.object)+"."+I_(PC.property):void 0}Object.defineProperty(WP,"__esModule",{value:!0});var L_={6:JP("enum await"),strict:JP("implements interface let package private protected public static yield"),strictBind:JP("eval arguments")},R_=JP("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"),O_="\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC",M_="\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA900-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F",Y_=new RegExp("["+O_+"]"),V_=new RegExp("["+O_+M_+"]");O_=M_=null;var U_=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],X_=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],W_={sourceType:"script",sourceFilename:void 0,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,plugins:[],strictMode:null},J_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(PC){return typeof PC}:function(PC){return PC&&"function"==typeof Symbol&&PC.constructor===Symbol&&PC!==Symbol.prototype?"symbol":typeof PC},Z_=function(PC,_C){if(!(PC instanceof _C))throw new TypeError("Cannot call a class as a function")},K_=function(PC,_C){if("function"!=typeof _C&&null!==_C)throw new TypeError("Super expression must either be null or a function, not "+typeof _C);PC.prototype=Object.create(_C&&_C.prototype,{constructor:{value:PC,enumerable:!1,writable:!0,configurable:!0}}),_C&&(Object.setPrototypeOf?Object.setPrototypeOf(PC,_C):PC.__proto__=_C)},Q_=function(PC,_C){if(!PC)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return _C&&("object"==typeof _C||"function"==typeof _C)?_C:PC},$_=!0,SN=!0,TN=!0,PN=!0,_N=!0,NN=function PC(_C){var NC=1",{beforeExpr:$_}),template:new NN("template"),ellipsis:new NN("...",{beforeExpr:$_}),backQuote:new NN("`",{startsExpr:SN}),dollarBraceL:new NN("${",{beforeExpr:$_,startsExpr:SN}),at:new NN("@"),eq:new NN("=",{beforeExpr:$_,isAssign:PN}),assign:new NN("_=",{beforeExpr:$_,isAssign:PN}),incDec:new NN("++/--",{prefix:_N,postfix:!0,startsExpr:SN}),prefix:new NN("prefix",{beforeExpr:$_,prefix:_N,startsExpr:SN}),logicalOR:new LN("||",1),logicalAND:new LN("&&",2),bitwiseOR:new LN("|",3),bitwiseXOR:new LN("^",4),bitwiseAND:new LN("&",5),equality:new LN("==/!=",6),relational:new LN("",7),bitShift:new LN("<>",8),plusMin:new NN("+/-",{beforeExpr:$_,binop:9,prefix:_N,startsExpr:SN}),modulo:new LN("%",10),star:new LN("*",10),slash:new LN("/",10),exponent:new NN("**",{beforeExpr:$_,binop:11,rightAssociative:!0})},ON={"break":new IN("break"),"case":new IN("case",{beforeExpr:$_}),"catch":new IN("catch"),"continue":new IN("continue"),"debugger":new IN("debugger"),"default":new IN("default",{beforeExpr:$_}),"do":new IN("do",{isLoop:TN,beforeExpr:$_}),"else":new IN("else",{beforeExpr:$_}),"finally":new IN("finally"),"for":new IN("for",{isLoop:TN}),"function":new IN("function",{startsExpr:SN}),"if":new IN("if"),"return":new IN("return",{beforeExpr:$_}),"switch":new IN("switch"),"throw":new IN("throw",{beforeExpr:$_}),"try":new IN("try"),"var":new IN("var"),"let":new IN("let"),"const":new IN("const"),"while":new IN("while",{isLoop:TN}),"with":new IN("with"),"new":new IN("new",{beforeExpr:$_,startsExpr:SN}),"this":new IN("this",{startsExpr:SN}),"super":new IN("super",{startsExpr:SN}),"class":new IN("class"),"extends":new IN("extends",{beforeExpr:$_}),"export":new IN("export"),"import":new IN("import"),"yield":new IN("yield",{beforeExpr:$_,startsExpr:SN}),"null":new IN("null",{startsExpr:SN}),"true":new IN("true",{startsExpr:SN}),"false":new IN("false",{startsExpr:SN}),"in":new IN("in",{beforeExpr:$_,binop:7}),"instanceof":new IN("instanceof",{beforeExpr:$_,binop:7}),"typeof":new IN("typeof",{beforeExpr:$_,prefix:_N,startsExpr:SN}),"void":new IN("void",{beforeExpr:$_,prefix:_N,startsExpr:SN}),"delete":new IN("delete",{beforeExpr:$_,prefix:_N,startsExpr:SN})};Object.keys(ON).forEach(function(PC){RN["_"+PC]=ON[PC]});var MN=/\r\n?|\n|\u2028|\u2029/,YN=new RegExp(MN.source,"g"),VN=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,UN=function PC(_C,NC,IC,LC){Z_(this,PC),this.token=_C,this.isExpr=!!NC,this.preserveSpace=!!IC,this.override=LC},XN={braceStatement:new UN("{",!1),braceExpression:new UN("{",!0),templateQuasi:new UN("${",!0),parenStatement:new UN("(",!1),parenExpression:new UN("(",!0),template:new UN("`",!0,!0,function(PC){return PC.readTmplToken()}),functionExpression:new UN("function",!0)};RN.parenR.updateContext=RN.braceR.updateContext=function(){if(1===this.state.context.length)return void(this.state.exprAllowed=!0);var PC=this.state.context.pop();PC===XN.braceStatement&&this.curContext()===XN.functionExpression?(this.state.context.pop(),this.state.exprAllowed=!1):PC===XN.templateQuasi?this.state.exprAllowed=!0:this.state.exprAllowed=!PC.isExpr},RN.name.updateContext=function(PC){this.state.exprAllowed=!1,(PC===RN._let||PC===RN._const||PC===RN._var)&&MN.test(this.input.slice(this.state.end))&&(this.state.exprAllowed=!0)},RN.braceL.updateContext=function(PC){this.state.context.push(this.braceIsBlock(PC)?XN.braceStatement:XN.braceExpression),this.state.exprAllowed=!0},RN.dollarBraceL.updateContext=function(){this.state.context.push(XN.templateQuasi),this.state.exprAllowed=!0},RN.parenL.updateContext=function(PC){var _C=PC===RN._if||PC===RN._for||PC===RN._with||PC===RN._while;this.state.context.push(_C?XN.parenStatement:XN.parenExpression),this.state.exprAllowed=!0},RN.incDec.updateContext=function(){},RN._function.updateContext=function(){this.curContext()!==XN.braceStatement&&this.state.context.push(XN.functionExpression),this.state.exprAllowed=!1},RN.backQuote.updateContext=function(){this.curContext()===XN.template?this.state.context.pop():this.state.context.push(XN.template),this.state.exprAllowed=!1};var WN=function PC(_C,NC){Z_(this,PC),this.line=_C,this.column=NC},JN=function PC(_C,NC){Z_(this,PC),this.start=_C,this.end=NC},ZN=function(){function PC(){Z_(this,PC)}return PC.prototype.init=function(NC,IC){return this.strict=!1!==NC.strictMode&&"module"===NC.sourceType,this.input=IC,this.potentialArrowAt=-1,this.inMethod=this.inFunction=this.inGenerator=this.inAsync=this.inPropertyName=this.inType=this.noAnonFunctionType=!1,this.labels=[],this.decorators=[],this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.pos=this.lineStart=0,this.curLine=1,this.type=RN.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=[XN.braceStatement],this.exprAllowed=!0,this.containsEsc=this.containsOctal=!1,this.octalPosition=null,this.exportedIdentifiers=[],this},PC.prototype.curPosition=function(){return new WN(this.curLine,this.pos-this.lineStart)},PC.prototype.clone=function(NC){var IC=new PC;for(var LC in this){var RC=this[LC];(!NC||"context"==LC)&&Array.isArray(RC)&&(RC=RC.slice()),IC[LC]=RC}return IC},PC}(),KN=function PC(_C){Z_(this,PC),this.type=_C.type,this.value=_C.value,this.start=_C.start,this.end=_C.end,this.loc=new JN(_C.startLoc,_C.endLoc)},QN=function(){function PC(_C,NC){Z_(this,PC),this.state=new ZN,this.state.init(_C,NC)}return PC.prototype.next=function(){this.isLookahead||this.state.tokens.push(new KN(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()},PC.prototype.eat=function(NC){return!!this.match(NC)&&(this.next(),!0)},PC.prototype.match=function(NC){return this.state.type===NC},PC.prototype.isKeyword=function(NC){return R_(NC)},PC.prototype.lookahead=function(){var NC=this.state;this.state=NC.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var IC=this.state.clone(!0);return this.state=NC,IC},PC.prototype.setStrict=function(NC){if(this.state.strict=NC,this.match(RN.num)||this.match(RN.string)){for(this.state.pos=this.state.start;this.state.pos=this.input.length?this.finishToken(RN.eof):NC.override?NC.override(this):this.readToken(this.fullCharCodeAtPos())},PC.prototype.readToken=function(NC){return KP(NC)||92===NC?this.readWord():this.getTokenFromCode(NC)},PC.prototype.fullCharCodeAtPos=function(){var NC=this.input.charCodeAt(this.state.pos);if(55295>=NC||57344<=NC)return NC;var IC=this.input.charCodeAt(this.state.pos+1);return(NC<<10)+IC-56613888},PC.prototype.pushComment=function(NC,IC,LC,RC,OC,MC){var YC={type:NC?"CommentBlock":"CommentLine",value:IC,start:LC,end:RC,loc:new JN(OC,MC)};this.isLookahead||(this.state.tokens.push(YC),this.state.comments.push(YC),this.addComment(YC))},PC.prototype.skipBlockComment=function(){var NC=this.state.curPosition(),IC=this.state.pos,LC=this.input.indexOf("*/",this.state.pos+=2);-1===LC&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=LC+2,YN.lastIndex=IC;for(var RC;(RC=YN.exec(this.input))&&RC.indexNC||5760<=NC&&VN.test(String.fromCharCode(NC)))++this.state.pos;else break loop;}}},PC.prototype.finishToken=function(NC,IC){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var LC=this.state.type;this.state.type=NC,this.state.value=IC,this.updateContext(LC)},PC.prototype.readToken_dot=function(){var NC=this.input.charCodeAt(this.state.pos+1);if(48<=NC&&57>=NC)return this.readNumber(!0);var IC=this.input.charCodeAt(this.state.pos+2);return 46===NC&&46===IC?(this.state.pos+=3,this.finishToken(RN.ellipsis)):(++this.state.pos,this.finishToken(RN.dot))},PC.prototype.readToken_slash=function(){if(this.state.exprAllowed)return++this.state.pos,this.readRegexp();var NC=this.input.charCodeAt(this.state.pos+1);return 61===NC?this.finishOp(RN.assign,2):this.finishOp(RN.slash,1)},PC.prototype.readToken_mult_modulo=function(NC){var IC=42===NC?RN.star:RN.modulo,LC=1,RC=this.input.charCodeAt(this.state.pos+1);return 42===RC&&(LC++,RC=this.input.charCodeAt(this.state.pos+2),IC=RN.exponent),61===RC&&(LC++,IC=RN.assign),this.finishOp(IC,LC)},PC.prototype.readToken_pipe_amp=function(NC){var IC=this.input.charCodeAt(this.state.pos+1);return IC===NC?this.finishOp(124===NC?RN.logicalOR:RN.logicalAND,2):61===IC?this.finishOp(RN.assign,2):124===NC&&125===IC&&this.hasPlugin("flow")?this.finishOp(RN.braceBarR,2):this.finishOp(124===NC?RN.bitwiseOR:RN.bitwiseAND,1)},PC.prototype.readToken_caret=function(){var NC=this.input.charCodeAt(this.state.pos+1);return 61===NC?this.finishOp(RN.assign,2):this.finishOp(RN.bitwiseXOR,1)},PC.prototype.readToken_plus_min=function(NC){var IC=this.input.charCodeAt(this.state.pos+1);return IC===NC?45===IC&&62===this.input.charCodeAt(this.state.pos+2)&&MN.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(RN.incDec,2):61===IC?this.finishOp(RN.assign,2):this.finishOp(RN.plusMin,1)},PC.prototype.readToken_lt_gt=function(NC){var IC=this.input.charCodeAt(this.state.pos+1),LC=1;return IC===NC?(LC=62===NC&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+LC)?this.finishOp(RN.assign,LC+1):this.finishOp(RN.bitShift,LC)):33===IC&&60===NC&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===IC&&(LC=2),this.finishOp(RN.relational,LC))},PC.prototype.readToken_eq_excl=function(NC){var IC=this.input.charCodeAt(this.state.pos+1);return 61===IC?this.finishOp(RN.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===NC&&62===IC?(this.state.pos+=2,this.finishToken(RN.arrow)):this.finishOp(61===NC?RN.eq:RN.prefix,1)},PC.prototype.getTokenFromCode=function(NC){switch(NC){case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(RN.parenL);case 41:return++this.state.pos,this.finishToken(RN.parenR);case 59:return++this.state.pos,this.finishToken(RN.semi);case 44:return++this.state.pos,this.finishToken(RN.comma);case 91:return++this.state.pos,this.finishToken(RN.bracketL);case 93:return++this.state.pos,this.finishToken(RN.bracketR);case 123:return this.hasPlugin("flow")&&124===this.input.charCodeAt(this.state.pos+1)?this.finishOp(RN.braceBarL,2):(++this.state.pos,this.finishToken(RN.braceL));case 125:return++this.state.pos,this.finishToken(RN.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(RN.doubleColon,2):(++this.state.pos,this.finishToken(RN.colon));case 63:return++this.state.pos,this.finishToken(RN.question);case 64:return++this.state.pos,this.finishToken(RN.at);case 96:return++this.state.pos,this.finishToken(RN.backQuote);case 48:var IC=this.input.charCodeAt(this.state.pos+1);if(120===IC||88===IC)return this.readRadixNumber(16);if(111===IC||79===IC)return this.readRadixNumber(8);if(98===IC||66===IC)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(NC);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(NC);case 124:case 38:return this.readToken_pipe_amp(NC);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(NC);case 60:case 62:return this.readToken_lt_gt(NC);case 61:case 33:return this.readToken_eq_excl(NC);case 126:return this.finishOp(RN.prefix,1);}this.raise(this.state.pos,"Unexpected character '"+P_(NC)+"'")},PC.prototype.finishOp=function(NC,IC){var LC=this.input.slice(this.state.pos,this.state.pos+IC);return this.state.pos+=IC,this.finishToken(NC,LC)},PC.prototype.readRegexp=function(){for(var NC=this.state.pos,IC,LC;;){this.state.pos>=this.input.length&&this.raise(NC,"Unterminated regular expression");var RC=this.input.charAt(this.state.pos);if(MN.test(RC)&&this.raise(NC,"Unterminated regular expression"),IC)IC=!1;else{if("["===RC)LC=!0;else if("]"===RC&&LC)LC=!1;else if("/"===RC&&!LC)break;IC="\\"===RC}++this.state.pos}var OC=this.input.slice(NC,this.state.pos);++this.state.pos;var MC=this.readWord1();if(MC){var YC=/^[gmsiyu]*$/;YC.test(MC)||this.raise(NC,"Invalid regular expression flag")}return this.finishToken(RN.regexp,{pattern:OC,flags:MC})},PC.prototype.readInt=function(NC,IC){var LC=this.state.pos,RC=0;for(var OC=0,MC=null==IC?Infinity:IC;OC=YC?YC-48:Infinity,VC>=NC)break;++this.state.pos,RC=RC*NC+VC}return this.state.pos===LC||null!=IC&&this.state.pos-LC!==IC?null:RC},PC.prototype.readRadixNumber=function(NC){this.state.pos+=2;var IC=this.readInt(NC);return null==IC&&this.raise(this.state.start+2,"Expected number in radix "+NC),KP(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(RN.num,IC)},PC.prototype.readNumber=function(NC){var IC=this.state.pos,LC=48===this.input.charCodeAt(this.state.pos),RC=!1;NC||null!==this.readInt(10)||this.raise(IC,"Invalid number");var OC=this.input.charCodeAt(this.state.pos);46===OC&&(++this.state.pos,this.readInt(10),RC=!0,OC=this.input.charCodeAt(this.state.pos)),(69===OC||101===OC)&&(OC=this.input.charCodeAt(++this.state.pos),(43===OC||45===OC)&&++this.state.pos,null===this.readInt(10)&&this.raise(IC,"Invalid number"),RC=!0),KP(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var MC=this.input.slice(IC,this.state.pos),YC;return RC?YC=parseFloat(MC):LC&&1!==MC.length?/[89]/.test(MC)||this.state.strict?this.raise(IC,"Invalid number"):YC=parseInt(MC,8):YC=parseInt(MC,10),this.finishToken(RN.num,YC)},PC.prototype.readCodePoint=function(){var NC=this.input.charCodeAt(this.state.pos),IC;if(123===NC){var LC=++this.state.pos;IC=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos),++this.state.pos,1114111=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var RC=this.input.charCodeAt(this.state.pos);if(RC===NC)break;92===RC?(IC+=this.input.slice(LC,this.state.pos),IC+=this.readEscapedChar(!1),LC=this.state.pos):(S_(RC)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos)}return IC+=this.input.slice(LC,this.state.pos++),this.finishToken(RN.string,IC)},PC.prototype.readTmplToken=function(){for(var NC="",IC=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var LC=this.input.charCodeAt(this.state.pos);if(96===LC||36===LC&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(RN.template)?36===LC?(this.state.pos+=2,this.finishToken(RN.dollarBraceL)):(++this.state.pos,this.finishToken(RN.backQuote)):(NC+=this.input.slice(IC,this.state.pos),this.finishToken(RN.template,NC));if(92===LC)NC+=this.input.slice(IC,this.state.pos),NC+=this.readEscapedChar(!0),IC=this.state.pos;else if(S_(LC)){switch(NC+=this.input.slice(IC,this.state.pos),++this.state.pos,LC){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:NC+="\n";break;default:NC+=String.fromCharCode(LC);}++this.state.curLine,this.state.lineStart=this.state.pos,IC=this.state.pos}else++this.state.pos}},PC.prototype.readEscapedChar=function(NC){var IC=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,IC){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return P_(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\x0B";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(48<=IC&&55>=IC){var LC=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],RC=parseInt(LC,8);return 255=RC?1:2;else if(92===RC){this.state.containsEsc=!0,NC+=this.input.slice(LC,this.state.pos);var OC=this.state.pos;117!==this.input.charCodeAt(++this.state.pos)&&this.raise(this.state.pos,"Expecting Unicode escape sequence \\uXXXX"),++this.state.pos;var MC=this.readCodePoint();(IC?KP:QP)(MC,!0)||this.raise(OC,"Invalid Unicode escape"),NC+=P_(MC),LC=this.state.pos}else break;IC=!1}return NC+this.input.slice(LC,this.state.pos)},PC.prototype.readWord=function(){var NC=this.readWord1(),IC=RN.name;return!this.state.containsEsc&&this.isKeyword(NC)&&(IC=ON[NC]),this.finishToken(IC,NC)},PC.prototype.braceIsBlock=function(NC){if(NC===RN.colon){var IC=this.curContext();if(IC===XN.braceStatement||IC===XN.braceExpression)return!IC.isExpr}return NC===RN._return?MN.test(this.input.slice(this.state.lastTokEnd,this.state.start)):NC===RN._else||NC===RN.semi||NC===RN.eof||NC===RN.parenR||(NC===RN.braceL?this.curContext()===XN.braceStatement:!this.state.exprAllowed)},PC.prototype.updateContext=function(NC){var IC=this.state.type,LC;IC.keyword&&NC===RN.dot?this.state.exprAllowed=!1:(LC=IC.updateContext)?LC.call(this,NC):this.state.exprAllowed=IC.beforeExpr},PC}(),$N={},Sk=["jsx","doExpressions","objectRestSpread","decorators","classProperties","exportExtensions","asyncGenerators","functionBind","functionSent","dynamicImport","flow"],Tk=function(PC){function _C(NC,IC){Z_(this,_C),NC=$P(NC);var LC=Q_(this,PC.call(this,NC,IC));return LC.options=NC,LC.inModule="module"===LC.options.sourceType,LC.input=IC,LC.plugins=LC.loadPlugins(LC.options.plugins),LC.filename=NC.sourceFilename,0===LC.state.pos&&"#"===LC.input[0]&&"!"===LC.input[1]&&LC.skipLineComment(2),LC}return K_(_C,PC),_C.prototype.isReservedWord=function(IC){return"await"===IC?this.inModule:L_[6](IC)},_C.prototype.hasPlugin=function(IC){return this.plugins["*"]&&-1=RC.length)break;YC=RC[MC++]}else{if(MC=RC.next(),MC.done)break;YC=MC.value}var VC=YC;if(!LC[VC]){LC[VC]=!0;var UC=$N[VC];UC&&UC(this)}}return LC},_C.prototype.parse=function(){var IC=this.startNode(),LC=this.startNode();return this.nextToken(),this.parseTopLevel(IC,LC)},_C}(QN),Pk=Tk.prototype;Pk.addExtra=function(PC,_C,NC){if(PC){var IC=PC.extra=PC.extra||{};IC[_C]=NC}},Pk.isRelational=function(PC){return this.match(RN.relational)&&this.state.value===PC},Pk.expectRelational=function(PC){this.isRelational(PC)?this.next():this.unexpected(null,RN.relational)},Pk.isContextual=function(PC){return this.match(RN.name)&&this.state.value===PC},Pk.eatContextual=function(PC){return this.state.value===PC&&this.eat(RN.name)},Pk.expectContextual=function(PC,_C){this.eatContextual(PC)||this.unexpected(null,_C)},Pk.canInsertSemicolon=function(){return this.match(RN.eof)||this.match(RN.braceR)||MN.test(this.input.slice(this.state.lastTokEnd,this.state.start))},Pk.isLineTerminator=function(){return this.eat(RN.semi)||this.canInsertSemicolon()},Pk.semicolon=function(){this.isLineTerminator()||this.unexpected(null,RN.semi)},Pk.expect=function(PC,_C){return this.eat(PC)||this.unexpected(_C,PC)},Pk.unexpected=function(PC){var _C=1=IC.length)break;OC=IC[RC++]}else{if(RC=IC.next(),RC.done)break;OC=RC.value}var MC=OC;MC.name===_C&&this.raise(NC.start,"Label '"+_C+"' is already declared")}var YC=this.state.type.isLoop?"loop":this.match(RN._switch)?"switch":null;for(var VC=this.state.labels.length-1;0<=VC;VC--){var UC=this.state.labels[VC];if(UC.statementStart===PC.start)UC.statementStart=this.state.start,UC.kind=YC;else break}return this.state.labels.push({name:_C,kind:YC,statementStart:this.state.start}),PC.body=this.parseStatement(!0),this.state.labels.pop(),PC.label=NC,this.finishNode(PC,"LabeledStatement")},_k.parseExpressionStatement=function(PC,_C){return PC.expression=_C,this.semicolon(),this.finishNode(PC,"ExpressionStatement")},_k.parseBlock=function(PC){var _C=this.startNode();return this.expect(RN.braceL),this.parseBlockBody(_C,PC,!1,RN.braceR),this.finishNode(_C,"BlockStatement")},_k.parseBlockBody=function(PC,_C,NC,IC){PC.body=[],PC.directives=[];for(var LC=!1,RC,OC;!this.eat(IC);){LC||!this.state.containsOctal||OC||(OC=this.state.octalPosition);var MC=this.parseStatement(!0,NC);if(_C&&!LC&&"ExpressionStatement"===MC.type&&"StringLiteral"===MC.expression.type&&!MC.expression.extra.parenthesized){var YC=this.stmtToDirective(MC);PC.directives.push(YC),RC==void 0&&"use strict"===YC.value.value&&(RC=this.state.strict,this.setStrict(!0),OC&&this.raise(OC,"Octal literal in strict mode"));continue}LC=!0,PC.body.push(MC)}!1===RC&&this.setStrict(!1)},_k.parseFor=function(PC,_C){return PC.init=_C,this.expect(RN.semi),PC.test=this.match(RN.semi)?null:this.parseExpression(),this.expect(RN.semi),PC.update=this.match(RN.parenR)?null:this.parseExpression(),this.expect(RN.parenR),PC.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(PC,"ForStatement")},_k.parseForIn=function(PC,_C,NC){var IC;return NC?(this.eatContextual("of"),IC="ForAwaitStatement"):(IC=this.match(RN._in)?"ForInStatement":"ForOfStatement",this.next()),PC.left=_C,PC.right=this.parseExpression(),this.expect(RN.parenR),PC.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(PC,IC)},_k.parseVar=function(PC,_C,NC){for(PC.declarations=[],PC.kind=NC.keyword;;){var IC=this.startNode();if(this.parseVarHead(IC),this.eat(RN.eq)?IC.init=this.parseMaybeAssign(_C):NC!==RN._const||this.match(RN._in)||this.isContextual("of")?"Identifier"===IC.id.type||_C&&(this.match(RN._in)||this.isContextual("of"))?IC.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),PC.declarations.push(this.finishNode(IC,"VariableDeclarator")),!this.eat(RN.comma))break}return PC},_k.parseVarHead=function(PC){PC.id=this.parseBindingAtom(),this.checkLVal(PC.id,!0,void 0,"variable declaration")},_k.parseFunction=function(PC,_C,NC,IC,LC){var RC=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(PC,IC),this.match(RN.star)&&(PC.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(PC.generator=!0,this.next())),!_C||LC||this.match(RN.name)||this.match(RN._yield)||this.unexpected(),(this.match(RN.name)||this.match(RN._yield))&&(PC.id=this.parseBindingIdentifier()),this.parseFunctionParams(PC),this.parseFunctionBody(PC,NC),this.state.inMethod=RC,this.finishNode(PC,_C?"FunctionDeclaration":"FunctionExpression")},_k.parseFunctionParams=function(PC){this.expect(RN.parenL),PC.params=this.parseBindingList(RN.parenR)},_k.parseClass=function(PC,_C,NC){return this.next(),this.parseClassId(PC,_C,NC),this.parseClassSuper(PC),this.parseClassBody(PC),this.finishNode(PC,_C?"ClassDeclaration":"ClassExpression")},_k.isClassProperty=function(){return this.match(RN.eq)||this.isLineTerminator()},_k.isClassMutatorStarter=function(){return!1},_k.parseClassBody=function(PC){var _C=this.state.strict;this.state.strict=!0;var NC=!1,IC=!1,LC=[],RC=this.startNode();for(RC.body=[],this.expect(RN.braceL);!this.eat(RN.braceR);)if(!this.eat(RN.semi)){if(this.match(RN.at)){LC.push(this.parseDecorator());continue}var OC=this.startNode();LC.length&&(OC.decorators=LC,LC=[]);var MC=!1,YC=this.match(RN.name)&&"static"===this.state.value,VC=this.eat(RN.star),UC=!1,XC=!1;if(this.parsePropertyName(OC),OC.static=YC&&!this.match(RN.parenL),OC.static&&(VC=this.eat(RN.star),this.parsePropertyName(OC)),!VC){if(this.isClassProperty()){RC.body.push(this.parseClassProperty(OC));continue}"Identifier"===OC.key.type&&!OC.computed&&this.hasPlugin("classConstructorCall")&&"call"===OC.key.name&&this.match(RN.name)&&"constructor"===this.state.value&&(MC=!0,this.parsePropertyName(OC))}var WC=!this.match(RN.parenL)&&!OC.computed&&"Identifier"===OC.key.type&&"async"===OC.key.name;if(WC&&(this.hasPlugin("asyncGenerators")&&this.eat(RN.star)&&(VC=!0),XC=!0,this.parsePropertyName(OC)),OC.kind="method",!OC.computed){var JC=OC.key;XC||VC||this.isClassMutatorStarter()||"Identifier"!==JC.type||this.match(RN.parenL)||"get"!==JC.name&&"set"!==JC.name||(UC=!0,OC.kind=JC.name,JC=this.parsePropertyName(OC));var ZC=!MC&&!OC.static&&("Identifier"===JC.type&&"constructor"===JC.name||"StringLiteral"===JC.type&&"constructor"===JC.value);ZC&&(IC&&this.raise(JC.start,"Duplicate constructor in the same class"),UC&&this.raise(JC.start,"Constructor can't have get/set modifier"),VC&&this.raise(JC.start,"Constructor can't be a generator"),XC&&this.raise(JC.start,"Constructor can't be an async function"),OC.kind="constructor",IC=!0);var KC=OC.static&&("Identifier"===JC.type&&"prototype"===JC.name||"StringLiteral"===JC.type&&"prototype"===JC.value);KC&&this.raise(JC.start,"Classes may not have static property named prototype")}if(MC&&(NC&&this.raise(OC.start,"Duplicate constructor call in the same class"),OC.kind="constructorCall",NC=!0),("constructor"===OC.kind||"constructorCall"===OC.kind)&&OC.decorators&&this.raise(OC.start,"You can't attach decorators to a class constructor"),this.parseClassMethod(RC,OC,VC,XC),UC){var QC="get"===OC.kind?0:1;if(OC.params.length!==QC){var $C=OC.start;"get"===OC.kind?this.raise($C,"getter should have no params"):this.raise($C,"setter should have exactly one param")}}}LC.length&&this.raise(this.state.start,"You have trailing decorators with no method"),PC.body=this.finishNode(RC,"ClassBody"),this.state.strict=_C},_k.parseClassProperty=function(PC){return this.match(RN.eq)?(!this.hasPlugin("classProperties")&&this.unexpected(),this.next(),PC.value=this.parseMaybeAssign()):PC.value=null,this.semicolon(),this.finishNode(PC,"ClassProperty")},_k.parseClassMethod=function(PC,_C,NC,IC){this.parseMethod(_C,NC,IC),PC.body.push(this.finishNode(_C,"ClassMethod"))},_k.parseClassId=function(PC,_C,NC){this.match(RN.name)?PC.id=this.parseIdentifier():NC||!_C?PC.id=null:this.unexpected()},_k.parseClassSuper=function(PC){PC.superClass=this.eat(RN._extends)?this.parseExprSubscripts():null},_k.parseExport=function(PC){if(this.next(),this.match(RN.star)){var _C=this.startNode();if(this.next(),this.hasPlugin("exportExtensions")&&this.eatContextual("as"))_C.exported=this.parseIdentifier(),PC.specifiers=[this.finishNode(_C,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(PC),this.parseExportFrom(PC,!0);else return this.parseExportFrom(PC,!0),this.finishNode(PC,"ExportAllDeclaration")}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var NC=this.startNode();if(NC.exported=this.parseIdentifier(!0),PC.specifiers=[this.finishNode(NC,"ExportDefaultSpecifier")],this.match(RN.comma)&&this.lookahead().type===RN.star){this.expect(RN.comma);var IC=this.startNode();this.expect(RN.star),this.expectContextual("as"),IC.exported=this.parseIdentifier(),PC.specifiers.push(this.finishNode(IC,"ExportNamespaceSpecifier"))}else this.parseExportSpecifiersMaybe(PC);this.parseExportFrom(PC,!0)}else{if(this.eat(RN._default)){var LC=this.startNode(),RC=!1;return this.eat(RN._function)?LC=this.parseFunction(LC,!0,!1,!1,!0):this.match(RN._class)?LC=this.parseClass(LC,!0,!0):(RC=!0,LC=this.parseMaybeAssign()),PC.declaration=LC,RC&&this.semicolon(),this.checkExport(PC,!0,!0),this.finishNode(PC,"ExportDefaultDeclaration")}this.shouldParseExportDeclaration()?(PC.specifiers=[],PC.source=null,PC.declaration=this.parseExportDeclaration(PC)):(PC.declaration=null,PC.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(PC))}return this.checkExport(PC,!0),this.finishNode(PC,"ExportNamedDeclaration")},_k.parseExportDeclaration=function(){return this.parseStatement(!0)},_k.isExportDefaultSpecifier=function(){if(this.match(RN.name))return"type"!==this.state.value&&"async"!==this.state.value&&"interface"!==this.state.value;if(!this.match(RN._default))return!1;var PC=this.lookahead();return PC.type===RN.comma||PC.type===RN.name&&"from"===PC.value},_k.parseExportSpecifiersMaybe=function(PC){this.eat(RN.comma)&&(PC.specifiers=PC.specifiers.concat(this.parseExportSpecifiers()))},_k.parseExportFrom=function(PC,_C){this.eatContextual("from")?(PC.source=this.match(RN.string)?this.parseExprAtom():this.unexpected(),this.checkExport(PC)):_C?this.unexpected():PC.source=null,this.semicolon()},_k.shouldParseExportDeclaration=function(){return"var"===this.state.type.keyword||"const"===this.state.type.keyword||"let"===this.state.type.keyword||"function"===this.state.type.keyword||"class"===this.state.type.keyword||this.isContextual("async")},_k.checkExport=function(PC,_C,NC){if(_C)if(NC)this.checkDuplicateExports(PC,"default");else if(PC.specifiers&&PC.specifiers.length)for(var IC=PC.specifiers,LC=Array.isArray(IC),RC=0,IC=LC?IC:IC[Symbol.iterator]();;){var OC;if(LC){if(RC>=IC.length)break;OC=IC[RC++]}else{if(RC=IC.next(),RC.done)break;OC=RC.value}var MC=OC;this.checkDuplicateExports(MC,MC.exported.name)}else if(PC.declaration)if("FunctionDeclaration"===PC.declaration.type||"ClassDeclaration"===PC.declaration.type)this.checkDuplicateExports(PC,PC.declaration.id.name);else if("VariableDeclaration"===PC.declaration.type)for(var YC=PC.declaration.declarations,VC=Array.isArray(YC),UC=0,YC=VC?YC:YC[Symbol.iterator]();;){var XC;if(VC){if(UC>=YC.length)break;XC=YC[UC++]}else{if(UC=YC.next(),UC.done)break;XC=UC.value}var WC=XC;this.checkDeclaration(WC.id)}if(this.state.decorators.length){var JC=PC.declaration&&("ClassDeclaration"===PC.declaration.type||"ClassExpression"===PC.declaration.type);PC.declaration&&JC||this.raise(PC.start,"You can only use decorators on an export when exporting a class"),this.takeDecorators(PC.declaration)}},_k.checkDeclaration=function(PC){if("ObjectPattern"===PC.type)for(var _C=PC.properties,NC=Array.isArray(_C),IC=0,_C=NC?_C:_C[Symbol.iterator]();;){var LC;if(NC){if(IC>=_C.length)break;LC=_C[IC++]}else{if(IC=_C.next(),IC.done)break;LC=IC.value}var RC=LC;this.checkDeclaration(RC)}else if("ArrayPattern"===PC.type)for(var OC=PC.elements,MC=Array.isArray(OC),YC=0,OC=MC?OC:OC[Symbol.iterator]();;){var VC;if(MC){if(YC>=OC.length)break;VC=OC[YC++]}else{if(YC=OC.next(),YC.done)break;VC=YC.value}var UC=VC;UC&&this.checkDeclaration(UC)}else"ObjectProperty"===PC.type?this.checkDeclaration(PC.value):"RestElement"===PC.type||"RestProperty"===PC.type?this.checkDeclaration(PC.argument):"Identifier"===PC.type&&this.checkDuplicateExports(PC,PC.name)},_k.checkDuplicateExports=function(PC,_C){-1=IC.length)break;OC=IC[RC++]}else{if(RC=IC.next(),RC.done)break;OC=RC.value}var MC=OC;"ObjectMethod"===MC.type?"get"===MC.kind||"set"===MC.kind?this.raise(MC.key.start,"Object pattern can't contain getter or setter"):this.raise(MC.key.start,"Object pattern can't contain methods"):this.toAssignable(MC,_C,"object destructuring pattern")}break;case"ObjectProperty":this.toAssignable(PC.value,_C,NC);break;case"SpreadProperty":PC.type="RestProperty";break;case"ArrayExpression":PC.type="ArrayPattern",this.toAssignableList(PC.elements,_C,NC);break;case"AssignmentExpression":"="===PC.operator?(PC.type="AssignmentPattern",delete PC.operator):this.raise(PC.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!_C)break;default:{var YC="Invalid left-hand side"+(NC?" in "+NC:"expression");this.raise(PC.start,YC)}}return PC},Ok.toAssignableList=function(PC,_C,NC){var IC=PC.length;if(IC){var LC=PC[IC-1];if(LC&&"RestElement"===LC.type)--IC;else if(LC&&"SpreadElement"===LC.type){LC.type="RestElement";var RC=LC.argument;this.toAssignable(RC,_C,NC),"Identifier"!==RC.type&&"MemberExpression"!==RC.type&&"ArrayPattern"!==RC.type&&this.unexpected(RC.start),--IC}}for(var OC=0;OC=RC.length)break;YC=RC[MC++]}else{if(MC=RC.next(),MC.done)break;YC=MC.value}var VC=YC;"ObjectProperty"===VC.type&&(VC=VC.value),this.checkLVal(VC,_C,NC,"object destructuring pattern")}break;case"ArrayPattern":for(var UC=PC.elements,XC=Array.isArray(UC),WC=0,UC=XC?UC:UC[Symbol.iterator]();;){var JC;if(XC){if(WC>=UC.length)break;JC=UC[WC++]}else{if(WC=UC.next(),WC.done)break;JC=WC.value}var ZC=JC;ZC&&this.checkLVal(ZC,_C,NC,"array destructuring pattern")}break;case"AssignmentPattern":this.checkLVal(PC.left,_C,NC,"assignment pattern");break;case"RestProperty":this.checkLVal(PC.argument,_C,NC,"rest property");break;case"RestElement":this.checkLVal(PC.argument,_C,NC,"rest element");break;default:{var KC=(_C?"Binding invalid":"Invalid")+" left-hand side"+(IC?" in "+IC:"expression");this.raise(PC.start,KC)}}};var Mk=Tk.prototype;Mk.checkPropClash=function(PC,_C){if(!PC.computed){var NC=PC.key,IC;switch(NC.type){case"Identifier":IC=NC.name;break;case"StringLiteral":case"NumericLiteral":IC=NC.value+"";break;default:return;}"__proto__"!==IC||PC.kind||(_C.proto&&this.raise(NC.start,"Redefinition of __proto__ property"),_C.proto=!0)}},Mk.parseExpression=function(PC,_C){var NC=this.state.start,IC=this.state.startLoc,LC=this.parseMaybeAssign(PC,_C);if(this.match(RN.comma)){var RC=this.startNodeAt(NC,IC);for(RC.expressions=[LC];this.eat(RN.comma);)RC.expressions.push(this.parseMaybeAssign(PC,_C));return this.toReferencedList(RC.expressions),this.finishNode(RC,"SequenceExpression")}return LC},Mk.parseMaybeAssign=function(PC,_C,NC,IC){var LC=this.state.start,RC=this.state.startLoc;if(this.match(RN._yield)&&this.state.inGenerator){var OC=this.parseYield();return NC&&(OC=NC.call(this,OC,LC,RC)),OC}var MC;_C?MC=!1:(_C={start:0},MC=!0),(this.match(RN.parenL)||this.match(RN.name))&&(this.state.potentialArrowAt=this.state.start);var YC=this.parseMaybeConditional(PC,_C,IC);if(NC&&(YC=NC.call(this,YC,LC,RC)),this.state.type.isAssign){var VC=this.startNodeAt(LC,RC);if(VC.operator=this.state.value,VC.left=this.match(RN.eq)?this.toAssignable(YC,void 0,"assignment expression"):YC,_C.start=0,this.checkLVal(YC,void 0,void 0,"assignment expression"),YC.extra&&YC.extra.parenthesized){var UC;"ObjectPattern"===YC.type?UC="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===YC.type&&(UC="`([a]) = 0` use `([a] = 0)`"),UC&&this.raise(YC.start,"You're trying to assign to a parenthesized expression, eg. instead of "+UC)}return this.next(),VC.right=this.parseMaybeAssign(PC),this.finishNode(VC,"AssignmentExpression")}return MC&&_C.start&&this.unexpected(_C.start),YC},Mk.parseMaybeConditional=function(PC,_C,NC){var IC=this.state.start,LC=this.state.startLoc,RC=this.parseExprOps(PC,_C);return _C&&_C.start?RC:this.parseConditional(RC,PC,IC,LC,NC)},Mk.parseConditional=function(PC,_C,NC,IC){if(this.eat(RN.question)){var LC=this.startNodeAt(NC,IC);return LC.test=PC,LC.consequent=this.parseMaybeAssign(),this.expect(RN.colon),LC.alternate=this.parseMaybeAssign(_C),this.finishNode(LC,"ConditionalExpression")}return PC},Mk.parseExprOps=function(PC,_C){var NC=this.state.start,IC=this.state.startLoc,LC=this.parseMaybeUnary(_C);return _C&&_C.start?LC:this.parseExprOp(LC,NC,IC,-1,PC)},Mk.parseExprOp=function(PC,_C,NC,IC,LC){var RC=this.state.type.binop;if(null!=RC&&(!LC||!this.match(RN._in))&&RC>IC){var OC=this.startNodeAt(_C,NC);OC.left=PC,OC.operator=this.state.value,"**"!==OC.operator||"UnaryExpression"!==PC.type||!PC.extra||PC.extra.parenthesizedArgument||PC.extra.parenthesized||this.raise(PC.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var MC=this.state.type;this.next();var YC=this.state.start,VC=this.state.startLoc;return OC.right=this.parseExprOp(this.parseMaybeUnary(),YC,VC,MC.rightAssociative?RC-1:RC,LC),this.finishNode(OC,MC===RN.logicalOR||MC===RN.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(OC,_C,NC,IC,LC)}return PC},Mk.parseMaybeUnary=function(PC){if(this.state.type.prefix){var _C=this.startNode(),NC=this.match(RN.incDec);_C.operator=this.state.value,_C.prefix=!0,this.next();var IC=this.state.type;return _C.argument=this.parseMaybeUnary(),this.addExtra(_C,"parenthesizedArgument",IC===RN.parenL&&(!_C.argument.extra||!_C.argument.extra.parenthesized)),PC&&PC.start&&this.unexpected(PC.start),NC?this.checkLVal(_C.argument,void 0,void 0,"prefix operation"):this.state.strict&&"delete"===_C.operator&&"Identifier"===_C.argument.type&&this.raise(_C.start,"Deleting local variable in strict mode"),this.finishNode(_C,NC?"UpdateExpression":"UnaryExpression")}var LC=this.state.start,RC=this.state.startLoc,OC=this.parseExprSubscripts(PC);if(PC&&PC.start)return OC;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var MC=this.startNodeAt(LC,RC);MC.operator=this.state.value,MC.prefix=!1,MC.argument=OC,this.checkLVal(OC,void 0,void 0,"postfix operation"),this.next(),OC=this.finishNode(MC,"UpdateExpression")}return OC},Mk.parseExprSubscripts=function(PC){var _C=this.state.start,NC=this.state.startLoc,IC=this.state.potentialArrowAt,LC=this.parseExprAtom(PC);return"ArrowFunctionExpression"===LC.type&&LC.start===IC?LC:PC&&PC.start?LC:this.parseSubscripts(LC,_C,NC)},Mk.parseSubscripts=function(PC,_C,NC,IC){for(;;){if(!IC&&this.eat(RN.doubleColon)){var LC=this.startNodeAt(_C,NC);return LC.object=PC,LC.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(LC,"BindExpression"),_C,NC,IC)}if(this.eat(RN.dot)){var RC=this.startNodeAt(_C,NC);RC.object=PC,RC.property=this.parseIdentifier(!0),RC.computed=!1,PC=this.finishNode(RC,"MemberExpression")}else if(this.eat(RN.bracketL)){var OC=this.startNodeAt(_C,NC);OC.object=PC,OC.property=this.parseExpression(),OC.computed=!0,this.expect(RN.bracketR),PC=this.finishNode(OC,"MemberExpression")}else if(!IC&&this.match(RN.parenL)){var MC=this.state.potentialArrowAt===PC.start&&"Identifier"===PC.type&&"async"===PC.name&&!this.canInsertSemicolon();this.next();var YC=this.startNodeAt(_C,NC);if(YC.callee=PC,YC.arguments=this.parseCallExpressionArguments(RN.parenR,MC),"Import"===YC.callee.type&&1!==YC.arguments.length&&this.raise(YC.start,"import() requires exactly one argument"),PC=this.finishNode(YC,"CallExpression"),MC&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(_C,NC),YC);this.toReferencedList(YC.arguments)}else if(this.match(RN.backQuote)){var VC=this.startNodeAt(_C,NC);VC.tag=PC,VC.quasi=this.parseTemplate(),PC=this.finishNode(VC,"TaggedTemplateExpression")}else return PC}},Mk.parseCallExpressionArguments=function(PC,_C){for(var NC=[],LC=!0,IC;!this.eat(PC);){if(LC)LC=!1;else if(this.expect(RN.comma),this.eat(PC))break;this.match(RN.parenL)&&!IC&&(IC=this.state.start),NC.push(this.parseExprListItem(void 0,_C?{start:0}:void 0))}return _C&&IC&&this.shouldParseAsyncArrow()&&this.unexpected(),NC},Mk.shouldParseAsyncArrow=function(){return this.match(RN.arrow)},Mk.parseAsyncArrowFromCallExpression=function(PC,_C){return this.expect(RN.arrow),this.parseArrowExpression(PC,_C.arguments,!0)},Mk.parseNoCallExpr=function(){var PC=this.state.start,_C=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),PC,_C,!0)},Mk.parseExprAtom=function(PC){var _C=this.state.potentialArrowAt===this.state.start,NC;switch(this.state.type){case RN._super:return this.state.inMethod||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),NC=this.startNode(),this.next(),this.match(RN.parenL)||this.match(RN.bracketL)||this.match(RN.dot)||this.unexpected(),this.match(RN.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(NC.start,"super() outside of class constructor"),this.finishNode(NC,"Super");case RN._import:return this.hasPlugin("dynamicImport")||this.unexpected(),NC=this.startNode(),this.next(),this.match(RN.parenL)||this.unexpected(null,RN.parenL),this.finishNode(NC,"Import");case RN._this:return NC=this.startNode(),this.next(),this.finishNode(NC,"ThisExpression");case RN._yield:this.state.inGenerator&&this.unexpected();case RN.name:NC=this.startNode();var IC="await"===this.state.value&&this.state.inAsync,LC=this.shouldAllowYieldIdentifier(),RC=this.parseIdentifier(IC||LC);if("await"!==RC.name){if("async"===RC.name&&this.match(RN._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(NC,!1,!1,!0);if(_C&&"async"===RC.name&&this.match(RN.name)){var OC=[this.parseIdentifier()];return this.expect(RN.arrow),this.parseArrowExpression(NC,OC,!0)}}else if(this.state.inAsync||this.inModule)return this.parseAwait(NC);return _C&&!this.canInsertSemicolon()&&this.eat(RN.arrow)?this.parseArrowExpression(NC,[RC]):RC;case RN._do:if(this.hasPlugin("doExpressions")){var MC=this.startNode();this.next();var YC=this.state.inFunction,VC=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,MC.body=this.parseBlock(!1,!0),this.state.inFunction=YC,this.state.labels=VC,this.finishNode(MC,"DoExpression")}case RN.regexp:var UC=this.state.value;return NC=this.parseLiteral(UC.value,"RegExpLiteral"),NC.pattern=UC.pattern,NC.flags=UC.flags,NC;case RN.num:return this.parseLiteral(this.state.value,"NumericLiteral");case RN.string:return this.parseLiteral(this.state.value,"StringLiteral");case RN._null:return NC=this.startNode(),this.next(),this.finishNode(NC,"NullLiteral");case RN._true:case RN._false:return NC=this.startNode(),NC.value=this.match(RN._true),this.next(),this.finishNode(NC,"BooleanLiteral");case RN.parenL:return this.parseParenAndDistinguishExpression(null,null,_C);case RN.bracketL:return NC=this.startNode(),this.next(),NC.elements=this.parseExprList(RN.bracketR,!0,PC),this.toReferencedList(NC.elements),this.finishNode(NC,"ArrayExpression");case RN.braceL:return this.parseObj(!1,PC);case RN._function:return this.parseFunctionExpression();case RN.at:this.parseDecorators();case RN._class:return NC=this.startNode(),this.takeDecorators(NC),this.parseClass(NC,!1);case RN._new:return this.parseNew();case RN.backQuote:return this.parseTemplate();case RN.doubleColon:NC=this.startNode(),this.next(),NC.object=null;var XC=NC.callee=this.parseNoCallExpr();if("MemberExpression"===XC.type)return this.finishNode(NC,"BindExpression");this.raise(XC.start,"Binding should be performed on object property.");default:this.unexpected();}},Mk.parseFunctionExpression=function(){var PC=this.startNode(),_C=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(RN.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(PC,_C,"sent"):this.parseFunction(PC,!1)},Mk.parseMetaProperty=function(PC,_C,NC){return PC.meta=_C,PC.property=this.parseIdentifier(!0),PC.property.name!==NC&&this.raise(PC.property.start,"The only valid meta property for new is "+_C.name+"."+NC),this.finishNode(PC,"MetaProperty")},Mk.parseLiteral=function(PC,_C){var NC=this.startNode();return this.addExtra(NC,"rawValue",PC),this.addExtra(NC,"raw",this.input.slice(this.state.start,this.state.end)),NC.value=PC,this.next(),this.finishNode(NC,_C)},Mk.parseParenExpression=function(){this.expect(RN.parenL);var PC=this.parseExpression();return this.expect(RN.parenR),PC},Mk.parseParenAndDistinguishExpression=function(PC,_C,NC){PC=PC||this.state.start,_C=_C||this.state.startLoc;var IC;this.expect(RN.parenL);for(var LC=this.state.start,RC=this.state.startLoc,OC=[],MC={start:0},YC={start:0},VC=!0,UC,XC;!this.match(RN.parenR);){if(VC)VC=!1;else if(this.expect(RN.comma,YC.start||null),this.match(RN.parenR)){XC=this.state.start;break}if(this.match(RN.ellipsis)){var WC=this.state.start,JC=this.state.startLoc;UC=this.state.start,OC.push(this.parseParenItem(this.parseRest(),JC,WC));break}else OC.push(this.parseMaybeAssign(!1,MC,this.parseParenItem,YC))}var ZC=this.state.start,KC=this.state.startLoc;this.expect(RN.parenR);var QC=this.startNodeAt(PC,_C);if(NC&&this.shouldParseArrow()&&(QC=this.parseArrow(QC))){for(var $C=OC,fw=Array.isArray($C),Sw=0,$C=fw?$C:$C[Symbol.iterator]();;){var Tw;if(fw){if(Sw>=$C.length)break;Tw=$C[Sw++]}else{if(Sw=$C.next(),Sw.done)break;Tw=Sw.value}var Pw=Tw;Pw.extra&&Pw.extra.parenthesized&&this.unexpected(Pw.extra.parenStart)}return this.parseArrowExpression(QC,OC)}return OC.length||this.unexpected(this.state.lastTokStart),XC&&this.unexpected(XC),UC&&this.unexpected(UC),MC.start&&this.unexpected(MC.start),YC.start&&this.unexpected(YC.start),1=VC.length)break;WC=VC[XC++]}else{if(XC=VC.next(),XC.done)break;WC=XC.value}var JC=WC;if("use strict"===JC.value.value){YC=!0,MC=!0;break}}if(YC&&PC.id&&"Identifier"===PC.id.type&&"yield"===PC.id.name&&this.raise(PC.id.start,"Binding yield in strict mode"),MC){var ZC=Object.create(null),KC=this.state.strict;YC&&(this.state.strict=!0),PC.id&&this.checkLVal(PC.id,!0,void 0,"function name");for(var QC=PC.params,$C=Array.isArray(QC),fw=0,QC=$C?QC:QC[Symbol.iterator]();;){var Sw;if($C){if(fw>=QC.length)break;Sw=QC[fw++]}else{if(fw=QC.next(),fw.done)break;Sw=fw.value}var Tw=Sw;YC&&"Identifier"!==Tw.type&&this.raise(Tw.start,"Non-simple parameter in strict mode"),this.checkLVal(Tw,!0,ZC,"function parameter list")}this.state.strict=KC}},Mk.parseExprList=function(PC,_C,NC){for(var IC=[],LC=!0;!this.eat(PC);){if(LC)LC=!1;else if(this.expect(RN.comma),this.eat(PC))break;IC.push(this.parseExprListItem(_C,NC))}return IC},Mk.parseExprListItem=function(PC,_C){var NC;return NC=PC&&this.match(RN.comma)?null:this.match(RN.ellipsis)?this.parseSpread(_C):this.parseMaybeAssign(!1,_C,this.parseParenItem),NC},Mk.parseIdentifier=function(PC){var _C=this.startNode();return this.match(RN.name)?(!PC&&this.checkReservedWord(this.state.value,this.state.start,!1,!1),_C.name=this.state.value):PC&&this.state.type.keyword?_C.name=this.state.type.keyword:this.unexpected(),!PC&&"await"===_C.name&&this.state.inAsync&&this.raise(_C.start,"invalid use of await inside of an async function"),_C.loc.identifierName=_C.name,this.next(),this.finishNode(_C,"Identifier")},Mk.checkReservedWord=function(PC,_C,NC,IC){(this.isReservedWord(PC)||NC&&this.isKeyword(PC))&&this.raise(_C,PC+" is a reserved word"),this.state.strict&&(L_.strict(PC)||IC&&L_.strictBind(PC))&&this.raise(_C,PC+" is a reserved word in strict mode")},Mk.parseAwait=function(PC){return this.state.inAsync||this.unexpected(),this.match(RN.star)&&this.raise(PC.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),PC.argument=this.parseMaybeUnary(),this.finishNode(PC,"AwaitExpression")},Mk.parseYield=function(){var PC=this.startNode();return this.next(),this.match(RN.semi)||this.canInsertSemicolon()||!this.match(RN.star)&&!this.state.type.startsExpr?(PC.delegate=!1,PC.argument=null):(PC.delegate=this.eat(RN.star),PC.argument=this.parseMaybeAssign()),this.finishNode(PC,"YieldExpression")};var Yk=Tk.prototype,Vk=["leadingComments","trailingComments","innerComments"],Uk=function(){function PC(_C,NC,IC){Z_(this,PC),this.type="",this.start=_C,this.end=0,this.loc=new JN(NC),IC&&(this.loc.filename=IC)}return PC.prototype.__clone=function(){var NC=new PC;for(var IC in this)0>Vk.indexOf(IC)&&(NC[IC]=this[IC]);return NC},PC}();Yk.startNode=function(){return new Uk(this.state.start,this.state.startLoc,this.filename)},Yk.startNodeAt=function(PC,_C){return new Uk(PC,_C,this.filename)},Yk.finishNode=function(PC,_C){return __.call(this,PC,_C,this.state.lastTokEnd,this.state.lastTokEndLoc)},Yk.finishNodeAt=function(PC,_C,NC,IC){return __.call(this,PC,_C,NC,IC)};var Xk=Tk.prototype;Xk.raise=function(PC,_C){var NC=T_(this.input,PC);_C+=" ("+NC.line+":"+NC.column+")";var IC=new SyntaxError(_C);throw IC.pos=PC,IC.loc=NC,IC};var Wk=Tk.prototype;Wk.addComment=function(PC){this.filename&&(PC.loc.filename=this.filename),this.state.trailingComments.push(PC),this.state.leadingComments.push(PC)},Wk.processComment=function(PC){if(!("Program"===PC.type&&0=PC.end?(IC=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var OC=N_(_C);0<_C.length&&OC.trailingComments&&OC.trailingComments[0].start>=PC.end&&(IC=OC.trailingComments,OC.trailingComments=null)}for(;0<_C.length&&N_(_C).start>=PC.start;)NC=_C.pop();if(NC){if(NC.leadingComments)if(NC!==PC&&N_(NC.leadingComments).end<=PC.start)PC.leadingComments=NC.leadingComments,NC.leadingComments=null;else for(LC=NC.leadingComments.length-2;0<=LC;--LC)if(NC.leadingComments[LC].end<=PC.start){PC.leadingComments=NC.leadingComments.splice(0,LC+1);break}}else if(0PC.start);LC++);PC.leadingComments=this.state.leadingComments.slice(0,LC),0===PC.leadingComments.length&&(PC.leadingComments=null),IC=this.state.leadingComments.slice(LC),0===IC.length&&(IC=null)}this.state.commentPreviousNode=PC,IC&&(IC.length&&IC[0].start>=PC.start&&N_(IC).end<=PC.end?PC.innerComments=IC:PC.trailingComments=IC),_C.push(PC)}};var Jk=Tk.prototype;Jk.flowParseTypeInitialiser=function(PC){var _C=this.state.inType;this.state.inType=!0,this.expect(PC||RN.colon);var NC=this.flowParseType();return this.state.inType=_C,NC},Jk.flowParseDeclareClass=function(PC){return this.next(),this.flowParseInterfaceish(PC,!0),this.finishNode(PC,"DeclareClass")},Jk.flowParseDeclareFunction=function(PC){this.next();var _C=PC.id=this.parseIdentifier(),NC=this.startNode(),IC=this.startNode();NC.typeParameters=this.isRelational("<")?this.flowParseTypeParameterDeclaration():null,this.expect(RN.parenL);var LC=this.flowParseFunctionTypeParams();return NC.params=LC.params,NC.rest=LC.rest,this.expect(RN.parenR),NC.returnType=this.flowParseTypeInitialiser(),IC.typeAnnotation=this.finishNode(NC,"FunctionTypeAnnotation"),_C.typeAnnotation=this.finishNode(IC,"TypeAnnotation"),this.finishNode(_C,_C.type),this.semicolon(),this.finishNode(PC,"DeclareFunction")},Jk.flowParseDeclare=function(PC){if(this.match(RN._class))return this.flowParseDeclareClass(PC);return this.match(RN._function)?this.flowParseDeclareFunction(PC):this.match(RN._var)?this.flowParseDeclareVariable(PC):this.isContextual("module")?this.lookahead().type===RN.dot?this.flowParseDeclareModuleExports(PC):this.flowParseDeclareModule(PC):this.isContextual("type")?this.flowParseDeclareTypeAlias(PC):this.isContextual("interface")?this.flowParseDeclareInterface(PC):void this.unexpected()},Jk.flowParseDeclareVariable=function(PC){return this.next(),PC.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(PC,"DeclareVariable")},Jk.flowParseDeclareModule=function(PC){this.next(),PC.id=this.match(RN.string)?this.parseExprAtom():this.parseIdentifier();var _C=PC.body=this.startNode(),NC=_C.body=[];for(this.expect(RN.braceL);!this.match(RN.braceR);){var IC=this.startNode();this.expectContextual("declare","Unexpected token. Only declares are allowed inside declare module"),NC.push(this.flowParseDeclare(IC))}return this.expect(RN.braceR),this.finishNode(_C,"BlockStatement"),this.finishNode(PC,"DeclareModule")},Jk.flowParseDeclareModuleExports=function(PC){return this.expectContextual("module"),this.expect(RN.dot),this.expectContextual("exports"),PC.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(PC,"DeclareModuleExports")},Jk.flowParseDeclareTypeAlias=function(PC){return this.next(),this.flowParseTypeAlias(PC),this.finishNode(PC,"DeclareTypeAlias")},Jk.flowParseDeclareInterface=function(PC){return this.next(),this.flowParseInterfaceish(PC),this.finishNode(PC,"DeclareInterface")},Jk.flowParseInterfaceish=function(PC,_C){if(PC.id=this.parseIdentifier(),PC.typeParameters=this.isRelational("<")?this.flowParseTypeParameterDeclaration():null,PC.extends=[],PC.mixins=[],this.eat(RN._extends))do PC.extends.push(this.flowParseInterfaceExtends());while(this.eat(RN.comma));if(this.isContextual("mixins")){this.next();do PC.mixins.push(this.flowParseInterfaceExtends());while(this.eat(RN.comma))}PC.body=this.flowParseObjectType(_C)},Jk.flowParseInterfaceExtends=function(){var PC=this.startNode();return PC.id=this.flowParseQualifiedTypeIdentifier(),PC.typeParameters=this.isRelational("<")?this.flowParseTypeParameterInstantiation():null,this.finishNode(PC,"InterfaceExtends")},Jk.flowParseInterface=function(PC){return this.flowParseInterfaceish(PC,!1),this.finishNode(PC,"InterfaceDeclaration")},Jk.flowParseTypeAlias=function(PC){return PC.id=this.parseIdentifier(),PC.typeParameters=this.isRelational("<")?this.flowParseTypeParameterDeclaration():null,PC.right=this.flowParseTypeInitialiser(RN.eq),this.semicolon(),this.finishNode(PC,"TypeAlias")},Jk.flowParseTypeParameter=function(){var PC=this.startNode(),_C=this.flowParseVariance(),NC=this.flowParseTypeAnnotatableIdentifier();return PC.name=NC.name,PC.variance=_C,PC.bound=NC.typeAnnotation,this.match(RN.eq)&&(this.eat(RN.eq),PC.default=this.flowParseType()),this.finishNode(PC,"TypeParameter")},Jk.flowParseTypeParameterDeclaration=function(){var PC=this.state.inType,_C=this.startNode();_C.params=[],this.state.inType=!0,this.isRelational("<")||this.match(RN.jsxTagStart)?this.next():this.unexpected();do _C.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(RN.comma);while(!this.isRelational(">"));return this.expectRelational(">"),this.state.inType=PC,this.finishNode(_C,"TypeParameterDeclaration")},Jk.flowParseTypeParameterInstantiation=function(){var PC=this.startNode(),_C=this.state.inType;for(PC.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)PC.params.push(this.flowParseType()),this.isRelational(">")||this.expect(RN.comma);return this.expectRelational(">"),this.state.inType=_C,this.finishNode(PC,"TypeParameterInstantiation")},Jk.flowParseObjectPropertyKey=function(){return this.match(RN.num)||this.match(RN.string)?this.parseExprAtom():this.parseIdentifier(!0)},Jk.flowParseObjectTypeIndexer=function(PC,_C,NC){return PC.static=_C,this.expect(RN.bracketL),this.lookahead().type===RN.colon?(PC.id=this.flowParseObjectPropertyKey(),PC.key=this.flowParseTypeInitialiser()):(PC.id=null,PC.key=this.flowParseType()),this.expect(RN.bracketR),PC.value=this.flowParseTypeInitialiser(),PC.variance=NC,this.flowObjectTypeSemicolon(),this.finishNode(PC,"ObjectTypeIndexer")},Jk.flowParseObjectTypeMethodish=function(PC){for(PC.params=[],PC.rest=null,PC.typeParameters=null,this.isRelational("<")&&(PC.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(RN.parenL);this.match(RN.name);)PC.params.push(this.flowParseFunctionTypeParam()),this.match(RN.parenR)||this.expect(RN.comma);return this.eat(RN.ellipsis)&&(PC.rest=this.flowParseFunctionTypeParam()),this.expect(RN.parenR),PC.returnType=this.flowParseTypeInitialiser(),this.finishNode(PC,"FunctionTypeAnnotation")},Jk.flowParseObjectTypeMethod=function(PC,_C,NC,IC){var LC=this.startNodeAt(PC,_C);return LC.value=this.flowParseObjectTypeMethodish(this.startNodeAt(PC,_C)),LC.static=NC,LC.key=IC,LC.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(LC,"ObjectTypeProperty")},Jk.flowParseObjectTypeCallProperty=function(PC,_C){var NC=this.startNode();return PC.static=_C,PC.value=this.flowParseObjectTypeMethodish(NC),this.flowObjectTypeSemicolon(),this.finishNode(PC,"ObjectTypeCallProperty")},Jk.flowParseObjectType=function(PC,_C){var NC=this.state.inType;this.state.inType=!0;var IC=this.startNode(),OC=!1,LC,RC;IC.callProperties=[],IC.properties=[],IC.indexers=[];var MC,YC;for(_C&&this.match(RN.braceBarL)?(this.expect(RN.braceBarL),MC=RN.braceBarR,YC=!0):(this.expect(RN.braceL),MC=RN.braceR,YC=!1),IC.exact=YC;!this.match(MC);){var VC=!1,UC=this.state.start,XC=this.state.startLoc;LC=this.startNode(),PC&&this.isContextual("static")&&this.lookahead().type!==RN.colon&&(this.next(),OC=!0);var WC=this.state.start,JC=this.flowParseVariance();this.match(RN.bracketL)?IC.indexers.push(this.flowParseObjectTypeIndexer(LC,OC,JC)):this.match(RN.parenL)||this.isRelational("<")?(JC&&this.unexpected(WC),IC.callProperties.push(this.flowParseObjectTypeCallProperty(LC,PC))):(RC=this.flowParseObjectPropertyKey(),this.isRelational("<")||this.match(RN.parenL)?(JC&&this.unexpected(WC),IC.properties.push(this.flowParseObjectTypeMethod(UC,XC,OC,RC))):(this.eat(RN.question)&&(VC=!0),LC.key=RC,LC.value=this.flowParseTypeInitialiser(),LC.optional=VC,LC.static=OC,LC.variance=JC,this.flowObjectTypeSemicolon(),IC.properties.push(this.finishNode(LC,"ObjectTypeProperty")))),OC=!1}this.expect(MC);var ZC=this.finishNode(IC,"ObjectTypeAnnotation");return this.state.inType=NC,ZC},Jk.flowObjectTypeSemicolon=function(){this.eat(RN.semi)||this.eat(RN.comma)||this.match(RN.braceR)||this.match(RN.braceBarR)||this.unexpected()},Jk.flowParseQualifiedTypeIdentifier=function(PC,_C,NC){PC=PC||this.state.start,_C=_C||this.state.startLoc;for(var IC=NC||this.parseIdentifier();this.eat(RN.dot);){var LC=this.startNodeAt(PC,_C);LC.qualification=IC,LC.id=this.parseIdentifier(),IC=this.finishNode(LC,"QualifiedTypeIdentifier")}return IC},Jk.flowParseGenericType=function(PC,_C,NC){var IC=this.startNodeAt(PC,_C);return IC.typeParameters=null,IC.id=this.flowParseQualifiedTypeIdentifier(PC,_C,NC),this.isRelational("<")&&(IC.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(IC,"GenericTypeAnnotation")},Jk.flowParseTypeofType=function(){var PC=this.startNode();return this.expect(RN._typeof),PC.argument=this.flowParsePrimaryType(),this.finishNode(PC,"TypeofTypeAnnotation")},Jk.flowParseTupleType=function(){var PC=this.startNode();for(PC.types=[],this.expect(RN.bracketL);this.state.posVC||1114111=VC?IC.push(VC):(VC-=65536,LC=(VC>>10)+55296,RC=VC%1024+56320,IC.push(LC,RC)),(OC+1==MC||16384",nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",frac34:"\xBE",iquest:"\xBF",Agrave:"\xC0",Aacute:"\xC1",Acirc:"\xC2",Atilde:"\xC3",Auml:"\xC4",Aring:"\xC5",AElig:"\xC6",Ccedil:"\xC7",Egrave:"\xC8",Eacute:"\xC9",Ecirc:"\xCA",Euml:"\xCB",Igrave:"\xCC",Iacute:"\xCD",Icirc:"\xCE",Iuml:"\xCF",ETH:"\xD0",Ntilde:"\xD1",Ograve:"\xD2",Oacute:"\xD3",Ocirc:"\xD4",Otilde:"\xD5",Ouml:"\xD6",times:"\xD7",Oslash:"\xD8",Ugrave:"\xD9",Uacute:"\xDA",Ucirc:"\xDB",Uuml:"\xDC",Yacute:"\xDD",THORN:"\xDE",szlig:"\xDF",agrave:"\xE0",aacute:"\xE1",acirc:"\xE2",atilde:"\xE3",auml:"\xE4",aring:"\xE5",aelig:"\xE6",ccedil:"\xE7",egrave:"\xE8",eacute:"\xE9",ecirc:"\xEA",euml:"\xEB",igrave:"\xEC",iacute:"\xED",icirc:"\xEE",iuml:"\xEF",eth:"\xF0",ntilde:"\xF1",ograve:"\xF2",oacute:"\xF3",ocirc:"\xF4",otilde:"\xF5",ouml:"\xF6",divide:"\xF7",oslash:"\xF8",ugrave:"\xF9",uacute:"\xFA",ucirc:"\xFB",uuml:"\xFC",yacute:"\xFD",thorn:"\xFE",yuml:"\xFF",OElig:"\u0152",oelig:"\u0153",Scaron:"\u0160",scaron:"\u0161",Yuml:"\u0178",fnof:"\u0192",circ:"\u02C6",tilde:"\u02DC",Alpha:"\u0391",Beta:"\u0392",Gamma:"\u0393",Delta:"\u0394",Epsilon:"\u0395",Zeta:"\u0396",Eta:"\u0397",Theta:"\u0398",Iota:"\u0399",Kappa:"\u039A",Lambda:"\u039B",Mu:"\u039C",Nu:"\u039D",Xi:"\u039E",Omicron:"\u039F",Pi:"\u03A0",Rho:"\u03A1",Sigma:"\u03A3",Tau:"\u03A4",Upsilon:"\u03A5",Phi:"\u03A6",Chi:"\u03A7",Psi:"\u03A8",Omega:"\u03A9",alpha:"\u03B1",beta:"\u03B2",gamma:"\u03B3",delta:"\u03B4",epsilon:"\u03B5",zeta:"\u03B6",eta:"\u03B7",theta:"\u03B8",iota:"\u03B9",kappa:"\u03BA",lambda:"\u03BB",mu:"\u03BC",nu:"\u03BD",xi:"\u03BE",omicron:"\u03BF",pi:"\u03C0",rho:"\u03C1",sigmaf:"\u03C2",sigma:"\u03C3",tau:"\u03C4",upsilon:"\u03C5",phi:"\u03C6",chi:"\u03C7",psi:"\u03C8",omega:"\u03C9",thetasym:"\u03D1",upsih:"\u03D2",piv:"\u03D6",ensp:"\u2002",emsp:"\u2003",thinsp:"\u2009",zwnj:"\u200C",zwj:"\u200D",lrm:"\u200E",rlm:"\u200F",ndash:"\u2013",mdash:"\u2014",lsquo:"\u2018",rsquo:"\u2019",sbquo:"\u201A",ldquo:"\u201C",rdquo:"\u201D",bdquo:"\u201E",dagger:"\u2020",Dagger:"\u2021",bull:"\u2022",hellip:"\u2026",permil:"\u2030",prime:"\u2032",Prime:"\u2033",lsaquo:"\u2039",rsaquo:"\u203A",oline:"\u203E",frasl:"\u2044",euro:"\u20AC",image:"\u2111",weierp:"\u2118",real:"\u211C",trade:"\u2122",alefsym:"\u2135",larr:"\u2190",uarr:"\u2191",rarr:"\u2192",darr:"\u2193",harr:"\u2194",crarr:"\u21B5",lArr:"\u21D0",uArr:"\u21D1",rArr:"\u21D2",dArr:"\u21D3",hArr:"\u21D4",forall:"\u2200",part:"\u2202",exist:"\u2203",empty:"\u2205",nabla:"\u2207",isin:"\u2208",notin:"\u2209",ni:"\u220B",prod:"\u220F",sum:"\u2211",minus:"\u2212",lowast:"\u2217",radic:"\u221A",prop:"\u221D",infin:"\u221E",ang:"\u2220",and:"\u2227",or:"\u2228",cap:"\u2229",cup:"\u222A",int:"\u222B",there4:"\u2234",sim:"\u223C",cong:"\u2245",asymp:"\u2248",ne:"\u2260",equiv:"\u2261",le:"\u2264",ge:"\u2265",sub:"\u2282",sup:"\u2283",nsub:"\u2284",sube:"\u2286",supe:"\u2287",oplus:"\u2295",otimes:"\u2297",perp:"\u22A5",sdot:"\u22C5",lceil:"\u2308",rceil:"\u2309",lfloor:"\u230A",rfloor:"\u230B",lang:"\u2329",rang:"\u232A",loz:"\u25CA",spades:"\u2660",clubs:"\u2663",hearts:"\u2665",diams:"\u2666"},$k=/^[\da-fA-F]+$/,SC=/^\d+$/;XN.j_oTag=new UN("...",!0,!0),RN.jsxName=new NN("jsxName"),RN.jsxText=new NN("jsxText",{beforeExpr:!0}),RN.jsxTagStart=new NN("jsxTagStart",{startsExpr:!0}),RN.jsxTagEnd=new NN("jsxTagEnd"),RN.jsxTagStart.updateContext=function(){this.state.context.push(XN.j_expr),this.state.context.push(XN.j_oTag),this.state.exprAllowed=!1},RN.jsxTagEnd.updateContext=function(PC){var _C=this.state.context.pop();_C===XN.j_oTag&&PC===RN.slash||_C===XN.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===XN.j_expr):this.state.exprAllowed=!0};var TC=Tk.prototype;TC.jsxReadToken=function(){for(var PC="",_C=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var NC=this.input.charCodeAt(this.state.pos);switch(NC){case 60:case 123:return this.state.pos===this.state.start?60===NC&&this.state.exprAllowed?(++this.state.pos,this.finishToken(RN.jsxTagStart)):this.getTokenFromCode(NC):(PC+=this.input.slice(_C,this.state.pos),this.finishToken(RN.jsxText,PC));case 38:PC+=this.input.slice(_C,this.state.pos),PC+=this.jsxReadEntity(),_C=this.state.pos;break;default:S_(NC)?(PC+=this.input.slice(_C,this.state.pos),PC+=this.jsxReadNewLine(!0),_C=this.state.pos):++this.state.pos;}}},TC.jsxReadNewLine=function(PC){var _C=this.input.charCodeAt(this.state.pos),NC;return++this.state.pos,13===_C&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,NC=PC?"\n":"\r\n"):NC=String.fromCharCode(_C),++this.state.curLine,this.state.lineStart=this.state.pos,NC},TC.jsxReadString=function(PC){for(var _C="",NC=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var IC=this.input.charCodeAt(this.state.pos);if(IC===PC)break;38===IC?(_C+=this.input.slice(NC,this.state.pos),_C+=this.jsxReadEntity(),NC=this.state.pos):S_(IC)?(_C+=this.input.slice(NC,this.state.pos),_C+=this.jsxReadNewLine(!1),NC=this.state.pos):++this.state.pos}return _C+=this.input.slice(NC,this.state.pos++),this.finishToken(RN.string,_C)},TC.jsxReadEntity=function(){for(var PC="",_C=0,IC=this.input[this.state.pos],LC=++this.state.pos,NC;this.state.pos_C++;){if(IC=this.input[this.state.pos++],";"===IC){"#"===PC[0]?"x"===PC[1]?(PC=PC.substr(2),$k.test(PC)&&(NC=Kk(parseInt(PC,16)))):(PC=PC.substr(1),SC.test(PC)&&(NC=Kk(parseInt(PC,10)))):NC=Qk[PC];break}PC+=IC}return NC?NC:(this.state.pos=LC,"&")},TC.jsxReadWord=function(){var PC,_C=this.state.pos;do PC=this.input.charCodeAt(++this.state.pos);while(QP(PC)||45===PC);return this.finishToken(RN.jsxName,this.input.slice(_C,this.state.pos))},TC.jsxParseIdentifier=function(){var PC=this.startNode();return this.match(RN.jsxName)?PC.name=this.state.value:this.state.type.keyword?PC.name=this.state.type.keyword:this.unexpected(),this.next(),this.finishNode(PC,"JSXIdentifier")},TC.jsxParseNamespacedName=function(){var PC=this.state.start,_C=this.state.startLoc,NC=this.jsxParseIdentifier();if(!this.eat(RN.colon))return NC;var IC=this.startNodeAt(PC,_C);return IC.namespace=NC,IC.name=this.jsxParseIdentifier(),this.finishNode(IC,"JSXNamespacedName")},TC.jsxParseElementName=function(){for(var PC=this.state.start,_C=this.state.startLoc,NC=this.jsxParseNamespacedName();this.eat(RN.dot);){var IC=this.startNodeAt(PC,_C);IC.object=NC,IC.property=this.jsxParseIdentifier(),NC=this.finishNode(IC,"JSXMemberExpression")}return NC},TC.jsxParseAttributeValue=function(){var PC;switch(this.state.type){case RN.braceL:if(PC=this.jsxParseExpressionContainer(),"JSXEmptyExpression"===PC.expression.type)this.raise(PC.start,"JSX attributes must only be assigned a non-empty expression");else return PC;case RN.jsxTagStart:case RN.string:return PC=this.parseExprAtom(),PC.extra=null,PC;default:this.raise(this.state.start,"JSX value should be either an expression or a quoted JSX text");}},TC.jsxParseEmptyExpression=function(){var PC=this.startNodeAt(this.state.lastTokEnd,this.state.lastTokEndLoc);return this.finishNodeAt(PC,"JSXEmptyExpression",this.state.start,this.state.startLoc)},TC.jsxParseSpreadChild=function(){var PC=this.startNode();return this.expect(RN.braceL),this.expect(RN.ellipsis),PC.expression=this.parseExpression(),this.expect(RN.braceR),this.finishNode(PC,"JSXSpreadChild")},TC.jsxParseExpressionContainer=function(){var PC=this.startNode();return this.next(),PC.expression=this.match(RN.braceR)?this.jsxParseEmptyExpression():this.parseExpression(),this.expect(RN.braceR),this.finishNode(PC,"JSXExpressionContainer")},TC.jsxParseAttribute=function(){var PC=this.startNode();return this.eat(RN.braceL)?(this.expect(RN.ellipsis),PC.argument=this.parseMaybeAssign(),this.expect(RN.braceR),this.finishNode(PC,"JSXSpreadAttribute")):(PC.name=this.jsxParseNamespacedName(),PC.value=this.eat(RN.eq)?this.jsxParseAttributeValue():null,this.finishNode(PC,"JSXAttribute"))},TC.jsxParseOpeningElementAt=function(PC,_C){var NC=this.startNodeAt(PC,_C);for(NC.attributes=[],NC.name=this.jsxParseElementName();!this.match(RN.slash)&&!this.match(RN.jsxTagEnd);)NC.attributes.push(this.jsxParseAttribute());return NC.selfClosing=this.eat(RN.slash),this.expect(RN.jsxTagEnd),this.finishNode(NC,"JSXOpeningElement")},TC.jsxParseClosingElementAt=function(PC,_C){var NC=this.startNodeAt(PC,_C);return NC.name=this.jsxParseElementName(),this.expect(RN.jsxTagEnd),this.finishNode(NC,"JSXClosingElement")},TC.jsxParseElementAt=function(PC,_C){var NC=this.startNodeAt(PC,_C),IC=[],LC=this.jsxParseOpeningElementAt(PC,_C),RC=null;if(!LC.selfClosing){contents:for(;;)switch(this.state.type){case RN.jsxTagStart:if(PC=this.state.start,_C=this.state.startLoc,this.next(),this.eat(RN.slash)){RC=this.jsxParseClosingElementAt(PC,_C);break contents}IC.push(this.jsxParseElementAt(PC,_C));break;case RN.jsxText:IC.push(this.parseExprAtom());break;case RN.braceL:this.lookahead().type===RN.ellipsis?IC.push(this.jsxParseSpreadChild()):IC.push(this.jsxParseExpressionContainer());break;default:this.unexpected();}I_(RC.name)!==I_(LC.name)&&this.raise(RC.start,"Expected corresponding JSX closing tag for <"+I_(LC.name)+">")}return NC.openingElement=LC,NC.closingElement=RC,NC.children=IC,this.match(RN.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(NC,"JSXElement")},TC.jsxParseElement=function(){var PC=this.state.start,_C=this.state.startLoc;return this.next(),this.jsxParseElementAt(PC,_C)},$N.flow=function(PC){PC.extend("parseFunctionBody",function(_C){return function(NC,IC){return this.match(RN.colon)&&!IC&&(NC.returnType=this.flowParseTypeAnnotation()),_C.call(this,NC,IC)}}),PC.extend("parseStatement",function(_C){return function(NC,IC){if(this.state.strict&&this.match(RN.name)&&"interface"===this.state.value){var LC=this.startNode();return this.next(),this.flowParseInterface(LC)}return _C.call(this,NC,IC)}}),PC.extend("parseExpressionStatement",function(_C){return function(NC,IC){if("Identifier"===IC.type)if("declare"===IC.name){if(this.match(RN._class)||this.match(RN.name)||this.match(RN._function)||this.match(RN._var))return this.flowParseDeclare(NC);}else if(this.match(RN.name)){if("interface"===IC.name)return this.flowParseInterface(NC);if("type"===IC.name)return this.flowParseTypeAlias(NC)}return _C.call(this,NC,IC)}}),PC.extend("shouldParseExportDeclaration",function(_C){return function(){return this.isContextual("type")||this.isContextual("interface")||_C.call(this)}}),PC.extend("parseConditional",function(_C){return function(NC,IC,LC,RC,OC){if(OC&&this.match(RN.question)){var MC=this.state.clone();try{return _C.call(this,NC,IC,LC,RC)}catch(YC){if(YC instanceof SyntaxError)return this.state=MC,OC.start=YC.pos||this.state.start,NC;throw YC}}return _C.call(this,NC,IC,LC,RC)}}),PC.extend("parseParenItem",function(_C){return function(NC,IC,LC){if(NC=_C.call(this,NC,IC,LC),this.eat(RN.question)&&(NC.optional=!0),this.match(RN.colon)){var RC=this.startNodeAt(IC,LC);return RC.expression=NC,RC.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(RC,"TypeCastExpression")}return NC}}),PC.extend("parseExport",function(_C){return function(NC){return NC=_C.call(this,NC),"ExportNamedDeclaration"===NC.type&&(NC.exportKind=NC.exportKind||"value"),NC}}),PC.extend("parseExportDeclaration",function(_C){return function(NC){if(this.isContextual("type")){NC.exportKind="type";var IC=this.startNode();return this.next(),this.match(RN.braceL)?(NC.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(NC),null):this.flowParseTypeAlias(IC)}if(this.isContextual("interface")){NC.exportKind="type";var LC=this.startNode();return this.next(),this.flowParseInterface(LC)}return _C.call(this,NC)}}),PC.extend("parseClassId",function(_C){return function(NC){_C.apply(this,arguments),this.isRelational("<")&&(NC.typeParameters=this.flowParseTypeParameterDeclaration())}}),PC.extend("isKeyword",function(_C){return function(NC){return this.state.inType&&"void"===NC?!1:_C.call(this,NC)}}),PC.extend("readToken",function(_C){return function(NC){return this.state.inType&&(62===NC||60===NC)?this.finishOp(RN.relational,1):_C.call(this,NC)}}),PC.extend("jsx_readToken",function(_C){return function(){if(!this.state.inType)return _C.call(this)}}),PC.extend("toAssignable",function(_C){return function(NC,IC,LC){return"TypeCastExpression"===NC.type?_C.call(this,this.typeCastToParameter(NC),IC,LC):_C.call(this,NC,IC,LC)}}),PC.extend("toAssignableList",function(_C){return function(NC,IC,LC){for(var RC=0;RCWl($P,JP,ZP),JP)}const KP=ZP(Jb.from(WP));return Vx.propagateBreaks(KP),KP}}.printAstToDoc,MP={printDocToString:function(WP,JP,ZP){ZP=ZP||"\n";let KP=0,QP=[[0,$x,WP]],$P=[],S_=!1,T_=[];for(;0!==QP.length;){const __=QP.pop(),N_=__[0],I_=__[1],L_=__[2];if("string"==typeof L_)$P.push(L_),KP+=L_.length;else switch(L_.type){case"concat":for(var P_=L_.parts.length-1;0<=P_;P_--)QP.push([N_,I_,L_.parts[P_]]);break;case"indent":QP.push([N_+L_.n,I_,L_.contents]);break;case"group":switch(I_){case SS:if(!S_){QP.push([N_,L_.break?$x:SS,L_.contents]);break}case $x:S_=!1;const R_=[N_,SS,L_.contents];let O_=JP-KP;if(!L_.break&&Vd(R_,QP,O_))QP.push(R_);else if(L_.expandedStates){const M_=L_.expandedStates[L_.expandedStates.length-1];if(L_.break){QP.push([N_,$x,M_]);break}else for(var P_=1;P_=L_.expandedStates.length){QP.push([N_,$x,M_]);break}else{const Y_=L_.expandedStates[P_],V_=[N_,SS,Y_];if(Vd(V_,QP,O_)){QP.push(V_);break}}}else QP.push([N_,$x,L_.contents]);}break;case"if-break":I_===$x&&L_.breakContents&&QP.push([N_,I_,L_.breakContents]),I_===SS&&L_.flatContents&&QP.push([N_,I_,L_.flatContents]);break;case"line-suffix":T_.push([N_,I_,L_.contents]);break;case"line-suffix-boundary":0{null==JP[ZP]&&(JP[ZP]=PP[ZP])}),JP}}.normalize,VP={parseWithFlow:function(WP){const JP=NP.parse(WP,{esproposal_class_instance_fields:!0,esproposal_class_static_fields:!0,esproposal_export_star_as:!0});if(0 { + if (normalized[k] == null) { + normalized[k] = defaults[k]; + } + }); + + return normalized; +} + +var options = { normalize }; + +var flow_parser = createCommonjsModule(function (module, exports) { +// Generated by js_of_ocaml 2.8.1 +(function(aQ){"use strict";var +cL=104,gO="filter",d8=254,G=108,gN=956,fO="expressions",gz="Invalid_argument",bv="get",gZ="Identifier",an=16777215,dS="function",cN="variance",gM="exported",dI=65599,ft="jsError",gy="%ni",go=402,dP="consequent",f5=512,gx="&",gK="src/parser/expression_parser.ml",gL="(global)",gn="End_of_file",d4=120,gl="new",gm="Failure",dW="label",cS="local",fN="empty",bW="params",fD="shorthand",P=128,aJ="0",W=248,f4=-43,dO="constructor",aP="src/parser/spider_monkey_ast.ml",f3="yield",fC="Sys_blocked_io",f1=-53,f2="fd ",gw="superTypeParameters",gY=1023,f0="var",bQ=107,V="camlinternalFormat.ml",fM="Division_by_zero",fZ="0o",gk="elements",fs=-34,gi="each",gj="Sys_error",gJ=112,d7="decorators",fB="protected",fz=-97,fA=1114111,dH=-69,cH=1073741823,fy="%u",cU=105,dV="object",gI="%d",d6="method",cK=110,fL=57343,fK="'",fr="Unix",fY="Popping lex mode from empty stack",gh=218,a9="int_of_string",ce="operator",fX=-80,ci="from",a8="name",gg=810,d3=789,cX="e",cJ="returnType",a6="-",gf="callee",gv=-24,gH=-48,cg="async",dN="src/parser/statement_parser.ml",ge="*-/",cR="predicate",bR="set",dD="types",dG=" : file already exists",fW=109,cQ=240,bu="left",bh="right",d2=2048,fq=216,fJ=-66,X="body",cG="0x",cP="optional",fV="Out_of_memory",fp="\n",fU=101,gG=227,dC=32768,fT="index out of bounds",bP="typeof",gX="package",gF="Lookahead.peek failed",gd="%Li",K=255,cT=224,fo=199,fx="public",gc="loc",fI=65536,gu="enum",gt="in",d0="src/parser/lexer_flow.mll",d1="properties",bV="type",ck=250,cn=1024,bM="source",fw="interface",dZ="arguments",gW="module",a_="static",dY="declaration",cV=246,cf=102,gb="lexing: empty token",dB="generator",ch="init",dM=113,gV="infinity",gU="private",gE=122,cI="default",p="",gD="Stack_overflow",dF="exportKind",dR=-79,gs="instanceof",gT="Property",cW="implements",ae=100,av="argument",gC="Not_found",gr=-17,bU="src/parser/type_parser.ml",d5=103,bx="raw",fv="Match_failure",fS="alternate",gq=1e3,bO=".",bt="+",bg=65535,cm=106,bT="kind",ga="prefix",gB="superClass",fu="%li",gA="const",aK="typeParameters",fH="delete",fG="blocks",f$=252,B=127,dX="false",bL="key",bN="test",gS="mixins",a7=" ",dU="void",f9="RestElement",f_="Undefined_recursive_module",gp="let",bw=256,dK=":",dT="nan",cM=192,f8=116,bS="expression",gR=65520,Y="value",aZ="typeAnnotation",gQ=191,fF="minus",fR=56320,fE=245,dA="specifiers",cO="Set.bal",cj="/",gP="Assert_failure",dE="property",fP=114,fQ=949,cl="computed",f7="%i",aY="as",af="id",dJ="true",dQ="extends",f6="importKind",dL="null";function +hj(b,a){throw[0,b,a]}var +S=[0];function +HH(b,c){function +f(a){hj(S.Undefined_recursive_module,b);}function +e(b,c,a){if(typeof +b==="number")switch(b){case +0:c[a]={fun:f};break;case +1:c[a]=[cV,f];break;default:c[a]=[];}else +switch(b[0]){case +0:c[a]=[0];for(var +d=1;d=1;a--)e[c+a]=d[b+a];return 0}function +g3(e,f,d){var +a=new +Array(d+1);a[0]=0;for(var +b=1,c=f+1;b<=d;b++,c++)a[b]=e[c];return a}function +c_(d,e,c){var +b=new +Array(c);for(var +a=0;a=a.l||a.t==2&&c>=a.c.length)){a.c=d.t==4?ed(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);a.t=a.c.length==a.l?0:2;}else +if(a.t==2&&f==a.c.length){a.c+=d.t==4?ed(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);a.t=a.c.length==a.l?0:2;}else{if(a.t!=4)cZ(a);var +g=d.c,h=a.c;if(d.t==4)for(var +b=0;b>=1;if(b==0)return c;a+=a;d++;if(d==9)a.slice(0,1);}}function +a$(a){if(a.t==2)a.c+=b0(a.l-a.c.length,"\0");else +a.c=ed(a.c,0,a.c.length);a.t=0;}function +g_(a){if(a.length<24){for(var +b=0;bB)return false;return true}else +return!/[^\x00-\x7f]/.test(a)}function +Iz(e){for(var +j=p,c=p,g,f,h,a,b=0,i=e.length;bf5){c.substr(0,1);j+=c;c=p;j+=e.slice(b,d);}else +c+=e.slice(b,d);if(d==i)break;b=d;}a=1;if(++b=55295&&a<57344)a=2;}else{a=3;if(++bfA)a=3;}}}}}if(a<4){b-=a;c+="\ufffd";}else +if(a>bg)c+=String.fromCharCode(55232+(a>>10),fR+(a&gY));else +c+=String.fromCharCode(a);if(c.length>cn){c.substr(0,1);j+=c;c=p;}}return j+c}function +Iy(a){switch(a.t){case +9:return a.c;default:a$(a);case +0:if(g_(a.c)){a.t=9;return a.c}a.t=8;case +8:return Iz(a.c)}}function +aw(c,a,b){this.t=c;this.c=a;this.l=b;}aw.prototype.toString=function(){return Iy(this)};function +a(a){return new +aw(0,a,a.length)}function +ec(c,b){hj(c,a(b));}function +bz(a){ec(S.Invalid_argument,a);}function +HK(){bz(fT);}function +k(a,b){if(b>>>0>=a.length-1)HK();return a}function +HL(a){if(isFinite(a)){if(Math.abs(a)>=2.22507385850720138e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function +H2(a,b){var +c=a[3]<<16,d=b[3]<<16;if(c>d)return 1;if(cb[2])return 1;if(a[2]b[1])return 1;if(a[1]b.c?1:0}function +cY(a,b,h){var +d=[];for(;;){if(!(h&&a===b))if(a +instanceof +aw)if(b +instanceof +aw){if(a!==b){var +c=x(a,b);if(c!=0)return c}}else +return 1;else +if(a +instanceof +Array&&a[0]===(a[0]|0)){var +e=a[0];if(e===d8)e=0;if(e===ck){a=a[1];continue}else +if(b +instanceof +Array&&b[0]===(b[0]|0)){var +f=b[0];if(f===d8)f=0;if(f===ck){b=b[1];continue}else +if(e!=f)return e1)d.push(a,b,1);}}else +return 1}else +if(b +instanceof +aw||b +instanceof +Array&&b[0]===(b[0]|0))return-1;else +if(typeof +a!="number"&&a&&a.compare)return a.compare(b,h);else +if(typeof +a==dS)bz("equal: functional value");else{if(ab)return 1;if(a!=b){if(!h)return NaN;if(a==a)return 1;if(b==b)return-1}}if(d.length==0)return 0;var +g=d.pop();b=d.pop();a=d.pop();if(g+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=p;a.t=2;}else{a.c=b0(b,String.fromCharCode(d));a.t=b==a.l?0:2;}else{if(a.t!=4)cZ(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,p);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var +c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)p([+-]?[0-9]+)/i.exec(a);if(c){var +d=c[3].replace(/0+$/,p),f=parseInt(c[1]+c[2]+d,16),e=(c[4]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;aL("float_of_string");}function +eb(d){d=bX(d);var +e=d.length;if(e>31)bz("format_int: format too long");var +a={justify:bt,signstyle:a6,filler:a7,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var +c=0;c=0&&b<=9){a.width=a.width*10+b;c++;}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++;}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function +d9(b,f){if(b.uppercase)f=f.toUpperCase();var +e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=a6))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2;}var +c=p;if(b.justify==bt&&b.filler==a7)for(var +d=e;d=1e+21||c.toFixed(0).length>d){var +b=h-1;while(a.charAt(b)==aJ)b--;if(a.charAt(b)==bO)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==cX)a=a.slice(0,b-1)+aJ+a.slice(b-1);break}else{var +f=d;if(g<0){f-=g+1;a=c.toFixed(f);}else +while(a=c.toFixed(f),a.length>d+1)f--;if(f){var +b=a.length-1;while(a.charAt(b)==aJ)b--;if(a.charAt(b)==bO)b--;a=a.slice(0,b+1);}}break}return d9(e,a)}function +c0(e,c){if(bX(e)==gI)return a(p+c);var +b=eb(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c;}else +c>>>=0;var +d=c.toString(b.base);if(b.prec>=0){b.filler=a7;var +f=b.prec-d.length;if(f>0)d=b0(f,aJ)+d;}return d9(b,d)}var +In=0;function +a0(){return In++}function +HR(a,b){return+(cY(a,b,false)>=0)}if(!Math.imul)Math.imul=function(b,a){a|=0;return((b>>16)*a<<16)+(b&bg)*a|0};var +co=Math.imul;function +a1(b,a){a=co(a,3432918353|0);a=a<<15|a>>>32-15;a=co(a,461845907);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(3864292196|0)|0}function +HV(b,a){var +d=a[1]|a[2]<<24,c=a[2]>>>8|a[3]<<16;b=a1(b,c^d);return b}var +IE=Math.log2&&Math.log2(1.12355820928894744e+307)==1020;function +ID(a){if(IE)return Math.floor(Math.log2(a));var +b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++;}else +while(a<1){a*=2;b--;}return b}function +g5(a){if(!isFinite(a)){if(isNaN(a))return[K,1,0,gR];return a>0?[K,0,0,32752]:[K,0,0,gR]}var +f=a==0&&1/a==-Infinity?dC:a>=0?0:dC;if(f)a=-a;var +b=ID(a)+gY;if(b<=0){b=0;a/=Math.pow(2,-1026);}else{a/=Math.pow(2,b-1027);if(a<16){a*=2;b-=1;}if(b==0)a/=2;}var +d=Math.pow(2,24),c=a|0;a=(a-c)*d;var +e=a|0;a=(a-e)*d;var +g=a|0;c=c&15|f|b<<4;return[K,g,e,c]}function +HU(a,e){var +b=g5(e),d=b[1]|b[2]<<24,c=b[2]>>>8|b[3]<<16;a=a1(a,d);a=a1(a,c);return a}function +HX(d,b){var +e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=a1(d,c);}c=0;switch(e&3){case +3:c=b[a+2]<<16;case +2:c|=b[a+1]<<8;case +1:c|=b[a];d=a1(d,c);}d^=e;return d}function +HY(d,b){var +e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=a1(d,c);}c=0;switch(e&3){case +3:c=b.charCodeAt(a+2)<<16;case +2:c|=b.charCodeAt(a+1)<<8;case +1:c|=b.charCodeAt(a);d=a1(d,c);}d^=e;return d}function +HW(a,b){switch(b.t&6){default:a$(b);case +0:a=HY(a,b.c);break;case +2:a=HX(a,b.c);}return a}function +HT(a){a^=a>>>16;a=co(a,2246822507|0);a^=a>>>13;a=co(a,3266489909|0);a^=a>>>16;return a}var +g0=bw;function +HS(j,k,m,l){var +f,g,h,d,c,b,a,e,i;d=k;if(d<0||d>g0)d=g0;c=j;b=m;f=[l];g=0;h=1;while(g0){a=f[g++];if(a +instanceof +Array&&a[0]===(a[0]|0))switch(a[0]){case +248:b=a1(b,a[2]);c--;break;case +250:f[--g]=a[1];break;case +255:b=HV(b,a);c--;break;default:var +n=a.length-1<<10|a[0];b=a1(b,n);for(e=1,i=a.length;e=d)break;f[h++]=a[e];}break}else +if(a +instanceof +aw){b=HW(b,a);c--;}else +if(a===(a|0)){b=a1(b,a+a+1);c--;}else +if(a===+a){b=HU(b,a);c--;}}b=HT(b);return b&cH}function +H9(a){return[a[3]>>8,a[3]&K,a[2]>>16,a[2]>>8&K,a[2]&K,a[1]>>16,a[1]>>8&K,a[1]&K]}function +HZ(d,g,a){var +c=0;function +f(a){g--;if(d<0||g<0)return;if(a +instanceof +Array&&a[0]===(a[0]|0))switch(a[0]){case +248:d--;c=c*dI+a[2]|0;break;case +250:g++;f(a);break;case +255:d--;c=c*dI+a[1]+(a[2]<<24)|0;break;default:d--;c=c*19+a[0]|0;for(var +b=a.length-1;b>0;b--)f(a[b]);}else +if(a +instanceof +aw){d--;switch(a.t&6){default:a$(a);case +0:for(var +i=a.c,e=a.l,b=0;b=0;b--)c=c*19+j[b]|0;}}f(a);return c&cH}function +IA(e){for(var +f=p,b=f,a,h,c=0,g=e.length;cf5){b.substr(0,1);f+=b;b=p;f+=e.slice(c,d);}else +b+=e.slice(c,d);if(d==g)break;c=d;}if(a>6);b+=String.fromCharCode(P|a&63);}else +if(a<55296||a>=fL)b+=String.fromCharCode(cT|a>>12,P|a>>6&63,P|a&63);else +if(a>=56319||c+1==g||(h=e.charCodeAt(c+1))fL)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-56613888;b+=String.fromCharCode(cQ|a>>18,P|a>>12&63,P|a>>6&63,P|a&63);}if(b.length>cn){b.substr(0,1);f+=b;b=p;}}return f+b}function +bk(a){var +b=9;if(!g_(a))b=8,a=IA(a);return new +aw(b,a,a.length)}function +H0(a,c,k){if(!isFinite(a)){if(isNaN(a))return bk(dT);return bk(a>0?gV:"-infinity")}var +i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var +d=0;if(a==0);else +if(a<1)while(a<1&&d>-1022){a*=2;d--;}else +while(a>=2){a/=2;d++;}var +j=d<0?p:bt,e=p;if(i)e=a6;else +switch(k){case +43:e=bt;break;case +32:e=a7;break;default:break}if(c>=0&&c<13){var +g=Math.pow(2,c*4);a=Math.round(a*g)/g;}var +b=a.toString(16);if(c>=0){var +h=b.indexOf(bO);if(h<0)b+=bO+b0(c,aJ);else{var +f=h+1+c;if(b.length>24&an,a>>31&bg]}function +he(d){var +c=d.length,b=new +Array(c);for(var +a=0;a>24),e=a[3]-b[3]+(d>>24);return[K,c&an,d&an,e&bg]}function +d$(a,b){if(a[3]>b[3])return 1;if(a[3]b[2])return 1;if(a[2]b[1])return 1;if(a[1]>23;a[2]=(a[2]<<1|a[1]>>23)&an;a[1]=a[1]<<1&an;}function +H6(a){a[1]=(a[1]>>>1|a[2]<<23)&an;a[2]=(a[2]>>>1|a[3]<<23)&an;a[3]=a[3]>>>1;}function +g9(e,f){var +c=0,b=he(e),a=he(f),d=[K,0,0,0];while(d$(b,a)>0){c++;g6(a);}while(c>=0){c--;g6(d);if(d$(b,a)>=0){d[1]++;b=H8(b,a);}H6(a);}return[0,d,b]}function +H_(a){return a[1]|a[2]<<24}function +H4(a){return a[3]<<16<0}function +g7(a){var +b=-a[1],c=-a[2]+(b>>24),d=-a[3]+(c>>24);return[K,b&an,c&an,d&bg]}function +H3(g,c){var +a=eb(g);if(a.signedconv&&H4(c)){a.sign=-1;c=g7(c);}var +b=p,h=c1(a.base),f="0123456789abcdef";do{var +e=g9(c,h);c=e[1];b=f.charAt(H_(e[2]))+b;}while(!H5(c));if(a.prec>=0){a.filler=a7;var +d=a.prec-b.length;if(d>0)b=b0(d,aJ)+b;}return d9(a,b)}function +s(a){return a.l}function +ax(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case +0:return a.c.charCodeAt(b);case +4:return a.c[b]}}function +H1(a,b){var +c=a[1]+b[1],d=a[2]+b[2]+(c>>24),e=a[3]+b[3]+(d>>24);return[K,c&an,d&an,e&bg]}var +g8=Math.pow(2,-24);function +H7(a,b){var +c=a[1]*b[1],d=(c*g8|0)+a[2]*b[1]+a[1]*b[2],e=(d*g8|0)+a[3]*b[1]+a[2]*b[2]+a[1]*b[3];return[K,c&an,d&an,e&bg]}function +ea(a,b){return d$(a,b)<0}function +hg(c){var +a=0,d=s(c),b=10,e=d>0&&ax(c,0)==45?(a++,-1):1;if(a+1=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=gE)return a-87;return-1}function +c2(f){var +e=hg(f),d=e[0],i=e[1],g=e[2],h=c1(g),j=g9([K,an,268435455,bg],h)[1],c=ax(f,d),a=c7(c);if(a<0||a>=g)aL(a9);var +b=c1(a);for(;;){d++;c=ax(f,d);if(c==95)continue;a=c7(c);if(a<0||a>=g)break;if(ea(j,b))aL(a9);a=c1(a);b=H1(H7(h,b),a);if(ea(b,a))aL(a9);}if(d!=s(f))aL(a9);if(e[2]==10&&ea([K,0,0,dC],b))aL(a9);if(i<0)b=g7(b);return b}function +c3(a){return(a[3]<<16)*Math.pow(2,32)+a[2]*Math.pow(2,24)+a[1]}function +c4(f){var +h=hg(f),c=h[0],i=h[1],d=h[2],g=s(f),j=-1>>>0,e=c=d)aL(a9);var +a=b;for(c++;c=d)break;a=d*a+b;if(a>j)aL(a9);}if(c!=g)aL(a9);a=i*a;if(d==10&&(a|0)!=a)aL(a9);return a|0}function +Ia(a){return c_(a,1,a.length-1)}function +Ib(a){return!!a}function +Ic(a){return a.toString()}function +Id(b){var +c={};for(var +a=1;a>16;return c}function +g2(a){if(a.t!=4)cZ(a);return a.c}function +Ie(b,t,a){var +n=2,o=3,r=5,d=6,h=7,g=8,j=9,m=1,l=2,q=3,s=4,p=5;if(!b.lex_default){b.lex_base=ao(b[m]);b.lex_backtrk=ao(b[l]);b.lex_check=ao(b[p]);b.lex_trans=ao(b[s]);b.lex_default=ao(b[q]);}var +e,c=t,k=g2(a[n]);if(c>=0){a[h]=a[r]=a[d];a[g]=-1;}else +c=-c-1;for(;;){var +f=b.lex_base[c];if(f<0)return-f-1;var +i=b.lex_backtrk[c];if(i>=0){a[h]=a[d];a[g]=i;}if(a[d]>=a[o])if(a[j]==0)return-c-1;else +e=bw;else{e=k[a[d]];a[d]++;}c=b.lex_check[f+e]==c?b.lex_trans[f+e]:b.lex_default[c];if(c<0){a[d]=a[h];if(a[g]==-1)aL(gb);else +return a[g]}else +if(e==bw)a[j]=0;}}function +ha(c){var +b=0;for(var +a=c.length-1;a>=0;a--){var +d=c[a];b=[0,d,b];}return b}function +bA(a,d){var +a=a+1|0,b=new +Array(a);b[0]=0;for(var +c=1;c>>32-b,c)}function +g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function +h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function +i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function +j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function +k(f,n){var +e=n;f[e>>2]|=P<<8*(e&3);for(e=(e&~3)+8;(e&63)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&536870911;var +k=[1732584193,4023233417,2562383102,271733878];for(e=0;e>8*m&K;return o}return function(h,g,f){var +e=[];switch(h.t&6){default:a$(h);case +0:var +d=h.c;for(var +a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24;}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3);break;case +4:var +c=h.c;for(var +a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24;}for(;a>2]|=c[a+g]<<8*(a&3);}return hm(k(e,f))}}();function +a2(a){ec(S.Sys_error,a);}function +Ih(a){if(!a.opened)a2("Cannot flush a closed channel");if(a.buffer==p)return 0;if(a.output)switch(a.output.length){case +2:a.output(a,a.buffer);break;default:a.output(a.buffer);}a.buffer=p;return 0}var +hn=0;function +IG(){return new +Date().getTime()/gq}function +ee(){return Math.floor(IG())}function +bi(b){this.data=b;this.inode=hn++;var +a=ee();this.atime=a;this.mtime=a;this.ctime=a;}bi.prototype={truncate:function(){this.data=Z(0);this.modified();},modified:function(){var +a=ee();this.atime=a;this.mtime=a;}};var +HM=cj;function +by(){this.content={};this.inode=hn++;var +a=ee();this.atime=a;this.mtime=a;this.ctime=a;}by.prototype={exists:function(a){return this.content[a]?1:0},mk:function(b,a){this.content[b]=a;},get:function(a){return this.content[a]},list:function(){var +a=[];for(var +b +in +this.content)a.push(b);return a},remove:function(a){delete +this.content[a];}};var +c8=new +by();c8.mk(p,new +by());function +cq(c,d,a){if(S.fds===undefined)S.fds=new +Array();a=a?a:{};var +b={};b.file=d;b.offset=a.append?s(d.data):0;b.flags=a;S.fds[c]=b;S.fd_last_idx=c;return c}cq(0,new +bi(Z(0)));cq(1,new +bi(Z(0)));cq(2,new +bi(Z(0)));function +Ii(b){var +a=S.fds[b];if(a.flags.wronly)a2(f2+b+" is writeonly");return{file:a.file,offset:a.offset,fd:b,opened:true,refill:null}}function +IB(a){var +b=aQ;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +c=b.console;c&&c.error&&c.error(a);}}function +IC(a){var +b=aQ;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +c=b.console;c&&c.log&&c.log(a);}}var +c6=new +Array();function +Ir(b,h){var +g=a(h),c=s(g),f=s(b.file.data),e=b.offset;if(e+c>=f){var +d=Z(e+c);aA(b.file.data,0,d,0,f);aA(g,0,d,e,c);b.file.data=d;}b.offset+=c;b.file.modified();return 0}function +hb(a){var +b;switch(a){case +1:b=IC;break;case +2:b=IB;break;default:b=Ir;}var +d=S.fds[a];if(d.flags.rdonly)a2(f2+a+" is readonly");var +c={file:d.file,offset:d.offset,fd:a,opened:true,buffer:p,output:b};c6[c.fd]=c;return c}function +Ij(){var +a=0;for(var +b +in +c6)if(c6[b].opened)a=[0,c6[b],a];return a}function +hh(a){throw a}function +Ip(){hh(S.Division_by_zero);}function +hc(b,a){if(a==0)Ip();return b%a}function +If(d,a,c,f){for(;;){var +b=d.charCodeAt(a);a++;if(b==K)return;var +e=d.charCodeAt(a);a++;c[b+1]=e==K?f:c[e+1];}}function +g$(d,a,c){for(;;){var +b=d.charCodeAt(a);a++;if(b==K)return;var +e=d.charCodeAt(a);a++;c[b+1]=e==K?-1:c[e+1];}}function +Il(a,D,b){var +t=2,u=3,A=5,e=6,i=7,h=8,n=9,j=10,r=1,p=2,y=3,B=4,v=5,s=6,q=7,z=8,C=9,w=10,x=11;if(!a.lex_default){a.lex_base=ao(a[r]);a.lex_backtrk=ao(a[p]);a.lex_check=ao(a[v]);a.lex_trans=ao(a[B]);a.lex_default=ao(a[y]);}if(!a.lex_default_code){a.lex_base_code=ao(a[s]);a.lex_backtrk_code=ao(a[q]);a.lex_check_code=ao(a[w]);a.lex_trans_code=ao(a[C]);a.lex_default_code=ao(a[z]);}if(a.lex_code==null)a.lex_code=bX(a[x]);var +d,c=D,o=g2(b[t]);if(c>=0){b[i]=b[A]=b[e];b[h]=-1;}else +c=-c-1;for(;;){var +g=a.lex_base[c];if(g<0){var +f=a.lex_base_code[c];g$(a.lex_code,f,b[j]);return-g-1}var +l=a.lex_backtrk[c];if(l>=0){var +f=a.lex_backtrk_code[c];g$(a.lex_code,f,b[j]);b[i]=b[e];b[h]=l;}if(b[e]>=b[u])if(b[n]==0)return-c-1;else +d=bw;else{d=o[b[e]];b[e]++;}var +k=c;c=a.lex_check[g+d]==c?a.lex_trans[g+d]:a.lex_default[c];if(c<0){b[e]=b[i];if(b[h]==-1)aL(gb);else +return b[h]}else{var +m=a.lex_base_code[k],f;f=a.lex_check_code[m+d]==k?a.lex_trans_code[m+d]:a.lex_default_code[k];if(f>0)If(a.lex_code,f,b[j],b[e]);if(d==bw)b[n]=0;}}}function +bZ(a,b){return+(cY(a,b,false)!=0)}function +Im(b,a){b[0]=a;return 0}function +hf(a){return a +instanceof +Array?a[0]:a +instanceof +aw?f$:gq}function +aM(c,b,a){S[c+1]=b;if(a)S[a]=b;}var +hd={};function +Iq(a,b){hd[bX(a)]=b;return 0}function +ai(a,b){a.t&6&&a$(a);b.t&6&&a$(b);return a.c==b.c?1:0}function +hl(){bz(fT);}function +_(b,a){if(a>>>0>=b.l)hl();return ax(b,a)}function +c(a,b){return 1-ai(a,b)}function +Q(a,c,b){b&=K;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}cZ(a);}a.c[c]=b;return 0}function +cp(b,a,c){if(a>>>0>=b.l)hl();return Q(b,a,c)}function +Is(){return 2147483647/4|0}function +It(){return 0}function +Iv(){return[0,a(fr),32,0]}function +Io(){hh(S.Not_found);}function +c9(c){var +a=aQ,b=c.toString();if(a.process&&a.process.env&&a.process.env[b]!=undefined)return bk(a.process.env[b]);Io();}function +Ix(){var +a=new +Date()^4294967295*Math.random();return[0,a]}function +hk(a){return a}function +Ik(a){return hd[a]}function +aj(a){if(a +instanceof +Array)return a;if(aQ.RangeError&&a +instanceof +aQ.RangeError&&a.message&&a.message.match(/maximum call stack/i))return hk(S.Stack_overflow);if(aQ.InternalError&&a +instanceof +aQ.InternalError&&a.message&&a.message.match(/too much recursion/i))return hk(S.Stack_overflow);if(a +instanceof +aQ.Error)return[0,Ik(ft),a];return[0,S.Failure,bk(String(a))]}function +b(a,b){return a.length==1?a(b):bj(a,[b])}function +f(a,b,c){return a.length==2?a(b,c):bj(a,[b,c])}function +u(a,b,c,d){return a.length==3?a(b,c,d):bj(a,[b,c,d])}function +bs(a,b,c,d,e){return a.length==4?a(b,c,d,e):bj(a,[b,c,d,e])}function +cd(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):bj(a,[b,c,d,e,f])}var +c$=[W,a(gm),-3],ef=[W,a(gz),-4],ah=[W,a(gC),-7],t=[W,a(gP),-11],en=[0,a(p),1,0,0],dk=[0,0,0],as=[0,a('\0\0\xb2\xff\xb3\xff\xb9\xffB\0C\0T\0W\0F\0I\0J\0K\0M\0e\0\xdd\xff\xde\xff\xdf\xff\xe0\xff\xe3\xff\xe4\xff\xe5\xff\xe6\xff\xe7\xff\xe8\xff\xc0\0L\0e\0\x17\x01n\x01\xf6\xff\xf7\xffl\0u\0v\0\0\0\x0e\0\x0f\0\x07\x003\x01\xfe\xff\xff\xff\x01\0\x12\0(\0\f\0\x15\0*\0\f\0=\0-\0\t\0\xb6\xff\xf9\xff\xe0\x01B\0u\0\x0f\x000\x004\0\x17\0\xe5\x01(\x008\0\x1a\0K\0:\0\x17\0\xfb\xffh\0a\0\xac\0q\0m\0y\0q\0i\0{\0{\0\xa8\0\xca\xff\xfa\xff\xc9\xff\xf8\xff\x0b\x02\xa5\x02\xfc\x02S\x03\xaa\x03\x01\x04X\x04\xaf\x04\x06\x05]\x05\xb4\x05\x0b\x06b\x06\xb9\x06\xc3\x01\x10\x07g\x07\xbe\x07\x15\bl\b\xc3\b\x1a\tq\t\xc8\t\xb8\0\xe2\xffE\x02\xc7\xff\xdc\xff\xc6\xff\xdb\xff\xb7\xff\xaa\0\xda\xff\xab\0\xd9\xff\xac\0\xd8\xff\xd2\xff\xad\0\xd7\xff\xb0\0\xd0\xff\xcf\xff\xcc\xff\xd4\xff\xcb\xff\xd3\xff\xc8\xff\xc5\xff:\n\xcc\xff\xcd\xff\xcf\xff\xd3\xff\xb0\0\xd9\xff\xda\xff\xdd\xff\xde\xff\xdf\xff\xe0\xff\xe3\xff\xe4\xff~\0\xe7\xff\x80\0\xe9\xff\xea\xff\x9a\0\x94\n\xfa\n\xd6\x01Q\x0b\xa8\x0b\x1a\f\xf9\xff\xcf\0\xf1\0D\0\x9c\0\x9d\0\xa3\0\xc4\x0b\xff\xff\x83\0\xc1\0\xd1\0\xf9\0\xb4\0\xc4\0\xa7\0\xcb\t\xd4\0\x96\0\xfa\xff\x1f\f\xea\0\x1d\x01\xb7\0\xf3\0\xf4\0\xfa\0$\f\xe9\0\x15\x01\xf7\0\xdf\x0b\x17\x01\xd9\0\xfc\xff,\x01&\x01{\x01@\x01<\x01H\x01@\x018\x01J\x01d\x01\xfb\xff\xf3\x01\x0f\x01K\x01j\x01c\x01K\f>\x01N\x01P\x01\xec\x0bp\x01?\x01x\f\xff\fV\r\xad\r\0\x02\x04\x0e[\x0e\xb2\x0e\t\x0f`\x0f\xb7\x0f\x0e\x10e\x10\xbc\x10\x13\x11j\x11\xc1\x11\x18\x12o\x12\xc6\x12\x1d\x13t\x13\xcb\x13"\x14\xd1\x01\xe2\xffy\x14\xd0\x14\'\x15~\x15\x99\x01\x9d\x01\xad\x01\xa6\x01\x9f\x01\xeb\xff\xe6\xff\xe5\xff\xd1\xff\x1b\f\xfc\xff\xfd\xff\xfe\xff\xff\xff\xcf\x15\xee\xff\x01\0\xef\xff\x18\x16\xf4\xff\xf5\xff\xf6\xff\xf7\xff\xf8\xff\xf9\xff\xf1\x02H\x03>\x16\xfe\xff\xff\xffU\x16\xfd\xff\x9f\x03\xfc\xff{\x16\x92\x16\xb8\x16\xcf\x16\xf2\xff\xf5\x16\xf1\xff\xd7\x02\xfb\xff\xea\x01\xfe\xff\xff\xff\xe4\x01\xfd\xff\xfc\xff;\x02\xfd\xff\xfe\xff\xff\xff\0\x17\xf9\xff\xee\x01`\x01\x9c\x01\xa0\x01*\x02)\fC\x15\xfe\xff\xff\xffc\x01\xad\x01\xc7\x01+\x02\xa0\x01\xba\x01\xaa\x01\x87\x15\xca\x01\xa7\x01\xfb\xff\xfc\xff\x0b\x16\xf8\xff\x04\0\xf9\xff\xfa\xff8\x17,\x03\xff\xff\xfd\xff\x05\0\xfe\xff\xc0\x17\x96\t\xfb\xff\xfc\xff\x0b\x02\xff\xff\xfd\xff\xfe\xff2\x18\xf1\xff\xf2\xff\x8a\x18\xf4\xff\xf5\xff\xf6\xff\xf7\xff\xf8\xff\xfa\xffv\x02\xb0\x01!\x02"\x023\x02\x88\x167\x18\xfe\xff\xff\xff\x05\x02L\x02_\x02\xf3\x02@\x02Q\x02C\x02\xbd\x16c\x02%\x02\xfb\xff\xfc\xff|\f\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x06\0\xff\xff\xfc\x18\xf9\xff\xf8\x18\x07\0\xfd\xff\xfe\xff\xff\xffO\x19\xdf\n_\f\x84\x17\x9c\x19\xfc\xff\xfb\xff\xd3\x19\xfa\xff*\x1a\x81\x1a\xd8\x1a/\x1b\x86\x1b\xaa\x02\xf8\x1b\xfa\xff\xfb\xff\xd6\x02G\x02\x83\x02\xa9\x02J\x03\x04\x19K\x1b\xff\xffp\x02\xb7\x02\xd7\x02\x8d\x03\xaa\x02\xba\x02\x9d\x02\xc9\x16\xd9\x02\x9b\x02\xfc\xff\xfd\xff\xc3\x16\xf9\xff\xfa\xff\b\0\xfc\xff\xe1\x02\xfe\xff\xff\xff\xfd\xff\xfb\xff'),a("\xff\xff\xff\xff\xff\xff\xff\xffD\0A\0>\0=\0<\0;\0E\0G\0B\0C\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\0K\0\x1e\0\x15\0\x15\0\xff\xff\xff\xffM\0?\0J\0M\0M\0M\0M\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff@\0\xff\xff\xff\xff\xff\xff\xff\xff\x14\0\x14\0\x15\0\x14\0\x0f\0\x14\0\x14\0\x0b\0\n\0\r\0\f\0\x0e\0\x0e\0\x0e\0\xff\xff\x0e\0\x0e\0\x13\0\x12\0\x11\0\x10\0\x15\0\x13\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff)\0\xff\xff*\0\xff\xff.\0\xff\xff\xff\xff2\0\xff\xff1\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff+\0\xff\xff\x17\0\xff\xff\xff\xff3\0\x13\0\x13\0\x1e\0\x12\0\x12\x001\0\xff\xff)\x003\x003\x003\x003\x003\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\0\x11\0\x11\0\x10\0\xff\xff\x10\0\x0f\0\x0f\0\x12\0\x11\0\f\0\x11\0\x11\0\b\0\x07\0\n\0\t\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0e\0\r\0\xff\xff\xff\xff\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x0f\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\f\0\x05\0\x0f\0\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\0\x06\0\x06\0\x06\0\x06\0\x02\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\x04\0\x07\0\xff\xff\xff\xff\x01\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\f\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\0\x0e\0\x0e\0\x0e\0\x0e\0\x02\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\x06\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\0\x05\0\x05\0\x05\0\x05\0\x01\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\0\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\xff\xff"),a("\x01\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\x06\x01\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0!\x01\0\0\xff\xff\0\0\0\0\xff\xff\0\0\0\0)\x01\0\0\0\0\0\0-\x01\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0D\x01\0\0\xff\xff\0\0\0\0\xff\xffK\x01\0\0\0\0\xff\xff\0\0\xff\xffP\x01\0\0\0\0\xff\xff\0\0\0\0\0\0W\x01\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0v\x01\0\0\0\0\0\0\0\0\xff\xff\0\0}\x01\0\0\xff\xff\xff\xff\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x01\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xaa\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0"),a("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0(\0\b\x01&\0&\0F\x01M\x01{\x01\x80\x01\xb2\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\n\0\x1e\0\x1f\0\x18\0\x05\0\r\0\x1e\0\x15\0\x14\0 \0\x07\0\x10\0\x06\0\x1a\0!\0\x1c\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x0f\0\x11\0\t\0\x0b\0\b\0\x0e\0\x19\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x13\0'\0\x12\0\x04\0\x18\0\x1d\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x17\0\f\0\x16\0\x03\0\x84\0\x83\0\x82\0\x80\0{\0z\0w\0x\0u\0s\0r\0p\0o\0m\0R\x001\x000\0/\0\x81\x001\0k\0\x7f\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0N\x005\0.\0n\0&\0P\x004\0.\0-\x000\0/\0&\0&\0-\0&\0D\0C\0A\0>\0O\x003\0@\0?\0<\0=\0<\0<\0<\x002\x002\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0q\0B\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0E\0F\0G\0H\0I\0J\0K\0L\0M\0C\0%\0$\0#\0\x18\0Q\0l\0t\0v\0y\0}\0|\0&\0~\0\xff\0\"\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0<\0\xfe\0\xfd\0\xf7\0\xcc\0\xb1\0\x02\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\xb3\0\xb0\0\xaf\0\xae\0\x18\0\xb2\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0S\0&\0\xad\0\xb1\0&\0&\0\xb0\0\xa6\0\xac\0\xa6\0U\0\xa6\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\xaf\0\xae\0&\0\xa6\0\xa6\0\xc2\0\xc1\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xc0\0\xbf\0\xbe\0\xbd\0S\0\xba\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xad\0\xbc\0\xba\0\xba\0\xba\0\xba\0\xac\0\xbb\0\xc3\0U\0\xc4\0W\0W\0W\0W\0W\0W\0W\0W\0\x1b\0\x1b\0\xc5\0\xc6\0\xc7\0\xc8\0\xc9\0\xca\0\xcb\0S\0Y\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0X\0S\0S\0S\0S\0S\0S\0S\0S\0V\0S\0S\0\xc1\0\xd8\0\xd7\0\xd2\0S\0\xd2\0S\0Y\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0X\0S\0S\0S\0S\0S\0S\0S\0S\0V\0S\0S\0<\0\xd6\0\xd5\0<\0<\0<\0\xd2\0\xd2\0<\0<\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xd4\0\xd2\0\xf2\0<\0\xf8\0\xf9\0\xd3\0\xf1\0<\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xfa\0\xfb\0\xfc\0'\x01,\0+\0*\0%\x01A\x01&\x017\0@\x01?\x01B\x01@\x017\0>\x01=\x01)\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0?\x013\x01S\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\x003\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0*\x016\0>\x01=\x013\x013\x016\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\x003\x01U\x01T\x01\x18\0S\0r\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0s\x01q\x01p\x01o\x01\x18\0t\x01\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0r\x01;\0:\x009\0<\x01<\x01;\0:\x009\0S\0;\x01;\x01q\x01n\x01e\x018\0a\0e\x01a\0m\x018\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0p\x01o\x01#\x01e\x01e\x01e\x01\x8b\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xa7\x01\"\x01\xa6\x01\xa5\x01S\0\xa8\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\xa4\x01\xa3\x01\xa6\x01h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0M\x01\xa5\x01\x9a\x01L\x01\x9a\x01+\x01\x9a\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\xa4\x01\xa3\x01\x9a\x01\x9a\x01S\0\xb1\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\0\0\0\0\0\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0n\x01\0\0\0\0\0\0\0\0\0\0m\x01f\0f\0f\0f\0f\0f\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0f\0f\0f\0f\0f\0f\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0_\0\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01$\x01U\0\0\0W\0W\0W\0W\0W\0W\0W\0W\0^\0^\0\xa2\x01\0\0\0\0\0\0\0\0\0\0\xa1\x01_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0S\0\0\0\xa2\x01\0\0\0\0\0\0\0\0\xff\xff\xa1\x01\0\0\0\0\0\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0S\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\0Z\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\0Z\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0[\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\0\0\0\0\0\0\0\0[\0\0\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0]\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0]\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\0\0\0\0\0\0\0\0]\0\0\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\0\0\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0`\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0\0\0\0\0a\0\0\0a\0\0\0\0\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\0\0\0\0\0\0\0\0_\0\0\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0c\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\0\0\0\0\0\0\0\0c\0\0\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0e\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0e\0\0\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0f\0f\0f\0f\0f\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0g\0\0\0f\0f\0f\0f\0f\0f\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0g\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0\0\0\0\0\0\0\0\0S\0\0\0S\0S\0S\0S\0T\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0j\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0j\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0\0\0R\x01Q\x01\0\0\0\0\0\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\0\0\0\0\0\0\0\0j\0\0\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\xa6\0\xa7\0\0\0\xa6\0\xa6\0\0\0\0\0\0\0\xa6\0\xa6\0\xa6\0\xa6\0\xa6\0\xa6\0\xa6\0\xa6\0\xa6\0\xa6\0\xa6\0\0\0\0\0\0\0\0\0\xa6\0\0\0\x9f\0\0\0\x99\0\x98\0\x89\0\x9f\0\x92\0\x91\0\xa0\0\x88\0\x8f\0\x9e\0\x9b\0\xa1\0\x9d\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x8e\0\x90\0\x8c\0\x8a\0\x8b\0\x8d\0\xa6\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x97\0S\x01\x96\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x9a\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x95\0\x93\0\x94\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\0\0\0\0\xa5\0\xa4\0\xa3\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa2\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\x87\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\x86\x01\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xf3\0\x99\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe1\0\0\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xda\0\xda\0\xda\0\xda\0\xdb\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xda\0\xda\0\xda\0\xdb\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xa6\0\0\0\0\0\xa6\0\xa6\0\0\0\0\0\0\0\0\0\xe1\0\0\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\x9c\0\x9c\0\0\0\0\0\xa6\0\0\0\0\0\0\0\0\0\xda\0\xe5\0\xda\0\xda\0\xdb\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xe4\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xe2\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xe5\0\xda\0\xda\0\xdb\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xe4\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xe2\0\xda\0\xda\0\xd2\0\0\0\x02\x01\xd2\0\xd2\0\xba\0\0\0\0\0\xba\0\xba\0\xba\0\0\0\0\0\xba\0\xba\x003\x01\0\0\0\x003\x013\x01\0\0\0\0\0\0\xd2\0\0\0\0\0\x04\x01\0\0\xba\0\0\0\0\0\x04\x01\0\0\xba\0\0\0\0\0\0\0\xcd\x003\x01\x9d\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\xd2\0\0\0\0\0\xd2\0\xd2\0\xb5\0\0\0\0\0\0\0\0\0\xb5\0\xba\0\xba\0\xba\0\xba\0\xba\0\xba\0\xba\0\xba\0\xba\0\xba\0\xba\0\0\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\x03\x01\0\0\xcd\0\0\0\x9d\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\xb4\0{\x01\0\0\0\0z\x01\xb4\0\0\0\0\0\0\0\xba\0\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\0\0\x89\x01\xd2\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xab\0\xaa\0\xa9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\0\0\xa8\0\0\0\0\0\0\0\0\0x\x01\xda\0\xda\0\xda\0\xda\0\xdb\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xda\0\xda\0\xda\0\xdb\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0w\x01\0\0\0\0\0\0\xd1\0\xd0\0\xcf\0\0\0\0\0\xb9\0\xb8\0\xb7\0\0\0\0\0\xb9\0\xb8\0\xb7\0\0\0\xce\0:\x019\x018\x01\0\0\xb6\0\0\0\0\0\0\0\0\0\xb6\0\0\0\0\0\0\0\0\x007\x01\0\0\0\0\x02\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd1\0\xd0\0\xcf\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\xce\0\0\0\0\0\0\0\0\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0y\x01\0\0\0\0\0\0\0\0\xdd\0\0\0\xdd\0\0\0\0\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xe0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\0\0\0\0\0\0\0\0\xe0\0\0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xdf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\0\0\0\0\0\0\0\0\xdf\0\0\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\0\0\0\0\0\0\0\0\xdf\0\0\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xe0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\0\0\0\0\0\0\0\0\xe0\0\0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xeb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe1\0\0\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xea\0\xea\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xec\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\0\0\0\0\0\0\0\0\xeb\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xec\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xda\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe6\0\xe6\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\0\0\0\0\0\0\0\0\xda\0\0\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xe7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe6\0\xe6\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\xe7\0\0\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\xe7\0\0\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe9\0\xe9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\0\0\0\0\0\0\0\0\xe9\0\0\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\0\0\0\0\0\0\0\0\xe9\0\0\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xeb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe1\0\0\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xec\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\0\0\0\0\0\0\0\0\xeb\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xec\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\0\0\0\0\0\0\0\0\xeb\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\0\0\0\0\0\0\0\0\0\0\0\0\xdd\0\0\0\xdd\0\0\0\0\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\0\0\0\0\0\0\0\0\xeb\0\0\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xee\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\0\0\0\0\0\0\0\0\xee\0\0\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\0\0\0\0\0\0\0\0\xee\0\0\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\xf0\0\0\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xf4\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\xf5\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\x003\x015\x01\0\x003\x013\x01\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\x003\x01\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xf6\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\b\x01\0\0\0\0\x07\x01\x99\0\0\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x013\x01\0\0\0\0\0\0F\x01\0\0\0\0E\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\x019\x018\x01\0\0\0\0\0\0\0\0\x13\x01\0\0\0\0\0\0\0\0\0\0\x0f\x017\x01\0\0\0\0\x0e\x013\x01\0\0\0\0\0\0H\x01\0\0\0\0\r\x01\0\0\0\0\0\0\f\x01\0\0\x0b\x01\t\x01\n\x01\0\0\x12\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0G\x01I\x01\0\0\0\0\0\0\0\0\0\0\0\0\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\0\0\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\0\0\0\0e\x01\0\0\x19\x01e\x01e\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\0\0\0\0\0\0\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\0\0\0\0\0\0e\x01\0\0\0\0\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\0\0\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x16\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\0\0\xab\x01\0\0\x14\x01\xac\x01\0\0\0\0\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\0\0\0\0\0\0\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\0\0\0\0\0\0\0\0\0\0\xae\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\0\0\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x013\x015\x01J\x013\x014\x01\0\0\0\0\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\0\0\0\0\0\0\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\xad\x013\x01\0\0\0\0\xaf\x01\0\0\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01.\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\0\0e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01e\x01\0\0\x9a\x01\x9a\x01\x9a\x01\x9a\x01\x9a\x01\x9a\x01\x9a\x01\x9a\x01\x9a\x01\x9a\x01\x9a\x01\0\0\0\0\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01N\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l\x01k\x01j\x01e\x01\0\0\0\0\0\0\0\0\0\0\x1f\x01\0\0\0\0\0\0\0\0i\x01\x9a\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\0\0\0\0\0\0\0\0N\x01\0\0N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\0\0\0\0\0\0\xb0\x01\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\x011\x010\x01N\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x006\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\0\0\0\0\0\0\0\0N\x01\0\0N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01e\x01g\x01\0\0e\x01f\x01e\x01g\x01\0\0e\x01e\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\x01\0\0X\x01\0\0Y\x01e\x01\0\0X\x01\0\0\0\0\0\0\0\0\0\0\0\0[\x01`\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\x01\0\0_\x01Z\x01^\x01\0\0\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\0\0\0\0\0\0Y\x01\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01]\x01Y\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\x01\0\0\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\0\0\0\0\0\0Y\x01\0\0Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\0\0\x80\x01\0\0\0\0\x7f\x01\0\0\0\0\0\0\x9a\x01\0\0\0\0\x9a\x01\x9a\x01\0\0d\x01c\x01b\x01\0\0\0\0l\x01k\x01j\x01\x84\x01\x83\x01\0\0\x82\x01\0\0\0\0a\x01~\x01\x82\x01\x9a\x01\0\0i\x01\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01h\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\x83\x01\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x8a\x01\0\0\0\0\0\0\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\0\0\0\0\0\0\0\0\x8a\x01\0\0\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\0\0\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\x88\x01\0\0\0\0\0\0\0\0\0\0\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\0\0\0\0\xa0\x01\x9f\x01\x9e\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\x8c\x01\0\0\0\0\0\0\0\0\x81\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8e\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\0\0\0\0\0\0\0\0\x8e\x01\0\0\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8f\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\0\0\0\0\0\0\0\0\x8f\x01\0\0\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x90\x01\x9a\x01\x9c\x01\0\0\x9a\x01\x9a\x01\0\0\0\0\0\0\0\0\0\0\0\0\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\0\0\x8b\x01\x9a\x01\0\0\0\0\0\0\0\0\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\0\0\0\0\0\0\0\0\x90\x01\0\0\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x91\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\0\0\0\0\0\0\0\0\x91\x01\0\0\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x91\x01\x9a\x01\x9c\x01\0\0\x9a\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9a\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\xa0\x01\x9f\x01\x9e\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\x01\x98\x01\x97\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x96\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff"),a('\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x07\x01\0\0\0\0E\x01L\x01z\x01\x7f\x01\xac\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\x05\0\x06\0\x07\0\b\0\b\0\t\0\t\0\n\0\x0b\0\x0b\0\f\0\r\0\x19\0\x1f\0#\0$\0$\0\x06\0*\0\x1a\0\x07\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0 \0!\0%\0\r\0-\0 \0!\0,\0%\0+\0+\0.\0/\0,\x001\x006\x007\x009\0;\0 \0!\0:\0:\0=\0;\0>\0?\0A\0"\0)\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x002\0\f\x008\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0B\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0\0\0\0\0\0\0\x18\0N\0k\0s\0u\0w\0z\0z\x000\0|\0\x8a\0\0\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0@\0\x93\0\x95\0\x98\0\xa0\0\xa2\0\0\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\xa1\0\xa3\0\xa4\0\xa4\0\x18\0\xa1\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x1b\0&\0\xa5\0\xa8\0&\0&\0\xa9\0\xac\0\xa5\0\xad\0\x1b\0\xae\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\xaa\0\xaa\0&\0\xb0\0\xb1\0\xb4\0\xb5\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\xb6\0\xb7\0\xb8\0\xb8\0\x1b\0\xbb\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1c\0\xab\0\xb9\0\xbc\0\xbd\0\xbf\0\xc0\0\xab\0\xb9\0\xc2\0\x1c\0\xc3\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\xc4\0\xc5\0\xc6\0\xc7\0\xc8\0\xc9\0\xca\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\xcb\0\xce\0\xcf\0\xd3\0\x1c\0\xd4\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\x005\0\xd0\0\xd0\x005\x005\0<\0\xd5\0\xd7\0<\0<\0a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\xd1\0\xd8\0\xf1\x005\0\xf7\0\xf8\0\xd1\0\x9b\0<\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\xf9\0\xfa\0\xfb\0%\x01&\0&\0&\0"\x01.\x01"\x015\0/\x010\x01.\x017\x01<\x001\x011\x01&\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\x008\x01;\x01S\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0<\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0(\x015\x009\x019\x01=\x01?\x01<\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0@\x01R\x01R\x01m\0S\0a\x01S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0`\x01b\x01c\x01c\x01m\0`\x01m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0i\x015\x005\x005\x002\x01:\x01<\0<\0<\0T\x002\x01:\x01j\x01d\x01m\x015\0T\0n\x01T\0d\x01<\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0k\x01k\x01 \x01o\x01q\x01r\x01\x91\x01T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0\x95\x01 \x01\x96\x01\x97\x01T\0\x95\x01T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0U\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x98\x01\x98\x01\x9d\x01U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0I\x01\x9e\x01\xa1\x01I\x01\xa2\x01(\x01\xa3\x01U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0\x9f\x01\x9f\x01\xa5\x01\xa6\x01U\0\xae\x01U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0V\0\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\xff\xff\xff\xff\xff\xffV\0V\0V\0V\0V\0V\0V\0V\0V\0V\0l\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffl\x01V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0\xff\xff\xff\xff\xff\xff\xff\xffV\0\xff\xffV\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0W\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01 \x01W\0\xff\xffW\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\x99\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x01W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xff\xff\xff\xff\xff\xff\xffW\0\xff\xffW\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0X\0\xff\xff\xa0\x01\xff\xff\xff\xff\xff\xff\xff\xffI\x01\xa0\x01\xff\xff\xff\xff\xff\xffX\0X\0X\0X\0X\0X\0X\0X\0X\0X\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffX\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0\xff\xff\xff\xff\xff\xff\xff\xffX\0\xff\xffX\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0Y\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffY\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffY\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0\xff\xff\xff\xff\xff\xff\xff\xffY\0\xff\xffY\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffZ\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffZ\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0\xff\xff\xff\xff\xff\xff\xff\xffZ\0\xff\xffZ\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0[\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\xff\xff\xff\xff\xff\xff\xff\xff[\0\xff\xff[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0\\\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\xff\xff\xff\xff\xff\xff\xff\xff\\\0\xff\xff\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0]\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0\xff\xff\xff\xff\xff\xff\xff\xff]\0\xff\xff]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0]\0^\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff^\0\xff\xff^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0\xff\xff\xff\xff\xff\xff\xff\xff^\0\xff\xff^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0_\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0\xff\xff\xff\xff\xff\xff\xff\xff_\0\xff\xff_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0_\0`\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff`\0\xff\xff`\0\xff\xff\xff\xff`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xff\xff\xff\xff\xff\xff\xff\xff`\0\xff\xff`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffb\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffb\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0\xff\xff\xff\xff\xff\xff\xff\xffb\0\xff\xffb\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0c\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffc\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffc\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xff\xff\xff\xff\xff\xff\xff\xffc\0\xff\xffc\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0d\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffd\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffd\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xff\xff\xff\xff\xff\xff\xff\xffd\0\xff\xffd\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0e\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffe\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffe\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xff\xff\xff\xff\xff\xff\xffe\0\xff\xffe\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0f\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfff\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfff\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\xff\xff\xff\xff\xff\xff\xff\xfff\0\xff\xfff\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0g\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffg\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffg\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xff\xff\xff\xff\xff\xff\xff\xffg\0\xff\xffg\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0h\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffh\0h\0h\0h\0h\0h\0h\0h\0h\0h\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffh\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\xff\xffh\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0i\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffi\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffi\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\xff\xff\xff\xff\xff\xff\xff\xffi\0\xff\xffi\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0j\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffO\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xffj\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffj\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\xff\xff\xff\xff\xff\xff\xff\xffj\0\xff\xffj\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0\x85\0\x85\0\xff\xff\x85\0\x85\0\xff\xff\xff\xff\xff\xff\xaf\0\xaf\0\xaf\0\xaf\0\xaf\0\xaf\0\xaf\0\xaf\0\xaf\0\xaf\0\xaf\0\xff\xff\xff\xff\xff\xff\xff\xff\x85\0\xff\xff\x85\0\xff\xff\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\xaf\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0O\x01\x85\0\xff\xff\x85\0\xff\xff\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x99\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\xff\xff\xff\xff\xff\xff\xff\xff\x99\0\xff\xff\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\xff\xff\x85\0\x85\0\x85\0\x9a\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x85\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x85\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\xff\xff\xff\xff\x84\x01\xff\xff\x9a\0\xff\xff\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9a\0\x9c\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9c\0\xff\xff\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\xff\xff\xff\xff\xff\xff\xff\xff\x9c\0\xff\xff\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9d\0\xa6\0\xff\xff\xff\xff\xa6\0\xa6\0\xff\xff\xff\xff\xff\xff\xff\xff\x9d\0\xff\xff\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\xff\xff\xff\xff\xa6\0\xff\xff\xff\xff\xff\xff\xff\xff\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\xff\xff\xff\xff\xff\xff\xff\xff\x9d\0\xff\xff\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9e\0\xff\xff\0\x01\x9e\0\x9e\0\xb3\0\xff\xff\xff\xff\xb3\0\xb3\0\xba\0\xff\xff\xff\xff\xba\0\xba\x003\x01\xff\xff\xff\xff3\x013\x01\xff\xff\xff\xff\xff\xff\x9e\0\xff\xff\xff\xff\0\x01\xff\xff\xb3\0\xff\xff\xff\xff\0\x01\xff\xff\xba\0\xff\xff\xff\xff\xff\xff\x9e\x003\x01\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\xd2\0\xff\xff\xff\xff\xd2\0\xd2\0\xb3\0\xff\xff\xff\xff\xff\xff\xff\xff\xba\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xff\xff\xd2\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\0\x01\xff\xff\xd2\0\xff\xff\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xb3\0u\x01\xff\xff\xff\xffu\x01\xba\0\xff\xff\xff\xff\xff\xff\xbe\0\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\x85\x01\xff\xff\x85\x01\xd6\0\xd9\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa6\0\xa6\0\xa6\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xff\xff\xa6\0\xff\xff\xff\xff\xff\xff\xff\xffu\x01\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xff\xff\xff\xff\xff\xff\xff\xff\xd9\0\xff\xff\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xff\xff\xff\xff\xff\xff\xff\xffu\x01\xff\xff\xff\xff\xff\xff\x9e\0\x9e\0\x9e\0\xff\xff\xff\xff\xb3\0\xb3\0\xb3\0\xff\xff\xff\xff\xba\0\xba\0\xba\0\xff\xff\x9e\x003\x013\x013\x01\xff\xff\xb3\0\xff\xff\xff\xff\xff\xff\xff\xff\xba\0\xff\xff\xff\xff\xff\xff\xff\xff3\x01\xff\xff\xff\xff\0\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xda\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\0\xd2\0\xd2\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xff\xff\xd2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xff\xff\xff\xff\xff\xff\xff\xff\xda\0\xff\xff\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xda\0\xdb\0\xff\xffu\x01\xff\xff\xff\xff\xff\xff\xff\xff\xdb\0\xff\xff\xdb\0\xff\xff\xff\xff\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xff\xff\xff\xff\xff\xff\xff\xff\xdb\0\xff\xff\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdc\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xff\xff\xff\xff\xff\xff\xff\xff\xdc\0\xff\xff\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xde\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xff\xff\xff\xff\xff\xff\xff\xff\xde\0\xff\xff\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xdf\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xff\xff\xff\xff\xff\xff\xff\xff\xdf\0\xff\xff\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xdf\0\xe0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xff\xff\xff\xff\xff\xff\xff\xff\xe0\0\xff\xff\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe0\0\xe1\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xff\xff\xff\xff\xff\xff\xff\xff\xe1\0\xff\xff\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xff\xff\xff\xff\xff\xff\xff\xff\xe2\0\xff\xff\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe3\0\xff\xff\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xe3\0\xff\xff\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe4\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xff\xff\xff\xff\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xff\xff\xff\xff\xff\xff\xff\xff\xe5\0\xff\xff\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xff\xff\xff\xff\xff\xff\xe6\0\xff\xff\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe7\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xff\xff\xff\xff\xff\xff\xff\xff\xe7\0\xff\xff\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xe8\0\xff\xff\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe9\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xff\xff\xff\xff\xff\xff\xff\xff\xe9\0\xff\xff\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xe9\0\xea\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xea\0\xff\xff\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xff\xff\xff\xff\xff\xff\xff\xff\xea\0\xff\xff\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xeb\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\xff\xff\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xeb\0\xec\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xec\0\xff\xff\xec\0\xff\xff\xff\xff\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xff\xff\xff\xff\xff\xff\xff\xff\xec\0\xff\xff\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xed\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xee\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xff\xff\xff\xff\xff\xff\xff\xff\xee\0\xff\xff\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xee\0\xef\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xff\xff\xff\xff\xff\xff\xff\xff\xef\0\xff\xff\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf3\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xff\xff\xff\xff\xff\xff\xff\xff\xf3\0\xff\xff\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf3\0\xf4\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xff\xff\xff\xff\xff\xff\xff\xff\xf4\0\xff\xff\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf4\0\xf5\x004\x014\x01\xff\xff4\x014\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff4\x01\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf6\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\x05\x01\xff\xff\xff\xff\x05\x01\xf6\0\xff\xff\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xf6\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01\x05\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01>\x01\xff\xff\xff\xff\xff\xffC\x01\xff\xff\xff\xffC\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff4\x014\x014\x01\xff\xff\xff\xff\xff\xff\xff\xff\x05\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x014\x01\xff\xff\xff\xff\x05\x01>\x01\xff\xff\xff\xff\xff\xffC\x01\xff\xff\xff\xff\x05\x01\xff\xff\xff\xff\xff\xff\x05\x01\xff\xff\x05\x01\x05\x01\x05\x01\xff\xff\x05\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffC\x01C\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\xff\xff\t\x01\t\x01\t\x01\t\x01\t\x01\t\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\xff\xff\xff\xffe\x01\xff\xff\t\x01e\x01e\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\xff\xff\xff\xff\xff\xff\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\x12\x01\xff\xff\xff\xff\xff\xffe\x01\xff\xff\xff\xff\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\xff\xff\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\xff\xff\xa9\x01\xff\xff\x05\x01\xa9\x01\xff\xff\xff\xff\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\xff\xff\xff\xff\xff\xff\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\x19\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\xff\xff\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01,\x01,\x01C\x01,\x01,\x01\xff\xff\xff\xff\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\xff\xff\xff\xff\xff\xff\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\x1b\x01\xa9\x01,\x01\xff\xff\xff\xff\xa9\x01\xff\xff\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01,\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\xff\xffp\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xff\xff\xff\xff\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01\x1e\x01H\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffe\x01e\x01e\x01p\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x01\xff\xff\xff\xff\xff\xff\xff\xffe\x01\xa4\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01\xff\xff\xff\xff\xff\xff\xff\xffH\x01\xff\xffH\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01H\x01\xff\xff\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x01\xff\xff\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff,\x01,\x01,\x01N\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\x86\x01\xff\xff\xff\xff\xff\xff\xff\xff,\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff,\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01\xff\xff\xff\xff\xff\xff\xff\xffN\x01\xff\xffN\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01N\x01V\x01V\x01\xff\xffV\x01V\x01f\x01f\x01\xff\xfff\x01f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffV\x01\xff\xffV\x01\xff\xffV\x01f\x01\xff\xffV\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffV\x01V\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffV\x01\xff\xffV\x01V\x01V\x01\xff\xff\xff\xffV\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01\xff\xff\xff\xff\xff\xff\xff\xffV\x01\xff\xffV\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01V\x01Y\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffY\x01\xff\xff\xff\xffY\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffY\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\xff\xff\xff\xff\xff\xff\xff\xffY\x01\xff\xffY\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01Y\x01\xff\xff|\x01\xff\xff\xff\xff|\x01\xff\xff\xff\xff\xff\xff\x9a\x01\xff\xff\xff\xff\x9a\x01\x9a\x01\xff\xffV\x01V\x01V\x01\xff\xff\xff\xfff\x01f\x01f\x01~\x01~\x01\xff\xff|\x01\xff\xff\xff\xffV\x01|\x01|\x01\x9a\x01\xff\xfff\x01\xff\xff~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01V\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff|\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01~\x01\x83\x01\xff\xff\xff\xff\xff\xff|\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\xff\xff\x87\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\xff\xff\xff\xff\x9a\x01\x9a\x01\x9a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9a\x01\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff|\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x87\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\xff\xff\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8c\x01\xff\xff\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\xff\xff\x8e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\xff\xff\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8f\x01\x9b\x01\x9b\x01\xff\xff\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\x8f\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x90\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\xff\xff\x90\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\xff\xff\xff\xff\xff\xff\xff\xff\x90\x01\xff\xff\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x90\x01\x92\x01\x92\x01\xff\xff\x92\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\x01\x92\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\x01'),a('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\x16\0"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x01\0\f\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\x006\0_\0B\0v\0L\0N\0\0\0\x81\0\0\0\x98\0\0\0\xa2\0\xac\0\xb6\0\0\0\xc0\0\0\0\xca\0\0\0\xe1\0\xeb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0e\x01\x1a\x01&\x01W\x01\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\x0b\0\r\0\x0f\0\xe5\0\x1a\0\b\0h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\x01\0\0\0\0\0\0\0\0y\x01\r\0\x1c\0\x10\0\x1a\x01\x1d\0E\0\x83\x01\0\0\x8d\x01\x9a\x01\xa4\x01\xae\x01\0\0\0\0\xb8\x01\xc2\x01\xdb\x01\xe5\x01\x89\0\x8b\0\0\0\xf9\x01\0\0\x03\x02\0\0\r\x02\x17\x02\0\0!\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'),a("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0f\0\x0f\0\0\0\x0f\0\0\0\x0f\0\x0f\0\0\0#\0\0\0&\0)\0)\0)\0\0\0)\0)\0\0\0,\0\0\0/\0\0\0\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0W\0W\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0W\0k\0k\0s\0\0\0s\0v\0v\0W\0k\0~\0k\0k\0&\0\x8f\0/\0\x94\0\x99\0\x99\0\x99\0\x99\0\x99\0\x9e\0\xa1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),a("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),a("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\t\0\t\0\t\0\t\0\t\0e\0\0\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\t\0\0\0\0\0\0\0\0\0e\0\0\0e\0\t\0e\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x01\0\x01\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x01\0\x01\0 \0 \0 \0 \0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0e\0\t\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0e\0e\x002\x002\x002\0\0\0\t\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0e\x002\0\t\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x8c\0\x8c\0\x8c\0\x8c\0\0\0\0\0\t\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x01\0e\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\x002\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\x002\0\0\0\0\0M\0M\0M\0M\0M\0M\0M\0M\0M\0M\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0\0\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0M\0\0\0`\0`\0`\0`\0`\0`\0`\0`\0R\0R\x002\0\0\0\0\x002\x002\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\0M\0M\0M\0M\0M\0M\0M\0M\0M\0M\x002\0\0\0\0\x002\x002\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0\0\0\0\0\0\0e\0\0\0\0\0\0\0\0\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\0\0\0\0\0\0\0\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0\0\0\0\x002\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0R\0\0\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x86\0\x86\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0R\0\0\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\0{\0{\0{\0{\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),a("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff5\0\xff\xff<\x005\x005\0<\0<\0\xb3\0\xff\xff\xba\0\xb3\0\xb3\0\xba\0\xba\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff5\0\xff\xff<\0\xff\xff\xff\xff\xff\xff\xff\xff\xb3\0\xff\xff\xba\0!\0\xa1\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1b\0\xff\xff\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1c\0\xff\xff\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0U\0U\0U\0U\0U\0U\0U\0U\0U\0U\0W\0\xff\xffW\0W\0W\0W\0W\0W\0W\0W\0W\0W\0Y\0Y\0Z\0Z\0>\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0A\0\xbc\0=\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0\xbb\0\xbf\0\xd3\0\xd4\0\xd7\0\xff\xff?\0V\0V\0V\0V\0V\0V\0X\0X\0X\0X\0X\0X\0X\0X\0\xbd\0\xd5\0@\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\xe5\0\xe5\0\xe6\0\xe6\0\xff\xff\xff\xffB\0V\0V\0V\0V\0V\0V\0^\0\xc0\0^\0^\0^\0^\0^\0^\0^\0^\0^\0^\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0\xd8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfff\0f\0f\0f\0f\0f\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0i\0i\0i\0i\0i\0i\0i\0i\0i\0i\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfff\0f\0f\0f\0f\0f\0\x85\0\xff\xff\xff\xff\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9b\0\x9c\0\xff\xff\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9c\0\x9d\0\xff\xff\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9d\0\x9e\0\xff\xff\xff\xff\x9e\0\x9e\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9e\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xd2\0\xff\xff\xff\xff\xd2\0\xd2\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\x9e\0\xff\xff\xff\xff\xff\xff\xbe\0\xff\xff\xff\xff\xff\xff\xff\xff\xd2\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xd6\0\xff\xff\xff\xff\xff\xff\xff\xff\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd2\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xd9\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xdb\0\xff\xff\xff\xff\xd6\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdc\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xdd\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xde\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe3\0\xff\xff\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xea\0\xff\xff\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xea\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xec\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xef\0\xef\0\xef\0\xef\0\xef\0\xef\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),a("\xff\x01\xff\xff\x03\xff\x01\xff\xff\x02\xff\xff\0\x02\xff\0\x01\xff\x06\xff\xff\x07\xff\xff\x01\xff\x03\xff\xff\x05\xff\xff\x04\xff\xff\0\x04\xff\0\x05\xff\0\x03\xff\0\x06\xff\0\x07\xff\x11\xff\x10\xff\x0e\xff\r\xff\f\xff\x0b\xff\n\xff\t\xff\b\xff\x07\xff\x06\xff\x05\xff\x04\xff\xff\x13\xff\x12\xff\xff\x12\xff\x13\xff\xff\x03\x11\x02\x12\x01\x0f\0\x10\xff\x16\xff\x13\xff\xff\x14\xff\xff\0\x14\xff\x01\x13\0\x0e\xff\x15\xff\xff\0\r\xff\x01\x15\0\f\xff\x19\xff\xff\0\t\xff\x13\xff\x16\xff\xff\x13\xff\xff\x18\xff\xff\x17\xff\xff\x01\x17\0\x04\xff\x01\x18\0\x06\xff\x01\x16\0\b\xff\0\x0b\xff\x01\x19\0\n\xff")],dn=[0,0,0,0,0,1,0],fc=[0,0,0],fd=[0,1];aM(11,[W,a(f_),-12],f_);aM(10,t,gP);aM(9,[W,a(fC),-10],fC);aM(8,[W,a(gD),-9],gD);aM(7,[W,a(fv),-8],fv);aM(6,ah,gC);aM(5,[W,a(fM),-6],fM);aM(4,[W,a(gn),-5],gn);aM(3,ef,gz);aM(2,c$,gm);aM(1,[W,a(gj),-2],gj);aM(0,[W,a(fV),-1],fV);var +ho=a(dJ),hp=a(dX),hs=[0,a("list.ml"),gG,11],hr=a("hd"),hu=a("\\\\"),hv=a("\\'"),hw=a("\\b"),hx=a("\\t"),hy=a("\\n"),hz=a("\\r"),ht=a("Char.chr"),hF=a("String.contains_from / Bytes.contains_from"),hC=a("String.blit / Bytes.blit_string"),hB=a("Bytes.blit"),hA=a("String.sub / Bytes.sub"),hH=a(p),hK=a("Array.blit"),hJ=a("Array.init"),hP=a("Set.remove_min_elt"),hQ=[0,0,0,0],hR=[0,0,0],hS=[0,a("set.ml"),389,18],hL=a(cO),hM=a(cO),hN=a(cO),hO=a(cO),hT=a("CamlinternalLazy.Undefined"),hX=a("Buffer.add: cannot grow buffer"),h6=a("%c"),h7=a("%s"),h8=a(f7),h9=a(fu),h_=a(gy),h$=a(gd),ia=a("%f"),ib=a("%B"),ic=a("%{"),id=a("%}"),ie=a("%("),ig=a("%)"),ih=a("%a"),ii=a("%t"),ij=a("%?"),ik=a("%r"),il=a("%_r"),im=[0,a(V),845,23],iy=[0,a(V),809,21],iq=[0,a(V),gg,21],iz=[0,a(V),813,21],ir=[0,a(V),814,21],iA=[0,a(V),817,19],is=[0,a(V),818,19],iB=[0,a(V),821,22],it=[0,a(V),822,22],iC=[0,a(V),826,30],iu=[0,a(V),827,30],iw=[0,a(V),831,26],io=[0,a(V),832,26],ix=[0,a(V),841,28],ip=[0,a(V),842,28],iv=[0,a(V),846,23],jE=a(fy),jC=[0,a(V),1520,4],jD=a("Printf: bad conversion %["),jF=[0,a(V),1588,39],jG=[0,a(V),1611,31],jH=[0,a(V),1612,31],jI=a("Printf: bad conversion %_"),jJ=a("@{"),jK=a("@["),jA=a(dT),jB=a(bO),jy=a("neg_infinity"),jz=a(gV),jt=a("%.12g"),jg=a("%nd"),jh=a("%+nd"),ji=a("% nd"),jj=a(gy),jk=a("%+ni"),jl=a("% ni"),jm=a("%nx"),jn=a("%#nx"),jo=a("%nX"),jp=a("%#nX"),jq=a("%no"),jr=a("%#no"),js=a("%nu"),i5=a("%ld"),i6=a("%+ld"),i7=a("% ld"),i8=a(fu),i9=a("%+li"),i_=a("% li"),i$=a("%lx"),ja=a("%#lx"),jb=a("%lX"),jc=a("%#lX"),jd=a("%lo"),je=a("%#lo"),jf=a("%lu"),iS=a("%Ld"),iT=a("%+Ld"),iU=a("% Ld"),iV=a(gd),iW=a("%+Li"),iX=a("% Li"),iY=a("%Lx"),iZ=a("%#Lx"),i0=a("%LX"),i1=a("%#LX"),i2=a("%Lo"),i3=a("%#Lo"),i4=a("%Lu"),iF=a(gI),iG=a("%+d"),iH=a("% d"),iI=a(f7),iJ=a("%+i"),iK=a("% i"),iL=a("%x"),iM=a("%#x"),iN=a("%X"),iO=a("%#X"),iP=a("%o"),iQ=a("%#o"),iR=a(fy),hY=a("@]"),hZ=a("@}"),h0=a("@?"),h1=a("@\n"),h2=a("@."),h3=a("@@"),h4=a("@%"),h5=a("@"),iD=a("CamlinternalFormat.Type_mismatch"),jL=a("x"),HF=a("OCAMLRUNPARAM"),HD=a("CAMLRUNPARAM"),jM=a(p),HC=a("TMPDIR"),HB=a("TEMP"),jP=a("Cygwin"),jQ=a(fr),jR=a("Win32"),jS=[0,a("filename.ml"),gQ,9],jV=a("Js.Error"),jW=a(ft),jX=a(gL),jZ=a("Unexpected number"),j0=a("Unexpected string"),j1=a("Unexpected identifier"),j2=a("Unexpected reserved word"),j3=a("Unexpected end of input"),j4=a("Unexpected variance sigil"),j5=a("Type aliases are not allowed in untyped mode"),j6=a("Type annotations are not allowed in untyped mode"),j7=a("Type declarations are not allowed in untyped mode"),j8=a("Type imports are not allowed in untyped mode"),j9=a("Type exports are not allowed in untyped mode"),j_=a("Interfaces are not allowed in untyped mode"),j$=a("Illegal newline after throw"),ka=a("Invalid regular expression"),kb=a("Invalid regular expression: missing /"),kc=a("Invalid left-hand side in assignment"),kd=a("Invalid left-hand side in exponentiation expression"),ke=a("Invalid left-hand side in for-in"),kf=a("Invalid left-hand side in for-of"),kg=a("found an expression instead"),kh=a("Expected an object pattern, array pattern, or an identifier but "),ki=a("More than one default clause in switch statement"),kj=a("Missing catch or finally after try"),kk=a("Illegal continue statement"),kl=a("Illegal break statement"),km=a("Illegal return statement"),kn=a("Illegal yield expression"),ko=a("Strict mode code may not include a with statement"),kp=a("Catch variable may not be eval or arguments in strict mode"),kq=a("Variable name may not be eval or arguments in strict mode"),kr=a("Parameter name eval or arguments is not allowed in strict mode"),ks=a("Strict mode function may not have duplicate parameter names"),kt=a("Function name may not be eval or arguments in strict mode"),ku=a("Octal literals are not allowed in strict mode."),kv=a("Delete of an unqualified identifier in strict mode."),kw=a("Duplicate data property in object literal not allowed in strict mode"),kx=a("Object literal may not have data and accessor property with the same name"),ky=a("Object literal may not have multiple get/set accessors with the same name"),kz=a("Assignment to eval or arguments is not allowed in strict mode"),kA=a("Postfix increment/decrement may not have eval or arguments operand in strict mode"),kB=a("Prefix increment/decrement may not have eval or arguments operand in strict mode"),kC=a("Use of future reserved word in strict mode"),kD=a("JSX attributes must only be assigned a non-empty expression"),kE=a("JSX value should be either an expression or a quoted JSX text"),kF=a("Const must be initialized"),kG=a("Destructuring assignment must be initialized"),kH=a("Illegal newline before arrow"),kI=a(" declared at top level or immediately within another function."),kJ=a("In strict mode code, functions can only be"),kK=a("elements must be wrapped in an enclosing parent tag"),kL=a("Unexpected token <. Remember, adjacent JSX "),kM=a("Rest parameter must be final parameter of an argument list"),kN=a("async is an implementation detail and isn't necessary for your declare function statement. It is sufficient for your declare function to just have a Promise return type."),kO=a("`declare export let` is not supported. Use `declare export var` instead."),kP=a("`declare export const` is not supported. Use `declare export var` instead."),kQ=a("`declare export type` is not supported. Use `export type` instead."),kR=a("`declare export interface` is not supported. Use `export interface` instead."),kS=a("`export * as` is an early-stage proposal and is not enabled by default. To enable support in the parser, use the `esproposal_export_star_as` option"),kT=a("When exporting a class as a named export, you must specify a class name. Did you mean `export default class ...`?"),kU=a("When exporting a function as a named export, you must specify a function name. Did you mean `export default function ...`?"),kV=a("Found a decorator in an unsupported position."),kW=a("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."),kX=a("The Windows version of OCaml has a bug in how it parses hexidecimal numbers. It is fixed in OCaml 4.03.0. Until we can switch to 4.03.0, please avoid either hexidecimal notation or Windows."),kY=a("Duplicate `declare module.exports` statement!"),kZ=a("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module xor they are a CommonJS module."),k0=a("Getter should have zero parameters"),k1=a("Setter should have exactly one parameter"),k2=a("`import type` or `import typeof`!"),k3=a("Imports within a `declare module` body must always be "),k4=a("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements"),k5=a("Missing comma between import specifiers"),k6=a("Unexpected parser state: "),k7=a("Unexpected token "),k8=[0,[11,a("Unexpected token `"),[2,0,[11,a("`. Did you mean `"),[2,0,[11,a("`?"),0]]]]],a("Unexpected token `%s`. Did you mean `%s`?")],k9=a(fK),k_=a("Invalid flags supplied to RegExp constructor '"),k$=a(fK),la=a("Undefined label '"),lb=a("' has already been declared"),lc=a(" '"),ld=a("Expected corresponding JSX closing tag for "),le=[0,[11,a("Duplicate export for `"),[2,0,[12,96,0]]],a("Duplicate export for `%s`")],jY=a("Parse_error.Error"),lf=[0,[0]],lg=[0,a(aP),18,6],lh=[0,[0,[0,[0]]]],li=[0,a(aP),39,6],lj=[0,[0]],lk=[0,a(aP),44,6],ll=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],lm=[0,a(aP),gh,6],ln=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],lo=[0,a(aP),516,6],lp=[0,[0,[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0,[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]]]],lq=[0,a(aP),781,6],lr=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],ls=[0,a(aP),884,6],lt=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],lu=[0,a(aP),fQ,6],lv=[0,[0]],lw=[0,a(aP),gN,6],lx=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],ly=[0,a(aP),1009,6],lz=[0,[0,[0,[0]]]],lA=[0,a(aP),1032,6],lB=[0,[0]],lC=[0,[0,[0,[0]]]],lD=[0,[0]],lE=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],lF=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],lG=[0,[0,[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0,[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]]]],lH=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],lI=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],lJ=[0,[0]],lK=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],lL=[0,[0,[0,[0]]]],lY=a("comments"),lZ=a(X),l0=a("Program"),l1=a("EmptyStatement"),l2=a("DebuggerStatement"),l3=a("directive"),l4=a(bS),l5=a("ExpressionStatement"),l6=a(fS),l7=a(dP),l8=a(bN),l9=a("IfStatement"),l_=a(X),l$=a(dW),ma=a("LabeledStatement"),mb=a(dW),mc=a("BreakStatement"),md=a(dW),me=a("ContinueStatement"),mf=a(X),mg=a(dV),mh=a("WithStatement"),mi=a("cases"),mj=a("discriminant"),mk=a("SwitchStatement"),ml=a(av),mm=a("ReturnStatement"),mn=a(av),mo=a("ThrowStatement"),mp=a("finalizer"),mq=a("handler"),mr=a("block"),ms=a("TryStatement"),mt=a(X),mu=a(bN),mv=a("WhileStatement"),mw=a(bN),mx=a(X),my=a("DoWhileStatement"),mz=a(X),mA=a("update"),mB=a(bN),mC=a(ch),mD=a("ForStatement"),mE=a(gi),mF=a(X),mG=a(bh),mH=a(bu),mI=a("ForInStatement"),mJ=a("ForAwaitStatement"),mN=a("ForOfStatement"),mK=a(X),mL=a(bh),mM=a(bu),mO=a("CommonJS"),mT=a("ES"),mP=a(bT),mQ=a(X),mR=a(af),mS=a("DeclareModule"),mU=a(aZ),mV=a("DeclareModuleExports"),m1=a(bM),m2=a("DeclareExportAllDeclaration"),mW=a(bM),mX=a(dA),mY=a(dY),mZ=a(cI),m0=a("DeclareExportDeclaration"),m8=a(dF),m9=a(bM),m_=a("ExportAllDeclaration"),m3=a(dF),m4=a(bM),m5=a(dA),m6=a(dY),m7=a("ExportNamedDeclaration"),m$=a(dF),na=a(dY),nb=a("ExportDefaultDeclaration"),nc=a(bV),nh=a(bP),ni=a(Y),nd=a(f6),ne=a(bM),nf=a(dA),ng=a("ImportDeclaration"),nj=a("ThisExpression"),nk=a("Super"),nl=a(gk),nm=a("ArrayExpression"),nn=a(d1),no=a("ObjectExpression"),np=a(aK),nq=a(cJ),nr=a(bS),ns=a(cR),nt=a(dB),nu=a(cg),nv=a(X),nw=a(bW),nx=a(af),ny=a("ArrowFunctionExpression"),nz=a(fO),nA=a("SequenceExpression"),nB=a(av),nC=a("AwaitExpression"),nD=a(a6),nI=a(bt),nJ=a("!"),nK=a("~"),nL=a(bP),nM=a(dU),nN=a(fH),nO=a("matched above"),nE=a(av),nF=a(ga),nG=a(ce),nH=a("UnaryExpression"),nP=a("=="),nU=a("!="),nV=a("==="),nW=a("!=="),nX=a("<"),nY=a("<="),nZ=a(">"),n0=a(">="),n1=a("<<"),n2=a(">>"),n3=a(">>>"),n4=a(bt),n5=a(a6),n6=a("*"),n7=a("**"),n8=a(cj),n9=a("%"),n_=a("|"),n$=a("^"),oa=a(gx),ob=a(gt),oc=a(gs),nQ=a(bh),nR=a(bu),nS=a(ce),nT=a("BinaryExpression"),od=a("="),oi=a("+="),oj=a("-="),ok=a("*="),ol=a("**="),om=a("/="),on=a("%="),oo=a("<<="),op=a(">>="),oq=a(">>>="),or=a("|="),os=a("^="),ot=a("&="),oe=a(bh),of=a(bu),og=a(ce),oh=a("AssignmentExpression"),oz=a("--"),ou=a("++"),ov=a(ga),ow=a(av),ox=a(ce),oy=a("UpdateExpression"),oF=a("&&"),oA=a("||"),oB=a(bh),oC=a(bu),oD=a(ce),oE=a("LogicalExpression"),oG=a(fS),oH=a(dP),oI=a(bN),oJ=a("ConditionalExpression"),oK=a(dZ),oL=a(gf),oM=a("NewExpression"),oN=a(dZ),oO=a(gf),oP=a("CallExpression"),oQ=a(cl),oR=a(dE),oS=a(dV),oT=a("MemberExpression"),oU=a("delegate"),oV=a(av),oW=a("YieldExpression"),oX=a(gO),oY=a(fG),oZ=a("ComprehensionExpression"),o0=a(gO),o1=a(fG),o2=a("GeneratorExpression"),o3=a(aZ),o4=a(bS),o5=a("TypeCastExpression"),o6=a(dE),o7=a("meta"),o8=a("MetaProperty"),o9=a(aK),o_=a(cJ),o$=a(bS),pa=a(cR),pb=a(dB),pc=a(cg),pd=a(X),pe=a(bW),pf=a(af),pg=a("FunctionDeclaration"),ph=a(aK),pi=a(cJ),pj=a(bS),pk=a(cR),pl=a(dB),pm=a(cg),pn=a(X),po=a(bW),pp=a(af),pq=a("FunctionExpression"),pr=a(cP),ps=a(aZ),pt=a(a8),pu=a(gZ),pv=a(cP),pw=a(aZ),px=a(a8),py=a(gZ),pz=a(dP),pA=a(bN),pB=a("SwitchCase"),pC=a(X),pD=a("param"),pE=a("CatchClause"),pF=a(X),pG=a("BlockStatement"),pH=a(af),pI=a("DeclareVariable"),pJ=a(cR),pK=a(af),pL=a("DeclareFunction"),pM=a(dQ),pN=a(X),pO=a(aK),pP=a(af),pQ=a("DeclareClass"),pS=a(Y),pR=a(bV),pT=a(gM),pU=a("ExportNamespaceSpecifier"),pV=a(bh),pW=a(aK),pX=a(af),pY=a("TypeAlias"),pZ=a(d7),p0=a(cW),p1=a(gw),p2=a(aK),p3=a(gB),p4=a(X),p5=a(af),p6=a("ClassDeclaration"),p7=a(d7),p8=a(cW),p9=a(gw),p_=a(aK),p$=a(gB),qa=a(X),qb=a(af),qc=a("ClassExpression"),qd=a(aK),qe=a(af),qf=a("ClassImplements"),qg=a(X),qh=a("ClassBody"),qi=a(dO),qq=a(d6),qr=a(bv),qs=a(bR),qj=a(d7),qk=a(cl),ql=a(a_),qm=a(bT),qn=a(Y),qo=a(bL),qp=a("MethodDefinition"),qt=a(cN),qu=a(a_),qv=a(cl),qw=a(aZ),qx=a(Y),qy=a(bL),qz=a("ClassProperty"),qA=a(dQ),qB=a(X),qC=a(aK),qD=a(af),qE=a("InterfaceDeclaration"),qF=a(aK),qG=a(af),qH=a("InterfaceExtends"),qI=a(aZ),qJ=a(d1),qK=a("ObjectPattern"),qL=a(aZ),qM=a(gk),qN=a("ArrayPattern"),qO=a(bh),qP=a(bu),qQ=a("AssignmentPattern"),qR=a(av),qS=a(f9),qT=a(av),qU=a(f9),qV=a(ch),q3=a(bv),q4=a(bR),qW=a(cl),qX=a(fD),qY=a(d6),qZ=a(bT),q0=a(Y),q1=a(bL),q2=a(gT),q5=a(av),q6=a("SpreadProperty"),q7=a(cl),q8=a(fD),q9=a(d6),q_=a(ch),q$=a(bT),ra=a(Y),rb=a(bL),rc=a(gT),rd=a(av),re=a("RestProperty"),rf=a(av),rg=a("SpreadElement"),rh=a(gi),ri=a(bh),rj=a(bu),rk=a("ComprehensionBlock"),ro=a("flags"),rp=a("pattern"),rq=a("regex"),rr=a(bx),rs=a(Y),rl=a(bx),rm=a(Y),rn=a("Literal"),rt=a(fO),ru=a("quasis"),rv=a("TemplateLiteral"),rw=a("cooked"),rx=a(bx),ry=a("tail"),rz=a(Y),rA=a("TemplateElement"),rB=a("quasi"),rC=a("tag"),rD=a("TaggedTemplateExpression"),rE=a(f0),rI=a(gp),rJ=a(gA),rF=a(bT),rG=a("declarations"),rH=a("VariableDeclaration"),rK=a(ch),rL=a(af),rM=a("VariableDeclarator"),rO=a(fF),rN=a("plus"),rP=a("AnyTypeAnnotation"),rQ=a("MixedTypeAnnotation"),rR=a("EmptyTypeAnnotation"),rS=a("VoidTypeAnnotation"),rT=a("NullLiteralTypeAnnotation"),rU=a("NumberTypeAnnotation"),rV=a("StringTypeAnnotation"),rW=a("BooleanTypeAnnotation"),rX=a(aZ),rY=a("NullableTypeAnnotation"),rZ=a(aK),r0=a("rest"),r1=a(cJ),r2=a(bW),r3=a("FunctionTypeAnnotation"),r4=a(cP),r5=a(aZ),r6=a(a8),r7=a("FunctionTypeParam"),r8=[0,0,0,0],r9=a("callProperties"),r_=a("indexers"),r$=a(d1),sa=a("exact"),sb=a("ObjectTypeAnnotation"),sm=a("There should not be computed object type property keys"),sc=a(ch),sk=a(bv),sl=a(bR),sd=a(bT),se=a(cN),sf=a(a_),sg=a(cP),sh=a(Y),si=a(bL),sj=a("ObjectTypeProperty"),sn=a(av),so=a("ObjectTypeSpreadProperty"),sp=a(cN),sq=a(a_),sr=a(Y),ss=a(bL),st=a(af),su=a("ObjectTypeIndexer"),sv=a(a_),sw=a(Y),sx=a("ObjectTypeCallProperty"),sy=a("elementType"),sz=a("ArrayTypeAnnotation"),sA=a(af),sB=a("qualification"),sC=a("QualifiedTypeIdentifier"),sD=a(aK),sE=a(af),sF=a("GenericTypeAnnotation"),sG=a(dD),sH=a("UnionTypeAnnotation"),sI=a(dD),sJ=a("IntersectionTypeAnnotation"),sK=a(av),sL=a("TypeofTypeAnnotation"),sM=a(dD),sN=a("TupleTypeAnnotation"),sO=a(bx),sP=a(Y),sQ=a("StringLiteralTypeAnnotation"),sR=a(bx),sS=a(Y),sT=a("NumberLiteralTypeAnnotation"),sU=a(bx),sV=a(Y),sW=a("BooleanLiteralTypeAnnotation"),sX=a("ExistsTypeAnnotation"),sY=a(aZ),sZ=a("TypeAnnotation"),s0=a(bW),s1=a("TypeParameterDeclaration"),s2=a(cI),s3=a(cN),s4=a("bound"),s5=a(a8),s6=a("TypeParameter"),s7=a(bW),s8=a("TypeParameterInstantiation"),s9=a("children"),s_=a("closingElement"),s$=a("openingElement"),ta=a("JSXElement"),tb=a("selfClosing"),tc=a("attributes"),td=a(a8),te=a("JSXOpeningElement"),tf=a(a8),tg=a("JSXClosingElement"),th=a(Y),ti=a(a8),tj=a("JSXAttribute"),tk=a(av),tl=a("JSXSpreadAttribute"),to=a("JSXEmptyExpression"),tm=a(bS),tn=a("JSXExpressionContainer"),tp=a(bx),tq=a(Y),tr=a("JSXText"),ts=a(dE),tt=a(dV),tu=a("JSXMemberExpression"),tv=a(a8),tw=a("namespace"),tx=a("JSXNamespacedName"),ty=a(a8),tz=a("JSXIdentifier"),tA=a(gM),tB=a(cS),tC=a("ExportSpecifier"),tD=a(cS),tE=a("ImportDefaultSpecifier"),tF=a(cS),tG=a("ImportNamespaceSpecifier"),tH=a(bV),tM=a(bP),tI=a(f6),tJ=a(cS),tK=a("imported"),tL=a("ImportSpecifier"),tN=a("Block"),tP=a("Line"),tO=a(Y),tQ=a(Y),tR=a("DeclaredPredicate"),tS=a("InferredPredicate"),lW=a("message"),lX=a(gc),lT=a("range"),lU=a(gc),lV=a(bV),lP=a(gL),lQ=a("end"),lR=a("start"),lS=a(bM),lN=a("column"),lO=a("line"),v9=a(dK),v_=[0,0],v$=[0,0],wa=[0,2],wb=[0,2],wc=[0,1],wd=[0,1],we=[0,3],wf=[0,3],wg=a(dK),wh=[5,3,d3],wi=[5,3,d3],wj=a("\\"),wk=a(cG),wl=a(ge),wm=a("*/"),wn=a(ge),wo=a(p),wp=a(p),wq=a(p),wr=a(p),ws=a(cG),wt=a("iexcl"),At=a("aelig"),Cr=a("Nu"),Dr=a("Eacute"),DX=a("Atilde"),Eb=a("'int'"),Ec=a("AElig"),Ed=a("Aacute"),Ee=a("Acirc"),Ef=a("Agrave"),Eg=a("Alpha"),Eh=a("Aring"),Ei=[0,197],Ej=[0,913],Ek=[0,cM],El=[0,194],Em=[0,193],En=[0,198],Eo=[0,8747],DY=a("Auml"),DZ=a("Beta"),D0=a("Ccedil"),D1=a("Chi"),D2=a("Dagger"),D3=a("Delta"),D4=a("ETH"),D5=[0,208],D6=[0,916],D7=[0,8225],D8=[0,935],D9=[0,fo],D_=[0,914],D$=[0,196],Ea=[0,195],Ds=a("Icirc"),DI=a("Ecirc"),DJ=a("Egrave"),DK=a("Epsilon"),DL=a("Eta"),DM=a("Euml"),DN=a("Gamma"),DO=a("Iacute"),DP=[0,205],DQ=[0,915],DR=[0,203],DS=[0,919],DT=[0,917],DU=[0,200],DV=[0,202],Dt=a("Igrave"),Du=a("Iota"),Dv=a("Iuml"),Dw=a("Kappa"),Dx=a("Lambda"),Dy=a("Mu"),Dz=a("Ntilde"),DA=[0,209],DB=[0,924],DC=[0,923],DD=[0,922],DE=[0,207],DF=[0,921],DG=[0,204],DH=[0,206],DW=[0,201],Cs=a("Sigma"),CY=a("Otilde"),Dc=a("OElig"),Dd=a("Oacute"),De=a("Ocirc"),Df=a("Ograve"),Dg=a("Omega"),Dh=a("Omicron"),Di=a("Oslash"),Dj=[0,fq],Dk=[0,927],Dl=[0,937],Dm=[0,210],Dn=[0,212],Do=[0,211],Dp=[0,338],CZ=a("Ouml"),C0=a("Phi"),C1=a("Pi"),C2=a("Prime"),C3=a("Psi"),C4=a("Rho"),C5=a("Scaron"),C6=[0,352],C7=[0,929],C8=[0,936],C9=[0,8243],C_=[0,928],C$=[0,934],Da=[0,214],Db=[0,213],Ct=a("Uuml"),CJ=a("THORN"),CK=a("Tau"),CL=a("Theta"),CM=a("Uacute"),CN=a("Ucirc"),CO=a("Ugrave"),CP=a("Upsilon"),CQ=[0,933],CR=[0,217],CS=[0,219],CT=[0,gh],CU=[0,920],CV=[0,932],CW=[0,222],Cu=a("Xi"),Cv=a("Yacute"),Cw=a("Yuml"),Cx=a("Zeta"),Cy=a("aacute"),Cz=a("acirc"),CA=a("acute"),CB=[0,180],CC=[0,226],CD=[0,225],CE=[0,918],CF=[0,376],CG=[0,221],CH=[0,926],CI=[0,220],CX=[0,931],Dq=[0,925],Au=a("delta"),Bs=a("cap"),BY=a("aring"),Cc=a("agrave"),Cd=a("alefsym"),Ce=a("alpha"),Cf=a("amp"),Cg=a("and"),Ch=a("ang"),Ci=a("apos"),Cj=[0,39],Ck=[0,8736],Cl=[0,8743],Cm=[0,38],Cn=[0,945],Co=[0,8501],Cp=[0,cT],BZ=a("asymp"),B0=a("atilde"),B1=a("auml"),B2=a("bdquo"),B3=a("beta"),B4=a("brvbar"),B5=a("bull"),B6=[0,8226],B7=[0,166],B8=[0,946],B9=[0,8222],B_=[0,228],B$=[0,gG],Ca=[0,8776],Cb=[0,229],Bt=a("copy"),BJ=a("ccedil"),BK=a("cedil"),BL=a("cent"),BM=a("chi"),BN=a("circ"),BO=a("clubs"),BP=a("cong"),BQ=[0,8773],BR=[0,9827],BS=[0,710],BT=[0,967],BU=[0,162],BV=[0,184],BW=[0,231],Bu=a("crarr"),Bv=a("cup"),Bw=a("curren"),Bx=a("dArr"),By=a("dagger"),Bz=a("darr"),BA=a("deg"),BB=[0,176],BC=[0,8595],BD=[0,8224],BE=[0,8659],BF=[0,164],BG=[0,8746],BH=[0,8629],BI=[0,169],BX=[0,8745],Av=a("fnof"),AZ=a("ensp"),Bd=a("diams"),Be=a("divide"),Bf=a("eacute"),Bg=a("ecirc"),Bh=a("egrave"),Bi=a(fN),Bj=a("emsp"),Bk=[0,8195],Bl=[0,8709],Bm=[0,232],Bn=[0,234],Bo=[0,233],Bp=[0,247],Bq=[0,9830],A0=a("epsilon"),A1=a("equiv"),A2=a("eta"),A3=a("eth"),A4=a("euml"),A5=a("euro"),A6=a("exist"),A7=[0,8707],A8=[0,8364],A9=[0,235],A_=[0,cQ],A$=[0,951],Ba=[0,8801],Bb=[0,fQ],Bc=[0,8194],Aw=a("gt"),AK=a("forall"),AL=a("frac12"),AM=a("frac14"),AN=a("frac34"),AO=a("frasl"),AP=a("gamma"),AQ=a("ge"),AR=[0,8805],AS=[0,947],AT=[0,8260],AU=[0,190],AV=[0,188],AW=[0,189],AX=[0,8704],Ax=a("hArr"),Ay=a("harr"),Az=a("hearts"),AA=a("hellip"),AB=a("iacute"),AC=a("icirc"),AD=[0,238],AE=[0,237],AF=[0,8230],AG=[0,9829],AH=[0,8596],AI=[0,8660],AJ=[0,62],AY=[0,go],Br=[0,948],Cq=[0,230],wu=a("prime"),yu=a("ndash"),zu=a("le"),z0=a("kappa"),Ae=a("igrave"),Af=a("image"),Ag=a("infin"),Ah=a("iota"),Ai=a("iquest"),Aj=a("isin"),Ak=a("iuml"),Al=[0,239],Am=[0,8712],An=[0,gQ],Ao=[0,953],Ap=[0,8734],Aq=[0,8465],Ar=[0,236],z1=a("lArr"),z2=a("lambda"),z3=a("lang"),z4=a("laquo"),z5=a("larr"),z6=a("lceil"),z7=a("ldquo"),z8=[0,8220],z9=[0,8968],z_=[0,8592],z$=[0,171],Aa=[0,10216],Ab=[0,955],Ac=[0,8656],Ad=[0,954],zv=a("macr"),zL=a("lfloor"),zM=a("lowast"),zN=a("loz"),zO=a("lrm"),zP=a("lsaquo"),zQ=a("lsquo"),zR=a("lt"),zS=[0,60],zT=[0,8216],zU=[0,8249],zV=[0,8206],zW=[0,9674],zX=[0,8727],zY=[0,8970],zw=a("mdash"),zx=a("micro"),zy=a("middot"),zz=a(fF),zA=a("mu"),zB=a("nabla"),zC=a("nbsp"),zD=[0,160],zE=[0,8711],zF=[0,gN],zG=[0,8722],zH=[0,183],zI=[0,181],zJ=[0,8212],zK=[0,175],zZ=[0,8804],yv=a("or"),y1=a("oacute"),zf=a("ne"),zg=a("ni"),zh=a("not"),zi=a("notin"),zj=a("nsub"),zk=a("ntilde"),zl=a("nu"),zm=[0,957],zn=[0,241],zo=[0,8836],zp=[0,8713],zq=[0,172],zr=[0,8715],zs=[0,8800],y2=a("ocirc"),y3=a("oelig"),y4=a("ograve"),y5=a("oline"),y6=a("omega"),y7=a("omicron"),y8=a("oplus"),y9=[0,8853],y_=[0,959],y$=[0,969],za=[0,8254],zb=[0,242],zc=[0,339],zd=[0,244],ze=[0,243],yw=a("part"),yM=a("ordf"),yN=a("ordm"),yO=a("oslash"),yP=a("otilde"),yQ=a("otimes"),yR=a("ouml"),yS=a("para"),yT=[0,182],yU=[0,cV],yV=[0,8855],yW=[0,fE],yX=[0,W],yY=[0,186],yZ=[0,170],yx=a("permil"),yy=a("perp"),yz=a("phi"),yA=a("pi"),yB=a("piv"),yC=a("plusmn"),yD=a("pound"),yE=[0,163],yF=[0,177],yG=[0,982],yH=[0,960],yI=[0,966],yJ=[0,8869],yK=[0,8240],yL=[0,8706],y0=[0,8744],zt=[0,8211],wv=a("sup1"),xv=a("rlm"),x1=a("raquo"),yf=a("prod"),yg=a("prop"),yh=a("psi"),yi=a("quot"),yj=a("rArr"),yk=a("radic"),yl=a("rang"),ym=[0,10217],yn=[0,8730],yo=[0,8658],yp=[0,34],yq=[0,968],yr=[0,8733],ys=[0,8719],x2=a("rarr"),x3=a("rceil"),x4=a("rdquo"),x5=a("real"),x6=a("reg"),x7=a("rfloor"),x8=a("rho"),x9=[0,961],x_=[0,8971],x$=[0,174],ya=[0,8476],yb=[0,8221],yc=[0,8969],yd=[0,8594],ye=[0,187],xw=a("sigma"),xM=a("rsaquo"),xN=a("rsquo"),xO=a("sbquo"),xP=a("scaron"),xQ=a("sdot"),xR=a("sect"),xS=a("shy"),xT=[0,173],xU=[0,167],xV=[0,8901],xW=[0,353],xX=[0,8218],xY=[0,8217],xZ=[0,8250],xx=a("sigmaf"),xy=a("sim"),xz=a("spades"),xA=a("sub"),xB=a("sube"),xC=a("sum"),xD=a("sup"),xE=[0,8835],xF=[0,8721],xG=[0,8838],xH=[0,8834],xI=[0,9824],xJ=[0,8764],xK=[0,962],xL=[0,963],x0=[0,8207],ww=a("uarr"),w2=a("thetasym"),xg=a("sup2"),xh=a("sup3"),xi=a("supe"),xj=a("szlig"),xk=a("tau"),xl=a("there4"),xm=a("theta"),xn=[0,952],xo=[0,8756],xp=[0,964],xq=[0,223],xr=[0,8839],xs=[0,179],xt=[0,178],w3=a("thinsp"),w4=a("thorn"),w5=a("tilde"),w6=a("times"),w7=a("trade"),w8=a("uArr"),w9=a("uacute"),w_=[0,ck],w$=[0,8657],xa=[0,8482],xb=[0,215],xc=[0,732],xd=[0,d8],xe=[0,8201],xf=[0,977],wx=a("xi"),wN=a("ucirc"),wO=a("ugrave"),wP=a("uml"),wQ=a("upsih"),wR=a("upsilon"),wS=a("uuml"),wT=a("weierp"),wU=[0,8472],wV=[0,f$],wW=[0,965],wX=[0,978],wY=[0,168],wZ=[0,249],w0=[0,251],wy=a("yacute"),wz=a("yen"),wA=a("yuml"),wB=a("zeta"),wC=a("zwj"),wD=a("zwnj"),wG=[0,8204],wH=[0,8205],wI=[0,950],wJ=[0,K],wK=[0,165],wL=[0,253],wM=[0,958],w1=[0,8593],xu=[0,185],yt=[0,8242],As=[0,161],wE=a(";"),wF=a(gx),Ep=a("}"),Eq=[0,a(p),a(p),a(p)],Er=a("${"),Es=a(fp),v4=a(fZ),v3=a(p),v2=[0,a(d0),620,11],v1=[0,a(d0),614,11],vY=[0,0],v0=[0,a(d0),556,4],vW=a(p),vQ=[1,a("ILLEGAL")],vO=a(cj),vP=a(cj),tT=a("T_IDENTIFIER"),tU=a("T_LCURLY"),tV=a("T_RCURLY"),tW=a("T_LCURLYBAR"),tX=a("T_RCURLYBAR"),tY=a("T_LPAREN"),tZ=a("T_RPAREN"),t0=a("T_LBRACKET"),t1=a("T_RBRACKET"),t2=a("T_SEMICOLON"),t3=a("T_COMMA"),t4=a("T_PERIOD"),t5=a("T_ARROW"),t6=a("T_ELLIPSIS"),t7=a("T_AT"),t8=a("T_FUNCTION"),t9=a("T_IF"),t_=a("T_IN"),t$=a("T_INSTANCEOF"),ua=a("T_RETURN"),ub=a("T_SWITCH"),uc=a("T_THIS"),ud=a("T_THROW"),ue=a("T_TRY"),uf=a("T_VAR"),ug=a("T_WHILE"),uh=a("T_WITH"),ui=a("T_CONST"),uj=a("T_LET"),uk=a("T_NULL"),ul=a("T_FALSE"),um=a("T_TRUE"),un=a("T_BREAK"),uo=a("T_CASE"),up=a("T_CATCH"),uq=a("T_CONTINUE"),ur=a("T_DEFAULT"),us=a("T_DO"),ut=a("T_FINALLY"),uu=a("T_FOR"),uv=a("T_CLASS"),uw=a("T_EXTENDS"),ux=a("T_STATIC"),uy=a("T_ELSE"),uz=a("T_NEW"),uA=a("T_DELETE"),uB=a("T_TYPEOF"),uC=a("T_VOID"),uD=a("T_ENUM"),uE=a("T_EXPORT"),uF=a("T_IMPORT"),uG=a("T_SUPER"),uH=a("T_IMPLEMENTS"),uI=a("T_INTERFACE"),uJ=a("T_PACKAGE"),uK=a("T_PRIVATE"),uL=a("T_PROTECTED"),uM=a("T_PUBLIC"),uN=a("T_YIELD"),uO=a("T_DEBUGGER"),uP=a("T_DECLARE"),uQ=a("T_TYPE"),uR=a("T_OF"),uS=a("T_ASYNC"),uT=a("T_AWAIT"),uU=a("T_CHECKS"),uV=a("T_RSHIFT3_ASSIGN"),uW=a("T_RSHIFT_ASSIGN"),uX=a("T_LSHIFT_ASSIGN"),uY=a("T_BIT_XOR_ASSIGN"),uZ=a("T_BIT_OR_ASSIGN"),u0=a("T_BIT_AND_ASSIGN"),u1=a("T_MOD_ASSIGN"),u2=a("T_DIV_ASSIGN"),u3=a("T_MULT_ASSIGN"),u4=a("T_EXP_ASSIGN"),u5=a("T_MINUS_ASSIGN"),u6=a("T_PLUS_ASSIGN"),u7=a("T_ASSIGN"),u8=a("T_PLING"),u9=a("T_COLON"),u_=a("T_OR"),u$=a("T_AND"),va=a("T_BIT_OR"),vb=a("T_BIT_XOR"),vc=a("T_BIT_AND"),vd=a("T_EQUAL"),ve=a("T_NOT_EQUAL"),vf=a("T_STRICT_EQUAL"),vg=a("T_STRICT_NOT_EQUAL"),vh=a("T_LESS_THAN_EQUAL"),vi=a("T_GREATER_THAN_EQUAL"),vj=a("T_LESS_THAN"),vk=a("T_GREATER_THAN"),vl=a("T_LSHIFT"),vm=a("T_RSHIFT"),vn=a("T_RSHIFT3"),vo=a("T_PLUS"),vp=a("T_MINUS"),vq=a("T_DIV"),vr=a("T_MULT"),vs=a("T_EXP"),vt=a("T_MOD"),vu=a("T_NOT"),vv=a("T_BIT_NOT"),vw=a("T_INCR"),vx=a("T_DECR"),vy=a("T_ERROR"),vz=a("T_EOF"),vA=a("T_JSX_IDENTIFIER"),vB=a("T_ANY_TYPE"),vC=a("T_MIXED_TYPE"),vD=a("T_EMPTY_TYPE"),vE=a("T_BOOLEAN_TYPE"),vF=a("T_NUMBER_TYPE"),vG=a("T_STRING_TYPE"),vH=a("T_VOID_TYPE"),vI=a("T_NUMBER"),vJ=a("T_STRING"),vK=a("T_TEMPLATE_PART"),vL=a("T_REGEXP"),vM=a("T_JSX_TEXT"),vN=a("T_NUMBER_SINGLETON_TYPE"),vR=a("Lexer_flow.FloatOfString.No_good"),v5=ha([[0,a(dS),15],[0,a("if"),16],[0,a(gt),17],[0,a(gs),18],[0,a("return"),19],[0,a("switch"),20],[0,a("this"),21],[0,a("throw"),22],[0,a("try"),23],[0,a(f0),24],[0,a("while"),25],[0,a("with"),26],[0,a(gA),27],[0,a(gp),28],[0,a(dL),29],[0,a(dX),30],[0,a(dJ),31],[0,a("break"),32],[0,a("case"),33],[0,a("catch"),34],[0,a("continue"),35],[0,a(cI),36],[0,a("do"),37],[0,a("finally"),38],[0,a("for"),39],[0,a("class"),40],[0,a(dQ),41],[0,a(a_),42],[0,a("else"),43],[0,a(gl),44],[0,a(fH),45],[0,a(bP),46],[0,a(dU),47],[0,a(gu),48],[0,a("export"),49],[0,a("import"),50],[0,a("super"),51],[0,a(cW),52],[0,a(fw),53],[0,a(gX),54],[0,a(gU),55],[0,a(fB),56],[0,a(fx),57],[0,a(f3),58],[0,a("debugger"),59],[0,a("declare"),60],[0,a(bV),61],[0,a("of"),62],[0,a(cg),63],[0,a("await"),64]]),v6=ha([[0,a(a_),42],[0,a(bP),46],[0,a("any"),cK],[0,a("mixed"),111],[0,a(fN),gJ],[0,a("bool"),dM],[0,a("boolean"),dM],[0,a(dJ),31],[0,a(dX),30],[0,a("number"),fP],[0,a("string"),115],[0,a(dU),f8],[0,a(dL),29]]),EJ=a(fY),EI=a(fY),EG=a(dZ),EH=a("eval"),Ey=a(cW),Ez=a(fw),EA=a(gX),EB=a(gU),EC=a(fB),ED=a(fx),EE=a(a_),EF=a(f3),Ex=a(gu),Ew=[0,a("src/parser/parser_env.ml"),294,2],Ev=[0,0,0],Eu=a(gF),Et=a(gF),EK=a("Parser_env.Try.Rollback"),EO=[0,a("did not consume any tokens")],Fb=[0,1],Fc=[0,0,0],E8=[0,a(bU),496,6],Fa=a(a_),E9=a(bv),E_=a(bR),E$=a(bv),E7=[0,1],E6=[0,[0,0,0]],E5=[0,1],E4=[0,1],E3=[0,1],EW=[0,0],EX=[0,1],EY=[0,2],EZ=[0,7],E0=[0,5],E1=[0,6],E2=[0,3],EV=[0,4],EU=[0,a(bU),G,17],ET=[0,a(bU),87,17],ES=[0,a(bU),65,11],ER=[0,a(bU),69,11],EQ=[0,a(bU),47,14],Fe=[0,31],Fd=[0,31],F9=[0,1],F_=[0,29],F8=[0,a(gK),gg,13],F6=[0,a(gK),712,17],F7=[0,[0,a(p),a(p)],1],F5=a(dL),F4=a(fZ),F3=[0,31],F1=a(gl),F2=a("target"),F0=[0,1],FZ=[0,0],FY=[0,1],FX=[0,0],FP=[0,1],FQ=[0,0],FR=[0,2],FS=[0,3],FT=[0,7],FU=[0,6],FV=[0,4],FW=[0,5],Ft=[0,[0,17,[0,2]]],Fu=[0,[0,18,[0,3]]],Fv=[0,[0,19,[0,4]]],Fw=[0,[0,0,[0,5]]],Fx=[0,[0,1,[0,5]]],Fy=[0,[0,2,[0,5]]],Fz=[0,[0,3,[0,5]]],FA=[0,[0,5,[0,6]]],FB=[0,[0,7,[0,6]]],FC=[0,[0,4,[0,6]]],FD=[0,[0,6,[0,6]]],FE=[0,[0,8,[0,7]]],FF=[0,[0,9,[0,7]]],FG=[0,[0,10,[0,7]]],FH=[0,[0,11,[0,8]]],FI=[0,[0,12,[0,8]]],FJ=[0,[0,15,[0,9]]],FK=[0,[0,13,[0,9]]],FL=[0,[0,14,[1,10]]],FM=[0,[0,16,[0,9]]],FO=[0,[0,21,[0,6]]],FN=[0,[0,20,[0,6]]],Fg=[0,9],Fh=[0,8],Fi=[0,7],Fj=[0,11],Fk=[0,10],Fl=[0,12],Fm=[0,6],Fn=[0,5],Fo=[0,3],Fp=[0,4],Fq=[0,2],Fr=[0,1],Fs=[0,0],Ff=a(cg),Gc=a(dK),Gd=a(bO),Ga=a(p),Gb=[0,a(p)],Gg=a(dO),Gh=a(dO),Gi=[0,1],Gj=[0,1],Gk=[0,1],Gl=[0,1],Gm=a(bv),Gn=a(bR),Ge=a(bv),Gf=a(bR),GX=a(bV),GY=[0,0],G2=a(bP),G3=[0,1],GZ=a(aY),G0=a(aY),G1=a(aY),G5=a(ci),G4=a(aY),GW=a(ci),GT=a(aY),GU=a(aY),GS=a(ci),GV=[0,a(dN),1121,15],GL=a("other than an interface declaration!"),GM=a("Internal Flow Error! Parsed `export interface` into something "),GN=[0,1],GO=a("other than a type alias!"),GP=a("Internal Flow Error! Parsed `export type` into something "),GI=a(aY),GJ=a(aY),GR=a(cI),GK=a(ci),GQ=a("Internal Flow Error! Unexpected export statement declaration!"),GG=a(aY),GH=a(aY),GF=a(ci),GB=[0,1],GC=a(gW),GD=[0,1],GE=a(gW),GA=a("exports"),Gz=[0,1],Gy=[0,1],Gw=a(gS),Gx=a(gS),Gv=[0,1],Gu=[0,1],Gt=a("Label"),Gs=[0,27],Gr=[0,0,0],Gp=[0,a(dN),fo,20],Gq=[0,a(dN),fq,20],Go=a("Parser error: No such thing as an expression pattern!"),Hn=[0,1],Hl=a("use strict"),Hm=[0,0,0],Hj=a(fp),Hk=a("Nooo: "),G6=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],G7=[0,a("src/parser/parser_flow.ml"),39,28],Ho=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],HA=[0,0],Hz=a(" errors");function +L(a){if(typeof +a==="number")return 0;else +switch(a[0]){case +0:return[0,L(a[1])];case +1:return[1,L(a[1])];case +2:return[2,L(a[1])];case +3:return[3,L(a[1])];case +4:return[4,L(a[1])];case +5:return[5,L(a[1])];case +6:return[6,L(a[1])];case +7:return[7,L(a[1])];case +8:var +c=a[1];return[8,c,L(a[2])];case +9:var +b=a[1];return[9,b,b,L(a[3])];case +10:return[10,L(a[1])];case +11:return[11,L(a[1])];case +12:return[12,L(a[1])];case +13:return[13,L(a[1])];default:return[14,L(a[1])]}}function +ag(a,b){if(typeof +a==="number")return b;else +switch(a[0]){case +0:return[0,ag(a[1],b)];case +1:return[1,ag(a[1],b)];case +2:return[2,ag(a[1],b)];case +3:return[3,ag(a[1],b)];case +4:return[4,ag(a[1],b)];case +5:return[5,ag(a[1],b)];case +6:return[6,ag(a[1],b)];case +7:return[7,ag(a[1],b)];case +8:var +c=a[1];return[8,c,ag(a[2],b)];case +9:var +d=a[2],e=a[1];return[9,e,d,ag(a[3],b)];case +10:return[10,ag(a[1],b)];case +11:return[11,ag(a[1],b)];case +12:return[12,ag(a[1],b)];case +13:return[13,ag(a[1],b)];default:return[14,ag(a[1],b)]}}function +I(a,b){if(typeof +a==="number")return b;else +switch(a[0]){case +0:return[0,I(a[1],b)];case +1:return[1,I(a[1],b)];case +2:var +c=a[1];return[2,c,I(a[2],b)];case +3:var +d=a[1];return[3,d,I(a[2],b)];case +4:var +e=a[3],f=a[2],g=a[1];return[4,g,f,e,I(a[4],b)];case +5:var +h=a[3],i=a[2],j=a[1];return[5,j,i,h,I(a[4],b)];case +6:var +k=a[3],l=a[2],m=a[1];return[6,m,l,k,I(a[4],b)];case +7:var +n=a[3],o=a[2],p=a[1];return[7,p,o,n,I(a[4],b)];case +8:var +q=a[3],r=a[2],s=a[1];return[8,s,r,q,I(a[4],b)];case +9:return[9,I(a[1],b)];case +10:return[10,I(a[1],b)];case +11:var +t=a[1];return[11,t,I(a[2],b)];case +12:var +u=a[1];return[12,u,I(a[2],b)];case +13:var +v=a[2],w=a[1];return[13,w,v,I(a[3],b)];case +14:var +x=a[2],y=a[1];return[14,y,x,I(a[3],b)];case +15:return[15,I(a[1],b)];case +16:return[16,I(a[1],b)];case +17:var +z=a[1];return[17,z,I(a[2],b)];case +18:var +A=a[1];return[18,A,I(a[2],b)];case +19:return[19,I(a[1],b)];case +20:var +B=a[2],C=a[1];return[20,C,B,I(a[3],b)];case +21:var +D=a[1];return[21,D,I(a[2],b)];case +22:return[22,I(a[1],b)];case +23:var +E=a[1];return[23,E,I(a[2],b)];default:var +F=a[2],G=a[1];return[24,G,F,I(a[3],b)]}}function +ay(a){throw[0,c$,a]}function +az(a){throw[0,ef,a]}a0(0);function +da(b,a){return HR(b,a)?b:a}function +db(a){return 0<=a?a:-a|0}function +w(d,c){var +a=s(d),e=s(c),b=Z(a+e|0);aA(d,0,b,0,a);aA(c,0,b,a,e);return b}function +cr(a,b){if(a){var +c=a[1];return[0,c,cr(a[2],b)]}return b}Ii(0);hb(1);hb(2);function +hq(b){function +a(b){var +a=b;for(;;){if(a){var +c=a[2],d=a[1];try{Ih(d);}catch(a){}var +a=c;continue}return 0}}return a(Ij(0))}function +dc(c){var +b=0,a=c;for(;;){if(a){var +b=b+1|0,a=a[2];continue}return b}}function +bl(a){return a?a[1]:ay(hr)}function +b1(d,c){var +a=d,b=c;for(;;){if(a){var +e=[0,a[1],b],a=a[2],b=e;continue}return b}}function +m(a){return b1(a,0)}function +bm(c,a){if(a){var +d=a[2],e=b(c,a[1]);return[0,e,bm(c,d)]}return 0}function +M(d,c){var +a=c;for(;;){if(a){var +e=a[2];b(d,a[1]);var +a=e;continue}return 0}}function +aB(e,d,c){var +b=d,a=c;for(;;){if(a){var +g=a[2],b=f(e,b,a[1]),a=g;continue}return b}}function +eg(d,c){var +b=d,a=c;for(;;){if(0===b)return a;if(a){var +b=b-1|0,a=a[2];continue}throw[0,t,hs]}}function +ad(a){if(0<=a)if(!(K>1,D=eg(n,g),E=u(n,g),i=E,h=u(j-n|0,D),e=0;for(;;){if(i){if(h){var +p=h[2],q=h[1],r=i[2],l=i[1],s=f(b,l,q);if(0===s){var +i=r,h=p,e=[0,l,e];continue}if(0>1,D=eg(o,g),E=m(o,g),i=E,h=m(j-o|0,D),e=0;for(;;){if(i){if(h){var +q=h[2],r=h[1],s=i[2],l=i[1],t=f(b,l,r);if(0===t){var +i=s,h=q,e=[0,l,e];continue}if(0<=t){var +h=q,e=[0,r,e];continue}var +i=s,e=[0,l,e];continue}return b1(i,e)}return b1(h,e)}},q=dc(d),s=2<=q?m(q,d):d,j=function(b,a){if(!(3>>0))switch(b){case +0:return[0,0,a];case +1:if(a)return[0,[0,0,a[1],0,1],a[2]];break;case +2:if(a){var +e=a[2];if(e)return[0,[0,[0,0,a[1],0,1],e[1],0,2],e[2]]}break;default:if(a){var +f=a[2];if(f){var +g=f[2];if(g)return[0,[0,[0,0,a[1],0,1],f[1],[0,0,g[1],0,1],2],g[2]]}}}var +h=b/2|0,i=j(h,a),d=i[2],l=i[1];if(d){var +m=d[1],k=j((b-h|0)-1|0,d[2]),n=k[2];return[0,c(l,m,k[1]),n]}throw[0,t,hS]};return j(dc(s),s)[1]}var +v=p[1];return a(v,a(r,a(o,a(i,g(e)))))}return a(r,a(o,a(i,g(e))))}return a(o,a(i,g(e)))}return a(i,g(e))}return g(e)}return z}]}a0(0);var +hU=[W,hT,a0(0)];function +hV(a){throw hU}function +hW(a){var +d=a[1];a[1]=hV;try{var +c=b(d,0);a[1]=c;Im(a,ck);return c}catch(b){b=aj(b);a[1]=function(a){throw b};throw b}}function +C(a){var +b=1<=a?a:1,c=b2>>0?1:0:65<=d?0:1;else{if(32===d)var +f=1;else +if(43<=d)switch(d+f4|0){case +5:if(a<(c+2|0))if(1>>0)if(93<=q)var +r=0,l=0;else +var +l=1;else +if(56<(q-1|0)>>>0)var +r=1,l=0;else +var +l=1;if(l){var +j=j+1|0;continue}}else +var +r=11<=g?13===g?1:0:8<=g?1:0;var +v=r?1:1;}if(v){var +a=[0,0],t=s(d)-1|0,y=0;if(!(t<0)){var +i=y;for(;;){var +f=ax(d,i);if(32<=f){var +o=f+fs|0;if(58>>0)if(93<=o)var +m=0,n=0;else +var +n=1;else +if(56<(o-1|0)>>>0)var +m=1,n=0;else +var +n=1;if(n)var +p=1,m=2;}else +var +m=11<=f?13===f?1:0:8<=f?1:0;switch(m){case +0:var +p=4;break;case +1:var +p=2;break}a[1]=a[1]+p|0;var +C=i+1|0;if(t!==i){var +i=C;continue}break}}if(a[1]===s(d))var +k=ei(d);else{var +b=Z(a[1]);a[1]=0;var +u=s(d)-1|0,z=0;if(!(u<0)){var +h=z;for(;;){var +c=ax(d,h);if(35<=c)var +e=92===c?1:B<=c?0:2;else +if(32<=c)var +e=34<=c?1:2;else +if(14<=c)var +e=0;else +switch(c){case +8:Q(b,a[1],92);a[1]++;Q(b,a[1],98);var +e=3;break;case +9:Q(b,a[1],92);a[1]++;Q(b,a[1],f8);var +e=3;break;case +10:Q(b,a[1],92);a[1]++;Q(b,a[1],cK);var +e=3;break;case +13:Q(b,a[1],92);a[1]++;Q(b,a[1],fP);var +e=3;break;default:var +e=0;}switch(e){case +0:Q(b,a[1],92);a[1]++;Q(b,a[1],48+(c/ae|0)|0);a[1]++;Q(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;Q(b,a[1],48+(c%10|0)|0);break;case +1:Q(b,a[1],92);a[1]++;Q(b,a[1],c);break;case +2:Q(b,a[1],c);break}a[1]++;var +A=h+1|0;if(u!==h){var +h=A;continue}break}}var +k=b;}}else +var +k=d;var +w=s(k),x=bn(w+2|0,34);aA(k,0,x,1,w);return x}}function +ju(c,b){switch(c){case +0:var +a=iF;break;case +1:var +a=iG;break;case +2:var +a=iH;break;case +3:var +a=iI;break;case +4:var +a=iJ;break;case +5:var +a=iK;break;case +6:var +a=iL;break;case +7:var +a=iM;break;case +8:var +a=iN;break;case +9:var +a=iO;break;case +10:var +a=iP;break;case +11:var +a=iQ;break;default:var +a=iR;}return c0(a,b)}function +jv(c,b){switch(c){case +0:var +a=i5;break;case +1:var +a=i6;break;case +2:var +a=i7;break;case +3:var +a=i8;break;case +4:var +a=i9;break;case +5:var +a=i_;break;case +6:var +a=i$;break;case +7:var +a=ja;break;case +8:var +a=jb;break;case +9:var +a=jc;break;case +10:var +a=jd;break;case +11:var +a=je;break;default:var +a=jf;}return c0(a,b)}function +jw(c,b){switch(c){case +0:var +a=jg;break;case +1:var +a=jh;break;case +2:var +a=ji;break;case +3:var +a=jj;break;case +4:var +a=jk;break;case +5:var +a=jl;break;case +6:var +a=jm;break;case +7:var +a=jn;break;case +8:var +a=jo;break;case +9:var +a=jp;break;case +10:var +a=jq;break;case +11:var +a=jr;break;default:var +a=js;}return c0(a,b)}function +jx(c,b){switch(c){case +0:var +a=iS;break;case +1:var +a=iT;break;case +2:var +a=iU;break;case +3:var +a=iV;break;case +4:var +a=iW;break;case +5:var +a=iX;break;case +6:var +a=iY;break;case +7:var +a=iZ;break;case +8:var +a=i0;break;case +9:var +a=i1;break;case +10:var +a=i2;break;case +11:var +a=i3;break;default:var +a=i4;}return H3(a,b)}function +a3(c,u,h){if(16<=c){if(17<=c)switch(c+gr|0){case +2:var +k=0;break;case +0:case +3:var +m=43,k=1;break;default:var +m=32,k=1;}else +var +k=0;if(!k)var +m=45;var +i=H0(h,u,m);if(19<=c){var +l=s(i);if(0===l)return i;var +q=Z(l),r=l-1|0,z=0;if(!(r<0)){var +e=z;for(;;){var +g=ax(i,e);if(97<=g)if(gE>>0?55===n?1:0:21<(n-1|0)>>>0?1:0;if(!D){var +j=j+1|0;continue}var +y=1;}return y?f:w(f,jB)}}return f}function +v(x,e,w,u){var +d=x,c=w,a=u;for(;;)if(typeof +a==="number")return f(d,e,c);else +switch(a[0]){case +0:var +y=a[1];return function(a){return v(d,e,[5,c,a],y)};case +1:var +z=a[1];return function(g){var +a=eh(g),b=s(a),f=bn(b+2|0,39);aA(a,0,f,1,b);return v(d,e,[4,c,f],z)};case +2:var +A=a[2],B=a[1];return es(d,e,c,A,B,function(a){return a});case +3:return es(d,e,c,a[2],a[1],iE);case +4:return cw(d,e,c,a[4],a[2],a[3],ju,a[1]);case +5:return cw(d,e,c,a[4],a[2],a[3],jv,a[1]);case +6:return cw(d,e,c,a[4],a[2],a[3],jw,a[1]);case +7:return cw(d,e,c,a[4],a[2],a[3],jx,a[1]);case +8:var +h=a[4],i=a[3],k=a[2],j=a[1];if(typeof +k==="number"){if(typeof +i==="number")return 0===i?function(a){return v(d,e,[4,c,a3(j,dg,a)],h)}:function(b,a){return v(d,e,[4,c,a3(j,b,a)],h)};var +Z=i[1];return function(a){return v(d,e,[4,c,a3(j,Z,a)],h)}}else{if(0===k[0]){var +n=k[2],o=k[1];if(typeof +i==="number")return 0===i?function(a){return v(d,e,[4,c,aq(o,n,a3(j,dg,a))],h)}:function(b,a){return v(d,e,[4,c,aq(o,n,a3(j,b,a))],h)};var +_=i[1];return function(a){return v(d,e,[4,c,aq(o,n,a3(j,_,a))],h)}}var +p=k[1];if(typeof +i==="number")return 0===i?function(b,a){return v(d,e,[4,c,aq(p,b,a3(j,dg,a))],h)}:function(f,b,a){return v(d,e,[4,c,aq(p,f,a3(j,b,a))],h)};var +$=i[1];return function(b,a){return v(d,e,[4,c,aq(p,b,a3(j,$,a))],h)}}case +9:var +C=a[1];return function(a){var +b=a?ho:hp;return v(d,e,[4,c,b],C)};case +10:var +c=[7,c],a=a[1];continue;case +11:var +c=[2,c,a[1]],a=a[2];continue;case +12:var +c=[3,c,a[1]],a=a[2];continue;case +13:var +E=a[3],F=a[2],q=ep(16);dh(q,F);var +r=er(q);return function(a){return v(d,e,[4,c,r],E)};case +14:var +G=a[3],H=a[2];return function(b){var +f=b[1],a=D(f,L(R(H)));if(typeof +a[2]==="number")return v(d,e,c,I(a[1],G));throw ab};case +15:var +J=a[1];return function(b,a){return v(d,e,[6,c,function(c){return f(b,c,a)}],J)};case +16:var +K=a[1];return function(a){return v(d,e,[6,c,a],K)};case +17:var +c=[0,c,a[1]],a=a[2];continue;case +18:var +m=a[1];if(0===m[0]){var +M=a[2],N=m[1][1],O=0,d=function(c,d,e){return function(b,a){return v(d,b,[1,c,[0,a]],e)}}(c,d,M),c=O,a=N;continue}var +P=a[2],Q=m[1][1],S=0,d=function(c,d,e){return function(b,a){return v(d,b,[1,c,[1,a]],e)}}(c,d,P),c=S,a=Q;continue;case +19:throw[0,t,jC];case +20:var +T=a[3],U=[8,c,jD];return function(a){return v(d,e,U,T)};case +21:var +V=a[2];return function(a){return v(d,e,[4,c,c0(jE,a)],V)};case +22:var +W=a[1];return function(a){return v(d,e,[5,c,a],W)};case +23:var +g=a[2],l=a[1];if(typeof +l==="number")switch(l){case +0:return al(d,e,c,g);case +1:return al(d,e,c,g);case +2:return al(d,e,c,g);case +3:throw[0,t,jF];default:return al(d,e,c,g)}else +switch(l[0]){case +0:return al(d,e,c,g);case +1:return al(d,e,c,g);case +2:return al(d,e,c,g);case +3:return al(d,e,c,g);case +4:return al(d,e,c,g);case +5:return al(d,e,c,g);case +6:return al(d,e,c,g);case +7:return al(d,e,c,g);case +8:return ar(d,e,c,l[2],g);case +9:return al(d,e,c,g);default:return al(d,e,c,g)}default:var +X=a[3],Y=a[1];return et(d,e,c,X,Y,b(a[2],0))}}function +ar(e,d,c,a,b){if(typeof +a==="number")return al(e,d,c,b);else +switch(a[0]){case +0:var +f=a[1];return function(a){return ar(e,d,c,f,b)};case +1:var +g=a[1];return function(a){return ar(e,d,c,g,b)};case +2:var +h=a[1];return function(a){return ar(e,d,c,h,b)};case +3:var +i=a[1];return function(a){return ar(e,d,c,i,b)};case +4:var +j=a[1];return function(a){return ar(e,d,c,j,b)};case +5:var +k=a[1];return function(a){return ar(e,d,c,k,b)};case +6:var +l=a[1];return function(a){return ar(e,d,c,l,b)};case +7:var +m=a[1];return function(a){return ar(e,d,c,m,b)};case +8:var +n=a[2];return function(a){return ar(e,d,c,n,b)};case +9:var +o=a[3],p=a[2],q=U(R(a[1]),p);return function(a){return ar(e,d,c,ag(q,o),b)};case +10:var +r=a[1];return function(f,a){return ar(e,d,c,r,b)};case +11:var +s=a[1];return function(a){return ar(e,d,c,s,b)};case +12:var +u=a[1];return function(a){return ar(e,d,c,u,b)};case +13:throw[0,t,jG];default:throw[0,t,jH]}}function +al(d,c,b,a){return v(d,c,[8,b,jI],a)}function +es(g,f,e,d,a,c){if(typeof +a==="number")return function(a){return v(g,f,[4,e,b(c,a)],d)};else{if(0===a[0]){var +h=a[2],i=a[1];return function(a){return v(g,f,[4,e,aq(i,h,b(c,a))],d)}}var +j=a[1];return function(h,a){return v(g,f,[4,e,aq(j,h,b(c,a))],d)}}}function +cw(h,g,e,d,i,c,b,a){if(typeof +i==="number"){if(typeof +c==="number")return 0===c?function(c){return v(h,g,[4,e,f(b,a,c)],d)}:function(i,c){return v(h,g,[4,e,bC(i,f(b,a,c))],d)};var +m=c[1];return function(c){return v(h,g,[4,e,bC(m,f(b,a,c))],d)}}else{if(0===i[0]){var +j=i[2],k=i[1];if(typeof +c==="number")return 0===c?function(c){return v(h,g,[4,e,aq(k,j,f(b,a,c))],d)}:function(i,c){return v(h,g,[4,e,aq(k,j,bC(i,f(b,a,c)))],d)};var +n=c[1];return function(c){return v(h,g,[4,e,aq(k,j,bC(n,f(b,a,c)))],d)}}var +l=i[1];if(typeof +c==="number")return 0===c?function(i,c){return v(h,g,[4,e,aq(l,i,f(b,a,c))],d)}:function(j,i,c){return v(h,g,[4,e,aq(l,j,bC(i,f(b,a,c)))],d)};var +o=c[1];return function(i,c){return v(h,g,[4,e,aq(l,i,bC(o,f(b,a,c)))],d)}}}function +et(g,f,e,d,c,a){if(c){var +h=c[1];return function(c){return et(g,f,e,d,h,b(a,c))}}return v(g,f,[4,e,a],d)}function +ba(c,h){var +a=h;for(;;)if(typeof +a==="number")return 0;else +switch(a[0]){case +0:var +e=a[2],i=a[1];if(typeof +e==="number")switch(e){case +0:var +d=hY;break;case +1:var +d=hZ;break;case +2:var +d=h0;break;case +3:var +d=h1;break;case +4:var +d=h2;break;case +5:var +d=h3;break;default:var +d=h4;}else +switch(e[0]){case +0:var +d=e[1];break;case +1:var +d=e[1];break;default:var +d=w(h5,bn(1,e[1]));}ba(c,i);return y(c,d);case +1:var +f=a[2],g=a[1];if(0===f[0]){var +j=f[1];ba(c,g);y(c,jJ);var +a=j;continue}var +k=f[1];ba(c,g);y(c,jK);var +a=k;continue;case +6:var +n=a[2];ba(c,a[1]);return y(c,b(n,0));case +7:var +a=a[1];continue;case +8:var +p=a[2];ba(c,a[1]);return az(p);case +2:case +4:var +l=a[2];ba(c,a[1]);return y(c,l);default:var +m=a[2];ba(c,a[1]);return o(c,m)}}function +eu(b){var +a=b[1];return v(function(c,b){var +a=C(64);ba(a,b);return T(a)},0,0,a)}var +ev=[0,0];function +ew(a){ev[1]=[0,a,ev[1]];return 0}try{var +HG=c9(HF),ey=HG;}catch(a){a=aj(a);if(a!==ah)throw a;try{var +HE=c9(HD),ex=HE;}catch(a){a=aj(a);if(a!==ah)throw a;var +ex=jM;}var +ey=ex;}var +jN=hI(ey,82),cx=[cV,function(A){var +n=Ix(0),c=[0,bA(55,0),0],i=0===n.length-1?[0,0]:n,j=i.length-1,b=0;for(;;){k(c[1],b)[b+1]=b;var +z=b+1|0;if(54!==b){var +b=z;continue}var +g=[0,jL],l=54+da(55,j)|0,u=0;if(!(l<0)){var +d=u;for(;;){var +e=d%55|0,m=hc(d,j),v=k(i,m)[m+1],h=w(g[1],a(p+v));g[1]=Ig(h,0,s(h));var +f=g[1],o=_(f,3)<<24,q=_(f,2)<<16,r=_(f,1)<<8,t=((_(f,0)+r|0)+q|0)+o|0,x=(k(c[1],e)[e+1]^t)&cH;k(c[1],e)[e+1]=x;var +y=d+1|0;if(l!==d){var +d=y;continue}break}}c[2]=0;return c}}];function +ez(h,l){var +m=h?h[1]:jN,b=16;for(;;){if(!(l<=b))if(!(df<(b*2|0))){var +b=b*2|0;continue}if(m){var +i=hf(cx),a=ck===i?cx[1]:cV===i?hW(cx):cx;a[2]=(a[2]+1|0)%55|0;var +c=a[2],d=k(a[1],c)[c+1],e=(a[2]+24|0)%55|0,f=(k(a[1],e)[e+1]+(d^(d>>>25|0)&31)|0)&cH,g=a[2];k(a[1],g)[g+1]=f;var +j=f;}else +var +j=0;return[0,0,bA(b,0),j,b]}}function +dj(a,b){return 3<=a.length-1?HS(10,ae,a[3],b)&(a[2].length-1-1|0):hc(HZ(10,ae,b),a[2].length-1)}function +eA(a,m,q){var +c=dj(a,m),r=[0,m,q,k(a[2],c)[c+1]];k(a[2],c)[c+1]=r;a[1]=a[1]+1|0;var +n=a[2].length-1<<1>>0))switch(d){case +0:return bb(a);case +1:break;default:var +b=bb(a);return[0,1,b[2],b[3],b[4],b[5]]}}return a}function +vU(b){var +a=b[5];if(a)if(48===a[1]){var +c=a[2];if(c){var +d=c[1],e=88===d?0:d4===d?0:1;if(!e)return bb(bb(b))}}throw bE}function +vV(a){var +b=hG(vW,bm(eh,a[5]));try{var +c=c4(b);}catch(a){a=aj(a);if(a[1]===c$)throw bE;throw a}return[0,a[1],a[2],c,a[4],0]}function +vX(l){var +a=l;for(;;){var +j=a[5];if(j){var +b=j[1];if(81<=b){if(95===b){var +a=bb(a);continue}var +k=gJ===b?1:0;}else{if(46===b){if(0===a[4]){var +c=bb(a),a=[0,c[1],c[2],c[3],vY,c[5]];continue}throw bE}var +k=80<=b?1:0;}if(k)return vV(bb(a));if(48<=b)if(57>>0)throw[0,t,v1];return a-48|0}function +bF(a){if(65<=a){if(97<=a){if(!(d5<=a))return(a-97|0)+10|0}else +if(!(71<=a))return(a-65|0)+10|0}else +if(!(9<(a+gH|0)>>>0))return a-48|0;throw[0,t,v2]}function +aU(a){if(fI<=a){var +b=[0,ad(P|a&63),0],c=[0,ad(P|(a>>>6|0)&63),b],d=[0,ad(P|(a>>>12|0)&63),c];return[0,ad(cQ|a>>>18|0),d]}if(d2<=a){var +e=[0,ad(P|a&63),0],f=[0,ad(P|(a>>>6|0)&63),e];return[0,ad(cT|a>>>12|0),f]}if(P<=a){var +g=[0,ad(P|a&63),0];return[0,ad(cM|a>>>6|0),g]}return[0,ad(a),0]}function +aH(d,c,e){if(0===d)var +b=0;else +switch(d-1|0){case +0:var +a=c3(c2(w(v4,c))),b=1;break;case +2:var +a=eX(c),b=1;break;default:var +b=0;}if(!b)var +a=c3(c2(c));var +f=ai(e,v3)?a:-a;return[5,d,f]}var +eY=ez(0,53),eZ=ez(0,53);M(function(a){return eA(eY,a[1],a[2])},v5);M(function(a){return eA(eZ,a[1],a[2])},v6);function +aV(b,a){a[10]=bA(8,-1);return v7(b,a,0)}function +v7(a,d,H){var +q=H;for(;;){var +f=em(as,q,d);if(77>>0){b(d[1],d);var +q=f;continue}var +p=f;if(39<=p)switch(p){case +39:return[0,a,90];case +40:return[0,a,91];case +41:return[0,a,86];case +42:return[0,a,87];case +43:return[0,a,cU];case +44:return[0,a,cm];case +45:return[0,a,68];case +46:return[0,a,94];case +47:return[0,a,67];case +48:return[0,a,66];case +49:return[0,a,96];case +50:return[0,a,95];case +51:return[0,a,77];case +52:return[0,a,76];case +53:return[0,a,74];case +54:return[0,a,75];case +55:return[0,a,72];case +56:return[0,a,71];case +57:return[0,a,70];case +58:return[0,a,69];case +59:return[0,a,92];case +60:return[0,a,93];case +61:return[0,a,97];case +62:return[0,a,98];case +63:return[0,a,ae];case +64:return[0,a,fU];case +65:return[0,a,cf];case +66:return[0,a,83];case +67:return[0,a,85];case +68:return[0,a,84];case +69:return[0,a,d5];case +70:return[0,a,cL];case +71:return[0,a,78];case +72:return[0,a,12];case +73:return[0,a,73];case +74:return[0,a,99];case +75:return[0,a,14];case +76:var +af=a[3]?aS(a,n(a,d),4):a;return[0,af,G];default:return[0,aN(a,n(a,d)),bQ]}switch(p){case +0:aD(d);return aV(a,d);case +1:return aV(aN(a,n(a,d)),d);case +2:bc(d);return aV(a,d);case +3:var +I=n(a,d),r=C(B),s=bo(a,r,d);return aV(aG(s[1],I,s[2],r,1),d);case +4:var +J=k(d[10],0)[1],K=l(d,d[5]+2|0,J),L=d[6],t=l(d,k(d[10],0)[1],L),M=l(d,d[5],d[6]);if(a[4]){var +N=a[3]?eW(a,n(a,d),M):a,u=cz(1,N);return c(t,v9)?aV(u,d):[0,u,80]}var +O=n(a,d),e=C(B);y(e,K);y(e,t);var +v=bo(a,e,d);return aV(aG(v[1],O,v[2],e,1),d);case +5:return a[3]?aV(cz(0,a),d):(cy(1,d),[0,a,ae]);case +6:var +P=n(a,d),w=C(B),x=bG(a,w,d);return aV(aG(x[1],P,x[2],w,0),d);case +7:return 0===d[5]?aV(bG(a,C(B),d)[1],d):[0,a,bQ];case +8:var +z=A(d,d[5]),Q=n(a,d),D=C(B),h=C(B);o(h,z);var +i=e0(a,z,D,h,0,d),R=i[3],S=T(h),U=T(D),V=[1,[0,g(Q,i[2]),U,S,R]];return[0,i[1],V];case +9:var +E=C(B),F=C(B),j=C(B);y(j,cu(d));var +m=e2(a,n(a,d),E,F,j,d),W=m[3],X=T(j),Y=T(F),Z=[0,T(E),Y,X];return[0,m[1],[2,[0,m[2],Z,W]]];case +10:var +_=d[6];return aT(a,d,l(d,k(d[10],0)[1],_),v_);case +11:return[0,a,v$];case +12:var +$=d[6];return aT(a,d,l(d,k(d[10],0)[1],$),wa);case +13:return[0,a,wb];case +14:var +aa=d[6];return aT(a,d,l(d,k(d[10],0)[1],aa),wc);case +15:return[0,a,wd];case +22:var +ac=l(d,d[5],d[6]);bc(d);try{var +ad=[0,a,eB(eY,ac)];return ad}catch(b){b=aj(b);if(b===ah)return[0,a,0];throw b}case +23:return[0,a,1];case +24:return[0,a,2];case +25:return[0,a,5];case +26:return[0,a,6];case +27:return[0,a,7];case +28:return[0,a,8];case +29:return[0,a,13];case +30:return[0,a,11];case +31:return[0,a,9];case +32:return[0,a,10];case +33:return[0,a,80];case +34:return[0,a,79];case +35:return[0,a,82];case +36:return[0,a,81];case +37:return[0,a,88];case +38:return[0,a,89];case +16:case +18:case +20:var +ab=d[6];return aT(a,d,l(d,k(d[10],0)[1],ab),we);default:return[0,a,wf]}}}function +be(b,a){a[10]=bA(26,-1);var +c=a[6];k(a[10],17)[18]=c;var +d=a[6];k(a[10],16)[17]=d;var +e=a[6];k(a[10],15)[16]=e;var +f=a[6];k(a[10],14)[15]=f;var +g=a[6];k(a[10],13)[14]=g;var +h=a[6];k(a[10],12)[13]=h;var +i=a[6];k(a[10],11)[12]=i;var +j=a[6];k(a[10],10)[11]=j;var +l=a[6];k(a[10],9)[10]=l;var +m=a[6];k(a[10],8)[9]=m;var +n=a[6];k(a[10],7)[8]=n;var +o=a[6];k(a[10],6)[7]=o;var +p=a[6];k(a[10],5)[6]=p;var +q=a[6];k(a[10],4)[5]=q;return v8(b,a,133)}function +v8(d,a,D){var +j=D;for(;;){var +f=em(as,j,a);if(51>>0){b(a[1],a);var +j=f;continue}switch(f){case +0:aD(a);return be(d,a);case +1:bc(a);return be(d,a);case +2:var +E=n(d,a),m=C(B),p=bo(d,m,a);return be(aG(p[1],E,p[2],m,1),a);case +3:var +F=k(a[10],0)[1],H=l(a,a[5]+2|0,F),I=a[6],q=l(a,k(a[10],0)[1],I),J=l(a,a[5],a[6]);if(d[4]){var +K=d[3]?eW(d,n(d,a),J):d,r=cz(1,K);return c(q,wg)?be(r,a):[0,r,80]}var +L=n(d,a),e=C(B);y(e,H);y(e,q);var +s=bo(d,e,a);return be(aG(s[1],L,s[2],e,1),a);case +4:return d[3]?be(cz(0,d),a):(cy(1,a),[0,d,ae]);case +5:var +M=n(d,a),t=C(B),u=bG(d,t,a);return be(aG(u[1],M,u[2],t,0),a);case +6:var +v=A(a,a[5]),N=n(d,a),w=C(B),h=C(B);o(h,v);var +i=e0(d,v,w,h,0,a),O=i[3],P=T(h),Q=T(w),R=[1,[0,g(N,i[2]),Q,P,O]];return[0,i[1],R];case +7:var +S=k(a[10],0)[1],U=l(a,a[5],S),V=k(a[10],1)[2],W=l(a,k(a[10],0)[1],V),X=a[6],Y=l(a,k(a[10],1)[2],X);return aT(d,a,Y,aH(0,W,U));case +8:var +Z=k(a[10],0)[1],_=l(a,a[5],Z),$=a[6];return[0,d,aH(0,l(a,k(a[10],0)[1],$),_)];case +9:var +aa=k(a[10],0)[1],ab=l(a,a[5],aa),ac=k(a[10],1)[2],ad=l(a,k(a[10],0)[1],ac),af=a[6],ag=l(a,k(a[10],1)[2],af);return aT(d,a,ag,aH(2,ad,ab));case +10:var +ai=k(a[10],0)[1],ak=l(a,a[5],ai),al=a[6];return[0,d,aH(2,l(a,k(a[10],0)[1],al),ak)];case +11:var +am=k(a[10],0)[1],an=l(a,a[5],am),ao=k(a[10],1)[2],ap=l(a,k(a[10],0)[1],ao),aq=a[6],ar=l(a,k(a[10],1)[2],aq);return aT(d,a,ar,aH(1,ap,an));case +12:var +at=k(a[10],0)[1],au=l(a,a[5],at),av=a[6];return[0,d,aH(1,l(a,k(a[10],0)[1],av),au)];case +13:var +aw=k(a[10],0)[1],ax=l(a,a[5],aw),ay=k(a[10],1)[2],az=l(a,k(a[10],0)[1],ay),aA=a[6],aB=l(a,k(a[10],1)[2],aA);try{var +aC=aH(3,az,ax),z=d,x=aC;}catch(b){b=aj(b);if(!ct)throw b;var +z=aS(d,n(d,a),59),x=wh;}return aT(z,a,aB,x);case +14:var +aE=k(a[10],0)[1],aF=l(a,a[5],aE),aI=a[6],aJ=l(a,k(a[10],0)[1],aI);try{var +aK=[0,d,aH(3,aJ,aF)];return aK}catch(b){b=aj(b);if(ct)return[0,aS(d,n(d,a),59),wi];throw b}case +15:var +aL=k(a[10],0)[1],aM=l(a,a[5],aL),aN=k(a[10],1)[2],aO=l(a,k(a[10],0)[1],aN),aP=a[6],aQ=l(a,k(a[10],1)[2],aP);return aT(d,a,aQ,aH(3,aO,aM));case +16:var +aR=k(a[10],0)[1],aU=l(a,a[5],aR),aV=a[6];return[0,d,aH(3,l(a,k(a[10],0)[1],aV),aU)];case +17:var +aW=k(a[10],0)[1],aX=l(a,a[5],aW),aY=k(a[10],1)[2],aZ=l(a,k(a[10],0)[1],aY),a0=a[6],a1=l(a,k(a[10],1)[2],a0);return aT(d,a,a1,aH(3,aZ,aX));case +18:var +a2=k(a[10],0)[1],a3=l(a,k(a[10],1)[2],a2),a4=k(a[10],2)[3];return[0,d,aH(3,l(a,k(a[10],3)[4],a4),a3)];case +19:var +a5=l(a,a[5],a[6]);bc(a);try{var +a6=[0,d,eB(eZ,a5)];return a6}catch(a){a=aj(a);if(a===ah)return[0,d,0];throw a}case +20:return[0,d,65];case +23:return[0,d,1];case +24:return[0,d,2];case +25:return[0,d,3];case +26:return[0,d,4];case +27:return[0,d,5];case +28:return[0,d,6];case +29:return[0,d,13];case +30:return[0,d,11];case +31:return[0,d,9];case +32:return[0,d,10];case +37:return[0,d,92];case +38:return[0,d,93];case +41:return[0,d,ae];case +43:return[0,d,83];case +44:return[0,d,85];case +45:return[0,d,46];case +46:return[0,d,12];case +48:return[0,d,97];case +49:return[0,d,98];case +50:var +a7=d[3]?aS(d,n(d,a),4):d;return[0,a7,G];case +51:return[0,d,bQ];case +21:case +35:return[0,d,7];case +22:case +36:return[0,d,8];case +33:case +42:return[0,d,80];case +34:case +40:return[0,d,79];default:return[0,d,78]}}}function +e0(s,r,e,d,q,a){var +c=s,f=q;a:for(;;){var +i=bw;for(;;){var +g=aC(as,i,a);if(3>>0){b(a[1],a);var +i=g;continue}switch(g){case +0:var +h=A(a,a[5]);o(d,h);if(r===h)return[0,c,n(c,a),f];o(e,h);continue a;case +1:o(d,A(a,a[5]));var +j=e1(c,e,a),t=j[2],u=t||f;y(d,cu(a));var +c=j[1],f=u;continue a;case +2:var +k=l(a,a[5],a[6]);y(d,k);var +m=aN(c,n(c,a));y(e,k);return[0,m,n(m,a),f];default:var +p=A(a,a[5]);o(d,p);o(e,p);continue a}}}}function +e1(c,d,a){var +f=261;for(;;){var +e=aC(as,f,a);if(17>>0){b(a[1],a);var +f=e;continue}switch(e){case +0:return[0,c,0];case +1:y(d,wj);return[0,c,0];case +2:var +m=A(a,a[5]+1|0),p=bF(A(a,a[5]+2|0)),q=aU((bF(m)*16|0)+p|0);M(function(a){return o(d,a)},q);return[0,c,0];case +3:var +g=A(a,a[5]),h=A(a,a[5]+1|0),i=A(a,a[5]+2|0),r=bd(i),s=bd(h)<<3,j=((bd(g)<<6)+s|0)+r|0;if(bw<=j){var +t=bd(h),u=aU((bd(g)<<3)+t|0);M(function(a){return o(d,a)},u);o(d,i);}else{var +v=aU(j);M(function(a){return o(d,a)},v);}return[0,c,1];case +4:var +x=A(a,a[5]),z=bd(A(a,a[5]+1|0)),B=aU((bd(x)<<3)+z|0);M(function(a){return o(d,a)},B);return[0,c,1];case +5:o(d,ad(0));return[0,c,0];case +6:o(d,ad(8));return[0,c,0];case +7:o(d,ad(12));return[0,c,0];case +8:o(d,ad(10));return[0,c,0];case +9:o(d,ad(13));return[0,c,0];case +10:o(d,ad(9));return[0,c,0];case +11:o(d,ad(11));return[0,c,0];case +12:var +C=aU(bd(A(a,a[5])));M(function(a){return o(d,a)},C);return[0,c,1];case +13:var +D=A(a,a[5]+1|0),E=A(a,a[5]+2|0),F=A(a,a[5]+3|0),G=bF(A(a,a[5]+4|0)),H=bF(F)<<4,I=bF(E)<<8,J=aU((((bF(D)<<12)+I|0)+H|0)+G|0);M(function(a){return o(d,a)},J);return[0,c,0];case +14:var +k=c4(w(wk,l(a,a[5]+2|0,a[6]-1|0))),K=fA>>0){b(a[1],a);var +f=e;continue}switch(e){case +0:var +g=aN(c,n(c,a));return[0,g,n(g,a)];case +1:aD(a);o(d,10);continue a;case +2:var +h=n(c,a),i=c[3]?aS(c,h,[2,wm,wl]):c;return[0,i,h];case +3:if(c[3])return[0,c,n(c,a)];y(d,wn);continue a;default:o(d,A(a,a[5]));continue a}}}}function +bG(c,h,a){a:for(;;){var +g=296;for(;;){var +d=aC(as,g,a);if(2>>0){b(a[1],a);var +g=d;continue}switch(d){case +0:return[0,c,n(c,a)];case +1:var +e=n(c,a),f=e[3];aD(a);return[0,c,[0,e[1],e[2],[0,f[1],f[2]-1|0,f[3]-1|0]]];default:o(h,A(a,a[5]));continue a}}}}function +dl(ah,be,Z,ag,d){a:for(;;){var +aE=380;for(;;){var +aj=aC(as,aE,d);if(6>>0){b(d[1],d);var +aE=aj;continue}switch(aj){case +0:var +ai=A(d,d[5]);switch(be){case +0:var +aA=39===ai?1:0;break;case +1:var +aA=34===ai?1:0;break;default:if(60===ai)var +aB=1;else +if(123===ai)var +aB=1;else +var +aA=0,aB=0;if(aB){cy(d[12][4]-d[11][4]|0,d);return[0,ah,n(ah,d)]}}if(aA)return[0,ah,n(ah,d)];o(ag,ai);o(Z,ai);continue a;case +1:var +aF=aN(ah,n(ah,d));return[0,aF,n(aF,d)];case +2:var +aG=l(d,d[5],d[6]);y(ag,aG);y(Z,aG);aD(d);continue a;case +3:var +bf=l(d,d[5]+3|0,d[6]-1|0);y(ag,l(d,d[5],d[6]));var +bg=aU(c4(w(ws,bf)));M(function(a){return o(Z,a)},bg);continue a;case +4:var +bh=l(d,d[5]+2|0,d[6]-1|0);y(ag,l(d,d[5],d[6]));var +bi=aU(c4(bh));M(function(a){return o(Z,a)},bi);continue a;case +5:var +a=l(d,d[5]+1|0,d[6]-1|0);y(ag,l(d,d[5],d[6]));var +aH=x(a,wt);if(0<=aH)if(0>>0){b(a[1],a);var +k=i;continue}switch(i){case +0:var +m=aN(c,n(c,a));return[0,m,g(h,n(m,a)),1];case +1:o(d,96);return[0,c,g(h,n(c,a)),1];case +2:y(d,Er);return[0,c,g(h,n(c,a)),0];case +3:o(e,92);o(d,92);var +t=e1(c,f,a),p=cu(a);y(e,p);y(d,p);var +c=t[1];continue a;case +4:var +q=l(a,a[5],a[5]+2|0);y(e,q);y(d,q);y(f,Es);aD(a);continue a;case +5:var +r=A(a,a[5]);o(e,r);o(d,r);o(f,10);aD(a);continue a;default:var +j=A(a,a[5]);o(e,j);o(d,j);o(f,j);continue a}}}}var +bH=cv([0,dd]);function +b6(a,d){var +b=a[2],c=b.slice();c[2]=b[2];return[0,[0],0,d,eV(c,a)]}function +dm(i,aE){var +aF=aE+1|0;if(i[1].length-1>>0){b(f[1],f);var +ab=H;continue}switch(H){case +0:var +m=[0,d,G];break;case +1:aD(f);continue b;case +2:bc(f);continue b;case +3:var +aP=n(d,f),ac=C(B),ad=bG(d,ac,f),d=aG(ad[1],aP,ad[2],ac,0);continue b;case +4:var +aQ=n(d,f),ae=C(B),af=bo(d,ae,f),d=aG(af[1],aQ,af[2],ae,1);continue b;case +5:var +m=[0,d,92];break;case +6:var +m=[0,d,99];break;case +7:var +m=[0,d,93];break;case +8:var +m=[0,d,1];break;case +9:var +m=[0,d,80];break;case +10:var +m=[0,d,11];break;case +11:var +m=[0,d,78];break;case +12:bc(f);var +m=[0,d,fW];break;case +13:var +I=A(f,f[5]),aR=n(d,f),ag=C(B),z=C(B);o(z,I);var +aT=39===I?0:1,ah=dl(d,aT,ag,z,f);o(z,I);var +aU=T(ag),aW=T(z),aX=[4,[0,g(aR,ah[2]),aU,aW]],m=[0,ah[1],aX];break;default:var +m=[0,d,bQ];}var +s=bD(m);break}break}break;case +3:var +S=e[2][12],U=eF(e[1],S,S),u=C(B),v=C(B),j=e[2],ai=373;for(;;){var +J=aC(as,ai,j);if(4>>0){b(j[1],j);var +ai=J;continue}switch(J){case +0:var +aj=l(j,j[5],j[6]);y(v,aj);y(u,aj);aD(j);var +ak=dl(e,2,u,v,j),aY=T(u),aZ=T(v),a0=[4,[0,g(U,ak[2]),aY,aZ]],w=[0,ak[1],a0];break;case +1:var +w=[0,e,G];break;case +2:var +w=[0,e,92];break;case +3:var +w=[0,e,1];break;default:var +al=A(j,j[5]);o(v,al);o(u,al);var +am=dl(e,2,u,v,j),a1=T(u),a2=T(v),a3=[4,[0,g(U,am[2]),a1,a2]],w=[0,am[1],a3];}var +s=bD([0,w[1],w[2]]);break}break;case +4:var +h=e[2],p=e;b:for(;;){var +an=go;for(;;){var +K=aC(as,an,h);if(5>>0){b(h[1],h);var +an=K;continue}switch(K){case +0:aD(h);continue b;case +1:bc(h);continue b;case +2:var +a4=n(p,h),ao=C(B),ap=bG(p,ao,h),p=aG(ap[1],a4,ap[2],ao,0);continue b;case +3:var +a5=n(p,h),aq=C(B),ar=bo(p,aq,h),p=aG(ar[1],a5,ar[2],aq,1);continue b;case +4:var +a6=n(p,h),at=C(B),au=C(B),L=C(B);y(L,Ep);var +M=e2(p,a6,at,au,L,h),a7=M[3],a8=T(L),a9=T(au),a_=[0,T(at),a9,a8],aw=[0,M[1],[2,[0,M[2],a_,a7]]];break;default:var +av=aN(p,n(p,h)),aw=[0,av,[2,[0,n(av,h),Eq,1]]];}var +s=bD(aw);break}break}break;default:var +a=e[2],c=e;b:for(;;){var +V=300;for(;;){var +D=aC(as,V,a);if(6>>0){b(a[1],a);var +V=D;continue}switch(D){case +0:var +N=[0,c,G];break;case +1:aD(a);continue b;case +2:bc(a);continue b;case +3:var +aJ=n(c,a),W=C(B),X=bG(c,W,a),c=aG(X[1],aJ,X[2],W,0);continue b;case +4:var +aK=n(c,a),Y=C(B),Z=bo(c,Y,a),c=aG(Z[1],aK,Z[2],Y,1);continue b;case +5:var +aL=n(c,a),q=C(B);c:for(;;){var +$=323;for(;;){var +E=aC(as,$,a);if(7>>0){b(a[1],a);var +$=E;continue}switch(E){case +0:var +t=[0,aS(c,n(c,a),14),wo];break;case +1:var +t=[0,aS(c,n(c,a),14),wp];break;case +2:y(q,l(a,a[5],a[5]+2|0));continue c;case +3:var +t=[0,c,l(a,a[5]+1|0,a[6])];break;case +4:var +t=[0,c,wq];break;case +5:o(q,A(a,a[5]));d:for(;;){var +aa=335;for(;;){var +F=aC(as,aa,a);if(4>>0){b(a[1],a);var +aa=F;continue}switch(F){case +0:break;case +3:o(q,A(a,a[5]));break;case +4:o(q,A(a,a[5]));continue d;default:y(q,l(a,a[5],a[5]+2|0));continue d}continue c}}case +6:var +t=[0,aS(c,n(c,a),14),wr];break;default:o(q,A(a,a[5]));continue c}var +_=t[1],aM=g(aL,n(_,a)),aO=t[2],N=[0,_,[3,[0,aM,T(q),aO]]];break}break}break;default:var +N=[0,aN(c,n(c,a)),bQ];}var +s=bD(N);break}break}}var +P=s[1],ay=P[2],aA=ay.slice();aA[2]=ay[2];var +a$=eV(aA,P);i[4]=P;var +aB=i[2],ba=[0,[0,a$,s[2]]];k(i[1],aB)[aB+1]=ba;i[2]=i[2]+1|0;continue}return 0}}function +b7(a){return bl(a[20][1])}function +at(a){return a[24][5]}function +q(a,c){var +d=c[2];a[1][1]=[0,[0,c[1],d],a[1][1]];var +b=a[19];return b?f(b[1],a,d):b}function +bI(a,c){var +b=c[2];if(f(bH[3],b,a[4][1]))return q(a,[0,c[1],[7,b]]);var +d=f(bH[4],b,a[4][1]);a[4][1]=d;return 0}function +b8(c,e){var +a=c?c[1]:0;if(a<2){var +d=e[22][1];dm(d,a);var +b=k(d[1],a)[a+1];return b?b[1][2]:ay(Et)}throw[0,t,Ew]}function +bf(c,b){var +a=b.slice();a[6]=c;return a}function +e3(c,b){var +a=b.slice();a[18]=c;return a}function +b9(c,b){var +a=b.slice();a[13]=c;return a}function +b_(c,b){var +a=b.slice();a[8]=c;return a}function +bp(c,b){var +a=b.slice();a[11]=c;return a}function +dp(c,b){var +a=b.slice();a[14]=c;return a}function +e4(c,b){var +a=b.slice();a[7]=c;return a}function +e5(c,b){var +a=b.slice();a[12]=c;return a}function +e6(c,b){var +a=b.slice();a[19]=[0,c];return a}function +e7(a){function +b(b){return q(a,b)}return function(a){return M(b,a)}}function +cA(a){return a[5][1]}function +e8(b){var +a=b.slice();a[19]=0;return a}function +e9(d,c,b){var +a=d.slice();a[3]=bH[1];a[8]=0;a[9]=0;a[10]=1;a[16]=b;a[17]=c;return a}function +cB(a){return c(a,Ex)?0:1}function +b$(a){if(c(a,Ey))if(c(a,Ez))if(c(a,EA))if(c(a,EB))if(c(a,EC))if(c(a,ED))if(c(a,EE))if(c(a,EF))return 0;return 1}function +bq(a){if(c(a,EG))if(c(a,EH))return 0;return 1}function +e(a,b){var +c=a?a[1]:0;return b8([0,c],b)[1]}function +E(a,b){var +c=a?a[1]:0;return b8([0,c],b)[3]}function +h(a,b){var +c=a?a[1]:0;return b8([0,c],b)[2]}function +e_(a,b){var +c=a?a[1]:0;return b8([0,c],b)[4]}function +bJ(b){var +a=cA(b);if(a)var +d=a[1][2][1],c=d>>0){if(!(cm<(a+1|0)>>>0))return 1}else{var +d=6!==a?1:0;if(!d)return d}}return bJ(b)}function +N(b,a){var +c=b?b[1]:0,d=9===e([0,c],a)?1:0,f=d?[0,h([0,c],a)]:d;return f}function +aI(d,c){var +f=d?d[1]:0,a=E([0,f],c),g=e([0,f],c);if(!b$(a))if(!bq(a))if(!cB(a)){if(typeof +g==="number"){var +b=g-1|0,h=58>>0?64<=b?0:1:27===b?1:0;if(h)return 1}return 0}return 1}function +cC(c,a){var +b=c?c[1]:0,d=15===e([0,b],a)?1:0;if(d)var +f=d;else +var +g=63===e([0,b],a)?1:0,f=g?15===e([0,b+1|0],a)?1:0:g;return f}function +dq(b,c){var +d=b?b[1]:0,a=e([0,d],c);if(typeof +a==="number"){var +f=14===a?1:40===a?1:0;if(f)return 1}return 0}function +r(a,b){return q(a,[0,h(0,a),b])}function +e$(c){var +a=c[1];if(typeof +a==="number")switch(a){case +0:return 2;case +108:return 4}else +switch(a[0]){case +0:return 0;case +1:case +4:return 1}var +b=c[2];return cB(b)?3:b$(b)?40:[1,b]}function +ac(a){var +c=e_(0,a);b(e7(a),c);var +d=E(0,a);return r(a,e$([0,e(0,a),d]))}function +dr(a){function +b(b){return q(a,[0,b[1],57])}return function(a){return M(b,a)}}function +au(a,c){var +b=a[6];return b?r(a,c):b}function +aW(b,a){var +c=b[6];return c?q(b,[0,a[1],a[2]]):c}function +H(a){var +m=a[23][1];if(m){var +o=h(0,a),p=e(0,a),q=E(0,a),r=[0,o,p,b7(a),q];b(m[1],r);}var +l=a[22][1];dm(l,0);var +f=k(l[1],0)[1],s=f?f[1][1]:ay(Eu);a[21][1]=s;var +t=e_(0,a);b(e7(a),t);var +n=b8([0,0],a)[5];M(function(b){a[2][1]=[0,b,a[2][1]];return 0},n);var +u=[0,h(0,a)];a[5][1]=u;var +c=a[22][1];dm(c,0);if(1>>0))return f(N,a,b(p[14],a)[1]);return f(l,a,b(j,a))}i(k,function(a){return function(o){var +b=o;for(;;){var +c=e(0,a);if(typeof +c==="number"){var +f=c-6|0,p=7>>0?cf===f?1:0:5<(f-1|0)>>>0?1:0;if(p){var +i=13===c?1:0;if(i){var +l=h(0,a);d(a,13);var +j=ad(a),k=[0,[0,g(l,j[1]),[0,j]]];}else +var +k=i;return[0,m(b),k]}}var +n=[0,ad(a),b];if(6!==e(0,a))d(a,10);var +b=n;continue}}});i(o,function(a){d(a,5);var +b=f(k,a,0);d(a,6);return b});i(Z,function(a){d(a,5);var +g=dp(0,a),h=e(0,g);if(typeof +h==="number")if(13<=h){if(G===h)var +q=1;else +if(14<=h)var +i=0,q=0;else +var +q=1;if(q)var +c=[0,f(k,g,0)],i=1;}else +if(6===h)var +c=E6,i=1;else +if(0===h)var +c=b(_,g),i=1;else +var +i=0;else +var +i=0;if(!i){if(b(M,h)){var +u=e(E5,g);if(typeof +u==="number")if(1<(u+dR|0)>>>0)var +r=0;else +var +v=[0,f(k,g,0)],r=1;else +var +r=0;if(!r)var +v=[1,b(j,g)];var +w=v;}else +var +w=[1,b(j,g)];var +c=w;}if(0===c[0])var +s=c;else{var +o=c[1];if(a[14])var +t=c;else{var +p=e(0,a);if(typeof +p==="number")if(6===p)if(12===e(E4,a))var +n=[0,f(k,a,[0,f(l,a,o),0])],m=1;else +var +n=[1,o],m=1;else +if(10===p){d(a,10);var +n=[0,f(k,a,[0,f(l,a,o),0])],m=1;}else +var +m=0;else +var +m=0;if(!m)var +n=c;var +t=n;}var +s=t;}d(a,6);return s});i(_,function(a){var +b=f(p[13],0,a),c=e(0,a);if(typeof +c==="number")if(!(1<(c+dR|0)>>>0)){var +d=f(N,a,b);am(a,10);return[0,f(k,a,[0,d,0])]}return[1,f(A,a,f(D,a,f(J,a,f(n,a,f(ab,a,b)))))]});i($,function(a){var +d=h(0,a),c=b(Z,a);return 0===c[0]?bs(s,a,d,0,c[1]):c[1]});i(aa,function(a){var +c=h(0,a),d=f(v,0,a);return bs(s,a,c,d,b(o,a))});i(s,function(a,h,f,e){d(a,12);var +c=b(j,a);return[0,g(h,c[1]),[1,[0,e,c,f]]]});function +S(a,f,e){var +h=b(o,a);d(a,80);var +c=b(j,a);return[0,g(f,c[1]),[0,h,c,e]]}function +T(a,g,e,d){var +b=S(a,g,f(v,0,a)),c=[0,b[1],[1,b[2]]];return[0,[0,c[1],[0,d,[0,c],0,e,1,0]]]}function +U(a,i,h,f,e){if(1-at(a))r(a,7);var +k=am(a,79);d(a,80);var +c=b(j,a);return[0,[0,g(i,c[1]),[0,e,[0,c],k,h,0,f]]]}function +C(c,a){var +b=e(0,a);if(typeof +b==="number")if(!(11<=b))switch(b){case +2:if(!c)return 0;break;case +4:if(c)return 0;break;case +9:case +10:return H(a)}return ac(a)}function +x(b,a){return a?q(b,[0,a[1][1],5]):a}i(O,function(N,ar,aq,a){var +n=ar?3===e(0,a)?1:0:ar,aD=h(0,a),aE=n?3:1;d(a,aE);var +k=0;for(;;){if(N)if(aq)throw[0,t,E8];var +i=h(0,a),r=N?am(a,42):N,l=b(F,a),s=e(0,a);if(typeof +s==="number"){if(92===s)var +u=1;else{if(G===s)var +O=m(k),o=1;else +if(14<=s)var +u=0,o=0;else +switch(s){case +2:if(n)var +u=0,o=0;else +var +O=m(k),o=1;break;case +4:if(n)var +O=m(k),o=1;else +var +u=0,o=0;break;case +7:d(a,7);var +_=80===e(E7,a)?1:0;if(_){var +az=b(p[14],a);d(a,80);var +$=[0,az[1]];}else +var +$=_;var +aA=b(j,a);d(a,8);d(a,80);var +aa=b(j,a),aB=[2,[0,g(i,aa[1]),[0,$,aA,aa,r,l]]];C(n,a);var +k=[0,aB,k];continue;case +13:if(aq){H(a);var +ap=b(z,a),aC=[1,[0,g(i,ap[1]),[0,ap]]];C(n,a);var +k=[0,aC,k];continue}var +u=0,o=0;break;case +5:var +u=1,o=0;break;default:var +u=0,o=0;}if(o){var +aF=h(0,a),aG=n?4:2;d(a,aG);return[0,g(aD,aF),[0,n,O]]}}if(u){x(a,l);var +as=f(v,0,a),Y=S(a,h(0,a),as),at=[3,[0,g(i,Y[1]),[0,Y,r]]];C(n,a);var +k=[0,at,k];continue}}if(0===r)var +y=0;else +if(l)var +y=0;else +if(typeof +s==="number")if(80===s){aW(a,[0,i,40]);var +al=[1,[0,i,Fa]],M=e(0,a),an=0;if(typeof +M==="number"){if(5===M)var +Q=1;else +if(92===M)var +Q=1;else +var +P=0,Q=0;if(Q){x(a,l);var +ao=T(a,i,an,al),P=1;}}else +var +P=0;if(!P)var +ao=U(a,i,an,l,al);var +ae=ao,y=1;}else +var +y=0;else +var +y=0;if(!y){var +ab=function(a){aO(a,0);var +c=b(p[21],a);a4(a);return c},w=ab(a)[2];if(1===w[0]){var +K=w[1][2];if(c(K,E9))if(c(K,E_))var +R=0,V=0;else +var +V=1;else +var +V=1;if(V){var +af=e(0,a);if(typeof +af==="number"){var +L=af-6|0;if(85>>0)if(87<(L+1|0)>>>0)var +D=0,E=0;else{x(a,l);var +ak=T(a,i,r,w),E=1;}else +if(1<(L-73|0)>>>0)var +D=0,E=0;else +var +ak=U(a,i,r,l,w),E=1;if(E)var +aj=ak,D=1;}else +var +D=0;if(!D){var +ag=ab(a),ah=ai(K,E$);x(a,l);var +A=S(a,i,0),B=A[2][1],I=ag[1];if(0===ah){var +Z=B[1];if(B[2])q(a,[0,I,63]);else{var +aH=Z?Z[2]?0:1:0;if(!aH)q(a,[0,I,63]);}}else{var +aI=B[1]?0:B[2]?0:1;if(!aI)q(a,[0,I,62]);}var +au=0,av=0,aw=0,ax=ah?[1,A]:[2,A],ay=[0,ag[2],ax,aw,r,av,au],aj=[0,[0,g(i,A[1]),ay]];}var +ad=aj,R=1;}}else +var +R=0;if(!R){var +J=e(0,a);if(typeof +J==="number"){if(5===J)var +X=1;else +if(92===J)var +X=1;else +var +W=0,X=0;if(X){x(a,l);var +ac=T(a,i,r,w),W=1;}}else +var +W=0;if(!W)var +ac=U(a,i,r,l,w);var +ad=ac;}var +ae=ad;}C(n,a);var +k=[0,ae,k];continue}});i(v,function(D,a){var +E=h(0,a),z=92===e(0,a)?1:0;if(z){if(1-at(a))r(a,7);d(a,92);var +c=0,t=0;for(;;){var +C=b(F,a),v=u(p[15],a,0,29),w=v[2],x=v[1],y=e(0,a);if(0===D)var +i=0,f=0;else{if(typeof +y==="number")if(78===y){H(a);var +i=[0,b(j,a)],f=1,n=1;}else +var +n=0;else +var +n=0;if(!n){if(c)q(a,[0,x,58]);var +i=0,f=c;}}var +k=[0,[0,x,[0,w[1][2],w[2],C,i]],t],l=e(0,a);if(typeof +l==="number"){if(93===l)var +s=1;else +if(G===l)var +s=1;else +var +o=0,s=0;if(s)var +A=m(k),o=1;}else +var +o=0;if(!o){d(a,10);if(93!==e(0,a)){var +c=f,t=k;continue}var +A=m(k);}var +I=g(E,h(0,a));d(a,93);var +B=[0,[0,I,[0,A]]];break}}else +var +B=z;return B});i(P,function(a){var +q=h(0,a),l=92===e(0,a)?1:0;if(l){d(a,92);var +c=0;for(;;){var +f=e(0,a);if(typeof +f==="number"){if(93===f)var +k=1;else +if(G===f)var +k=1;else +var +i=0,k=0;if(k){var +o=m(c),r=g(q,h(0,a));d(a,93);var +n=[0,[0,r,[0,o]]],i=1;}}else +var +i=0;if(!i){var +p=[0,b(j,a),c];if(93!==e(0,a))d(a,10);var +c=p;continue}break}}else +var +n=l;return n});i(z,function(a){return f(Q,a,f(p[13],0,a))});i(Q,function(a,m){var +c=[0,m[1],[0,m]];for(;;){var +j=c[2],h=c[1];if(11===e(0,a)){d(a,11);var +k=f(p[13],0,a),l=g(h,k[1]),c=[0,l,[1,[0,l,[0,j,k]]]];continue}var +i=b(P,a),n=i?g(h,i[1][1]):h;return[0,n,[0,j,i]]}});i(ab,function(c,b){var +a=f(Q,c,b);return[0,a[1],[4,a[2]]]});i(R,function(a){var +c=e(0,a);if(typeof +c==="number")if(80===c)return[0,b(w,a)];return 0});function +V(l){var +a=dp(0,l),f=e(0,a);if(typeof +f==="number")if(65===f){var +c=h(0,a);d(a,65);if(5===e(0,a)){d(a,5);aO(a,0);var +j=b(p[8],a);a4(a);var +k=h(0,a);d(a,6);var +i=[0,g(c,k),[0,j]];}else +var +i=[0,c,0];return[0,i]}return 0}function +af(a){var +c=e(0,a),f=e(Fb,a);if(typeof +c==="number")if(80===c){if(typeof +f==="number")if(65===f){d(a,80);return[0,0,V(a)]}var +g=b(R,a);return[0,g,V(a)]}return Fc}function +a(d,c){var +a=bf(1,c);aO(a,1);var +e=b(d,a);a4(a);return e}function +ag(b){return a(j,b)}var +ah=b(v,1);function +aj(b){return a(ah,b)}var +ak=b(v,0);function +al(b){return a(ak,b)}function +an(b){return a(P,b)}function +ao(c,b){return a(u(O,c,0,0),b)}function +ap(b){return a(o,b)}function +aq(b){return a(w,b)}function +ar(b){return a(R,b)}function +as(b){return a(V,b)}function +av(b){return a(af,b)}return[0,ag,al,aj,an,function(b){return a(z,b)},ao,ap,aq,ar,as,av]}var +ds=cv([0,dd]);function +F$(t){function +u(a){aO(a,0);var +c=h(0,a);d(a,1);d(a,13);var +e=b(t[9],a),f=h(0,a);d(a,2);a4(a);return[0,g(c,f),[0,e]]}function +l(a){aO(a,0);var +c=h(0,a);d(a,1);if(2===e(0,a))var +i=h(0,a)[2],f=[1,[0,c[1],c[3],i]];else +var +f=[0,b(t[7],a)];var +j=h(0,a);d(a,2);a4(a);return[0,g(c,j),[0,f]]}function +j(a){var +b=h(0,a),c=E(0,a);d(a,fW);return[0,b,[0,c]]}function +n(a){var +b=j(a),f=e(0,a);if(typeof +f==="number"){if(11===f){d(a,11);var +k=j(a),c=[0,g(b[1],k[1]),[0,[0,b],k]];for(;;){var +h=e(0,a);if(typeof +h==="number")if(11===h){d(a,11);var +i=j(a),c=[0,g(c[1],i[1]),[0,[1,c],i]];continue}return[2,c]}}if(80===f){d(a,80);var +l=j(a);return[1,[0,g(b[1],l[1]),[0,b,l]]]}}return[0,b]}function +v(a){var +z=h(0,a),c=j(a);if(80===e(0,a)){d(a,80);var +p=j(a),s=g(c[1],p[1]),u=s,t=[1,[0,s,[0,c,p]]];}else +var +u=c[1],t=[0,c];if(78===e(0,a)){d(a,78);var +b=e(0,a);if(typeof +b==="number")if(1===b){var +w=l(a),x=w[2],m=w[1];if(0!==x[1][0])q(a,[0,m,41]);var +n=[0,m,[0,[1,m,x]]],f=0;}else +var +f=1;else +if(4===b[0]){var +o=b[1],y=o[1];d(a,b);var +n=[0,y,[0,[0,y,[0,[0,o[2]],o[3]]]]],f=0;}else +var +f=1;if(f){r(a,42);var +v=h(0,a),k=v,i=[0,[0,v,[0,Gb,Ga]]];}else +var +k=n[1],i=n[2];}else +var +k=u,i=0;return[0,g(z,k),[0,t,i]]}function +y(a,k){var +c=0,l=n(a);for(;;){var +b=e(0,a);if(typeof +b==="number"){if(94<=b)var +i=99===b?1:G===b?1:0;else{if(1===b){var +c=[0,[1,u(a)],c];continue}var +i=93<=b?1:0;}if(i){var +j=m(c),f=99===e(0,a)?1:0;if(f)d(a,99);var +o=h(0,a);d(a,93);a4(a);return[0,g(k,o),[0,l,f,j]]}}var +c=[0,[0,v(a)],c];continue}}function +z(a,k){d(a,99);var +l=n(a),m=h(0,a);d(a,93);var +c=a[20][1];if(c){var +e=c[2];if(e)var +f=e[2],b=1;else +var +b=0;}else +var +b=0;if(!b)var +f=ay(EJ);a[20][1]=f;var +i=b7(a),j=b6(a[21][1],i);a[22][1]=j;return[0,g(k,m),[0,l]]}var +o=function +b(a){return b.fun(a)},k=function +c(a,b){return c.fun(a,b)},p=function +b(a){return b.fun(a)};i(o,function(c){var +a=e(0,c);if(typeof +a==="number"){if(1===a){var +h=l(c);return[0,h[1],[1,h[2]]]}}else +if(4===a[0]){var +f=a[1];d(c,a);return[0,f[1],[2,[0,f[2],f[3]]]]}var +g=b(p,c);return[0,g[1],[0,g[2]]]});function +s(a){switch(a[0]){case +0:return a[1][2][1];case +1:var +c=a[1][2],e=w(Gc,c[2][2][1]);return w(c[1][2][1],e);default:var +d=a[1][2],b=d[1],f=0===b[0]?b[1][2][1]:s([2,b[1]]);return w(f,w(Gd,d[2][2][1]))}}i(k,function(a,I){var +j=y(a,I);if(j[2][2])var +C=0,n=0;else{aO(a,3);var +i=0;for(;;){var +q=e(0,a);if(typeof +q==="number"){if(92===q){aO(a,2);var +A=h(0,a);d(a,92);var +p=e(0,a);if(typeof +p==="number"){if(99===p)var +x=1;else +if(G===p)var +x=1;else +var +w=0,x=0;if(x)var +l=[0,z(a,A)],w=1;}else +var +w=0;if(!w)var +l=[1,f(k,a,A)];if(0!==l[0]){var +B=l[1],i=[0,[0,B[1],[0,B[2]]],i];continue}var +H=[0,l[1]],t=[0,m(i),H],v=1;}else +if(G===q){ac(a);var +t=[0,m(i),0],v=1;}else +var +u=0,v=0;if(v)var +C=t[1],n=t[2],u=1;}else +var +u=0;if(!u){var +i=[0,b(o,a),i];continue}break}}if(n){var +D=n[1],E=s(j[2][1]);if(c(s(D[2][1]),E))r(a,[6,E]);var +F=D[1];}else +var +F=j[1];return[0,g(j[1],F),[0,j,n,C]]});i(p,function(a){var +b=h(0,a);aO(a,2);d(a,92);return f(k,a,b)});return[0,u,l,j,n,v,y,z,o,k,p]}var +dt=cv([0,dd]),du=cv([0,function(l,k){var +c=k[1],d=l[1],b=c[1],i=d[1];if(i)if(b){var +f=b[1],g=i[1],m=eH(f),h=eH(g)-m|0;if(0===h)var +n=eG(f),a=x(eG(g),n);else +var +a=h;}else +var +a=-1;else +var +a=b?1:0;if(0===a)var +j=eI(d[2],c[2]),e=0===j?eI(d[3],c[3]):j;else +var +e=a;return 0===e?bY(l[2],k[2]):e}]),j=f(aE,G7,G6),z=EP(j),F=function(p){function +a(a,j){var +c=j;for(;;){var +b=c[2];switch(b[0]){case +0:return aB(y,a,b[1][1]);case +1:return aB(z,a,b[1][1]);case +2:var +c=b[1][1];continue;case +3:var +d=b[1][1],e=d[2],g=a[2],h=a[1];if(f(ds[3],e,g))q(h,[0,d[1],30]);var +i=k([0,h,g],d),l=f(ds[4],e,i[2]);return[0,i[1],l];default:q(a[1],[0,c[1],19]);return a}}}function +y(c,b){if(0===b[0]){var +d=b[1][2],e=d[1],f=1===e[0]?k(c,e[1]):c;return a(f,d[2])}return a(c,b[1][2][1])}function +z(b,d){if(d){var +c=d[1];return 0===c[0]?a(b,c[1]):a(b,c[1][2][1])}return b}function +k(d,c){var +a=c[2],e=c[1],b=d[1];if(bq(a))aW(b,[0,e,29]);var +f=cB(a),g=f||b$(a);if(g)aW(b,[0,e,40]);return[0,b,d[2]]}function +s(b,h,m,g,f){var +i=h||1-m;if(i){var +c=f[2],d=h?bf(1-b[6],b):b;if(g){var +j=g[1],e=j[2],k=j[1];if(bq(e))aW(d,[0,k,31]);var +n=cB(e),o=n||b$(e);if(o)aW(d,[0,k,40]);}var +p=aB(a,[0,d,ds[1]],f[1]),q=c?(a(p,c[1][2][1]),0):c,l=q;}else +var +l=i;return l}function +t(a){d(a,5);var +i=0;for(;;){var +k=e(0,a);if(typeof +k==="number"){var +l=k-6|0,v=7>>0?cf===l?1:0:5<(l-1|0)>>>0?1:0;if(v){var +o=13===k?1:0;if(o){var +t=h(0,a);d(a,13);var +p=f(j[19],a,29),q=[0,[0,g(t,p[1]),[0,p]]];}else +var +q=o;if(6!==e(0,a))r(a,48);var +u=[0,m(i),q];d(a,6);return u}}var +c=f(j[19],a,29);if(78===e(0,a)){d(a,78);var +n=b(j[9],a),s=[0,g(c[1],n[1]),[2,[0,c,n]]];}else +var +s=c;if(6!==e(0,a))d(a,10);var +i=[0,s,i];continue}}function +l(f,e,d){var +g=e9(f,e,d),a=b(j[17],g),c=a[1];return[0,c,[0,[0,c,a[2]]],a[3]]}function +A(i,d,c){var +a=i.slice();a[10]=1;var +f=e(0,a);if(typeof +f==="number")if(1===f){var +g=l(a,d,c);return[0,g[2],g[3]]}var +h=e9(a,d,c),k=b(j[9],h);return[0,[1,k],h[6]]}function +B(a,i,g){var +f=h(0,a),d=e(0,a);if(typeof +d==="number")if(97===d){H(a);var +b=[0,[0,f,0]],c=1;}else +if(98===d){H(a);var +b=[0,[0,f,1]],c=1;}else +var +c=0;else +var +c=0;if(!c)var +b=0;if(b){var +j=i?0:g?0:1;if(!j){q(a,[0,b[1][1],5]);return 0}}return b}function +u(a){return am(a,ae)}function +v(a){return am(a,63)}function +w(c){var +d=0===c[2]?1:0;if(d){var +a=c[1];for(;;){if(a){var +e=a[2],b=3===a[1][2][0]?1:0;if(b){var +a=e;continue}return b}return 1}}return d}function +C(a){var +A=h(0,a),q=v(a);d(a,15);var +r=u(a),B=a[7],m=e(0,a);if(0===B)var +c=0;else +if(typeof +m==="number")if(5===m)var +n=0,i=0,c=1;else +if(92===m)var +F=b(p[2],a),G=5===e(0,a)?0:[0,f(j[13],Fe,a)],n=F,i=G,c=1;else +var +c=0;else +var +c=0;if(!c)var +C=[0,f(j[13],Fd,a)],n=b(p[2],a),i=C;var +o=t(a),x=b(p[11],a),y=l(a,q,r),k=y[2],D=w(o);s(a,y[3],D,i,o);var +z=0===k[0]?[0,k[1][1],0]:[0,k[1][1],1],E=[17,[0,i,o,k,q,r,x[2],z[2],x[1],n]];return[0,g(A,z[1]),E]}function +n(a){var +n=0,l=0;for(;;){var +c=f(j[19],a,28);if(78===e(0,a)){d(a,78);var +h=[0,b(j[9],a)],k=0;}else +if(3===c[2][0])var +h=fc[1],k=fc[2];else +var +h=0,k=[0,[0,c[1],44],0];var +p=h?h[1][1]:c[1],i=[0,[0,g(c[1],p),[0,c,h]],n],o=cr(k,l);if(10===e(0,a)){d(a,10);var +n=i,l=o;continue}var +q=bl(i),r=m(i),s=bl(i),t=m(o);return[0,g(s[1],q[1]),r,t]}}function +c(e,c,a){var +f=h(0,a);d(a,e);var +b=n(a),i=b[3],j=[0,b[2],c];return[0,[0,g(f,b[1]),j],i]}var +D=0,E=24;function +i(a){return c(E,D,a)}function +o(e){var +a=c(27,2,b9(1,e)),b=a[1],d=b[2],f=d[1],g=a[2],h=m(aB(function(b,a){return a[2][2]?b:[0,[0,a[1],43],b]},g,f));return[0,[0,b[1],d],h]}function +x(a){return c(28,1,b9(1,a))}return[0,v,u,B,t,l,w,s,A,function(a){var +m=h(0,a),j=e(0,a);if(typeof +j==="number"){var +k=j+gv|0;if(4>>0)var +b=0;else{switch(k){case +0:var +f=i(a),c=1;break;case +3:var +f=o(a),c=1;break;case +4:var +f=x(a),c=1;break;default:var +b=0,c=0;}if(c)var +d=f,b=1;}}else +var +b=0;if(!b){ac(a);var +d=i(a);}var +l=d[1],n=d[2],p=[18,l[2]];return[0,[0,g(m,l[1]),p],n]},n,x,o,i,C]}(z),a5=function(l){var +k=function +b(a){return b.fun(a)},W=function +b(a){return b.fun(a)},D=function +b(a){return b.fun(a)},F=function +b(a){return b.fun(a)},X=function +b(a){return b.fun(a)},I=function +b(a){return b.fun(a)},Y=function +b(a){return b.fun(a)},p=function +b(a){return b.fun(a)},J=function +b(a){return b.fun(a)},v=function +b(a){return b.fun(a)},Z=function +b(a){return b.fun(a)},K=function +b(a){return b.fun(a)},n=function +d(a,b,c){return d.fun(a,b,c)},L=function +b(a){return b.fun(a)},M=function +b(a){return b.fun(a)},x=function +d(a,b,c){return d.fun(a,b,c)},P=function +b(a){return b.fun(a)},Q=function +c(a,b){return c.fun(a,b)},R=function +b(a){return b.fun(a)},_=function +b(a){return b.fun(a)},S=function +c(a,b){return c.fun(a,b)},y=function +e(a,b,c,d){return e.fun(a,b,c,d)},$=function +b(a){return b.fun(a)},U=function +b(a){return b.fun(a)},aa=function +b(a){return b.fun(a)},ab=function +b(a){return b.fun(a)},A=function +c(a,b){return c.fun(a,b)},B=function +b(a){return b.fun(a)};function +V(a){var +c=b(I,a),e=b(X,a);if(e){if(1-b(F,c))q(a,[0,c[1],15]);var +d=c[2],m=typeof +d==="number"?0:17===d[0]?bq(d[1][2])?(aW(a,[0,c[1],37]),1):0:0,h=f(j[20],a,c),i=b(k,a),l=g(h[1],i[1]);return[0,l,[7,[0,e[1],h,i]]]}return c}function +ah(b,a){throw cb}function +ak(g){var +a=e6(ah,g),b=V(a),d=e(0,a);if(typeof +d==="number"){var +h=12===d?1:80===d?1:0;if(h)throw cb}if(aI(0,a)){var +f=b[2];if(typeof +f!=="number"&&17===f[0])if(!c(f[1][2],Ff))if(!bJ(a))throw cb;return b}return b}i(k,function(a){var +f=e(0,a),i=aI(0,a);if(typeof +f==="number"){var +d=f-6|0;if(85>>0)var +c=87<(d+1|0)>>>0?0:1;else +if(52===d){if(a[16])return b(W,a);var +c=0;}else +var +c=0;}else +var +c=0;if(!c)if(0===i)return V(a);var +g=fb(a,ak);if(g)return g[1];var +h=fb(a,ab);return h?h[1]:V(a)});i(W,function(a){var +f=h(0,a);d(a,58);if(1-a[16])r(a,25);var +i=am(a,ae),n=9===e(0,a)?1:0,o=n||ca(a),p=1-o,j=i||p,c=j?[0,b(k,a)]:j;if(c)var +l=c[1][1];else{var +m=N(0,a),q=m?m[1]:f;O(a);var +l=q;}return[0,g(f,l),[14,[0,c,i]]]});i(D,function(b){var +a=b[2];if(typeof +a!=="number")switch(a[0]){case +13:case +17:case +24:return 1}return 0});i(F,function(b){var +a=b[2];if(typeof +a!=="number")switch(a[0]){case +0:case +1:case +13:case +17:case +24:return 1}return 0});i(X,function(d){var +f=e(0,d);if(typeof +f==="number"){var +g=f+fJ|0;if(12>>0)var +c=0;else{switch(g){case +0:var +a=Fg;break;case +1:var +a=Fh;break;case +2:var +a=Fi;break;case +3:var +a=Fj;break;case +4:var +a=Fk;break;case +5:var +a=Fl;break;case +6:var +a=Fm;break;case +7:var +a=Fn;break;case +8:var +a=Fo;break;case +9:var +a=Fp;break;case +10:var +a=Fq;break;case +11:var +a=Fr;break;default:var +a=Fs;}var +b=a,c=1;}}else +var +c=0;if(!c)var +b=0;if(0!==b)H(d);return b});i(I,function(a){var +i=h(0,a),c=b(Y,a);if(79===e(0,a)){d(a,79);var +j=b(k,bp(0,a));d(a,80);var +f=br(k,a),l=g(i,f[1]);return[0,l,[10,[0,c,j,f[2]]]]}return c});function +ad(d,c,b,a){return[0,a,[9,[0,b,d,c]]]}function +af(a,k,j){var +c=k,b=j;for(;;){var +f=e(0,a);if(typeof +f==="number")if(82===f){d(a,82);var +h=br(p,a),i=g(b,h[1]),c=ad(c,h[2],1,i),b=i;continue}return[0,b,c]}}i(Y,function(a){var +k=br(p,a),l=af(a,k[2],k[1]),b=l[2],c=l[1];for(;;){var +f=e(0,a);if(typeof +f==="number")if(81===f){d(a,81);var +h=br(p,a),i=af(a,h[2],h[1]),j=g(c,i[1]),b=ad(b,i[2],0,j),c=j;continue}return b}});function +ag(d,c,b,a){return[0,a,[6,[0,b,d,c]]]}i(p,function(d){var +y=0;a:for(;;){var +Q=h(0,d),G=0!==b(J,d)?1:0,l=b(v,bp(0,d)),I=cA(d),R=I?I[1]:l[1],z=g(Q,R);if(92===e(0,d))var +K=l[2],T=typeof +K==="number"?0:21===K[0]?(r(d,47),1):0;var +A=e(0,d);if(typeof +A==="number"){var +i=A+gr|0;if(1>>0)if(66<=i)switch(i+fJ|0){case +0:var +c=Ft,a=1;break;case +1:var +c=Fu,a=1;break;case +2:var +c=Fv,a=1;break;case +3:var +c=Fw,a=1;break;case +4:var +c=Fx,a=1;break;case +5:var +c=Fy,a=1;break;case +6:var +c=Fz,a=1;break;case +7:var +c=FA,a=1;break;case +8:var +c=FB,a=1;break;case +9:var +c=FC,a=1;break;case +10:var +c=FD,a=1;break;case +11:var +c=FE,a=1;break;case +12:var +c=FF,a=1;break;case +13:var +c=FG,a=1;break;case +14:var +c=FH,a=1;break;case +15:var +c=FI,a=1;break;case +16:var +c=FJ,a=1;break;case +17:var +c=FK,a=1;break;case +18:var +c=FL,a=1;break;case +19:var +c=FM,a=1;break;default:var +m=0,a=0;}else +var +m=0,a=0;else +if(0===i)if(d[11])var +c=0,a=1;else +var +c=FN,a=1;else +var +c=FO,a=1;if(a)var +j=c,m=1;}else +var +m=0;if(!m)var +j=0;if(0!==j)H(d);if(j){var +L=j[1],M=L[1],S=G?14===M?1:0:G;if(S)q(d,[0,z,16]);var +p=l,o=[0,M,L[2]],n=z,f=y;for(;;){var +s=o[2],B=o[1];if(f){var +t=f[1],C=t[2],u=C[2],N=0===u[0]?u[1]:u[1]-1|0;if(s[1]<=N){var +D=g(t[3],n),O=ag(t[1],p,C[1],D),p=O,o=[0,B,s],n=D,f=f[2];continue}}var +y=[0,[0,p,[0,B,s],n],f];continue a}}var +w=l,E=z,k=y;for(;;){if(k){var +x=k[1],F=g(x[3],E),P=k[2],w=ag(x[1],w,x[2][1],F),E=F,k=P;continue}return w}}});i(J,function(b){var +a=e(0,b);if(typeof +a==="number")if(48<=a){if(97<=a){if(!(cU<=a))switch(a+fz|0){case +0:return FP;case +1:return FQ;case +6:return FR;case +7:return FS}}else +if(64===a)if(b[17])return FT}else +if(45<=a)switch(a-45|0){case +0:return FU;case +1:return FV;default:return FW}return 0});i(v,function(a){var +l=h(0,a),m=b(J,a);if(m){var +n=m[1];H(a);var +i=b(v,a),o=g(l,i[1]);if(6===n)var +p=i[2],s=typeof +p==="number"?0:17===p[0]?(aW(a,[0,o,33]),1):0;else +var +s=0;return[0,o,[5,[0,n,1,i]]]}var +j=e(0,a);if(typeof +j==="number")if(cU===j)var +d=FX,f=1;else +if(cm===j)var +d=FY,f=1;else +var +f=0;else +var +f=0;if(!f)var +d=0;if(d){H(a);var +c=b(v,a);if(1-b(D,c))q(a,[0,c[1],15]);var +k=c[2],t=typeof +k==="number"?0:17===k[0]?bq(k[1][2])?(au(a,39),1):0:0,r=[8,[0,d[1],c,1]];return[0,g(l,c[1]),r]}return b(Z,a)});i(Z,function(a){var +c=b(K,a);if(bJ(a))return c;var +i=e(0,a);if(typeof +i==="number")if(cU===i)var +d=FZ,f=1;else +if(cm===i)var +d=F0,f=1;else +var +f=0;else +var +f=0;if(!f)var +d=0;if(d){if(1-b(D,c))q(a,[0,c[1],15]);var +j=c[2],m=typeof +j==="number"?0:17===j[0]?bq(j[1][2])?(au(a,38),1):0:0,k=h(0,a);H(a);var +l=[8,[0,d[1],c,0]];return[0,g(c[1],k),l]}return c});i(K,function(g){var +c=h(0,g),a=g.slice(),l=1-g[15];a[15]=0;var +j=e(0,a);if(typeof +j==="number")if(44===j)if(l)var +k=b(L,a),f=1;else +var +f=0;else +var +f=0;else +var +f=0;if(!f)var +k=cC(0,a)?b(P,a):b(R,a);var +i=u(x,a,c,k),d=e(0,a);if(typeof +d==="number"){if(5===d)return u(n,a,c,i)}else +if(2===d[0])return u(x,a,c,bs(y,a,c,i,d[1]));return i});i(n,function(a,c,f){var +i=e(0,a);if(typeof +i==="number")switch(i){case +5:if(!a[12]){var +k=b(M,a),m=g(c,k[1]);return u(n,a,c,[0,m,[12,[0,f,k[2]]]])}break;case +7:d(a,7);var +o=b(j[7],a),p=g(c,h(0,a));d(a,8);return u(n,a,c,[0,p,[13,[0,f,[1,o],1]]]);case +11:d(a,11);var +l=b(B,a)[1];return u(n,a,c,[0,g(c,l[1]),[13,[0,f,[0,l],0]]])}else +if(2===i[0])return bs(y,a,c,f,i[1]);return f});i(L,function(a){var +c=h(0,a);d(a,44);if(a[10])if(11===e(0,a)){d(a,11);var +o=[0,c,F1];if(ai(E(0,a),F2)){var +p=f(j[13],0,a);return[0,g(c,p[1]),[24,[0,o,p]]]}ac(a);H(a);return[0,c,[17,o]]}var +q=h(0,a),r=e(0,a);if(typeof +r==="number")if(44===r)var +s=b(L,a),l=1;else +var +l=0;else +var +l=0;if(!l)var +s=cC(0,a)?b(P,a):b(R,a);var +t=u(x,e5(1,a),q,s),i=e(0,a);if(typeof +i==="number")var +m=0;else +if(2===i[0])var +k=bs(y,a,q,t,i[1]),m=1;else +var +m=0;if(!m)var +k=t;var +v=e(0,a);if(typeof +v==="number")if(5===v)var +w=b(M,a),A=w[1],z=w[2],n=1;else +var +n=0;else +var +n=0;if(!n)var +A=k[1],z=0;return[0,g(c,A),[11,[0,k,z]]]});i(M,function(a){var +r=h(0,a);d(a,5);var +c=0;for(;;){var +f=e(0,a);if(typeof +f==="number"){var +t=6===f?1:G===f?1:0;if(t){var +p=m(c),s=h(0,a);d(a,6);return[0,g(r,s),p]}}var +j=e(0,a);if(typeof +j==="number")if(13===j){var +o=h(0,a);d(a,13);var +l=b(k,a),n=[1,[0,g(o,l[1]),[0,l]]],i=1;}else +var +i=0;else +var +i=0;if(!i)var +n=[0,b(k,a)];var +q=[0,n,c];if(6!==e(0,a))d(a,10);var +c=q;continue}});i(x,function(a,c,f){var +i=e(0,a);if(typeof +i==="number"){if(7===i){d(a,7);var +l=e5(0,a),m=b(j[7],l),o=h(0,a);d(a,8);return u(n,a,c,[0,g(c,o),[13,[0,f,[1,m],1]]])}if(11===i){d(a,11);var +k=b(B,a)[1];return u(n,a,c,[0,g(c,k[1]),[13,[0,f,[0,k],0]]])}}return f});i(P,function(a){var +w=h(0,a),n=b(l[1],a);d(a,15);var +o=b(l[2],a);if(5===e(0,a))var +c=0,p=0;else{var +s=e(0,a);if(typeof +s==="number"){var +t=92!==s?1:0;if(t)var +m=0;else +var +v=t,m=1;}else +var +m=0;if(!m)var +v=[0,f(j[13],F3,a)];var +c=v,p=b(z[2],a);}var +i=b(l[4],a),q=b(z[11],a),k=u(l[5],a,n,o),r=k[2],x=b(l[6],i);cd(l[7],a,k[3],x,c,i);var +y=0===r[0]?0:1,A=[2,[0,c,i,r,n,o,q[2],y,q[1],p]];return[0,g(w,k[1]),A]});i(Q,function(b,e){var +f=E(0,b);if(0===e)var +a=0;else +switch(e-1|0){case +0:au(b,32);var +c=c3(c2(w(F4,f))),a=1;break;case +2:var +g=1;try{var +h=eX(f);}catch(d){g=0;d=aj(d);if(!ct)throw d;r(b,59);var +c=d3,a=1;}if(g)var +c=h,a=1;break;default:var +a=0;}if(!a)var +c=c3(c2(f));d(b,[0,e]);return c});i(R,function(a){var +g=h(0,a),c=e(0,a);if(typeof +c==="number")switch(c){case +1:return b(_,a);case +5:return b($,a);case +7:var +l=b(U,a);return[0,l[1],[0,l[2]]];case +21:d(a,21);return[0,g,0];case +29:var +s=E(0,a);d(a,29);return[0,g,[18,[0,0,s]]];case +40:return b(j[23],a);case +51:var +u=h(0,a);d(a,51);return[0,u,1];case +92:var +m=b(j[18],a);return[0,m[1],[21,m[2]]];case +30:case +31:var +t=E(0,a);d(a,c);return[0,g,[18,[0,[1,31===c?1:0],t]]];case +73:case +99:return b(aa,a)}else +switch(c[0]){case +0:var +v=E(0,a);return[0,g,[18,[0,[2,f(Q,a,c[1])],v]]];case +1:var +i=c[1],n=i[4],o=i[3],p=i[2],q=i[1];if(n)au(a,32);d(a,[1,[0,q,p,o,n]]);return[0,q,[18,[0,[0,p],o]]];case +2:var +r=f(S,a,c[1]);return[0,r[1],[19,r[2]]]}if(aI(0,a)){var +k=f(j[13],0,a);return[0,k[1],[17,k]]}ac(a);if(bQ===c)H(a);return[0,g,[18,[0,0,F5]]]});i(_,function(c){var +a=b(j[11],c);return[0,a[1],[1,a[2]]]});i(S,function(a,c){var +y=c[3],z=c[2],o=c[1];d(a,[2,c]);var +A=[0,o,[0,[0,z[2],z[1]],y]];if(y)var +D=o,C=[0,A,0],B=0;else{var +h=[0,A,0],r=0;for(;;){var +i=b(j[7],a),k=[0,i,r],s=e(0,a);if(typeof +s==="number")if(2===s){aO(a,4);var +l=e(0,a);if(typeof +l==="number")var +q=1;else +if(2===l[0]){var +n=l[1],u=n[3],v=n[2];H(a);var +w=n[1],E=[0,[0,v[2],v[1]],u];a4(a);var +x=[0,[0,w,E],h];if(!u){var +h=x,r=k;continue}var +F=m(k),f=[0,w,m(x),F],p=1,q=0;}else +var +q=1;if(q)throw[0,t,F6]}else +var +p=0;else +var +p=0;if(!p){ac(a);var +G=[0,i[1],F7],I=m(k),J=m([0,G,h]),f=[0,i[1],J,I];}var +D=f[1],C=f[2],B=f[3];break}}return[0,g(o,D),[0,C,B]]});i(y,function(e,d,c,b){var +a=f(S,e,b);return[0,g(d,a[1]),[20,[0,c,a]]]});i($,function(a){d(a,5);var +c=b(k,a),i=e(0,a);if(typeof +i==="number")if(10===i)var +j=f(A,a,[0,c,0]),h=1;else +if(80===i)var +l=b(z[8],a),j=[0,g(c[1],l[1]),[23,[0,c,l]]],h=1;else +var +h=0;else +var +h=0;if(!h)var +j=c;d(a,6);return j});i(U,function(a){var +q=h(0,a);d(a,7);var +c=0;for(;;){var +f=e(0,a);if(typeof +f==="number"){if(14<=f)var +i=G===f?1:0;else +if(8<=f)switch(f-8|0){case +2:d(a,10);var +c=[0,0,c];continue;case +5:var +o=h(0,a);d(a,13);var +j=b(k,a),p=[1,[0,g(o,j[1]),[0,j]]];if(8!==e(0,a))d(a,10);var +c=[0,[0,p],c];continue;case +0:var +i=1;break;default:var +i=0;}else +var +i=0;if(i){var +l=m(c),r=h(0,a);d(a,8);return[0,g(q,r),[0,l]]}}var +n=[0,b(k,a)];if(8!==e(0,a))d(a,10);var +c=[0,[0,n],c];continue}});i(aa,function(a){aO(a,5);var +j=h(0,a),d=e(0,a);if(typeof +d!=="number"&&3===d[0]){var +f=d[1],k=E(0,a);H(a);var +b=f[3],l=f[2];a4(a);var +g=C(s(b));el(function(a){var +b=a-103|0;if(!(18>>0))switch(b){case +0:case +2:case +6:case +14:case +18:return o(g,a)}return 0},b);var +i=T(g);if(c(i,b))r(a,[3,b]);return[0,j,[18,[0,[3,[0,l,i]],k]]]}throw[0,t,F8]});function +al(d,b){if(typeof +b==="number"){var +a=b-29|0,c=16>>0?19===a?1:0:14<(a-1|0)>>>0?1:0;if(c)return 0}throw cb}i(ab,function(D){var +a=e6(al,D),E=h(0,a),n=12!==e(F9,a)?1:0,o=n?b(l[1],a):n,p=b(z[2],a);if(aI(0,a))if(0===p)var +q=f(j[13],F_,a),s=q[1],c=[0,[0,[0,s,[3,[0,[0,s,q[2]],0,0]]],0],0],v=0,t=0,k=1;else +var +k=0;else +var +k=0;if(!k)var +J=b(l[4],a),K=dp(1,a),C=b(z[11],K),c=J,v=C[1],t=C[2];if(c[2])var +m=0;else +if(c[1])var +i=a,m=1;else +var +m=0;if(!m)var +i=e8(a);var +w=bJ(i),F=w?12===e(0,i)?1:0:w;if(F)r(i,45);d(i,12);var +x=e8(i),G=l[8],y=br(function(a){return u(G,a,o,0)},x),A=y[2],B=A[1],H=b(l[6],c);cd(l[7],x,A[2],H,0,c);var +I=0===B[0]?0:1;return[0,g(E,y[1]),[3,[0,0,c,B,o,0,t,I,v,p]]]});i(A,function(a,c){var +h=e(0,a);if(typeof +h==="number")if(10===h){d(a,10);return f(A,a,[0,b(k,a),c])}var +j=bl(c),i=m(c),l=bl(i);return[0,g(l[1],j[1]),[4,[0,i]]]});i(B,function(c){var +a=e(0,c),g=E(0,c),i=h(0,c);if(typeof +a==="number"){var +l=60<=a?64<=a?0:1:0===a?1:0;if(l)return[0,f(j[13],0,c),0]}if(typeof +a==="number"){if(65<=a)if(cK===a)var +b=1;else +if(dM<=a)var +b=1;else +var +d=0,b=0;else +if(60<=a)if(64<=a)var +b=1;else +var +d=0,b=0;else +if(15<=a)var +b=1;else +var +d=0,b=0;if(b)var +k=[0,[0,i,e$([0,a,g])]],d=1;}else +var +d=0;if(!d){ac(c);var +k=0;}H(c);return[0,[0,i,g],k]});return[0,U,k,I,B,F,K,Q,A]}(F),bK=function(k){function +o(a){var +f=a[24][3];if(f){var +c=0;for(;;){var +d=e(0,a);if(typeof +d==="number")if(14===d){H(a);var +c=[0,b(k[6],a),c];continue}return m(c)}}return f}function +p(a){var +c=e(0,a);if(typeof +c==="number"){if(7===c){var +r=h(0,a);d(a,7);var +s=bp(0,a),t=b(j[9],s),u=h(0,a);d(a,8);return[0,g(r,u),[2,t]]}}else +switch(c[0]){case +0:var +v=E(0,a),n=h(0,a);return[0,n,[0,[0,n,[0,[2,f(k[7],a,c[1])],v]]]];case +1:var +i=c[1],o=i[4],p=i[3],q=i[2],l=i[1];if(o)au(a,32);d(a,[1,[0,l,q,p,o]]);return[0,l,[0,[0,l,[0,[0,q],p]]]]}var +m=b(k[4],a)[1];return[0,m[1],[1,m]]}function +s(a,n){var +i=b(F[2],a),j=p(a),e=j[1],o=h(0,a),c=b(F[4],a),f=0,r=0;if(0===n){var +k=c[1];if(c[2])q(a,[0,e,63]);else{var +w=k?k[2]?0:1:0;if(!w)q(a,[0,e,63]);}}else{var +x=c[1]?0:c[2]?0:1;if(!x)q(a,[0,e,62]);}var +s=b(z[9],a),l=u(F[5],a,f,i),d=l[2],t=b(F[6],c);cd(F[7],a,l[3],t,0,c);var +m=0===d[0]?[0,d[1][1],0]:[0,d[1][1],1],v=g(o,m[1]);return[0,j[2],[0,v,[0,0,c,d,f,i,0,m[2],s,r]]]}function +v(a,y,c,s,r){var +k=e(0,a);if(typeof +k==="number"){if(92===k)var +i=1;else +if(11<=k)var +f=0,i=0;else +switch(k){case +5:var +i=1;break;case +2:case +10:var +G=0,H=1;switch(c[0]){case +0:var +w=c[1],q=[0,w[1],[18,w[2]]];break;case +1:var +x=c[1],q=[0,x[1],[17,x]];break;default:var +q=c[1];}var +m=q,p=H,o=G,f=1,i=0;break;default:var +f=0,i=0;}if(i){var +A=h(0,a),B=b(z[2],a),n=b(F[4],a),C=b(z[9],a),t=u(F[5],a,s,r),l=t[2],D=b(F[6],n);cd(F[7],a,t[3],D,0,n);var +v=0===l[0]?[0,l[1][1],0]:[0,l[1][1],1],E=g(A,v[1]),m=[0,E,[2,[0,0,n,l,s,r,0,v[2],C,B]]],p=0,o=1,f=1;}}else +var +f=0;if(!f){d(a,80);var +m=b(j[9],a),p=0,o=0;}return[0,g(y,m[1]),[0,c,[0,m],o,p]]}var +l=function +b(a){return b.fun(a)},n=function +c(a,b){return c.fun(a,b)},x=function +b(a){return b.fun(a)},y=function +b(a){return b.fun(a)};function +a(a){var +aa=h(0,a);d(a,1);var +w=0;for(;;){var +x=e(0,a);if(typeof +x==="number"){var +ac=2===x?1:G===x?1:0;if(ac){var +$=m(w),ab=h(0,a);d(a,2);return[0,g(aa,ab),[0,$]]}}var +f=h(0,a);if(13===e(0,a)){d(a,13);var +H=b(j[9],a),Y=[1,[0,g(f,H[1]),[0,H]]];}else{var +B=fd?fd[1]:0,C=aI([0,B],a);if(C)var +D=C,y=0;else{var +E=e([0,B],a);if(typeof +E==="number")var +z=1;else +if(1>>0)if(dH<=r)var +k=0,l=0;else +switch(r+80|0){case +2:case +5:case +10:var +l=1;break;default:var +k=0,l=0;}else +if(10<(r-1|0)>>>0)var +l=1;else +var +k=0,l=0;if(l)var +O=v(a,f,q,0,0),k=1;}else +var +k=0;if(!k)var +V=s(a,0),W=V[2],X=W[1],_=[0,V[1],[2,[0,X,W[2]]],0,0],O=[0,g(f,X),_];var +P=O,A=1;}else{var +Q=e(0,a);if(typeof +Q==="number"){var +t=Q+fX|0;if(12>>0)if(dH<=t)var +n=0,o=0;else +switch(t+80|0){case +2:case +5:case +10:var +o=1;break;default:var +n=0,o=0;}else +if(10<(t-1|0)>>>0)var +o=1;else +var +n=0,o=0;if(o)var +R=v(a,f,q,0,0),n=1;}else +var +n=0;if(!n)var +S=s(a,1),T=S[2],U=T[1],Z=[0,S[1],[1,[0,U,T[2]]],0,0],R=[0,g(f,U),Z];var +P=R,A=1;}if(A)var +L=P,i=1;}else +var +i=0;}else +var +i=0;else +var +i=0;if(!i)var +L=v(a,f,K[2],I,J);var +Y=[0,L];}if(2!==e(0,a))d(a,10);var +w=[0,Y,w];continue}}i(l,function(a){if(41===e(0,a)){d(a,41);var +c=a.slice();c[16]=0;var +l=b(k[6],c),h=[0,l],g=b(z[4],a);}else +var +h=0,g=0;var +i=52===e(0,a)?1:0;if(i){if(1-at(a))r(a,11);d(a,52);var +j=f(n,a,0);}else +var +j=i;return[0,b(x,a),h,g,j]});i(n,function(a,l){var +c=f(j[13],0,a),h=b(z[4],a),o=h?g(c[1],h[1][1]):c[1],i=[0,[0,o,[0,c,h]],l],k=e(0,a);if(typeof +k==="number")if(10===k){d(a,10);return f(n,a,i)}return m(i)});i(x,function(a){var +k=h(0,a);d(a,1);var +c=0;for(;;){var +i=e(0,a);if(typeof +i==="number"){var +f=i-3|0;if(cL>>0){if(!(cm<(f+1|0)>>>0)){var +j=m(c),l=h(0,a);d(a,2);return[0,g(k,l),[0,j]]}}else +if(6===f){d(a,9);continue}}var +c=[0,b(y,a),c];continue}});function +t(b,a){return a?q(b,[0,a[1][1],5]):a}function +w(a,x,M,l,p,o,f,w){for(;;){var +y=e(0,a);if(typeof +y==="number"){var +q=y-78|0;if(2>>0)var +L=dH===q?0:1;else{if(1===q){ac(a);H(a);continue}var +L=0;}if(!L)if(!p)if(!o){var +T=b(z[9],a),E=a[24],G=78===e(0,a)?1:0;if(G){var +I=f?E[2]:f;if(I)var +v=I;else +var +K=1-f,v=K?E[1]:K;var +J=v?(d(a,78),[0,b(j[7],a)]):v;}else +var +J=G;var +U=h(0,a);if(!am(a,9)){var +V=7===e(0,a)?1:0,W=V||(5===e(0,a)?1:0);if(W)ac(a);}return[1,[0,g(x,U),[0,l,J,T,f,w]]]}}t(a,w);var +N=h(0,a),O=b(z[2],a),r=b(F[4],a),P=b(z[9],a),A=u(F[5],a,p,o),m=A[2],Q=b(F[6],r);cd(F[7],a,A[3],Q,0,r);var +B=0===m[0]?[0,m[1][1],0]:[0,m[1][1],1],C=B[1],R=g(N,C),S=[0,R,[0,0,r,m,p,o,0,B[2],P,O]];if(0===f){switch(l[0]){case +0:var +s=l[1][2][1];if(typeof +s==="number")var +n=1;else +if(0===s[0])if(c(s[1],Gg))var +i=0,k=0,n=0;else +var +k=1,n=0;else +var +n=1;if(n)var +i=0,k=0;break;case +1:if(c(l[1][2],Gh))var +i=0,k=0;else +var +k=1;break;default:var +i=0,k=0;}if(k)var +D=0,i=1;}else +var +i=0;if(!i)var +D=1;return[0,[0,g(x,C),[0,D,l,S,f,M]]]}}i(y,function(a){var +l=h(0,a),m=o(a),B=5!==e(Gi,a)?1:0;if(B)var +C=92!==e(Gj,a)?1:0,i=C?am(a,42):C;else +var +i=B;var +D=5!==e(Gk,a)?1:0;if(D)var +E=80!==e(Gl,a)?1:0,j=E?b(F[1],a):E;else +var +j=D;var +r=b(F[2],a),k=u(F[3],a,j,r);if(0===r)if(k)var +n=b(F[2],a),v=1;else +var +v=0;else +var +v=0;if(!v)var +n=r;var +G=p(a);if(0===j)if(0===n){var +q=G[2];if(1===q[0]){var +H=q[1][2];if(!c(H,Gm)){var +f=e(0,a);if(typeof +f==="number"){var +L=78<=f?81<=f?92===f?1:0:79===f?0:1:5===f?1:9===f?1:0;if(L)return w(a,l,m,q,j,n,i,k)}t(a,k);var +x=s(a,1),y=x[2],I=[0,2,x[1],y,i,m];return[0,[0,g(l,y[1]),I]]}if(!c(H,Gn)){var +d=e(0,a);if(typeof +d==="number"){var +K=78<=d?81<=d?92===d?1:0:79===d?0:1:5===d?1:9===d?1:0;if(K)return w(a,l,m,q,j,n,i,k)}t(a,k);var +z=s(a,0),A=z[2],J=[0,3,z[1],A,i,m];return[0,[0,g(l,A[1]),J]]}}}return w(a,l,m,G[2],j,n,i,k)});function +A(q,p){var +a=bf(1,q),r=h(0,a),s=cr(p,o(a));d(a,40);var +i=b9(1,a),t=a[7],u=aI(0,i);if(0===t)var +e=0;else{var +n=0!==u?1:0;if(n)var +e=0;else +var +k=n,e=1;}if(!e)var +k=[0,f(j[13],0,i)];var +v=b(z[3],a),c=b(l,a),m=c[1],w=g(r,m[1]);return[0,w,[19,[0,k,m,c[2],v,c[3],c[4],s]]]}return[0,p,a,A,function(a){var +s=h(0,a),t=o(a);d(a,40);var +n=e(0,a);if(typeof +n==="number"){var +m=n-1|0;if(40>>0)if(91===m)var +k=1;else +var +i=0,k=0;else +if(38<(m-1|0)>>>0)var +k=1;else +var +i=0,k=0;if(k)var +q=0,p=0,i=1;}else +var +i=0;if(!i)var +v=[0,f(j[13],0,a)],q=v,p=b(z[3],a);var +c=b(l,a),r=c[1],u=g(s,r[1]);return[0,u,[22,[0,q,r,c[2],p,c[3],c[4],t]]]},o]}(a5),J=function(aC){var +P=function +b(a){return b.fun(a)},Q=function +b(a){return b.fun(a)},R=function +b(a){return b.fun(a)},S=function +b(a){return b.fun(a)},T=function +b(a){return b.fun(a)},U=function +b(a){return b.fun(a)},V=function +b(a){return b.fun(a)},W=function +b(a){return b.fun(a)},X=function +b(a){return b.fun(a)},Y=function +b(a){return b.fun(a)},Z=function +b(a){return b.fun(a)},_=function +b(a){return b.fun(a)},$=function +b(a){return b.fun(a)},aa=function +b(a){return b.fun(a)},ab=function +b(a){return b.fun(a)},ad=function +b(a){return b.fun(a)},af=function +b(a){return b.fun(a)},a=function +b(a){return b.fun(a)},A=function +b(a){return b.fun(a)},p=function +b(a){return b.fun(a)},B=function +b(a){return b.fun(a)},v=function +b(a){return b.fun(a)},o=function +c(a,b){return c.fun(a,b)},ag=function +c(a,b){return c.fun(a,b)},x=function +c(a,b){return c.fun(a,b)},C=function +c(a,b){return c.fun(a,b)},D=function +c(a,b){return c.fun(a,b)},I=function +c(a,b){return c.fun(a,b)},ah=function +c(a,b){return c.fun(a,b)},aj=function +c(a,b){return c.fun(a,b)},J=function +c(a,b){return c.fun(a,b)},n=function +b(a){return b.fun(a)},l=function +b(a){return b.fun(a)},y=function +d(a,b,c){return d.fun(a,b,c)},ak=function +c(a,b){return c.fun(a,b)},K=function +c(a,b){return c.fun(a,b)},k=function +b(a){return b.fun(a)};function +L(b,d){var +c=d;for(;;){var +a=c[2];switch(a[0]){case +0:var +e=a[1][1];return aB(function(b,a){var +c=0===a[0]?a[1][2][2]:a[1][2][1];return L(b,c)},b,e);case +1:var +f=a[1][1];return aB(function(c,b){if(b){var +a=b[1],d=0===a[0]?a[1]:a[1][2][1];return L(c,d)}return c},b,f);case +2:var +c=a[1][1];continue;case +3:return[0,a[1][1],b];default:return ay(Go)}}}i(P,function(a){var +b=h(0,a);d(a,9);return[0,b,0]});i(Q,function(a){var +i=h(0,a);d(a,32);if(9===e(0,a))var +c=0;else +if(ca(a))var +c=0;else{var +o=f(j[13],0,a),p=o[2];if(1-f(dt[3],p,a[3]))r(a,[4,p]);var +b=[0,o],c=1;}if(!c)var +b=0;var +k=N(0,a),s=k?k[1]:b?b[1][1]:i,l=g(i,s),m=0===b?1:0;if(m)var +t=a[8],u=t||a[9],n=1-u;else +var +n=m;if(n)q(a,[0,l,23]);O(a);return[0,l,[4,[0,b]]]});i(R,function(a){var +i=h(0,a);d(a,35);if(9===e(0,a))var +c=0;else +if(ca(a))var +c=0;else{var +m=f(j[13],0,a),n=m[2];if(1-f(dt[3],n,a[3]))r(a,[4,n]);var +b=[0,m],c=1;}if(!c)var +b=0;var +k=N(0,a),o=k?k[1]:b?b[1][1]:i,l=g(i,o);if(1-a[8])q(a,[0,l,22]);O(a);return[0,l,[5,[0,b]]]});i(S,function(a){var +b=h(0,a);d(a,59);var +c=N(0,a),e=c?c[1]:b;O(a);return[0,g(b,e),1]});i(T,function(a){var +f=h(0,a);d(a,37);var +i=b_(1,a),k=b(j[2],i);d(a,25);d(a,5);var +l=b(j[7],a),m=h(0,a);d(a,6);var +c=N(0,a),n=c?c[1]:m;if(9===e(0,a))O(a);return[0,g(f,n),[13,[0,k,l]]]});function +al(c,a,f){if(f){var +d=f[1];if(0===d[0]){var +g=d[1],e=g[2][1];if(e)if(!e[1][2][2]){var +h=e[2];if(!h)return h}return q(c,[0,g[1],a])}var +i=d[1],k=i[1],l=1-b(j[24],[0,k,i[2]]);return l?q(c,[0,k,a]):l}return r(c,a)}i(U,function(a){var +m=h(0,a);d(a,39);var +v=a[17],w=v?am(a,64):v;d(a,5);var +i=e(0,a);if(typeof +i==="number")if(24<=i)if(29<=i)var +f=0;else{switch(i+gv|0){case +0:var +T=bp(1,a),H=b(F[13],T),k=[0,[0,[0,H[1]]],H[2]],l=1;break;case +3:var +U=bp(1,a),I=b(F[12],U),k=[0,[0,[0,I[1]]],I[2]],l=1;break;case +4:var +V=bp(1,a),J=b(F[11],V),k=[0,[0,[0,J[1]]],J[2]],l=1;break;default:var +f=0,l=0;}if(l)var +c=k[1],n=k[2],f=1;}else +if(9===i)var +c=0,n=0,f=1;else +var +f=0;else +var +f=0;if(!f)var +K=b9(1,bp(1,a)),c=[0,[1,b(j[7],K)]],n=0;var +o=e(0,a);if(62!==o)if(!w){if(typeof +o==="number")if(17===o){al(a,17,c);if(c){var +r=c[1],P=0===r[0]?[0,r[1]]:[1,r[1]];d(a,17);var +Q=b(j[7],a);d(a,6);var +R=b_(1,a),y=b(j[2],R);return[0,g(m,y[1]),[15,[0,P,Q,y,0]]]}throw[0,t,Gq]}M(function(b){return q(a,b)},n);d(a,9);var +z=e(0,a);if(typeof +z==="number"){var +A=9!==z?1:0;if(A)var +s=0;else +var +B=A,s=1;}else +var +s=0;if(!s)var +B=[0,b(j[7],a)];d(a,9);var +C=e(0,a);if(typeof +C==="number"){var +D=6!==C?1:0;if(D)var +u=0;else +var +E=D,u=1;}else +var +u=0;if(!u)var +E=[0,b(j[7],a)];d(a,6);var +S=b_(1,a),G=b(j[2],S);return[0,g(m,G[1]),[14,[0,c,B,E,G]]]}al(a,18,c);if(c){var +p=c[1],L=0===p[0]?[0,p[1]]:[1,p[1]];d(a,62);var +N=b(j[9],a);d(a,6);var +O=b_(1,a),x=b(j[2],O);return[0,g(m,x[1]),[16,[0,L,N,x,w]]]}throw[0,t,Gp]});i(V,function(a){var +k=h(0,a);d(a,16);d(a,5);var +l=b(j[7],a);d(a,6);e(0,a);var +f=cC(0,a)?(au(a,46),b(F[14],a)):b(j[2],a),i=43===e(0,a)?1:0,c=i?(d(a,43),[0,b(j[2],a)]):i,m=c?c[1][1]:f[1];return[0,g(k,m),[2,[0,l,f,c]]]});i(W,function(a){if(1-a[10])r(a,24);var +i=h(0,a);d(a,19);if(9===e(0,a))var +f=0;else +if(ca(a))var +f=0;else +var +c=[0,b(j[7],a)],f=1;if(!f)var +c=0;var +k=N(0,a),l=k?k[1]:c?c[1][1]:i;O(a);return[0,g(i,l),[9,[0,c]]]});i(X,function(a){var +A=h(0,a);d(a,20);d(a,5);var +B=b(j[7],a);d(a,6);d(a,1);var +c=Gr;for(;;){var +o=c[2],p=c[1],i=e(0,a);if(typeof +i==="number"){var +D=2===i?1:G===i?1:0;if(D){var +u=m(o),C=h(0,a);d(a,2);return[0,g(A,C),[8,[0,B,u]]]}}var +v=h(0,a),q=e(0,a);if(typeof +q==="number")if(36===q){if(p)r(a,20);d(a,36);var +k=0,l=1;}else +var +l=0;else +var +l=0;if(!l){d(a,33);var +k=[0,b(j[7],a)];}var +w=p||(0===k?1:0),x=h(0,a);d(a,80);var +y=function(b){if(typeof +b==="number"){var +a=b-2|0,c=31>>0?34===a?1:0:29<(a-1|0)>>>0?1:0;if(c)return 1}return 0},n=a.slice();n[9]=1;var +s=f(j[4],y,n),t=m(s),z=t?t[1][1]:x,c=[0,w,[0,[0,g(v,z),[0,k,s]],o]];continue}});i(Y,function(a){var +c=h(0,a);d(a,22);if(bJ(a))q(a,[0,c,12]);var +e=b(j[7],a),f=N(0,a),i=f?f[1]:e[1];O(a);return[0,g(c,i),[10,[0,e]]]});i(Z,function(a){var +s=h(0,a);d(a,23);var +k=b(j[16],a),n=e(0,a);if(typeof +n==="number")if(34===n){var +t=h(0,a);d(a,34);d(a,5);var +o=f(j[13],Gs,a),u=[0,o[1],[3,[0,o,0,0]]];d(a,6);var +p=b(j[16],a),c=[0,[0,g(t,p[1]),[0,u,p]]],l=1;}else +var +l=0;else +var +l=0;if(!l)var +c=0;var +r=e(0,a);if(typeof +r==="number")if(38===r){d(a,38);var +i=[0,b(j[16],a)],m=1;}else +var +m=0;else +var +m=0;if(!m)var +i=0;var +v=i?i[1][1]:c?c[1][1]:(q(a,[0,k[1],21]),k[1]);return[0,g(s,v),[11,[0,k,c,i]]]});i(_,function(a){var +c=b(F[9],a),d=c[1],e=d[1],f=N(0,a),h=f?f[1]:e;O(a);var +i=c[2];M(function(b){return q(a,b)},i);var +j=d[2];return[0,g(e,h),j]});i($,function(a){var +f=h(0,a);d(a,28);var +i=b9(1,a),c=b(F[10],i),j=[18,[0,c[2],1]],e=N(0,a),k=e?e[1]:c[1];O(a);var +l=c[3];M(function(b){return q(a,b)},l);return[0,g(f,k),j]});i(aa,function(a){var +e=h(0,a);d(a,25);d(a,5);var +f=b(j[7],a);d(a,6);var +i=b_(1,a),c=b(j[2],i);return[0,g(e,c[1]),[12,[0,f,c]]]});i(ab,function(a){var +f=h(0,a);d(a,26);d(a,5);var +i=b(j[7],a);d(a,6);var +c=b(j[2],a),e=g(f,c[1]);aW(a,[0,e,26]);return[0,e,[6,[0,i,c]]]});i(ad,function(c){var +a=b(j[16],c);return[0,a[1],[0,a[2]]]});i(af,function(a){var +c=b(j[7],a),l=e(0,a),h=c[2],m=c[1];if(typeof +h!=="number"&&17===h[0])if(typeof +l==="number")if(80===l){var +o=h[1],i=o[2];d(a,80);if(f(dt[3],i,a[3]))q(a,[0,m,[5,Gt,i]]);var +k=a.slice();k[3]=f(bH[4],i,a[3]);var +p=b(j[2],k);return[0,g(m,p[1]),[3,[0,o,p]]]}var +n=N(0,a),r=n?n[1]:c[1];O(a);return[0,g(c[1],r),[1,[0,c,0]]]});i(a,function(a){var +e=br(j[7],a),f=e[2],h=e[1],i=N(0,a),q=i?g(h,i[1]):h;O(a);var +k=a[18];if(k){var +c=f[2];if(typeof +c==="number")var +b=0;else +if(18===c[0]){var +n=c[1],o=n[1];if(typeof +o==="number")var +d=1;else +if(0===o[0])var +p=n[2],l=[0,ej(p,1,s(p)-2|0)],b=1,d=0;else +var +d=1;if(d)var +b=0;}else +var +b=0;if(!b)var +l=0;var +m=l;}else +var +m=k;return[0,q,[1,[0,f,m]]]});i(A,function(a){var +i=h(0,a);if(1-at(a))r(a,6);d(a,61);aO(a,1);var +k=f(j[13],0,a),l=b(z[3],a);d(a,78);var +c=b(z[1],a),e=N(0,a),m=e?e[1]:c[1];O(a);a4(a);return[0,g(i,m),[0,k,l,c]]});i(p,function(a){if(aI(Gu,a)){var +c=b(A,a);return[0,c[1],[7,c[2]]]}return b(j[2],a)});i(B,function(a){var +p=h(0,a);if(1-at(a))r(a,11);d(a,53);var +q=f(j[13],0,a),s=b(z[3],a),l=41===e(0,a)?1:0;if(l){d(a,41);var +c=0;for(;;){var +i=[0,b(z[5],a),c],k=e(0,a);if(typeof +k==="number")if(10===k){d(a,10);var +c=i;continue}var +n=m(i);break}}else +var +n=l;var +o=f(z[6],1,a);return[0,g(p,o[1]),[0,q,s,o,n,0]]});i(v,function(c){if(aI(Gv,c)){var +d=b(B,c);return[0,d[1],[20,d[2]]]}return b(a,c)});function +an(a,h){var +c=h;for(;;){var +f=[0,b(z[5],a),c],g=e(0,a);if(typeof +g==="number")if(10===g){d(a,10);var +c=f;continue}return m(f)}}i(o,function(l,k){var +a=bf(1,l);d(a,40);var +m=f(j[13],0,a),n=b(z[3],a),c=41===e(0,a)?1:0,o=c?(d(a,41),an(a,0)):c,h=ai(E(0,a),Gw),p=h?(aX(a,Gx),an(a,0)):h,i=f(z[6],1,a);return[0,g(k,i[1]),[0,m,n,i,o,p]]});i(ag,function(c,b){var +a=f(o,c,b);return[0,a[1],[23,a[2]]]});i(x,function(a,m){d(a,15);var +e=f(j[13],0,a),n=h(0,a),o=b(z[2],a),p=b(z[7],a);d(a,80);var +i=b(z[1],a),c=i[1],q=b(z[10],a),k=[0,g(n,c),[1,[0,p,i,o]]],r=[0,k[1],k],s=e[2],t=[0,g(e[1],c),s],l=N(0,a),u=l?l[1]:c;O(a);return[0,g(m,u),[0,t,r,q]]});i(C,function(c,b){var +a=f(x,c,b);return[0,a[1],[22,a[2]]]});i(D,function(a,f){d(a,24);var +b=u(j[15],a,Gy,28),c=b[2],e=N(0,a),h=e?e[1]:b[1],i=g(f,h);O(a);return[0,i,[0,c[1],c[2]]]});i(I,function(c,b){var +a=f(D,c,b);return[0,a[1],[21,a[2]]]});i(ah,function(a,H){var +q=e(0,a);if(typeof +q==="number")var +s=0;else +if(1===q[0]){var +l=q[1],B=l[4],C=l[3],D=l[2],E=l[1];if(B)au(a,32);d(a,[1,[0,E,D,C,B]]);var +y=[1,[0,E,[0,[0,D],C]]],s=1;}else +var +s=0;if(!s)var +y=[0,f(j[13],0,a)];var +I=h(0,a);d(a,1);var +c=0,n=0;for(;;){var +o=e(0,a);if(typeof +o==="number"){var +L=2===o?1:G===o?1:0;if(L){var +F=m(n);d(a,2);var +z=[0,g(I,h(0,a)),[0,F]],A=g(H,z[1]),K=c?c[1]:[0,A];return[0,A,[24,[0,y,z,K]]]}}var +p=f(J,Gz,a),i=p[2],u=p[1];if(c)if(0===c[1][0])if(typeof +i==="number")var +b=0;else +switch(i[0]){case +25:r(a,60);var +k=c,b=1;break;case +26:var +v=i[1][2],M=v?3>>0)var +i=0;else +switch(ac){case +22:d(a,36);bI(a,[0,g(c,h(0,a)),GR]);var +ad=e(0,a);if(typeof +ad==="number")if(15===ad)var +af=b(F[14],a),I=af[1],G=[0,af],P=1;else +var +P=0;else +var +P=0;if(!P)if(dq(0,a))var +ag=f(aC[3],a,S),I=ag[1],G=[0,ag];else{var +ah=b(j[9],a),aj=N(0,a),aA=aj?aj[1]:ah[1];O(a);var +I=aA,G=[1,ah];}return[0,g(c,I),[28,[0,G,1]]];case +0:case +1:case +10:case +13:case +14:case +26:var +i=1;break;default:var +i=0;}}if(i){var +z=f(j[3],[0,S],a),o=z[2],D=z[1];if(typeof +o==="number")var +k=0;else +switch(o[0]){case +17:var +$=o[1][1];if($)var +aa=$[1],k=2;else{q(a,[0,D,56]);var +A=0,k=1;}break;case +18:var +ax=o[1][1],az=0,A=aB(function(b,a){return aB(L,b,[0,a[2][1],0])},az,ax),k=1;break;case +19:var +ab=o[1][1];if(ab)var +aa=ab[1],k=2;else{q(a,[0,D,55]);var +A=0,k=1;}break;default:var +k=0;}switch(k){case +0:var +A=ay(GQ),Q=0;break;case +1:var +Q=0;break;default:var +_=[0,[0,D,b(l,aa)],0],Q=1;}if(!Q)var +_=A;M(function(b){return bI(a,b)},_);return[0,g(c,z[1]),[27,[0,[0,z],0,0,1]]]}}var +W=e(0,a);if(typeof +W==="number")if(61===W){H(a);var +X=0,R=1;}else +var +R=0;else +var +R=0;if(!R)var +X=1;d(a,1);var +Y=u(y,a,0,0),aq=[0,[0,Y[1]]],ar=h(0,a);d(a,2);if(ai(E(0,a),GK))var +s=[0,b(n,a)];else{var +au=Y[2];M(function(b){return q(a,b)},au);var +s=0;}var +Z=N(0,a),as=Z?Z[1]:s?s[1][1]:ar;O(a);return[0,g(c,as),[27,[0,0,aq,s,X]]]});i(K,function(v,l){var +K=v?v[1]:v;if(1-at(l))r(l,8);var +c=h(0,l);d(l,60);var +a=e4(1,bf(1,l));d(a,49);var +k=e(0,a);if(typeof +k==="number")if(54<=k){if(61===k){if(K){var +L=b(A,a),P=L[1],ac=g(c,P);return[0,ac,[26,[0,0,[0,[4,[0,P,L[2]]]],0,0]]]}}else +if(ae===k){var +aj=h(0,a);d(a,ae);var +ak=a[24][4],S=ai(E(0,a),GT),al=S?(aX(a,GU),ak?[0,f(j[13],0,a)]:(r(a,8),0)):S,T=b(n,a),U=N(0,a),am=[0,[1,aj,al]],an=U?U[1]:T[1];O(a);return[0,g(c,an),[26,[0,0,0,am,[0,T]]]]}}else +if(41<=k){if(53<=k)if(K){var +V=b(B,a),W=V[1],ao=g(c,W);return[0,ao,[26,[0,0,[0,[5,[0,W,V[2]]]],0,0]]]}}else +if(15<=k)switch(k-15|0){case +21:d(a,36);var +G=e(0,a);if(typeof +G==="number")if(15===G)var +_=f(x,a,c),I=_[1],H=[0,[1,_]],s=1;else +if(40===G)var +$=f(o,a,c),I=$[1],H=[0,[2,$]],s=1;else +var +s=0;else +var +s=0;if(!s){var +aa=b(z[1],a),ab=N(0,a),ap=ab?ab[1]:aa[1];O(a);var +I=ap,H=[0,[3,aa]];}return[0,g(c,I),[26,[0,1,H,0,0]]];case +0:case +9:case +12:case +13:case +25:var +i=e(0,a);if(typeof +i==="number"){if(25<=i)if(29<=i)if(40===i)var +X=f(o,a,c),F=X[1],C=[0,[2,X]],m=2;else +var +m=0;else +var +m=27<=i?1:0;else +if(15===i)var +Z=f(x,a,c),F=Z[1],C=[0,[1,Z]],m=2;else +var +m=24<=i?1:0;switch(m){case +0:var +J=0;break;case +1:var +aq=typeof +i==="number"?27===i?(r(a,51),1):28===i?(r(a,50),1):0:0,Y=f(D,a,c),F=Y[1],C=[0,[0,Y]],J=1;break;default:var +J=1;}if(J)return[0,g(c,F),[26,[0,0,C,0,0]]]}throw[0,t,GV]}var +w=e(0,a),ar=typeof +w==="number"?53===w?(r(a,53),1):61===w?(r(a,52),1):0:0;d(a,1);var +Q=u(y,a,0,0),ad=[0,[0,Q[1]]],af=h(0,a);d(a,2);if(ai(E(0,a),GS))var +p=[0,b(n,a)];else{var +ah=Q[2];M(function(b){return q(a,b)},ah);var +p=0;}var +R=N(0,a),ag=R?R[1]:p?p[1][1]:af;O(a);return[0,g(c,ag),[26,[0,0,0,ad,p]]]});function +ao(a){aX(a,GW);var +c=e(0,a);if(typeof +c!=="number"&&1===c[0]){var +b=c[1],g=b[4],i=b[3],j=b[2],k=b[1];if(g)au(a,32);d(a,[1,[0,k,j,i,g]]);return[0,k,[0,[0,j],i]]}var +f=E(0,a),l=[0,h(0,a),[0,[0,f],f]];ac(a);return l}function +ap(a,A){var +J=h(0,a),B=e(0,a);if(typeof +B==="number")if(ae===B){d(a,ae);aX(a,G4);var +C=f(j[13],0,a);return[0,[2,[0,g(J,C[1]),C]],0]}d(a,1);var +n=0,l=0;for(;;){var +D=n?n[1]:1,o=e(0,a);if(typeof +o==="number"){var +K=2===o?1:G===o?1:0;if(K){var +F=m(l);d(a,2);return F}}if(1-D)q(a,[0,h(0,a),66]);var +t=b(j[14],a),u=t[2],c=t[1],v=c[2];if(ai(v,GX))var +k=1,i=GY;else +if(ai(v,G2))var +k=1,i=G3;else +var +k=0,i=0;if(ai(E(0,a),GZ)){var +H=f(j[13],0,a);if(k)if(aI(0,a))var +r=0;else{if(A)q(a,[0,c[1],65]);var +w=[0,[0,i,0,H]],r=1;}else +var +r=0;if(!r)var +w=[0,[0,0,[0,f(j[13],0,a)],c]];var +p=w;}else{if(k)if(aI(0,a)){if(A)q(a,[0,c[1],65]);var +x=b(j[14],a),y=x[2];if(y)q(a,y[1]);var +z=ai(E(0,a),G0),I=z?(aX(a,G1),[0,f(j[13],0,a)]):z,p=[0,[0,i,I,x[1]]],s=1;}else +var +s=0;else +var +s=0;if(!s){if(u)q(a,u[1]);var +p=[0,[0,0,0,c]];}}var +n=[0,am(a,10)],l=[0,p,l];continue}}i(k,function(K){var +a=bf(1,K),p=h(0,a);d(a,50);var +q=e(0,a);if(typeof +q==="number")if(46===q){if(1-at(a))r(a,9);d(a,46);var +b=1,k=0,n=1;}else +if(61===q){if(1-at(a))r(a,9);var +b=0,k=[0,f(j[13],0,a)],n=1;}else +var +n=0;else +var +n=0;if(!n)var +b=2,k=0;var +w=2!==b?1:0,l=e(0,a),L=aI(0,a);if(typeof +l==="number")var +u=10===l?1:0;else +if(1===l[0]){if(2===b){var +m=l[1],G=m[4],H=m[3],I=m[2],t=m[1];if(G)au(a,32);d(a,[1,[0,t,I,H,G]]);var +J=N(0,a),T=[0,t,[0,[0,I],H]],U=J?J[1]:t;O(a);return[0,g(p,U),[29,[0,b,T,0]]]}var +u=0;}else +var +u=0;if(!u)if(0===L){var +M=ap(a,w),x=ao(a),y=N(0,a),P=y?y[1]:x[1];O(a);return[0,g(p,P),[29,[0,b,x,M]]]}var +s=e(0,a),Q=E(0,a);if(k)if(typeof +s==="number"){var +R=k[1];if(10===s)var +o=1;else +if(0===s)if(c(Q,G5))var +i=0,o=0;else +var +o=1;else +var +i=0,o=0;if(o)var +A=2,z=[1,R],i=1;}else +var +i=0;else +var +i=0;if(!i)var +A=b,z=[1,f(j[13],0,a)];var +B=e(0,a);if(typeof +B==="number")if(10===B){d(a,10);var +C=ap(a,w),v=1;}else +var +v=0;else +var +v=0;if(!v)var +C=0;var +D=ao(a),F=N(0,a),S=F?F[1]:D[1];O(a);return[0,g(p,S),[29,[0,A,D,[0,z,C]]]]});return[0,U,V,$,Z,aa,ab,ad,Q,R,S,J,K,T,P,ak,a,k,v,af,W,X,Y,p,_]}(bK),fe=function(F){function +k(g,a){var +b=a[2][1],c=[0,[0,bm(function(h){if(0===h[0]){var +i=h[1],b=i[2],c=b[2],a=b[1];switch(a[0]){case +0:var +d=[0,a[1]];break;case +1:var +d=[1,a[1]];break;default:var +d=[2,a[1]];}if(0===c[0])var +k=f(j[20],g,c[1]);else{var +l=c[1],e=l[1];q(g,[0,e,2]);var +k=[0,e,[4,[0,e,[2,l[2]]]]];}return[0,[0,i[1],[0,d,k,b[4]]]]}var +m=h[1],n=[0,f(j[20],g,m[2][1])];return[1,[0,m[1],n]]},b),0]];return[0,a[1],c]}function +l(e,a){var +b=a[2][1],c=[1,[0,bm(function(b){if(b){var +a=b[1];if(0===a[0]){var +c=a[1];return[0,[0,f(j[20],e,[0,c[1],c[2]])]]}var +d=a[1],g=[0,f(j[20],e,d[2][1])];return[0,[1,[0,d[1],g]]]}return b},b),0]];return[0,a[1],c]}function +a(e,d){var +a=d[2],b=d[1];if(typeof +a!=="number")switch(a[0]){case +0:return l(e,[0,b,a[1]]);case +1:return k(e,[0,b,a[1]]);case +7:var +c=a[1];if(0===c[1])return[0,b,[2,[0,c[2],c[3]]]];break;case +17:return[0,b,[3,[0,a[1],0,0]]]}return[0,b,[4,[0,b,a]]]}function +n(t){return function(a){var +J=h(0,a);d(a,1);var +o=0;for(;;){var +p=e(0,a);if(typeof +p==="number"){var +L=2===p?1:G===p?1:0;if(L){var +I=m(o),K=h(0,a);d(a,2);if(80===e(0,a))var +C=b(F[8],a),E=C[1],D=[0,C];else +var +E=K,D=0;return[0,g(J,E),[0,[0,I,D]]]}}var +u=h(0,a);if(am(a,13))var +v=i(a,t),q=[0,[1,[0,g(u,v[1]),[0,v]]]];else{var +k=b(j[21],a)[2];switch(k[0]){case +0:var +c=[0,k[1]];break;case +1:var +c=[1,k[1]];break;default:var +c=[2,k[1]];}var +w=e(0,a);if(typeof +w==="number")if(80===w){d(a,80);var +f=[0,[0,i(a,t),0]],r=1;}else +var +r=0;else +var +r=0;if(!r)if(1===c[0])var +B=c[1],f=[0,[0,[0,B[1],[3,[0,B,0,0]]],1]];else{ac(a);var +f=0;}if(f){var +x=f[1],l=x[1],y=e(0,a);if(typeof +y==="number")if(78===y){d(a,78);var +z=b(j[9],a),n=[0,g(l[1],z[1]),[2,[0,l,z]]],s=1;}else +var +s=0;else +var +s=0;if(!s)var +n=l;var +H=g(u,n[1]),A=[0,[0,[0,H,[0,c,n,x[2]]]]];}else +var +A=f;var +q=A;}if(q){if(2!==e(0,a))d(a,10);var +o=[0,q[1],o];continue}continue}}}function +o(o){return function(a){var +z=h(0,a);d(a,7);var +c=0;for(;;){var +f=e(0,a);if(typeof +f==="number"){if(14<=f)var +k=G===f?1:0;else +if(8<=f)switch(f-8|0){case +2:d(a,10);var +c=[0,0,c];continue;case +5:var +y=h(0,a);d(a,13);var +s=i(a,o),c=[0,[0,[1,[0,g(y,s[1]),[0,s]]]],c];continue;case +0:var +k=1;break;default:var +k=0;}else +var +k=0;if(k){var +w=m(c),A=h(0,a);d(a,8);if(80===e(0,a))var +t=b(F[8],a),v=t[1],u=[0,t];else +var +v=A,u=0;return[0,g(z,v),[1,[0,w,u]]]}}var +l=i(a,o),p=e(0,a);if(typeof +p==="number")if(78===p){d(a,78);var +q=b(j[7],a),r=[0,g(l[1],q[1]),[2,[0,l,q]]],n=1;}else +var +n=0;else +var +n=0;if(!n)var +r=l;var +x=[0,r];if(8!==e(0,a))d(a,10);var +c=[0,[0,x],c];continue}}}function +i(a,c){var +d=e(0,a);if(typeof +d==="number"){if(1===d)return b(n(c),a);if(7===d)return b(o(c),a)}var +f=u(j[15],a,0,c);return[0,f[1],[3,f[2]]]}return[0,k,l,a,n,o,i]}(z),ff=function +b(a){return b.fun(a)},dv=function +d(a,b,c){return d.fun(a,b,c)},dw=function +b(a){return b.fun(a)},fg=function +c(a,b){return c.fun(a,b)},dx=function +c(a,b){return c.fun(a,b)},dy=function +c(a,b){return c.fun(a,b)},cD=function +c(a,b){return c.fun(a,b)},cc=function +c(a,b){return c.fun(a,b)},cE=function +b(a){return b.fun(a)},fh=function +b(a){return b.fun(a)},dz=function +c(a,b){return c.fun(a,b)},fi=function +d(a,b,c){return d.fun(a,b,c)},fj=function +b(a){return b.fun(a)},fk=function +b(a){return b.fun(a)},G8=F$(j),fl=bK[3],G9=a5[3],G_=a5[2],G$=a5[6],Ha=bK[2],Hb=bK[1],Hc=bK[4],Hd=a5[1],He=a5[5],Hf=a5[4],Hg=G8[10],Hh=fe[6],Hi=fe[3];i(ff,function(a){var +b=f(fg,a,function(a){return 0}),e=h(0,a);d(a,G);if(b)var +i=bl(m(b))[1],c=g(bl(b)[1],i);else +var +c=e;return[0,c,b,m(a[2][1])]});i(dv,function(u,t,s){var +a=e3(1,u),h=Hm;for(;;){var +f=h[2],c=h[1],d=e(0,a);if(typeof +d==="number")if(G===d)var +g=[0,a,c,f],j=1;else +var +j=0;else +var +j=0;if(!j)if(b(t,d))var +g=[0,a,c,f];else{if(typeof +d==="number")var +k=0;else +if(1===d[0]){var +l=b(s,a),n=[0,l,f],i=l[2];if(typeof +i!=="number"&&1===i[0]){var +o=i[1][2];if(o){var +q=a[6],r=q||ai(o[1],Hl),a=bf(r,a),h=[0,[0,d,c],n];continue}}var +g=[0,a,c,n],k=1;}else +var +k=0;if(!k)var +g=[0,a,c,f];}var +p=e3(0,a),v=m(c);M(function(b){if(typeof +b!=="number"&&1===b[0]){var +d=b[1],e=d[4];return e?aW(p,[0,d[1],32]):e}if(typeof +b==="number"){var +c=b;if(59<=c)switch(c){case +59:var +a=uO;break;case +60:var +a=uP;break;case +61:var +a=uQ;break;case +62:var +a=uR;break;case +63:var +a=uS;break;case +64:var +a=uT;break;case +65:var +a=uU;break;case +66:var +a=uV;break;case +67:var +a=uW;break;case +68:var +a=uX;break;case +69:var +a=uY;break;case +70:var +a=uZ;break;case +71:var +a=u0;break;case +72:var +a=u1;break;case +73:var +a=u2;break;case +74:var +a=u3;break;case +75:var +a=u4;break;case +76:var +a=u5;break;case +77:var +a=u6;break;case +78:var +a=u7;break;case +79:var +a=u8;break;case +80:var +a=u9;break;case +81:var +a=u_;break;case +82:var +a=u$;break;case +83:var +a=va;break;case +84:var +a=vb;break;case +85:var +a=vc;break;case +86:var +a=vd;break;case +87:var +a=ve;break;case +88:var +a=vf;break;case +89:var +a=vg;break;case +90:var +a=vh;break;case +91:var +a=vi;break;case +92:var +a=vj;break;case +93:var +a=vk;break;case +94:var +a=vl;break;case +95:var +a=vm;break;case +96:var +a=vn;break;case +97:var +a=vo;break;case +98:var +a=vp;break;case +99:var +a=vq;break;case +100:var +a=vr;break;case +101:var +a=vs;break;case +102:var +a=vt;break;case +103:var +a=vu;break;case +104:var +a=vv;break;case +105:var +a=vw;break;case +106:var +a=vx;break;case +107:var +a=vy;break;case +108:var +a=vz;break;case +109:var +a=vA;break;case +110:var +a=vB;break;case +111:var +a=vC;break;case +112:var +a=vD;break;case +113:var +a=vE;break;case +114:var +a=vF;break;case +115:var +a=vG;break;default:var +a=vH;}else +switch(c){case +0:var +a=tT;break;case +1:var +a=tU;break;case +2:var +a=tV;break;case +3:var +a=tW;break;case +4:var +a=tX;break;case +5:var +a=tY;break;case +6:var +a=tZ;break;case +7:var +a=t0;break;case +8:var +a=t1;break;case +9:var +a=t2;break;case +10:var +a=t3;break;case +11:var +a=t4;break;case +12:var +a=t5;break;case +13:var +a=t6;break;case +14:var +a=t7;break;case +15:var +a=t8;break;case +16:var +a=t9;break;case +17:var +a=t_;break;case +18:var +a=t$;break;case +19:var +a=ua;break;case +20:var +a=ub;break;case +21:var +a=uc;break;case +22:var +a=ud;break;case +23:var +a=ue;break;case +24:var +a=uf;break;case +25:var +a=ug;break;case +26:var +a=uh;break;case +27:var +a=ui;break;case +28:var +a=uj;break;case +29:var +a=uk;break;case +30:var +a=ul;break;case +31:var +a=um;break;case +32:var +a=un;break;case +33:var +a=uo;break;case +34:var +a=up;break;case +35:var +a=uq;break;case +36:var +a=ur;break;case +37:var +a=us;break;case +38:var +a=ut;break;case +39:var +a=uu;break;case +40:var +a=uv;break;case +41:var +a=uw;break;case +42:var +a=ux;break;case +43:var +a=uy;break;case +44:var +a=uz;break;case +45:var +a=uA;break;case +46:var +a=uB;break;case +47:var +a=uC;break;case +48:var +a=uD;break;case +49:var +a=uE;break;case +50:var +a=uF;break;case +51:var +a=uG;break;case +52:var +a=uH;break;case +53:var +a=uI;break;case +54:var +a=uJ;break;case +55:var +a=uK;break;case +56:var +a=uL;break;case +57:var +a=uM;break;default:var +a=uN;}}else +switch(b[0]){case +0:var +a=vI;break;case +1:var +a=vJ;break;case +2:var +a=vK;break;case +3:var +a=vL;break;case +4:var +a=vM;break;default:var +a=vN;}return ay(w(Hk,w(a,Hj)))},v);return[0,p,g[3]]}});i(dw,function(a){var +c=b(bK[5],a),d=e(0,a);if(typeof +d==="number"){var +g=d-49|0;if(!(11>>0))switch(g){case +0:return f(J[15],a,c);case +1:b(dr(a),c);return b(J[17],a);case +11:if(49===e(Hn,a)){b(dr(a),c);return f(J[12],0,a)}break}}return f(cc,[0,c],a)});i(fg,function(c,a){var +b=u(dv,c,a,dw),d=f(dx,a,b[1]),e=b[2];return aB(function(b,a){return[0,a,b]},d,e)});i(dx,function(f,d){var +a=0;for(;;){var +c=e(0,d);if(typeof +c==="number")if(G===c)return m(a);if(b(f,c))return m(a);var +a=[0,b(dw,d),a];continue}});i(dy,function(a,d){var +b=u(dv,d,a,function(a){return f(cc,0,a)}),c=b[1],e=f(cD,a,c),g=b[2],h=aB(function(b,a){return[0,a,b]},e,g);return[0,h,c[6]]});i(cD,function(g,d){var +a=0;for(;;){var +c=e(0,d);if(typeof +c==="number")if(G===c)return m(a);if(b(g,c))return m(a);var +a=[0,f(cc,0,d),a];continue}});i(cc,function(d,a){var +g=d?d[1]:d;if(1-dq(0,a))b(dr(a),g);var +c=e(0,a);if(typeof +c==="number"){if(27===c)return b(J[24],a);if(28===c)return b(J[3],a)}if(cC(0,a))return b(F[14],a);if(dq(0,a))return f(fl,a,g);if(typeof +c==="number"){var +h=c+f1|0;if(!(8>>0))switch(h){case +0:return b(J[18],a);case +7:return f(J[11],0,a);case +8:return b(J[23],a)}}return b(cE,a)});i(cE,function(a){var +c=e(0,a);if(typeof +c==="number"){if(G===c){ac(a);return[0,h(0,a),0]}if(!(60<=c))switch(c){case +1:return b(J[7],a);case +9:return b(J[14],a);case +16:return b(J[2],a);case +19:return b(J[20],a);case +20:return b(J[21],a);case +22:return b(J[22],a);case +23:return b(J[4],a);case +24:return b(J[24],a);case +25:return b(J[5],a);case +26:return b(J[6],a);case +32:return b(J[8],a);case +35:return b(J[9],a);case +37:return b(J[13],a);case +39:return b(J[1],a);case +59:return b(J[10],a)}}if(aI(0,a))return b(J[19],a);if(typeof +c==="number"){if(80===c)var +d=1;else +if(51<=c)var +d=0;else +switch(c){case +43:return b(J[2],a);case +2:case +6:case +8:case +10:case +11:case +12:case +13:case +17:case +18:case +33:case +34:case +36:case +38:case +41:case +42:case +49:case +50:var +d=1;break;default:var +d=0;}if(d){ac(a);H(a);return b(cE,a)}}return b(J[16],a)});i(fh,function(a){var +c=b(a5[2],a),d=e(0,a);if(typeof +d==="number")if(10===d)return f(a5[8],a,[0,c,0]);return c});i(dz,function(g,a){var +i=h(0,a),c=E(0,a),b=e(0,a);if(typeof +b==="number")if(28===b){if(a[6])au(a,40);else +if(a[13])r(a,[1,c]);H(a);var +f=1;}else +var +f=0;else +var +f=0;if(!f)if(b$(c)){au(a,40);H(a);}else{var +j=typeof +b==="number"?4<(b-60|0)>>>0?0:(d(a,b),1):0;if(!j)d(a,0);}var +k=g?bq(c)?(aW(a,[0,i,g[1]]),1):0:0;return[0,i,c]});i(fi,function(c,a,k){var +l=a?a[1]:a;return br(function(a){var +c=1-l,i=f(dz,[0,k],a),g=c?79===e(0,a)?1:0:c;if(g){if(1-at(a))r(a,7);d(a,79);}var +h=80===e(0,a)?1:0,j=h?[0,b(z[8],a)]:h;return[0,i,j,g]},c)});i(fj,function(a){var +b=h(0,a);d(a,1);var +c=f(cD,function(a){return 2===a?1:0},a),e=h(0,a);d(a,2);return[0,g(b,e),[0,c]]});i(fk,function(a){var +c=h(0,a);d(a,1);var +b=f(dy,function(a){return 2===a?1:0},a),e=h(0,a);d(a,2);var +i=b[2],j=[0,b[1]];return[0,g(c,e),j,i]});u(aF,Ho,j,[0,ff,cE,cc,cD,dy,dx,fh,G9,G_,G$,Ha,Hd,dz,Hf,fi,fj,fk,Hg,Hh,Hi,Hb,fl,Hc,He]);var +cF=[0,0];function +Hp(r,g,e,q){var +t=r?r[1]:1,M=g?g[1]:g,N=e?e[1]:e,h=[0,N],i=[0,M],u=0,L=i?i[1]:i,o=h?h[1]:h,p=[0,o],d=[0,L],F=d?d[1]:d,l=p?o:p,w=[0],x=1,y=0,z=0,A=0,B=0,C=0,D=s(q),v=ei(q),E=[0,function(a){a[9]=1;return 0},v,D,C,B,A,z,y,x,w,en,en],a=l?l[1]:dn,k=[0,u,E,0,a[5],dk],G=[0,b6(k,0)],n=[0,[0,0],[0,0],bH[1],[0,bH[1]],[0,0],a[6],0,0,0,0,0,0,0,0,0,1,0,0,0,[0,Ev],[0,k],G,[0,F],a,u],J=b(j[1],n),H=m(n[1][1]),I=[0,du[1],0],c=m(aB(function(c,a){var +d=c[2],b=c[1];return f(du[3],a,b)?[0,b,d]:[0,f(du[4],a,b),[0,a,d]]},I,H)[2]),K=t?0!==c?1:0:t;if(K)throw[0,eJ,c];return[0,J,c]}var +Hq=Ic,Hr=Ib,Hs=Id,Ht=Ia;function +Hu(a){return a}function +Hv(d,c,a){try{var +e=new +RegExp(c.toString(),a.toString()),b=e;}catch(c){cF[1]=[0,[0,d,13],cF[1]];var +b=new +RegExp(p,a.toString());}return b}function +Hw(b){var +a=new +Function(cX,"throw e;");return a.call(a,b)}function +Hx(a){var +f=a.esproposal_decorators;if(b5(f)){var +g=dn.slice();g[3]=f|0;var +b=g;}else +var +b=dn;var +h=a.esproposal_class_instance_fields;if(b5(h)){var +i=b.slice();i[1]=h|0;var +c=i;}else +var +c=b;var +j=a.esproposal_class_static_fields;if(b5(j)){var +k=c.slice();k[2]=j|0;var +d=k;}else +var +d=c;var +l=a.esproposal_export_star_as;if(b5(l)){var +m=d.slice();m[4]=l|0;var +e=m;}else +var +e=d;var +n=a.types;if(b5(n)){var +o=e.slice();o[5]=n|0;return o}return e}function +Hy(h,c){var +i=g4(c,eD)?{}:c,j=bk(h),k=[0,Hx(i)];try{var +e=Hp(HA,0,[0,k],j);cF[1]=0;var +f=lM([0,Hq,Hr,Hs,Ht,Hu,jT,Hv]),g=b(f[1],e[1]),l=cr(e[2],cF[1]);g.errors=b(f[3],l);return g}catch(b){b=aj(b);if(b[1]===eJ){var +d=new +Error(w(a(p+dc(b[2])),Hz).toString());d.name="Parse Error";Hw(d);return{}}throw b}}var fm; + +var +fm=exports;fm.parse=Hy;hq(0);return}(function(){return this}())); +}); + +var index$34 = createCommonjsModule(function (module, exports) { +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +/* eslint max-len: 0 */ + +// This is a trick taken from Esprima. It turns out that, on +// non-Chrome browsers, to check whether a string is in a set, a +// predicate containing a big ugly `switch` statement is faster than +// a regular expression, and on Chrome the two are about on par. +// This function uses `eval` (non-lexical) to produce such a +// predicate from a space-separated string of words. +// +// It starts by sorting the words by length. + +function makePredicate(words) { + words = words.split(" "); + return function (str) { + return words.indexOf(str) >= 0; + }; +} + +// Reserved word lists for various dialects of the language + +var reservedWords = { + 6: makePredicate("enum await"), + strict: makePredicate("implements interface let package private protected public static yield"), + strictBind: makePredicate("eval arguments") +}; + +// And the keywords + +var isKeyword = makePredicate("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"); + +// ## Character categories + +// Big ugly regular expressions that match characters in the +// whitespace, identifier, and identifier-start categories. These +// are only applied when a character is found to actually have a +// code point above 128. +// Generated by `bin/generate-identifier-regex.js`. + +var nonASCIIidentifierStartChars = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC"; +var nonASCIIidentifierChars = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA900-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F"; + +var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; + +// These are a run-length and offset encoded representation of the +// >0xffff code points that are a valid part of identifiers. The +// offset starts at 0x10000, and each pair of numbers represents an +// offset to the next range, and then a size of the range. They were +// generated by `bin/generate-identifier-regex.js`. +var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 17, 26, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 26, 45, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 785, 52, 76, 44, 33, 24, 27, 35, 42, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 54, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 86, 25, 391, 63, 32, 0, 449, 56, 264, 8, 2, 36, 18, 0, 50, 29, 881, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 881, 68, 12, 0, 67, 12, 65, 0, 32, 6124, 20, 754, 9486, 1, 3071, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 4149, 196, 60, 67, 1213, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 3, 5761, 10591, 541]; +var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 1306, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 52, 0, 13, 2, 49, 13, 10, 2, 4, 9, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 57, 0, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 87, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 423, 9, 838, 7, 2, 7, 17, 9, 57, 21, 2, 13, 19882, 9, 135, 4, 60, 6, 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 2214, 6, 110, 6, 6, 9, 792487, 239]; + +// This has a complexity linear to the value of the code. The +// assumption is that looking up astral identifier characters is +// rare. +function isInAstralSet(code, set) { + var pos = 0x10000; + for (var i = 0; i < set.length; i += 2) { + pos += set[i]; + if (pos > code) return false; + + pos += set[i + 1]; + if (pos >= code) return true; + } +} + +// Test whether a given character code starts an identifier. + +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code < 91) return true; + if (code < 97) return code === 95; + if (code < 123) return true; + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + return isInAstralSet(code, astralIdentifierStartCodes); +} + +// Test whether a given character is part of an identifier. + +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code < 91) return true; + if (code < 97) return code === 95; + if (code < 123) return true; + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} + +// A second optional argument can be given to further configure +var defaultOptions = { + // Source type ("script" or "module") for different semantics + sourceType: "script", + // Source filename. + sourceFilename: undefined, + // When enabled, a return at the top level is not considered an + // error. + allowReturnOutsideFunction: false, + // When enabled, import/export statements are not constrained to + // appearing at the top of the program. + allowImportExportEverywhere: false, + // TODO + allowSuperOutsideMethod: false, + // An array of plugins to enable + plugins: [], + // TODO + strictMode: null +}; + +// Interpret and default an options object + +function getOptions(opts) { + var options = {}; + for (var key in defaultOptions) { + options[key] = opts && key in opts ? opts[key] : defaultOptions[key]; + } + return options; +} + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; +} : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; +}; + + + + + + + + + + + +var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + + + + + + + + + + + +var inherits = function (subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; +}; + + + + + + + + + + + +var possibleConstructorReturn = function (self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; +}; + +// ## Token types + +// The assignment of fine-grained, information-carrying type objects +// allows the tokenizer to store the information it has about a +// token in a way that is very cheap for the parser to look up. + +// All token type variables start with an underscore, to make them +// easy to recognize. + +// The `beforeExpr` property is used to disambiguate between regular +// expressions and divisions. It is set on all token types that can +// be followed by an expression (thus, a slash after them would be a +// regular expression). +// +// `isLoop` marks a keyword as starting a loop, which is important +// to know when parsing a label, in order to allow or disallow +// continue jumps to that label. + +var beforeExpr = true; +var startsExpr = true; +var isLoop = true; +var isAssign = true; +var prefix = true; +var postfix = true; + +var TokenType = function TokenType(label) { + var conf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + classCallCheck(this, TokenType); + + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop || null; + this.updateContext = null; +}; + +var KeywordTokenType = function (_TokenType) { + inherits(KeywordTokenType, _TokenType); + + function KeywordTokenType(name) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + classCallCheck(this, KeywordTokenType); + + options.keyword = name; + + return possibleConstructorReturn(this, _TokenType.call(this, name, options)); + } + + return KeywordTokenType; +}(TokenType); + +var BinopTokenType = function (_TokenType2) { + inherits(BinopTokenType, _TokenType2); + + function BinopTokenType(name, prec) { + classCallCheck(this, BinopTokenType); + return possibleConstructorReturn(this, _TokenType2.call(this, name, { beforeExpr: beforeExpr, binop: prec })); + } + + return BinopTokenType; +}(TokenType); + +var types = { + num: new TokenType("num", { startsExpr: startsExpr }), + regexp: new TokenType("regexp", { startsExpr: startsExpr }), + string: new TokenType("string", { startsExpr: startsExpr }), + name: new TokenType("name", { startsExpr: startsExpr }), + eof: new TokenType("eof"), + + // Punctuation token types. + bracketL: new TokenType("[", { beforeExpr: beforeExpr, startsExpr: startsExpr }), + bracketR: new TokenType("]"), + braceL: new TokenType("{", { beforeExpr: beforeExpr, startsExpr: startsExpr }), + braceBarL: new TokenType("{|", { beforeExpr: beforeExpr, startsExpr: startsExpr }), + braceR: new TokenType("}"), + braceBarR: new TokenType("|}"), + parenL: new TokenType("(", { beforeExpr: beforeExpr, startsExpr: startsExpr }), + parenR: new TokenType(")"), + comma: new TokenType(",", { beforeExpr: beforeExpr }), + semi: new TokenType(";", { beforeExpr: beforeExpr }), + colon: new TokenType(":", { beforeExpr: beforeExpr }), + doubleColon: new TokenType("::", { beforeExpr: beforeExpr }), + dot: new TokenType("."), + question: new TokenType("?", { beforeExpr: beforeExpr }), + arrow: new TokenType("=>", { beforeExpr: beforeExpr }), + template: new TokenType("template"), + ellipsis: new TokenType("...", { beforeExpr: beforeExpr }), + backQuote: new TokenType("`", { startsExpr: startsExpr }), + dollarBraceL: new TokenType("${", { beforeExpr: beforeExpr, startsExpr: startsExpr }), + at: new TokenType("@"), + + // Operators. These carry several kinds of properties to help the + // parser use them properly (the presence of these properties is + // what categorizes them as operators). + // + // `binop`, when present, specifies that this operator is a binary + // operator, and will refer to its precedence. + // + // `prefix` and `postfix` mark the operator as a prefix or postfix + // unary operator. + // + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as + // binary operators with a very low precedence, that should result + // in AssignmentExpression nodes. + + eq: new TokenType("=", { beforeExpr: beforeExpr, isAssign: isAssign }), + assign: new TokenType("_=", { beforeExpr: beforeExpr, isAssign: isAssign }), + incDec: new TokenType("++/--", { prefix: prefix, postfix: postfix, startsExpr: startsExpr }), + prefix: new TokenType("prefix", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }), + logicalOR: new BinopTokenType("||", 1), + logicalAND: new BinopTokenType("&&", 2), + bitwiseOR: new BinopTokenType("|", 3), + bitwiseXOR: new BinopTokenType("^", 4), + bitwiseAND: new BinopTokenType("&", 5), + equality: new BinopTokenType("==/!=", 6), + relational: new BinopTokenType("", 7), + bitShift: new BinopTokenType("<>", 8), + plusMin: new TokenType("+/-", { beforeExpr: beforeExpr, binop: 9, prefix: prefix, startsExpr: startsExpr }), + modulo: new BinopTokenType("%", 10), + star: new BinopTokenType("*", 10), + slash: new BinopTokenType("/", 10), + exponent: new TokenType("**", { beforeExpr: beforeExpr, binop: 11, rightAssociative: true }) +}; + +var keywords = { + "break": new KeywordTokenType("break"), + "case": new KeywordTokenType("case", { beforeExpr: beforeExpr }), + "catch": new KeywordTokenType("catch"), + "continue": new KeywordTokenType("continue"), + "debugger": new KeywordTokenType("debugger"), + "default": new KeywordTokenType("default", { beforeExpr: beforeExpr }), + "do": new KeywordTokenType("do", { isLoop: isLoop, beforeExpr: beforeExpr }), + "else": new KeywordTokenType("else", { beforeExpr: beforeExpr }), + "finally": new KeywordTokenType("finally"), + "for": new KeywordTokenType("for", { isLoop: isLoop }), + "function": new KeywordTokenType("function", { startsExpr: startsExpr }), + "if": new KeywordTokenType("if"), + "return": new KeywordTokenType("return", { beforeExpr: beforeExpr }), + "switch": new KeywordTokenType("switch"), + "throw": new KeywordTokenType("throw", { beforeExpr: beforeExpr }), + "try": new KeywordTokenType("try"), + "var": new KeywordTokenType("var"), + "let": new KeywordTokenType("let"), + "const": new KeywordTokenType("const"), + "while": new KeywordTokenType("while", { isLoop: isLoop }), + "with": new KeywordTokenType("with"), + "new": new KeywordTokenType("new", { beforeExpr: beforeExpr, startsExpr: startsExpr }), + "this": new KeywordTokenType("this", { startsExpr: startsExpr }), + "super": new KeywordTokenType("super", { startsExpr: startsExpr }), + "class": new KeywordTokenType("class"), + "extends": new KeywordTokenType("extends", { beforeExpr: beforeExpr }), + "export": new KeywordTokenType("export"), + "import": new KeywordTokenType("import"), + "yield": new KeywordTokenType("yield", { beforeExpr: beforeExpr, startsExpr: startsExpr }), + "null": new KeywordTokenType("null", { startsExpr: startsExpr }), + "true": new KeywordTokenType("true", { startsExpr: startsExpr }), + "false": new KeywordTokenType("false", { startsExpr: startsExpr }), + "in": new KeywordTokenType("in", { beforeExpr: beforeExpr, binop: 7 }), + "instanceof": new KeywordTokenType("instanceof", { beforeExpr: beforeExpr, binop: 7 }), + "typeof": new KeywordTokenType("typeof", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }), + "void": new KeywordTokenType("void", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }), + "delete": new KeywordTokenType("delete", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }) +}; + +// Map keyword names to token types. +Object.keys(keywords).forEach(function (name) { + types["_" + name] = keywords[name]; +}); + +// Matches a whole line break (where CRLF is considered a single +// line break). Used to count lines. + +var lineBreak = /\r\n?|\n|\u2028|\u2029/; +var lineBreakG = new RegExp(lineBreak.source, "g"); + +function isNewLine(code) { + return code === 10 || code === 13 || code === 0x2028 || code === 0x2029; +} + +var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/; + +// The algorithm used to determine whether a regexp can appear at a +// given point in the program is loosely based on sweet.js' approach. +// See https://github.com/mozilla/sweet.js/wiki/design + +var TokContext = function TokContext(token, isExpr, preserveSpace, override) { + classCallCheck(this, TokContext); + + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; +}; + +var types$1 = { + braceStatement: new TokContext("{", false), + braceExpression: new TokContext("{", true), + templateQuasi: new TokContext("${", true), + parenStatement: new TokContext("(", false), + parenExpression: new TokContext("(", true), + template: new TokContext("`", true, true, function (p) { + return p.readTmplToken(); + }), + functionExpression: new TokContext("function", true) +}; + +// Token-specific context update code + +types.parenR.updateContext = types.braceR.updateContext = function () { + if (this.state.context.length === 1) { + this.state.exprAllowed = true; + return; + } + + var out = this.state.context.pop(); + if (out === types$1.braceStatement && this.curContext() === types$1.functionExpression) { + this.state.context.pop(); + this.state.exprAllowed = false; + } else if (out === types$1.templateQuasi) { + this.state.exprAllowed = true; + } else { + this.state.exprAllowed = !out.isExpr; + } +}; + +types.name.updateContext = function (prevType) { + this.state.exprAllowed = false; + + if (prevType === types._let || prevType === types._const || prevType === types._var) { + if (lineBreak.test(this.input.slice(this.state.end))) { + this.state.exprAllowed = true; + } + } +}; + +types.braceL.updateContext = function (prevType) { + this.state.context.push(this.braceIsBlock(prevType) ? types$1.braceStatement : types$1.braceExpression); + this.state.exprAllowed = true; +}; + +types.dollarBraceL.updateContext = function () { + this.state.context.push(types$1.templateQuasi); + this.state.exprAllowed = true; +}; + +types.parenL.updateContext = function (prevType) { + var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; + this.state.context.push(statementParens ? types$1.parenStatement : types$1.parenExpression); + this.state.exprAllowed = true; +}; + +types.incDec.updateContext = function () { + // tokExprAllowed stays unchanged +}; + +types._function.updateContext = function () { + if (this.curContext() !== types$1.braceStatement) { + this.state.context.push(types$1.functionExpression); + } + + this.state.exprAllowed = false; +}; + +types.backQuote.updateContext = function () { + if (this.curContext() === types$1.template) { + this.state.context.pop(); + } else { + this.state.context.push(types$1.template); + } + this.state.exprAllowed = false; +}; + +// These are used when `options.locations` is on, for the +// `startLoc` and `endLoc` properties. + +var Position = function Position(line, col) { + classCallCheck(this, Position); + + this.line = line; + this.column = col; +}; + +var SourceLocation = function SourceLocation(start, end) { + classCallCheck(this, SourceLocation); + + this.start = start; + this.end = end; +}; + +// The `getLineInfo` function is mostly useful when the +// `locations` option is off (for performance reasons) and you +// want to find the line/column position for a given character +// offset. `input` should be the code string that the offset refers +// into. + +function getLineInfo(input, offset) { + for (var line = 1, cur = 0;;) { + lineBreakG.lastIndex = cur; + var match = lineBreakG.exec(input); + if (match && match.index < offset) { + ++line; + cur = match.index + match[0].length; + } else { + return new Position(line, offset - cur); + } + } +} + +var State = function () { + function State() { + classCallCheck(this, State); + } + + State.prototype.init = function init(options, input) { + this.strict = options.strictMode === false ? false : options.sourceType === "module"; + + this.input = input; + + this.potentialArrowAt = -1; + + this.inMethod = this.inFunction = this.inGenerator = this.inAsync = this.inPropertyName = this.inType = this.noAnonFunctionType = false; + + this.labels = []; + + this.decorators = []; + + this.tokens = []; + + this.comments = []; + + this.trailingComments = []; + this.leadingComments = []; + this.commentStack = []; + + this.pos = this.lineStart = 0; + this.curLine = 1; + + this.type = types.eof; + this.value = null; + this.start = this.end = this.pos; + this.startLoc = this.endLoc = this.curPosition(); + + this.lastTokEndLoc = this.lastTokStartLoc = null; + this.lastTokStart = this.lastTokEnd = this.pos; + + this.context = [types$1.braceStatement]; + this.exprAllowed = true; + + this.containsEsc = this.containsOctal = false; + this.octalPosition = null; + + this.exportedIdentifiers = []; + + return this; + }; + + // TODO + + + // TODO + + + // Used to signify the start of a potential arrow function + + + // Flags to track whether we are in a function, a generator. + + + // Labels in scope. + + + // Leading decorators. + + + // Token store. + + + // Comment store. + + + // Comment attachment store + + + // The current position of the tokenizer in the input. + + + // Properties of the current token: + // Its type + + + // For tokens that include more information than their type, the value + + + // Its start and end offset + + + // And, if locations are used, the {line, column} object + // corresponding to those offsets + + + // Position information for the previous token + + + // The context stack is used to superficially track syntactic + // context to predict whether a regular expression is allowed in a + // given position. + + + // Used to signal to callers of `readWord1` whether the word + // contained any escape sequences. This is needed because words with + // escape sequences must not be interpreted as keywords. + + + // TODO + + + // Names of exports store. `default` is stored as a name for both + // `export default foo;` and `export { foo as default };`. + + + State.prototype.curPosition = function curPosition() { + return new Position(this.curLine, this.pos - this.lineStart); + }; + + State.prototype.clone = function clone(skipArrays) { + var state = new State(); + for (var key in this) { + var val = this[key]; + + if ((!skipArrays || key === "context") && Array.isArray(val)) { + val = val.slice(); + } + + state[key] = val; + } + return state; + }; + + return State; +}(); + +/* eslint indent: 0 */ + +// Object type used to represent tokens. Note that normally, tokens +// simply exist as properties on the parser object. This is only +// used for the onToken callback and the external tokenizer. + +var Token = function Token(state) { + classCallCheck(this, Token); + + this.type = state.type; + this.value = state.value; + this.start = state.start; + this.end = state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); +}; + +// ## Tokenizer + +function codePointToString(code) { + // UTF-16 Decoding + if (code <= 0xFFFF) { + return String.fromCharCode(code); + } else { + return String.fromCharCode((code - 0x10000 >> 10) + 0xD800, (code - 0x10000 & 1023) + 0xDC00); + } +} + +var Tokenizer = function () { + function Tokenizer(options, input) { + classCallCheck(this, Tokenizer); + + this.state = new State(); + this.state.init(options, input); + } + + // Move to the next token + + Tokenizer.prototype.next = function next() { + if (!this.isLookahead) { + this.state.tokens.push(new Token(this.state)); + } + + this.state.lastTokEnd = this.state.end; + this.state.lastTokStart = this.state.start; + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + }; + + // TODO + + Tokenizer.prototype.eat = function eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + }; + + // TODO + + Tokenizer.prototype.match = function match(type) { + return this.state.type === type; + }; + + // TODO + + Tokenizer.prototype.isKeyword = function isKeyword$$1(word) { + return isKeyword(word); + }; + + // TODO + + Tokenizer.prototype.lookahead = function lookahead() { + var old = this.state; + this.state = old.clone(true); + + this.isLookahead = true; + this.next(); + this.isLookahead = false; + + var curr = this.state.clone(true); + this.state = old; + return curr; + }; + + // Toggle strict mode. Re-reads the next number or string to please + // pedantic tests (`"use strict"; 010;` should fail). + + Tokenizer.prototype.setStrict = function setStrict(strict) { + this.state.strict = strict; + if (!this.match(types.num) && !this.match(types.string)) return; + this.state.pos = this.state.start; + while (this.state.pos < this.state.lineStart) { + this.state.lineStart = this.input.lastIndexOf("\n", this.state.lineStart - 2) + 1; + --this.state.curLine; + } + this.nextToken(); + }; + + Tokenizer.prototype.curContext = function curContext() { + return this.state.context[this.state.context.length - 1]; + }; + + // Read a single token, updating the parser object's token-related + // properties. + + Tokenizer.prototype.nextToken = function nextToken() { + var curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) this.skipSpace(); + + this.state.containsOctal = false; + this.state.octalPosition = null; + this.state.start = this.state.pos; + this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.input.length) return this.finishToken(types.eof); + + if (curContext.override) { + return curContext.override(this); + } else { + return this.readToken(this.fullCharCodeAtPos()); + } + }; + + Tokenizer.prototype.readToken = function readToken(code) { + // Identifier or keyword. '\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (isIdentifierStart(code) || code === 92 /* '\' */) { + return this.readWord(); + } else { + return this.getTokenFromCode(code); + } + }; + + Tokenizer.prototype.fullCharCodeAtPos = function fullCharCodeAtPos() { + var code = this.input.charCodeAt(this.state.pos); + if (code <= 0xd7ff || code >= 0xe000) return code; + + var next = this.input.charCodeAt(this.state.pos + 1); + return (code << 10) + next - 0x35fdc00; + }; + + Tokenizer.prototype.pushComment = function pushComment(block, text, start, end, startLoc, endLoc) { + var comment = { + type: block ? "CommentBlock" : "CommentLine", + value: text, + start: start, + end: end, + loc: new SourceLocation(startLoc, endLoc) + }; + + if (!this.isLookahead) { + this.state.tokens.push(comment); + this.state.comments.push(comment); + this.addComment(comment); + } + }; + + Tokenizer.prototype.skipBlockComment = function skipBlockComment() { + var startLoc = this.state.curPosition(); + var start = this.state.pos; + var end = this.input.indexOf("*/", this.state.pos += 2); + if (end === -1) this.raise(this.state.pos - 2, "Unterminated comment"); + + this.state.pos = end + 2; + lineBreakG.lastIndex = start; + var match = void 0; + while ((match = lineBreakG.exec(this.input)) && match.index < this.state.pos) { + ++this.state.curLine; + this.state.lineStart = match.index + match[0].length; + } + + this.pushComment(true, this.input.slice(start + 2, end), start, this.state.pos, startLoc, this.state.curPosition()); + }; + + Tokenizer.prototype.skipLineComment = function skipLineComment(startSkip) { + var start = this.state.pos; + var startLoc = this.state.curPosition(); + var ch = this.input.charCodeAt(this.state.pos += startSkip); + while (this.state.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) { + ++this.state.pos; + ch = this.input.charCodeAt(this.state.pos); + } + + this.pushComment(false, this.input.slice(start + startSkip, this.state.pos), start, this.state.pos, startLoc, this.state.curPosition()); + }; + + // Called at the start of the parse and after every token. Skips + // whitespace and comments, and. + + Tokenizer.prototype.skipSpace = function skipSpace() { + loop: while (this.state.pos < this.input.length) { + var ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32:case 160: + // ' ' + ++this.state.pos; + break; + + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + + case 10:case 8232:case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + + case 47: + // '/' + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + // '*' + this.skipBlockComment(); + break; + + case 47: + this.skipLineComment(2); + break; + + default: + break loop; + } + break; + + default: + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { + ++this.state.pos; + } else { + break loop; + } + } + } + }; + + // Called at the end of every token. Sets `end`, `val`, and + // maintains `context` and `exprAllowed`, and skips the space after + // the token, so that the next one's `start` will point at the + // right position. + + Tokenizer.prototype.finishToken = function finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + var prevType = this.state.type; + this.state.type = type; + this.state.value = val; + + this.updateContext(prevType); + }; + + // ### Token reading + + // This is the function that is called to fetch the next token. It + // is somewhat obscure, because it works in character codes rather + // than characters, and because operator parsing has been inlined + // into it. + // + // All in the name of speed. + // + + + Tokenizer.prototype.readToken_dot = function readToken_dot() { + var next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + return this.readNumber(true); + } + + var next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 46 && next2 === 46) { + // 46 = dot '.' + this.state.pos += 3; + return this.finishToken(types.ellipsis); + } else { + ++this.state.pos; + return this.finishToken(types.dot); + } + }; + + Tokenizer.prototype.readToken_slash = function readToken_slash() { + // '/' + if (this.state.exprAllowed) { + ++this.state.pos; + return this.readRegexp(); + } + + var next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + return this.finishOp(types.assign, 2); + } else { + return this.finishOp(types.slash, 1); + } + }; + + Tokenizer.prototype.readToken_mult_modulo = function readToken_mult_modulo(code) { + // '%*' + var type = code === 42 ? types.star : types.modulo; + var width = 1; + var next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 42) { + // '*' + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = types.exponent; + } + + if (next === 61) { + width++; + type = types.assign; + } + + return this.finishOp(type, width); + }; + + Tokenizer.prototype.readToken_pipe_amp = function readToken_pipe_amp(code) { + // '|&' + var next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2); + if (next === 61) return this.finishOp(types.assign, 2); + if (code === 124 && next === 125 && this.hasPlugin("flow")) return this.finishOp(types.braceBarR, 2); + return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1); + }; + + Tokenizer.prototype.readToken_caret = function readToken_caret() { + // '^' + var next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + return this.finishOp(types.assign, 2); + } else { + return this.finishOp(types.bitwiseXOR, 1); + } + }; + + Tokenizer.prototype.readToken_plus_min = function readToken_plus_min(code) { + // '+-' + var next = this.input.charCodeAt(this.state.pos + 1); + + if (next === code) { + if (next === 45 && this.input.charCodeAt(this.state.pos + 2) === 62 && lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.pos))) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken(); + } + return this.finishOp(types.incDec, 2); + } + + if (next === 61) { + return this.finishOp(types.assign, 2); + } else { + return this.finishOp(types.plusMin, 1); + } + }; + + Tokenizer.prototype.readToken_lt_gt = function readToken_lt_gt(code) { + // '<>' + var next = this.input.charCodeAt(this.state.pos + 1); + var size = 1; + + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.state.pos + size) === 61) return this.finishOp(types.assign, size + 1); + return this.finishOp(types.bitShift, size); + } + + if (next === 33 && code === 60 && this.input.charCodeAt(this.state.pos + 2) === 45 && this.input.charCodeAt(this.state.pos + 3) === 45) { + if (this.inModule) this.unexpected(); + // `