| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602 | /** * Make a map and return a function for checking if a key * is in that map. * IMPORTANT: all calls of this function must be prefixed with * \/\*#\_\_PURE\_\_\*\/ * So that rollup can tree-shake them if necessary. */function makeMap(str, expectsLowerCase) {    const map = Object.create(null);    const list = str.split(',');    for (let i = 0; i < list.length; i++) {        map[list[i]] = true;    }    return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];}/** * dev only flag -> name mapping */const PatchFlagNames = {    [1 /* PatchFlags.TEXT */]: `TEXT`,    [2 /* PatchFlags.CLASS */]: `CLASS`,    [4 /* PatchFlags.STYLE */]: `STYLE`,    [8 /* PatchFlags.PROPS */]: `PROPS`,    [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,    [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,    [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,    [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,    [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,    [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,    [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,    [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,    [-1 /* PatchFlags.HOISTED */]: `HOISTED`,    [-2 /* PatchFlags.BAIL */]: `BAIL`};/** * Dev only */const slotFlagsText = {    [1 /* SlotFlags.STABLE */]: 'STABLE',    [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',    [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'};const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +    'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +    'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);const range = 2;function generateCodeFrame(source, start = 0, end = source.length) {    // Split the content into individual lines but capture the newline sequence    // that separated each line. This is important because the actual sequence is    // needed to properly take into account the full line length for offset    // comparison    let lines = source.split(/(\r?\n)/);    // Separate the lines and newline sequences into separate arrays for easier referencing    const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);    lines = lines.filter((_, idx) => idx % 2 === 0);    let count = 0;    const res = [];    for (let i = 0; i < lines.length; i++) {        count +=            lines[i].length +                ((newlineSequences[i] && newlineSequences[i].length) || 0);        if (count >= start) {            for (let j = i - range; j <= i + range || end > count; j++) {                if (j < 0 || j >= lines.length)                    continue;                const line = j + 1;                res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`);                const lineLength = lines[j].length;                const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;                if (j === i) {                    // push underline                    const pad = start - (count - (lineLength + newLineSeqLength));                    const length = Math.max(1, end > count ? lineLength - pad : end - start);                    res.push(`   |  ` + ' '.repeat(pad) + '^'.repeat(length));                }                else if (j > i) {                    if (end > count) {                        const length = Math.max(Math.min(end - count, lineLength), 1);                        res.push(`   |  ` + '^'.repeat(length));                    }                    count += lineLength + newLineSeqLength;                }            }            break;        }    }    return res.join('\n');}function normalizeStyle(value) {    if (isArray(value)) {        const res = {};        for (let i = 0; i < value.length; i++) {            const item = value[i];            const normalized = isString(item)                ? parseStringStyle(item)                : normalizeStyle(item);            if (normalized) {                for (const key in normalized) {                    res[key] = normalized[key];                }            }        }        return res;    }    else if (isString(value)) {        return value;    }    else if (isObject(value)) {        return value;    }}const listDelimiterRE = /;(?![^(]*\))/g;const propertyDelimiterRE = /:([^]+)/;const styleCommentRE = /\/\*.*?\*\//gs;function parseStringStyle(cssText) {    const ret = {};    cssText        .replace(styleCommentRE, '')        .split(listDelimiterRE)        .forEach(item => {        if (item) {            const tmp = item.split(propertyDelimiterRE);            tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());        }    });    return ret;}function stringifyStyle(styles) {    let ret = '';    if (!styles || isString(styles)) {        return ret;    }    for (const key in styles) {        const value = styles[key];        const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);        if (isString(value) || typeof value === 'number') {            // only render valid values            ret += `${normalizedKey}:${value};`;        }    }    return ret;}function normalizeClass(value) {    let res = '';    if (isString(value)) {        res = value;    }    else if (isArray(value)) {        for (let i = 0; i < value.length; i++) {            const normalized = normalizeClass(value[i]);            if (normalized) {                res += normalized + ' ';            }        }    }    else if (isObject(value)) {        for (const name in value) {            if (value[name]) {                res += name + ' ';            }        }    }    return res.trim();}// These tag configs are shared between compiler-dom and runtime-dom, so they// https://developer.mozilla.org/en-US/docs/Web/HTML/Elementconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +    'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +    'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +    'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +    'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +    'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +    'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +    'option,output,progress,select,textarea,details,dialog,menu,' +    'summary,template,blockquote,iframe,tfoot';// https://developer.mozilla.org/en-US/docs/Web/SVG/Elementconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +    'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +    'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +    'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +    'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +    'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +    'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +    'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +    'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +    'text,textPath,title,tspan,unknown,use,view';const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';/** * Compiler only. * Do NOT use in runtime code paths unless behind `true` flag. */const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);/** * Compiler only. * Do NOT use in runtime code paths unless behind `true` flag. */const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);/** * Compiler only. * Do NOT use in runtime code paths unless behind `true` flag. */const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);/** * On the client we only need to offer special cases for boolean attributes that * have different names from their corresponding dom properties: * - itemscope -> N/A * - allowfullscreen -> allowFullscreen * - formnovalidate -> formNoValidate * - ismap -> isMap * - nomodule -> noModule * - novalidate -> noValidate * - readonly -> readOnly */const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;/** * The full list is needed during SSR to produce the correct initial markup. */const isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +    `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +    `loop,open,required,reversed,scoped,seamless,` +    `checked,muted,multiple,selected`);const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;const attrValidationCache = {};function isSSRSafeAttrName(name) {    if (attrValidationCache.hasOwnProperty(name)) {        return attrValidationCache[name];    }    const isUnsafe = unsafeAttrCharRE.test(name);    if (isUnsafe) {        console.error(`unsafe attribute name: ${name}`);    }    return (attrValidationCache[name] = !isUnsafe);}const propsToAttrMap = {    acceptCharset: 'accept-charset',    className: 'class',    htmlFor: 'for',    httpEquiv: 'http-equiv'};/** * Known attributes, this is used for stringification of runtime static nodes * so that we don't stringify bindings that cannot be set from HTML. * Don't also forget to allow `data-*` and `aria-*`! * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes */const isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +    `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +    `border,buffered,capture,challenge,charset,checked,cite,class,code,` +    `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +    `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +    `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +    `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +    `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +    `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +    `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +    `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +    `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +    `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +    `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +    `value,width,wrap`);/** * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute */const isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +    `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +    `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +    `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +    `color-interpolation-filters,color-profile,color-rendering,` +    `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +    `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +    `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +    `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +    `font-family,font-size,font-size-adjust,font-stretch,font-style,` +    `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +    `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +    `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +    `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +    `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +    `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +    `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +    `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +    `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +    `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +    `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +    `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +    `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +    `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +    `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +    `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +    `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +    `strikethrough-position,strikethrough-thickness,string,stroke,` +    `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +    `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +    `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +    `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +    `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +    `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +    `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +    `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +    `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +    `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +    `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);const escapeRE = /["'&<>]/;function escapeHtml(string) {    const str = '' + string;    const match = escapeRE.exec(str);    if (!match) {        return str;    }    let html = '';    let escaped;    let index;    let lastIndex = 0;    for (index = match.index; index < str.length; index++) {        switch (str.charCodeAt(index)) {            case 34: // "                escaped = '"';                break;            case 38: // &                escaped = '&';                break;            case 39: // '                escaped = ''';                break;            case 60: // <                escaped = '<';                break;            case 62: // >                escaped = '>';                break;            default:                continue;        }        if (lastIndex !== index) {            html += str.slice(lastIndex, index);        }        lastIndex = index + 1;        html += escaped;    }    return lastIndex !== index ? html + str.slice(lastIndex, index) : html;}/** * For converting {{ interpolation }} values to displayed strings. * @private */const toDisplayString = (val) => {    return isString(val)        ? val        : val == null            ? ''            : isArray(val) ||                (isObject(val) &&                    (val.toString === objectToString || !isFunction(val.toString)))                ? JSON.stringify(val, replacer, 2)                : String(val);};const replacer = (_key, val) => {    // can't use isRef here since @vue/shared has no deps    if (val && val.__v_isRef) {        return replacer(_key, val.value);    }    else if (isMap(val)) {        return {            [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {                entries[`${key} =>`] = val;                return entries;            }, {})        };    }    else if (isSet(val)) {        return {            [`Set(${val.size})`]: [...val.values()]        };    }    else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {        return String(val);    }    return val;};const EMPTY_OBJ = Object.freeze({})    ;Object.freeze([]) ;const NOOP = () => { };/** * Always return false. */const NO = () => false;const onRE = /^on[^a-z]/;const isOn = (key) => onRE.test(key);const extend = Object.assign;const hasOwnProperty = Object.prototype.hasOwnProperty;const hasOwn = (val, key) => hasOwnProperty.call(val, key);const isArray = Array.isArray;const isMap = (val) => toTypeString(val) === '[object Map]';const isSet = (val) => toTypeString(val) === '[object Set]';const isFunction = (val) => typeof val === 'function';const isString = (val) => typeof val === 'string';const isSymbol = (val) => typeof val === 'symbol';const isObject = (val) => val !== null && typeof val === 'object';const objectToString = Object.prototype.toString;const toTypeString = (value) => objectToString.call(value);const isPlainObject = (val) => toTypeString(val) === '[object Object]';const isReservedProp = /*#__PURE__*/ makeMap(// the leading comma is intentional so empty string "" is also included',key,ref,ref_for,ref_key,' +    'onVnodeBeforeMount,onVnodeMounted,' +    'onVnodeBeforeUpdate,onVnodeUpdated,' +    'onVnodeBeforeUnmount,onVnodeUnmounted');const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');const cacheStringFunction = (fn) => {    const cache = Object.create(null);    return ((str) => {        const hit = cache[str];        return hit || (cache[str] = fn(str));    });};const camelizeRE = /-(\w)/g;/** * @private */const camelize = cacheStringFunction((str) => {    return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));});const hyphenateRE = /\B([A-Z])/g;/** * @private */const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());/** * @private */const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));/** * @private */const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/;function genPropsAccessExp(name) {    return identRE.test(name)        ? `__props.${name}`        : `__props[${JSON.stringify(name)}]`;}function defaultOnError(error) {    throw error;}function defaultOnWarn(msg) {    console.warn(`[Vue warn] ${msg.message}`);}function createCompilerError(code, loc, messages, additionalMessage) {    const msg = (messages || errorMessages)[code] + (additionalMessage || ``)        ;    const error = new SyntaxError(String(msg));    error.code = code;    error.loc = loc;    return error;}const errorMessages = {    // parse errors    [0 /* ErrorCodes.ABRUPT_CLOSING_OF_EMPTY_COMMENT */]: 'Illegal comment.',    [1 /* ErrorCodes.CDATA_IN_HTML_CONTENT */]: 'CDATA section is allowed only in XML context.',    [2 /* ErrorCodes.DUPLICATE_ATTRIBUTE */]: 'Duplicate attribute.',    [3 /* ErrorCodes.END_TAG_WITH_ATTRIBUTES */]: 'End tag cannot have attributes.',    [4 /* ErrorCodes.END_TAG_WITH_TRAILING_SOLIDUS */]: "Illegal '/' in tags.",    [5 /* ErrorCodes.EOF_BEFORE_TAG_NAME */]: 'Unexpected EOF in tag.',    [6 /* ErrorCodes.EOF_IN_CDATA */]: 'Unexpected EOF in CDATA section.',    [7 /* ErrorCodes.EOF_IN_COMMENT */]: 'Unexpected EOF in comment.',    [8 /* ErrorCodes.EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */]: 'Unexpected EOF in script.',    [9 /* ErrorCodes.EOF_IN_TAG */]: 'Unexpected EOF in tag.',    [10 /* ErrorCodes.INCORRECTLY_CLOSED_COMMENT */]: 'Incorrectly closed comment.',    [11 /* ErrorCodes.INCORRECTLY_OPENED_COMMENT */]: 'Incorrectly opened comment.',    [12 /* ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME */]: "Illegal tag name. Use '<' to print '<'.",    [13 /* ErrorCodes.MISSING_ATTRIBUTE_VALUE */]: 'Attribute value was expected.',    [14 /* ErrorCodes.MISSING_END_TAG_NAME */]: 'End tag name was expected.',    [15 /* ErrorCodes.MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */]: 'Whitespace was expected.',    [16 /* ErrorCodes.NESTED_COMMENT */]: "Unexpected '<!--' in comment.",    [17 /* ErrorCodes.UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */]: 'Attribute name cannot contain U+0022 ("), U+0027 (\'), and U+003C (<).',    [18 /* ErrorCodes.UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */]: 'Unquoted attribute value cannot contain U+0022 ("), U+0027 (\'), U+003C (<), U+003D (=), and U+0060 (`).',    [19 /* ErrorCodes.UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */]: "Attribute name cannot start with '='.",    [21 /* ErrorCodes.UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */]: "'<?' is allowed only in XML context.",    [20 /* ErrorCodes.UNEXPECTED_NULL_CHARACTER */]: `Unexpected null character.`,    [22 /* ErrorCodes.UNEXPECTED_SOLIDUS_IN_TAG */]: "Illegal '/' in tags.",    // Vue-specific parse errors    [23 /* ErrorCodes.X_INVALID_END_TAG */]: 'Invalid end tag.',    [24 /* ErrorCodes.X_MISSING_END_TAG */]: 'Element is missing end tag.',    [25 /* ErrorCodes.X_MISSING_INTERPOLATION_END */]: 'Interpolation end sign was not found.',    [27 /* ErrorCodes.X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */]: 'End bracket for dynamic directive argument was not found. ' +        'Note that dynamic directive argument cannot contain spaces.',    [26 /* ErrorCodes.X_MISSING_DIRECTIVE_NAME */]: 'Legal directive name was expected.',    // transform errors    [28 /* ErrorCodes.X_V_IF_NO_EXPRESSION */]: `v-if/v-else-if is missing expression.`,    [29 /* ErrorCodes.X_V_IF_SAME_KEY */]: `v-if/else branches must use unique keys.`,    [30 /* ErrorCodes.X_V_ELSE_NO_ADJACENT_IF */]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,    [31 /* ErrorCodes.X_V_FOR_NO_EXPRESSION */]: `v-for is missing expression.`,    [32 /* ErrorCodes.X_V_FOR_MALFORMED_EXPRESSION */]: `v-for has invalid expression.`,    [33 /* ErrorCodes.X_V_FOR_TEMPLATE_KEY_PLACEMENT */]: `<template v-for> key should be placed on the <template> tag.`,    [34 /* ErrorCodes.X_V_BIND_NO_EXPRESSION */]: `v-bind is missing expression.`,    [35 /* ErrorCodes.X_V_ON_NO_EXPRESSION */]: `v-on is missing expression.`,    [36 /* ErrorCodes.X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */]: `Unexpected custom directive on <slot> outlet.`,    [37 /* ErrorCodes.X_V_SLOT_MIXED_SLOT_USAGE */]: `Mixed v-slot usage on both the component and nested <template>.` +        `When there are multiple named slots, all slots should use <template> ` +        `syntax to avoid scope ambiguity.`,    [38 /* ErrorCodes.X_V_SLOT_DUPLICATE_SLOT_NAMES */]: `Duplicate slot names found. `,    [39 /* ErrorCodes.X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */]: `Extraneous children found when component already has explicitly named ` +        `default slot. These children will be ignored.`,    [40 /* ErrorCodes.X_V_SLOT_MISPLACED */]: `v-slot can only be used on components or <template> tags.`,    [41 /* ErrorCodes.X_V_MODEL_NO_EXPRESSION */]: `v-model is missing expression.`,    [42 /* ErrorCodes.X_V_MODEL_MALFORMED_EXPRESSION */]: `v-model value must be a valid JavaScript member expression.`,    [43 /* ErrorCodes.X_V_MODEL_ON_SCOPE_VARIABLE */]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,    [44 /* ErrorCodes.X_V_MODEL_ON_PROPS */]: `v-model cannot be used on a prop, because local prop bindings are not writable.\nUse a v-bind binding combined with a v-on listener that emits update:x event instead.`,    [45 /* ErrorCodes.X_INVALID_EXPRESSION */]: `Error parsing JavaScript expression: `,    [46 /* ErrorCodes.X_KEEP_ALIVE_INVALID_CHILDREN */]: `<KeepAlive> expects exactly one child component.`,    // generic errors    [47 /* ErrorCodes.X_PREFIX_ID_NOT_SUPPORTED */]: `"prefixIdentifiers" option is not supported in this build of compiler.`,    [48 /* ErrorCodes.X_MODULE_MODE_NOT_SUPPORTED */]: `ES module mode is not supported in this build of compiler.`,    [49 /* ErrorCodes.X_CACHE_HANDLER_NOT_SUPPORTED */]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,    [50 /* ErrorCodes.X_SCOPE_ID_NOT_SUPPORTED */]: `"scopeId" option is only supported in module mode.`,    // just to fulfill types    [51 /* ErrorCodes.__EXTEND_POINT__ */]: ``};const FRAGMENT = Symbol(`Fragment` );const TELEPORT = Symbol(`Teleport` );const SUSPENSE = Symbol(`Suspense` );const KEEP_ALIVE = Symbol(`KeepAlive` );const BASE_TRANSITION = Symbol(`BaseTransition` );const OPEN_BLOCK = Symbol(`openBlock` );const CREATE_BLOCK = Symbol(`createBlock` );const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` );const CREATE_VNODE = Symbol(`createVNode` );const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` );const CREATE_COMMENT = Symbol(`createCommentVNode` );const CREATE_TEXT = Symbol(`createTextVNode` );const CREATE_STATIC = Symbol(`createStaticVNode` );const RESOLVE_COMPONENT = Symbol(`resolveComponent` );const RESOLVE_DYNAMIC_COMPONENT = Symbol(`resolveDynamicComponent` );const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` );const RESOLVE_FILTER = Symbol(`resolveFilter` );const WITH_DIRECTIVES = Symbol(`withDirectives` );const RENDER_LIST = Symbol(`renderList` );const RENDER_SLOT = Symbol(`renderSlot` );const CREATE_SLOTS = Symbol(`createSlots` );const TO_DISPLAY_STRING = Symbol(`toDisplayString` );const MERGE_PROPS = Symbol(`mergeProps` );const NORMALIZE_CLASS = Symbol(`normalizeClass` );const NORMALIZE_STYLE = Symbol(`normalizeStyle` );const NORMALIZE_PROPS = Symbol(`normalizeProps` );const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` );const TO_HANDLERS = Symbol(`toHandlers` );const CAMELIZE = Symbol(`camelize` );const CAPITALIZE = Symbol(`capitalize` );const TO_HANDLER_KEY = Symbol(`toHandlerKey` );const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` );const PUSH_SCOPE_ID = Symbol(`pushScopeId` );const POP_SCOPE_ID = Symbol(`popScopeId` );const WITH_CTX = Symbol(`withCtx` );const UNREF = Symbol(`unref` );const IS_REF = Symbol(`isRef` );const WITH_MEMO = Symbol(`withMemo` );const IS_MEMO_SAME = Symbol(`isMemoSame` );// Name mapping for runtime helpers that need to be imported from 'vue' in// generated code. Make sure these are correctly exported in the runtime!const helperNameMap = {    [FRAGMENT]: `Fragment`,    [TELEPORT]: `Teleport`,    [SUSPENSE]: `Suspense`,    [KEEP_ALIVE]: `KeepAlive`,    [BASE_TRANSITION]: `BaseTransition`,    [OPEN_BLOCK]: `openBlock`,    [CREATE_BLOCK]: `createBlock`,    [CREATE_ELEMENT_BLOCK]: `createElementBlock`,    [CREATE_VNODE]: `createVNode`,    [CREATE_ELEMENT_VNODE]: `createElementVNode`,    [CREATE_COMMENT]: `createCommentVNode`,    [CREATE_TEXT]: `createTextVNode`,    [CREATE_STATIC]: `createStaticVNode`,    [RESOLVE_COMPONENT]: `resolveComponent`,    [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,    [RESOLVE_DIRECTIVE]: `resolveDirective`,    [RESOLVE_FILTER]: `resolveFilter`,    [WITH_DIRECTIVES]: `withDirectives`,    [RENDER_LIST]: `renderList`,    [RENDER_SLOT]: `renderSlot`,    [CREATE_SLOTS]: `createSlots`,    [TO_DISPLAY_STRING]: `toDisplayString`,    [MERGE_PROPS]: `mergeProps`,    [NORMALIZE_CLASS]: `normalizeClass`,    [NORMALIZE_STYLE]: `normalizeStyle`,    [NORMALIZE_PROPS]: `normalizeProps`,    [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,    [TO_HANDLERS]: `toHandlers`,    [CAMELIZE]: `camelize`,    [CAPITALIZE]: `capitalize`,    [TO_HANDLER_KEY]: `toHandlerKey`,    [SET_BLOCK_TRACKING]: `setBlockTracking`,    [PUSH_SCOPE_ID]: `pushScopeId`,    [POP_SCOPE_ID]: `popScopeId`,    [WITH_CTX]: `withCtx`,    [UNREF]: `unref`,    [IS_REF]: `isRef`,    [WITH_MEMO]: `withMemo`,    [IS_MEMO_SAME]: `isMemoSame`};function registerRuntimeHelpers(helpers) {    Object.getOwnPropertySymbols(helpers).forEach(s => {        helperNameMap[s] = helpers[s];    });}// AST Utilities ---------------------------------------------------------------// Some expressions, e.g. sequence and conditional expressions, are never// associated with template nodes, so their source locations are just a stub.// Container types like CompoundExpression also don't need a real location.const locStub = {    source: '',    start: { line: 1, column: 1, offset: 0 },    end: { line: 1, column: 1, offset: 0 }};function createRoot(children, loc = locStub) {    return {        type: 0 /* NodeTypes.ROOT */,        children,        helpers: [],        components: [],        directives: [],        hoists: [],        imports: [],        cached: 0,        temps: 0,        codegenNode: undefined,        loc    };}function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {    if (context) {        if (isBlock) {            context.helper(OPEN_BLOCK);            context.helper(getVNodeBlockHelper(context.inSSR, isComponent));        }        else {            context.helper(getVNodeHelper(context.inSSR, isComponent));        }        if (directives) {            context.helper(WITH_DIRECTIVES);        }    }    return {        type: 13 /* NodeTypes.VNODE_CALL */,        tag,        props,        children,        patchFlag,        dynamicProps,        directives,        isBlock,        disableTracking,        isComponent,        loc    };}function createArrayExpression(elements, loc = locStub) {    return {        type: 17 /* NodeTypes.JS_ARRAY_EXPRESSION */,        loc,        elements    };}function createObjectExpression(properties, loc = locStub) {    return {        type: 15 /* NodeTypes.JS_OBJECT_EXPRESSION */,        loc,        properties    };}function createObjectProperty(key, value) {    return {        type: 16 /* NodeTypes.JS_PROPERTY */,        loc: locStub,        key: isString(key) ? createSimpleExpression(key, true) : key,        value    };}function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0 /* ConstantTypes.NOT_CONSTANT */) {    return {        type: 4 /* NodeTypes.SIMPLE_EXPRESSION */,        loc,        content,        isStatic,        constType: isStatic ? 3 /* ConstantTypes.CAN_STRINGIFY */ : constType    };}function createInterpolation(content, loc) {    return {        type: 5 /* NodeTypes.INTERPOLATION */,        loc,        content: isString(content)            ? createSimpleExpression(content, false, loc)            : content    };}function createCompoundExpression(children, loc = locStub) {    return {        type: 8 /* NodeTypes.COMPOUND_EXPRESSION */,        loc,        children    };}function createCallExpression(callee, args = [], loc = locStub) {    return {        type: 14 /* NodeTypes.JS_CALL_EXPRESSION */,        loc,        callee,        arguments: args    };}function createFunctionExpression(params, returns = undefined, newline = false, isSlot = false, loc = locStub) {    return {        type: 18 /* NodeTypes.JS_FUNCTION_EXPRESSION */,        params,        returns,        newline,        isSlot,        loc    };}function createConditionalExpression(test, consequent, alternate, newline = true) {    return {        type: 19 /* NodeTypes.JS_CONDITIONAL_EXPRESSION */,        test,        consequent,        alternate,        newline,        loc: locStub    };}function createCacheExpression(index, value, isVNode = false) {    return {        type: 20 /* NodeTypes.JS_CACHE_EXPRESSION */,        index,        value,        isVNode,        loc: locStub    };}function createBlockStatement(body) {    return {        type: 21 /* NodeTypes.JS_BLOCK_STATEMENT */,        body,        loc: locStub    };}function createTemplateLiteral(elements) {    return {        type: 22 /* NodeTypes.JS_TEMPLATE_LITERAL */,        elements,        loc: locStub    };}function createIfStatement(test, consequent, alternate) {    return {        type: 23 /* NodeTypes.JS_IF_STATEMENT */,        test,        consequent,        alternate,        loc: locStub    };}function createAssignmentExpression(left, right) {    return {        type: 24 /* NodeTypes.JS_ASSIGNMENT_EXPRESSION */,        left,        right,        loc: locStub    };}function createSequenceExpression(expressions) {    return {        type: 25 /* NodeTypes.JS_SEQUENCE_EXPRESSION */,        expressions,        loc: locStub    };}function createReturnStatement(returns) {    return {        type: 26 /* NodeTypes.JS_RETURN_STATEMENT */,        returns,        loc: locStub    };}const lineBreak = /\r\n?|[\n\u2028\u2029]/;const lineBreakG = new RegExp(lineBreak.source, "g");function isNewLine(code) {  switch (code) {    case 10:    case 13:    case 8232:    case 8233:      return true;    default:      return false;  }}const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/y;const skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y");function isWhitespace(code) {  switch (code) {    case 0x0009:    case 0x000b:    case 0x000c:    case 32:    case 160:    case 5760:    case 0x2000:    case 0x2001:    case 0x2002:    case 0x2003:    case 0x2004:    case 0x2005:    case 0x2006:    case 0x2007:    case 0x2008:    case 0x2009:    case 0x200a:    case 0x202f:    case 0x205f:    case 0x3000:    case 0xfeff:      return true;    default:      return false;  }}class Position {  constructor(line, col) {    this.line = void 0;    this.column = void 0;    this.line = line;    this.column = col;  }}class SourceLocation {  constructor(start, end) {    this.start = void 0;    this.end = void 0;    this.filename = void 0;    this.identifierName = void 0;    this.start = start;    this.end = end;  }}function getLineInfo(input, offset) {  let line = 1;  let lineStart = 0;  let match;  lineBreakG.lastIndex = 0;  while ((match = lineBreakG.exec(input)) && match.index < offset) {    line++;    lineStart = lineBreakG.lastIndex;  }  return new Position(line, offset - lineStart);}class BaseParser {  constructor() {    this.sawUnambiguousESM = false;    this.ambiguousScriptDifferentAst = false;  }  hasPlugin(name) {    return this.plugins.has(name);  }  getPluginOption(plugin, name) {    if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name];  }}function setTrailingComments(node, comments) {  if (node.trailingComments === undefined) {    node.trailingComments = comments;  } else {    node.trailingComments.unshift(...comments);  }}function setLeadingComments(node, comments) {  if (node.leadingComments === undefined) {    node.leadingComments = comments;  } else {    node.leadingComments.unshift(...comments);  }}function setInnerComments(node, comments) {  if (node.innerComments === undefined) {    node.innerComments = comments;  } else {    node.innerComments.unshift(...comments);  }}function adjustInnerComments(node, elements, commentWS) {  let lastElement = null;  let i = elements.length;  while (lastElement === null && i > 0) {    lastElement = elements[--i];  }  if (lastElement === null || lastElement.start > commentWS.start) {    setInnerComments(node, commentWS.comments);  } else {    setTrailingComments(lastElement, commentWS.comments);  }}class CommentsParser extends BaseParser {  addComment(comment) {    if (this.filename) comment.loc.filename = this.filename;    this.state.comments.push(comment);  }  processComment(node) {    const {      commentStack    } = this.state;    const commentStackLength = commentStack.length;    if (commentStackLength === 0) return;    let i = commentStackLength - 1;    const lastCommentWS = commentStack[i];    if (lastCommentWS.start === node.end) {      lastCommentWS.leadingNode = node;      i--;    }    const {      start: nodeStart    } = node;    for (; i >= 0; i--) {      const commentWS = commentStack[i];      const commentEnd = commentWS.end;      if (commentEnd > nodeStart) {        commentWS.containingNode = node;        this.finalizeComment(commentWS);        commentStack.splice(i, 1);      } else {        if (commentEnd === nodeStart) {          commentWS.trailingNode = node;        }        break;      }    }  }  finalizeComment(commentWS) {    const {      comments    } = commentWS;    if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {      if (commentWS.leadingNode !== null) {        setTrailingComments(commentWS.leadingNode, comments);      }      if (commentWS.trailingNode !== null) {        setLeadingComments(commentWS.trailingNode, comments);      }    } else {      const {        containingNode: node,        start: commentStart      } = commentWS;      if (this.input.charCodeAt(commentStart - 1) === 44) {        switch (node.type) {          case "ObjectExpression":          case "ObjectPattern":          case "RecordExpression":            adjustInnerComments(node, node.properties, commentWS);            break;          case "CallExpression":          case "OptionalCallExpression":            adjustInnerComments(node, node.arguments, commentWS);            break;          case "FunctionDeclaration":          case "FunctionExpression":          case "ArrowFunctionExpression":          case "ObjectMethod":          case "ClassMethod":          case "ClassPrivateMethod":            adjustInnerComments(node, node.params, commentWS);            break;          case "ArrayExpression":          case "ArrayPattern":          case "TupleExpression":            adjustInnerComments(node, node.elements, commentWS);            break;          case "ExportNamedDeclaration":          case "ImportDeclaration":            adjustInnerComments(node, node.specifiers, commentWS);            break;          default:            {              setInnerComments(node, comments);            }        }      } else {        setInnerComments(node, comments);      }    }  }  finalizeRemainingComments() {    const {      commentStack    } = this.state;    for (let i = commentStack.length - 1; i >= 0; i--) {      this.finalizeComment(commentStack[i]);    }    this.state.commentStack = [];  }  resetPreviousNodeTrailingComments(node) {    const {      commentStack    } = this.state;    const {      length    } = commentStack;    if (length === 0) return;    const commentWS = commentStack[length - 1];    if (commentWS.leadingNode === node) {      commentWS.leadingNode = null;    }  }  takeSurroundingComments(node, start, end) {    const {      commentStack    } = this.state;    const commentStackLength = commentStack.length;    if (commentStackLength === 0) return;    let i = commentStackLength - 1;    for (; i >= 0; i--) {      const commentWS = commentStack[i];      const commentEnd = commentWS.end;      const commentStart = commentWS.start;      if (commentStart === end) {        commentWS.leadingNode = node;      } else if (commentEnd === start) {        commentWS.trailingNode = node;      } else if (commentEnd < start) {        break;      }    }  }}const ErrorCodes = Object.freeze({  SyntaxError: "BABEL_PARSER_SYNTAX_ERROR",  SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"});const ErrorMessages = makeErrorTemplates({  AccessorIsGenerator: "A %0ter cannot be a generator.",  ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",  AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",  AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",  AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",  AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",  AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",  AwaitNotInAsyncFunction: "'await' is only allowed within async functions.",  BadGetterArity: "A 'get' accesor must not have any formal parameters.",  BadSetterArity: "A 'set' accesor must have exactly one formal parameter.",  BadSetterRestParameter: "A 'set' accesor function argument must not be a rest parameter.",  ConstructorClassField: "Classes may not have a field named 'constructor'.",  ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",  ConstructorIsAccessor: "Class constructor may not be an accessor.",  ConstructorIsAsync: "Constructor can't be an async function.",  ConstructorIsGenerator: "Constructor can't be a generator.",  DeclarationMissingInitializer: "'%0' require an initialization value.",  DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.",  DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",  DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.",  DecoratorSemicolon: "Decorators must not be followed by a semicolon.",  DecoratorStaticBlock: "Decorators can't be used with a static block.",  DeletePrivateField: "Deleting a private field is not allowed.",  DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",  DuplicateConstructor: "Duplicate constructor in the same class.",  DuplicateDefaultExport: "Only one default export allowed per module.",  DuplicateExport: "`%0` has already been exported. Exported identifiers must be unique.",  DuplicateProto: "Redefinition of __proto__ property.",  DuplicateRegExpFlags: "Duplicate regular expression flag.",  ElementAfterRest: "Rest element must be last element.",  EscapedCharNotAnIdentifier: "Invalid Unicode escape.",  ExportBindingIsString: "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '%0' as '%1' } from 'some-module'`?",  ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",  ForInOfLoopInitializer: "'%0' loop variable declaration may not have an initializer.",  ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",  ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",  GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",  IllegalBreakContinue: "Unsyntactic %0.",  IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",  IllegalReturn: "'return' outside of function.",  ImportBindingIsString: 'A string literal cannot be used as an imported binding.\n- Did you mean `import { "%0" as foo }`?',  ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",  ImportCallArity: "`import()` requires exactly %0.",  ImportCallNotNewExpression: "Cannot use new with import(...).",  ImportCallSpreadArgument: "`...` is not allowed in `import()`.",  InvalidBigIntLiteral: "Invalid BigIntLiteral.",  InvalidCodePoint: "Code point out of bounds.",  InvalidDecimal: "Invalid decimal.",  InvalidDigit: "Expected number in radix %0.",  InvalidEscapeSequence: "Bad character escape sequence.",  InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",  InvalidEscapedReservedWord: "Escape sequence in keyword %0.",  InvalidIdentifier: "Invalid identifier %0.",  InvalidLhs: "Invalid left-hand side in %0.",  InvalidLhsBinding: "Binding invalid left-hand side in %0.",  InvalidNumber: "Invalid number.",  InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",  InvalidOrUnexpectedToken: "Unexpected character '%0'.",  InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",  InvalidPrivateFieldResolution: "Private name #%0 is not defined.",  InvalidPropertyBindingPattern: "Binding member expression.",  InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",  InvalidRestAssignmentPattern: "Invalid rest operator's argument.",  LabelRedeclaration: "Label '%0' is already declared.",  LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.",  LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",  MalformedRegExpFlags: "Invalid regular expression flag.",  MissingClassName: "A class name is required.",  MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",  MissingSemicolon: "Missing semicolon.",  MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",  MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",  ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",  ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",  ModuleAttributesWithDuplicateKeys: 'Duplicate key "%0" is not allowed in module attributes.',  ModuleExportNameHasLoneSurrogate: "An export name cannot include a lone surrogate, found '\\u%0'.",  ModuleExportUndefined: "Export '%0' is not defined.",  MultipleDefaultsInSwitch: "Multiple default clauses.",  NewlineAfterThrow: "Illegal newline after throw.",  NoCatchOrFinally: "Missing catch or finally clause.",  NumberIdentifier: "Identifier directly after number.",  NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",  ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",  OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",  OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",  OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",  ParamDupe: "Argument name clash.",  PatternHasAccessor: "Object pattern can't contain getter or setter.",  PatternHasMethod: "Object pattern can't contain methods.",  PipeBodyIsTighter: "Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",  PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',  PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",  PipeTopicUnconfiguredToken: 'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "%0" }.',  PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",  PipeUnparenthesizedBody: "Hack-style pipe body cannot be an unparenthesized %0 expression; please wrap it in parentheses.",  PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',  PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",  PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",  PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",  PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",  PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',  PrivateInExpectedIn: "Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).",  PrivateNameRedeclaration: "Duplicate private name #%0.",  RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",  RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",  RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",  RecordNoProto: "'__proto__' is not allowed in Record expressions.",  RestTrailingComma: "Unexpected trailing comma after rest element.",  SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",  StaticPrototype: "Classes may not have static property named prototype.",  StrictDelete: "Deleting local variable in strict mode.",  StrictEvalArguments: "Assigning to '%0' in strict mode.",  StrictEvalArgumentsBinding: "Binding '%0' in strict mode.",  StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",  StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",  StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",  StrictWith: "'with' in strict mode.",  SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",  SuperPrivateField: "Private fields can't be accessed on super.",  TrailingDecorator: "Decorators must be attached to a class element.",  TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",  TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",  TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",  UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",  UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',  UnexpectedDigitAfterHash: "Unexpected digit after hash token.",  UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",  UnexpectedKeyword: "Unexpected keyword '%0'.",  UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",  UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",  UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",  UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",  UnexpectedPrivateField: "Private names can only be used as the name of a class element (i.e. class C { #p = 42; #m() {} } )\n or a property of member expression (i.e. this.#p).",  UnexpectedReservedWord: "Unexpected reserved word '%0'.",  UnexpectedSuper: "'super' is only allowed in object methods and classes.",  UnexpectedToken: "Unexpected token '%0'.",  UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",  UnsupportedBind: "Binding should be performed on object property.",  UnsupportedDecoratorExport: "A decorated export must export a class declaration.",  UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",  UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",  UnsupportedMetaProperty: "The only valid meta property for %0 is %0.%1.",  UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",  UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",  UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",  UnterminatedComment: "Unterminated comment.",  UnterminatedRegExp: "Unterminated regular expression.",  UnterminatedString: "Unterminated string constant.",  UnterminatedTemplate: "Unterminated template.",  VarRedeclaration: "Identifier '%0' has already been declared.",  YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",  YieldInParameter: "Yield expression is not allowed in formal parameters.",  ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."}, ErrorCodes.SyntaxError);const SourceTypeModuleErrorMessages = makeErrorTemplates({  ImportMetaOutsideModule: `import.meta may appear only with 'sourceType: "module"'`,  ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: "module"'`}, ErrorCodes.SourceTypeModuleError);function keepReasonCodeCompat(reasonCode, syntaxPlugin) {  {    if (syntaxPlugin === "flow" && reasonCode === "PatternIsOptional") {      return "OptionalBindingPattern";    }  }  return reasonCode;}function makeErrorTemplates(messages, code, syntaxPlugin) {  const templates = {};  Object.keys(messages).forEach(reasonCode => {    templates[reasonCode] = Object.freeze({      code,      reasonCode: keepReasonCodeCompat(reasonCode, syntaxPlugin),      template: messages[reasonCode]    });  });  return Object.freeze(templates);}class ParserError extends CommentsParser {  getLocationForPosition(pos) {    let loc;    if (pos === this.state.start) loc = this.state.startLoc;else if (pos === this.state.lastTokStart) loc = this.state.lastTokStartLoc;else if (pos === this.state.end) loc = this.state.endLoc;else if (pos === this.state.lastTokEnd) loc = this.state.lastTokEndLoc;else loc = getLineInfo(this.input, pos);    return loc;  }  raise(pos, {    code,    reasonCode,    template  }, ...params) {    return this.raiseWithData(pos, {      code,      reasonCode    }, template, ...params);  }  raiseOverwrite(pos, {    code,    template  }, ...params) {    const loc = this.getLocationForPosition(pos);    const message = template.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;    if (this.options.errorRecovery) {      const errors = this.state.errors;      for (let i = errors.length - 1; i >= 0; i--) {        const error = errors[i];        if (error.pos === pos) {          return Object.assign(error, {            message          });        } else if (error.pos < pos) {          break;        }      }    }    return this._raise({      code,      loc,      pos    }, message);  }  raiseWithData(pos, data, errorTemplate, ...params) {    const loc = this.getLocationForPosition(pos);    const message = errorTemplate.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;    return this._raise(Object.assign({      loc,      pos    }, data), message);  }  _raise(errorContext, message) {    const err = new SyntaxError(message);    Object.assign(err, errorContext);    if (this.options.errorRecovery) {      if (!this.isLookahead) this.state.errors.push(err);      return err;    } else {      throw err;    }  }}var estree = (superClass => class extends superClass {  parseRegExpLiteral({    pattern,    flags  }) {    let regex = null;    try {      regex = new RegExp(pattern, flags);    } catch (e) {}    const node = this.estreeParseLiteral(regex);    node.regex = {      pattern,      flags    };    return node;  }  parseBigIntLiteral(value) {    let bigInt;    try {      bigInt = BigInt(value);    } catch (_unused) {      bigInt = null;    }    const node = this.estreeParseLiteral(bigInt);    node.bigint = String(node.value || value);    return node;  }  parseDecimalLiteral(value) {    const decimal = null;    const node = this.estreeParseLiteral(decimal);    node.decimal = String(node.value || value);    return node;  }  estreeParseLiteral(value) {    return this.parseLiteral(value, "Literal");  }  parseStringLiteral(value) {    return this.estreeParseLiteral(value);  }  parseNumericLiteral(value) {    return this.estreeParseLiteral(value);  }  parseNullLiteral() {    return this.estreeParseLiteral(null);  }  parseBooleanLiteral(value) {    return this.estreeParseLiteral(value);  }  directiveToStmt(directive) {    const directiveLiteral = directive.value;    const stmt = this.startNodeAt(directive.start, directive.loc.start);    const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start);    expression.value = directiveLiteral.extra.expressionValue;    expression.raw = directiveLiteral.extra.raw;    stmt.expression = this.finishNodeAt(expression, "Literal", directiveLiteral.end, directiveLiteral.loc.end);    stmt.directive = directiveLiteral.extra.raw.slice(1, -1);    return this.finishNodeAt(stmt, "ExpressionStatement", directive.end, directive.loc.end);  }  initFunction(node, isAsync) {    super.initFunction(node, isAsync);    node.expression = false;  }  checkDeclaration(node) {    if (node != null && this.isObjectProperty(node)) {      this.checkDeclaration(node.value);    } else {      super.checkDeclaration(node);    }  }  getObjectOrClassMethodParams(method) {    return method.value.params;  }  isValidDirective(stmt) {    var _stmt$expression$extr;    return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);  }  parseBlockBody(node, ...args) {    super.parseBlockBody(node, ...args);    const directiveStatements = node.directives.map(d => this.directiveToStmt(d));    node.body = directiveStatements.concat(node.body);    delete node.directives;  }  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {    this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);    if (method.typeParameters) {      method.value.typeParameters = method.typeParameters;      delete method.typeParameters;    }    classBody.body.push(method);  }  parsePrivateName() {    const node = super.parsePrivateName();    {      if (!this.getPluginOption("estree", "classFeatures")) {        return node;      }    }    return this.convertPrivateNameToPrivateIdentifier(node);  }  convertPrivateNameToPrivateIdentifier(node) {    const name = super.getPrivateNameSV(node);    node = node;    delete node.id;    node.name = name;    node.type = "PrivateIdentifier";    return node;  }  isPrivateName(node) {    {      if (!this.getPluginOption("estree", "classFeatures")) {        return super.isPrivateName(node);      }    }    return node.type === "PrivateIdentifier";  }  getPrivateNameSV(node) {    {      if (!this.getPluginOption("estree", "classFeatures")) {        return super.getPrivateNameSV(node);      }    }    return node.name;  }  parseLiteral(value, type) {    const node = super.parseLiteral(value, type);    node.raw = node.extra.raw;    delete node.extra;    return node;  }  parseFunctionBody(node, allowExpression, isMethod = false) {    super.parseFunctionBody(node, allowExpression, isMethod);    node.expression = node.body.type !== "BlockStatement";  }  parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {    let funcNode = this.startNode();    funcNode.kind = node.kind;    funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);    funcNode.type = "FunctionExpression";    delete funcNode.kind;    node.value = funcNode;    if (type === "ClassPrivateMethod") {      node.computed = false;    }    type = "MethodDefinition";    return this.finishNode(node, type);  }  parseClassProperty(...args) {    const propertyNode = super.parseClassProperty(...args);    {      if (!this.getPluginOption("estree", "classFeatures")) {        return propertyNode;      }    }    propertyNode.type = "PropertyDefinition";    return propertyNode;  }  parseClassPrivateProperty(...args) {    const propertyNode = super.parseClassPrivateProperty(...args);    {      if (!this.getPluginOption("estree", "classFeatures")) {        return propertyNode;      }    }    propertyNode.type = "PropertyDefinition";    propertyNode.computed = false;    return propertyNode;  }  parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {    const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);    if (node) {      node.type = "Property";      if (node.kind === "method") node.kind = "init";      node.shorthand = false;    }    return node;  }  parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {    const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);    if (node) {      node.kind = "init";      node.type = "Property";    }    return node;  }  isAssignable(node, isBinding) {    if (node != null && this.isObjectProperty(node)) {      return this.isAssignable(node.value, isBinding);    }    return super.isAssignable(node, isBinding);  }  toAssignable(node, isLHS = false) {    if (node != null && this.isObjectProperty(node)) {      this.toAssignable(node.value, isLHS);      return node;    }    return super.toAssignable(node, isLHS);  }  toAssignableObjectExpressionProp(prop, ...args) {    if (prop.kind === "get" || prop.kind === "set") {      this.raise(prop.key.start, ErrorMessages.PatternHasAccessor);    } else if (prop.method) {      this.raise(prop.key.start, ErrorMessages.PatternHasMethod);    } else {      super.toAssignableObjectExpressionProp(prop, ...args);    }  }  finishCallExpression(node, optional) {    super.finishCallExpression(node, optional);    if (node.callee.type === "Import") {      node.type = "ImportExpression";      node.source = node.arguments[0];      if (this.hasPlugin("importAssertions")) {        var _node$arguments$;        node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;      }      delete node.arguments;      delete node.callee;    }    return node;  }  toReferencedArguments(node) {    if (node.type === "ImportExpression") {      return;    }    super.toReferencedArguments(node);  }  parseExport(node) {    super.parseExport(node);    switch (node.type) {      case "ExportAllDeclaration":        node.exported = null;        break;      case "ExportNamedDeclaration":        if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {          node.type = "ExportAllDeclaration";          node.exported = node.specifiers[0].exported;          delete node.specifiers;        }        break;    }    return node;  }  parseSubscript(base, startPos, startLoc, noCalls, state) {    const node = super.parseSubscript(base, startPos, startLoc, noCalls, state);    if (state.optionalChainMember) {      if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {        node.type = node.type.substring(8);      }      if (state.stop) {        const chain = this.startNodeAtNode(node);        chain.expression = node;        return this.finishNode(chain, "ChainExpression");      }    } else if (node.type === "MemberExpression" || node.type === "CallExpression") {      node.optional = false;    }    return node;  }  hasPropertyAsPrivateName(node) {    if (node.type === "ChainExpression") {      node = node.expression;    }    return super.hasPropertyAsPrivateName(node);  }  isOptionalChain(node) {    return node.type === "ChainExpression";  }  isObjectProperty(node) {    return node.type === "Property" && node.kind === "init" && !node.method;  }  isObjectMethod(node) {    return node.method || node.kind === "get" || node.kind === "set";  }});class TokContext {  constructor(token, preserveSpace) {    this.token = void 0;    this.preserveSpace = void 0;    this.token = token;    this.preserveSpace = !!preserveSpace;  }}const types = {  brace: new TokContext("{"),  template: new TokContext("`", true)};const beforeExpr = true;const startsExpr = true;const isLoop = true;const isAssign = true;const prefix = true;const postfix = true;class ExportedTokenType {  constructor(label, conf = {}) {    this.label = void 0;    this.keyword = void 0;    this.beforeExpr = void 0;    this.startsExpr = void 0;    this.rightAssociative = void 0;    this.isLoop = void 0;    this.isAssign = void 0;    this.prefix = void 0;    this.postfix = void 0;    this.binop = void 0;    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 ? conf.binop : null;    {      this.updateContext = null;    }  }}const keywords$1 = new Map();function createKeyword(name, options = {}) {  options.keyword = name;  const token = createToken(name, options);  keywords$1.set(name, token);  return token;}function createBinop(name, binop) {  return createToken(name, {    beforeExpr,    binop  });}let tokenTypeCounter = -1;const tokenTypes = [];const tokenLabels = [];const tokenBinops = [];const tokenBeforeExprs = [];const tokenStartsExprs = [];const tokenPrefixes = [];function createToken(name, options = {}) {  var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;  ++tokenTypeCounter;  tokenLabels.push(name);  tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);  tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);  tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);  tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);  tokenTypes.push(new ExportedTokenType(name, options));  return tokenTypeCounter;}function createKeywordLike(name, options = {}) {  var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;  ++tokenTypeCounter;  keywords$1.set(name, tokenTypeCounter);  tokenLabels.push(name);  tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);  tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);  tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);  tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);  tokenTypes.push(new ExportedTokenType("name", options));  return tokenTypeCounter;}const tt = {  bracketL: createToken("[", {    beforeExpr,    startsExpr  }),  bracketHashL: createToken("#[", {    beforeExpr,    startsExpr  }),  bracketBarL: createToken("[|", {    beforeExpr,    startsExpr  }),  bracketR: createToken("]"),  bracketBarR: createToken("|]"),  braceL: createToken("{", {    beforeExpr,    startsExpr  }),  braceBarL: createToken("{|", {    beforeExpr,    startsExpr  }),  braceHashL: createToken("#{", {    beforeExpr,    startsExpr  }),  braceR: createToken("}", {    beforeExpr  }),  braceBarR: createToken("|}"),  parenL: createToken("(", {    beforeExpr,    startsExpr  }),  parenR: createToken(")"),  comma: createToken(",", {    beforeExpr  }),  semi: createToken(";", {    beforeExpr  }),  colon: createToken(":", {    beforeExpr  }),  doubleColon: createToken("::", {    beforeExpr  }),  dot: createToken("."),  question: createToken("?", {    beforeExpr  }),  questionDot: createToken("?."),  arrow: createToken("=>", {    beforeExpr  }),  template: createToken("template"),  ellipsis: createToken("...", {    beforeExpr  }),  backQuote: createToken("`", {    startsExpr  }),  dollarBraceL: createToken("${", {    beforeExpr,    startsExpr  }),  at: createToken("@"),  hash: createToken("#", {    startsExpr  }),  interpreterDirective: createToken("#!..."),  eq: createToken("=", {    beforeExpr,    isAssign  }),  assign: createToken("_=", {    beforeExpr,    isAssign  }),  slashAssign: createToken("_=", {    beforeExpr,    isAssign  }),  xorAssign: createToken("_=", {    beforeExpr,    isAssign  }),  moduloAssign: createToken("_=", {    beforeExpr,    isAssign  }),  incDec: createToken("++/--", {    prefix,    postfix,    startsExpr  }),  bang: createToken("!", {    beforeExpr,    prefix,    startsExpr  }),  tilde: createToken("~", {    beforeExpr,    prefix,    startsExpr  }),  pipeline: createBinop("|>", 0),  nullishCoalescing: createBinop("??", 1),  logicalOR: createBinop("||", 1),  logicalAND: createBinop("&&", 2),  bitwiseOR: createBinop("|", 3),  bitwiseXOR: createBinop("^", 4),  bitwiseAND: createBinop("&", 5),  equality: createBinop("==/!=/===/!==", 6),  lt: createBinop("</>/<=/>=", 7),  gt: createBinop("</>/<=/>=", 7),  relational: createBinop("</>/<=/>=", 7),  bitShift: createBinop("<</>>/>>>", 8),  plusMin: createToken("+/-", {    beforeExpr,    binop: 9,    prefix,    startsExpr  }),  modulo: createToken("%", {    binop: 10,    startsExpr  }),  star: createToken("*", {    binop: 10  }),  slash: createBinop("/", 10),  exponent: createToken("**", {    beforeExpr,    binop: 11,    rightAssociative: true  }),  _in: createKeyword("in", {    beforeExpr,    binop: 7  }),  _instanceof: createKeyword("instanceof", {    beforeExpr,    binop: 7  }),  _break: createKeyword("break"),  _case: createKeyword("case", {    beforeExpr  }),  _catch: createKeyword("catch"),  _continue: createKeyword("continue"),  _debugger: createKeyword("debugger"),  _default: createKeyword("default", {    beforeExpr  }),  _else: createKeyword("else", {    beforeExpr  }),  _finally: createKeyword("finally"),  _function: createKeyword("function", {    startsExpr  }),  _if: createKeyword("if"),  _return: createKeyword("return", {    beforeExpr  }),  _switch: createKeyword("switch"),  _throw: createKeyword("throw", {    beforeExpr,    prefix,    startsExpr  }),  _try: createKeyword("try"),  _var: createKeyword("var"),  _const: createKeyword("const"),  _with: createKeyword("with"),  _new: createKeyword("new", {    beforeExpr,    startsExpr  }),  _this: createKeyword("this", {    startsExpr  }),  _super: createKeyword("super", {    startsExpr  }),  _class: createKeyword("class", {    startsExpr  }),  _extends: createKeyword("extends", {    beforeExpr  }),  _export: createKeyword("export"),  _import: createKeyword("import", {    startsExpr  }),  _null: createKeyword("null", {    startsExpr  }),  _true: createKeyword("true", {    startsExpr  }),  _false: createKeyword("false", {    startsExpr  }),  _typeof: createKeyword("typeof", {    beforeExpr,    prefix,    startsExpr  }),  _void: createKeyword("void", {    beforeExpr,    prefix,    startsExpr  }),  _delete: createKeyword("delete", {    beforeExpr,    prefix,    startsExpr  }),  _do: createKeyword("do", {    isLoop,    beforeExpr  }),  _for: createKeyword("for", {    isLoop  }),  _while: createKeyword("while", {    isLoop  }),  _as: createKeywordLike("as", {    startsExpr  }),  _assert: createKeywordLike("assert", {    startsExpr  }),  _async: createKeywordLike("async", {    startsExpr  }),  _await: createKeywordLike("await", {    startsExpr  }),  _from: createKeywordLike("from", {    startsExpr  }),  _get: createKeywordLike("get", {    startsExpr  }),  _let: createKeywordLike("let", {    startsExpr  }),  _meta: createKeywordLike("meta", {    startsExpr  }),  _of: createKeywordLike("of", {    startsExpr  }),  _sent: createKeywordLike("sent", {    startsExpr  }),  _set: createKeywordLike("set", {    startsExpr  }),  _static: createKeywordLike("static", {    startsExpr  }),  _yield: createKeywordLike("yield", {    startsExpr  }),  _asserts: createKeywordLike("asserts", {    startsExpr  }),  _checks: createKeywordLike("checks", {    startsExpr  }),  _exports: createKeywordLike("exports", {    startsExpr  }),  _global: createKeywordLike("global", {    startsExpr  }),  _implements: createKeywordLike("implements", {    startsExpr  }),  _intrinsic: createKeywordLike("intrinsic", {    startsExpr  }),  _infer: createKeywordLike("infer", {    startsExpr  }),  _is: createKeywordLike("is", {    startsExpr  }),  _mixins: createKeywordLike("mixins", {    startsExpr  }),  _proto: createKeywordLike("proto", {    startsExpr  }),  _require: createKeywordLike("require", {    startsExpr  }),  _keyof: createKeywordLike("keyof", {    startsExpr  }),  _readonly: createKeywordLike("readonly", {    startsExpr  }),  _unique: createKeywordLike("unique", {    startsExpr  }),  _abstract: createKeywordLike("abstract", {    startsExpr  }),  _declare: createKeywordLike("declare", {    startsExpr  }),  _enum: createKeywordLike("enum", {    startsExpr  }),  _module: createKeywordLike("module", {    startsExpr  }),  _namespace: createKeywordLike("namespace", {    startsExpr  }),  _interface: createKeywordLike("interface", {    startsExpr  }),  _type: createKeywordLike("type", {    startsExpr  }),  _opaque: createKeywordLike("opaque", {    startsExpr  }),  name: createToken("name", {    startsExpr  }),  string: createToken("string", {    startsExpr  }),  num: createToken("num", {    startsExpr  }),  bigint: createToken("bigint", {    startsExpr  }),  decimal: createToken("decimal", {    startsExpr  }),  regexp: createToken("regexp", {    startsExpr  }),  privateName: createToken("#name", {    startsExpr  }),  eof: createToken("eof"),  jsxName: createToken("jsxName"),  jsxText: createToken("jsxText", {    beforeExpr: true  }),  jsxTagStart: createToken("jsxTagStart", {    startsExpr: true  }),  jsxTagEnd: createToken("jsxTagEnd"),  placeholder: createToken("%%", {    startsExpr: true  })};function tokenIsIdentifier(token) {  return token >= 87 && token <= 122;}function tokenKeywordOrIdentifierIsKeyword(token) {  return token <= 86;}function tokenIsKeywordOrIdentifier(token) {  return token >= 52 && token <= 122;}function tokenIsLiteralPropertyName(token) {  return token >= 52 && token <= 126;}function tokenComesBeforeExpression(token) {  return tokenBeforeExprs[token];}function tokenCanStartExpression(token) {  return tokenStartsExprs[token];}function tokenIsAssignment(token) {  return token >= 27 && token <= 31;}function tokenIsFlowInterfaceOrTypeOrOpaque(token) {  return token >= 119 && token <= 121;}function tokenIsLoop(token) {  return token >= 84 && token <= 86;}function tokenIsKeyword(token) {  return token >= 52 && token <= 86;}function tokenIsOperator(token) {  return token >= 35 && token <= 53;}function tokenIsPostfix(token) {  return token === 32;}function tokenIsPrefix(token) {  return tokenPrefixes[token];}function tokenIsTSTypeOperator(token) {  return token >= 111 && token <= 113;}function tokenIsTSDeclarationStart(token) {  return token >= 114 && token <= 120;}function tokenLabelName(token) {  return tokenLabels[token];}function tokenOperatorPrecedence(token) {  return tokenBinops[token];}function tokenIsRightAssociative(token) {  return token === 51;}function getExportedToken(token) {  return tokenTypes[token];}function isTokenType(obj) {  return typeof obj === "number";}{  tokenTypes[8].updateContext = context => {    context.pop();  };  tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {    context.push(types.brace);  };  tokenTypes[22].updateContext = context => {    if (context[context.length - 1] === types.template) {      context.pop();    } else {      context.push(types.template);    }  };  tokenTypes[132].updateContext = context => {    context.push(types.j_expr, types.j_oTag);  };}let 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\u0560-\u0588\u05d0-\u05ea\u05ef-\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\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\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\u09fc\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\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\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\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\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-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\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-\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-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\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-\uab69\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";let 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\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\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\u09fe\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\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\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\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\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-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\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\u1cf4\u1cf7-\u1cf9\u1dc0-\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\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\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";const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 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, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 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, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 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, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 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, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 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, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];function isInAstralSet(code, set) {  let pos = 0x10000;  for (let i = 0, length = set.length; i < length; i += 2) {    pos += set[i];    if (pos > code) return false;    pos += set[i + 1];    if (pos >= code) return true;  }  return false;}function isIdentifierStart(code) {  if (code < 65) return code === 36;  if (code <= 90) return true;  if (code < 97) return code === 95;  if (code <= 122) return true;  if (code <= 0xffff) {    return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));  }  return isInAstralSet(code, astralIdentifierStartCodes);}function isIdentifierChar(code) {  if (code < 48) return code === 36;  if (code < 58) return true;  if (code < 65) return false;  if (code <= 90) return true;  if (code < 97) return code === 95;  if (code <= 122) return true;  if (code <= 0xffff) {    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));  }  return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);}const reservedWords = {  keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],  strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],  strictBind: ["eval", "arguments"]};const keywords = new Set(reservedWords.keyword);const reservedWordsStrictSet = new Set(reservedWords.strict);const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);function isReservedWord(word, inModule) {  return inModule && word === "await" || word === "enum";}function isStrictReservedWord(word, inModule) {  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);}function isStrictBindOnlyReservedWord(word) {  return reservedWordsStrictBindSet.has(word);}function isStrictBindReservedWord(word, inModule) {  return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);}function isKeyword(word) {  return keywords.has(word);}function isIteratorStart(current, next) {  return current === 64 && next === 64;}const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]);function canBeReservedWord(word) {  return reservedWordLikeSet.has(word);}const SCOPE_OTHER = 0b000000000,      SCOPE_PROGRAM = 0b000000001,      SCOPE_FUNCTION = 0b000000010,      SCOPE_ARROW = 0b000000100,      SCOPE_SIMPLE_CATCH = 0b000001000,      SCOPE_SUPER = 0b000010000,      SCOPE_DIRECT_SUPER = 0b000100000,      SCOPE_CLASS = 0b001000000,      SCOPE_STATIC_BLOCK = 0b010000000,      SCOPE_TS_MODULE = 0b100000000,      SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;const BIND_KIND_VALUE = 0b000000000001,      BIND_KIND_TYPE = 0b000000000010,      BIND_SCOPE_VAR = 0b000000000100,      BIND_SCOPE_LEXICAL = 0b000000001000,      BIND_SCOPE_FUNCTION = 0b000000010000,      BIND_FLAGS_NONE = 0b000001000000,      BIND_FLAGS_CLASS = 0b000010000000,      BIND_FLAGS_TS_ENUM = 0b000100000000,      BIND_FLAGS_TS_CONST_ENUM = 0b001000000000,      BIND_FLAGS_TS_EXPORT_ONLY = 0b010000000000,      BIND_FLAGS_FLOW_DECLARE_FN = 0b100000000000;const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS,      BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0,      BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0,      BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0,      BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS,      BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0,      BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM,      BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,      BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE,      BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE,      BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,      BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,      BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN;const CLASS_ELEMENT_FLAG_STATIC = 0b100,      CLASS_ELEMENT_KIND_GETTER = 0b010,      CLASS_ELEMENT_KIND_SETTER = 0b001,      CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,      CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,      CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,      CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,      CLASS_ELEMENT_OTHER = 0;class Scope {  constructor(flags) {    this.var = new Set();    this.lexical = new Set();    this.functions = new Set();    this.flags = flags;  }}class ScopeHandler {  constructor(raise, inModule) {    this.scopeStack = [];    this.undefinedExports = new Map();    this.undefinedPrivateNames = new Map();    this.raise = raise;    this.inModule = inModule;  }  get inFunction() {    return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0;  }  get allowSuper() {    return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0;  }  get allowDirectSuper() {    return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0;  }  get inClass() {    return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0;  }  get inClassAndNotInNonArrowFunction() {    const flags = this.currentThisScopeFlags();    return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0;  }  get inStaticBlock() {    for (let i = this.scopeStack.length - 1;; i--) {      const {        flags      } = this.scopeStack[i];      if (flags & SCOPE_STATIC_BLOCK) {        return true;      }      if (flags & (SCOPE_VAR | SCOPE_CLASS)) {        return false;      }    }  }  get inNonArrowFunction() {    return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0;  }  get treatFunctionsAsVar() {    return this.treatFunctionsAsVarInScope(this.currentScope());  }  createScope(flags) {    return new Scope(flags);  }  enter(flags) {    this.scopeStack.push(this.createScope(flags));  }  exit() {    this.scopeStack.pop();  }  treatFunctionsAsVarInScope(scope) {    return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM);  }  declareName(name, bindingType, pos) {    let scope = this.currentScope();    if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {      this.checkRedeclarationInScope(scope, name, bindingType, pos);      if (bindingType & BIND_SCOPE_FUNCTION) {        scope.functions.add(name);      } else {        scope.lexical.add(name);      }      if (bindingType & BIND_SCOPE_LEXICAL) {        this.maybeExportDefined(scope, name);      }    } else if (bindingType & BIND_SCOPE_VAR) {      for (let i = this.scopeStack.length - 1; i >= 0; --i) {        scope = this.scopeStack[i];        this.checkRedeclarationInScope(scope, name, bindingType, pos);        scope.var.add(name);        this.maybeExportDefined(scope, name);        if (scope.flags & SCOPE_VAR) break;      }    }    if (this.inModule && scope.flags & SCOPE_PROGRAM) {      this.undefinedExports.delete(name);    }  }  maybeExportDefined(scope, name) {    if (this.inModule && scope.flags & SCOPE_PROGRAM) {      this.undefinedExports.delete(name);    }  }  checkRedeclarationInScope(scope, name, bindingType, pos) {    if (this.isRedeclaredInScope(scope, name, bindingType)) {      this.raise(pos, ErrorMessages.VarRedeclaration, name);    }  }  isRedeclaredInScope(scope, name, bindingType) {    if (!(bindingType & BIND_KIND_VALUE)) return false;    if (bindingType & BIND_SCOPE_LEXICAL) {      return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name);    }    if (bindingType & BIND_SCOPE_FUNCTION) {      return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name);    }    return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name);  }  checkLocalExport(id) {    const {      name    } = id;    const topLevelScope = this.scopeStack[0];    if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) {      this.undefinedExports.set(name, id.start);    }  }  currentScope() {    return this.scopeStack[this.scopeStack.length - 1];  }  currentVarScopeFlags() {    for (let i = this.scopeStack.length - 1;; i--) {      const {        flags      } = this.scopeStack[i];      if (flags & SCOPE_VAR) {        return flags;      }    }  }  currentThisScopeFlags() {    for (let i = this.scopeStack.length - 1;; i--) {      const {        flags      } = this.scopeStack[i];      if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) {        return flags;      }    }  }}class FlowScope extends Scope {  constructor(...args) {    super(...args);    this.declareFunctions = new Set();  }}class FlowScopeHandler extends ScopeHandler {  createScope(flags) {    return new FlowScope(flags);  }  declareName(name, bindingType, pos) {    const scope = this.currentScope();    if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {      this.checkRedeclarationInScope(scope, name, bindingType, pos);      this.maybeExportDefined(scope, name);      scope.declareFunctions.add(name);      return;    }    super.declareName(...arguments);  }  isRedeclaredInScope(scope, name, bindingType) {    if (super.isRedeclaredInScope(...arguments)) return true;    if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {      return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name));    }    return false;  }  checkLocalExport(id) {    if (!this.scopeStack[0].declareFunctions.has(id.name)) {      super.checkLocalExport(id);    }  }}class State {  constructor() {    this.strict = void 0;    this.curLine = void 0;    this.lineStart = void 0;    this.startLoc = void 0;    this.endLoc = void 0;    this.errors = [];    this.potentialArrowAt = -1;    this.noArrowAt = [];    this.noArrowParamsConversionAt = [];    this.maybeInArrowParameters = false;    this.inType = false;    this.noAnonFunctionType = false;    this.hasFlowComment = false;    this.isAmbientContext = false;    this.inAbstractClass = false;    this.topicContext = {      maxNumOfResolvableTopics: 0,      maxTopicIndex: null    };    this.soloAwait = false;    this.inFSharpPipelineDirectBody = false;    this.labels = [];    this.decoratorStack = [[]];    this.comments = [];    this.commentStack = [];    this.pos = 0;    this.type = 129;    this.value = null;    this.start = 0;    this.end = 0;    this.lastTokEndLoc = null;    this.lastTokStartLoc = null;    this.lastTokStart = 0;    this.lastTokEnd = 0;    this.context = [types.brace];    this.canStartJSXElement = true;    this.containsEsc = false;    this.strictErrors = new Map();    this.tokensLength = 0;  }  init({    strictMode,    sourceType,    startLine,    startColumn  }) {    this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module";    this.curLine = startLine;    this.lineStart = -startColumn;    this.startLoc = this.endLoc = new Position(startLine, startColumn);  }  curPosition() {    return new Position(this.curLine, this.pos - this.lineStart);  }  clone(skipArrays) {    const state = new State();    const keys = Object.keys(this);    for (let i = 0, length = keys.length; i < length; i++) {      const key = keys[i];      let val = this[key];      if (!skipArrays && Array.isArray(val)) {        val = val.slice();      }      state[key] = val;    }    return state;  }}var _isDigit = function isDigit(code) {  return code >= 48 && code <= 57;};const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100]);const forbiddenNumericSeparatorSiblings = {  decBinOct: [46, 66, 69, 79, 95, 98, 101, 111],  hex: [46, 88, 95, 120]};const allowedNumericSeparatorSiblings = {};allowedNumericSeparatorSiblings.bin = [48, 49];allowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55];allowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57];allowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102];class Token {  constructor(state) {    this.type = state.type;    this.value = state.value;    this.start = state.start;    this.end = state.end;    this.loc = new SourceLocation(state.startLoc, state.endLoc);  }}class Tokenizer extends ParserError {  constructor(options, input) {    super();    this.isLookahead = void 0;    this.tokens = [];    this.state = new State();    this.state.init(options);    this.input = input;    this.length = input.length;    this.isLookahead = false;  }  pushToken(token) {    this.tokens.length = this.state.tokensLength;    this.tokens.push(token);    ++this.state.tokensLength;  }  next() {    this.checkKeywordEscapes();    if (this.options.tokens) {      this.pushToken(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();  }  eat(type) {    if (this.match(type)) {      this.next();      return true;    } else {      return false;    }  }  match(type) {    return this.state.type === type;  }  createLookaheadState(state) {    return {      pos: state.pos,      value: null,      type: state.type,      start: state.start,      end: state.end,      lastTokEnd: state.end,      context: [this.curContext()],      inType: state.inType    };  }  lookahead() {    const old = this.state;    this.state = this.createLookaheadState(old);    this.isLookahead = true;    this.nextToken();    this.isLookahead = false;    const curr = this.state;    this.state = old;    return curr;  }  nextTokenStart() {    return this.nextTokenStartSince(this.state.pos);  }  nextTokenStartSince(pos) {    skipWhiteSpace.lastIndex = pos;    return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;  }  lookaheadCharCode() {    return this.input.charCodeAt(this.nextTokenStart());  }  codePointAtPos(pos) {    let cp = this.input.charCodeAt(pos);    if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {      const trail = this.input.charCodeAt(pos);      if ((trail & 0xfc00) === 0xdc00) {        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);      }    }    return cp;  }  setStrict(strict) {    this.state.strict = strict;    if (strict) {      this.state.strictErrors.forEach((message, pos) => this.raise(pos, message));      this.state.strictErrors.clear();    }  }  curContext() {    return this.state.context[this.state.context.length - 1];  }  nextToken() {    const curContext = this.curContext();    if (!curContext.preserveSpace) this.skipSpace();    this.state.start = this.state.pos;    if (!this.isLookahead) this.state.startLoc = this.state.curPosition();    if (this.state.pos >= this.length) {      this.finishToken(129);      return;    }    if (curContext === types.template) {      this.readTmplToken();    } else {      this.getTokenFromCode(this.codePointAtPos(this.state.pos));    }  }  skipBlockComment() {    let startLoc;    if (!this.isLookahead) startLoc = this.state.curPosition();    const start = this.state.pos;    const end = this.input.indexOf("*/", start + 2);    if (end === -1) throw this.raise(start, ErrorMessages.UnterminatedComment);    this.state.pos = end + 2;    lineBreakG.lastIndex = start + 2;    while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {      ++this.state.curLine;      this.state.lineStart = lineBreakG.lastIndex;    }    if (this.isLookahead) return;    const comment = {      type: "CommentBlock",      value: this.input.slice(start + 2, end),      start,      end: end + 2,      loc: new SourceLocation(startLoc, this.state.curPosition())    };    if (this.options.tokens) this.pushToken(comment);    return comment;  }  skipLineComment(startSkip) {    const start = this.state.pos;    let startLoc;    if (!this.isLookahead) startLoc = this.state.curPosition();    let ch = this.input.charCodeAt(this.state.pos += startSkip);    if (this.state.pos < this.length) {      while (!isNewLine(ch) && ++this.state.pos < this.length) {        ch = this.input.charCodeAt(this.state.pos);      }    }    if (this.isLookahead) return;    const end = this.state.pos;    const value = this.input.slice(start + startSkip, end);    const comment = {      type: "CommentLine",      value,      start,      end,      loc: new SourceLocation(startLoc, this.state.curPosition())    };    if (this.options.tokens) this.pushToken(comment);    return comment;  }  skipSpace() {    const spaceStart = this.state.pos;    const comments = [];    loop: while (this.state.pos < this.length) {      const ch = this.input.charCodeAt(this.state.pos);      switch (ch) {        case 32:        case 160:        case 9:          ++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:              {                const comment = this.skipBlockComment();                if (comment !== undefined) {                  this.addComment(comment);                  if (this.options.attachComment) comments.push(comment);                }                break;              }            case 47:              {                const comment = this.skipLineComment(2);                if (comment !== undefined) {                  this.addComment(comment);                  if (this.options.attachComment) comments.push(comment);                }                break;              }            default:              break loop;          }          break;        default:          if (isWhitespace(ch)) {            ++this.state.pos;          } else if (ch === 45 && !this.inModule) {            const pos = this.state.pos;            if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {              const comment = this.skipLineComment(3);              if (comment !== undefined) {                this.addComment(comment);                if (this.options.attachComment) comments.push(comment);              }            } else {              break loop;            }          } else if (ch === 60 && !this.inModule) {            const pos = this.state.pos;            if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {              const comment = this.skipLineComment(4);              if (comment !== undefined) {                this.addComment(comment);                if (this.options.attachComment) comments.push(comment);              }            } else {              break loop;            }          } else {            break loop;          }      }    }    if (comments.length > 0) {      const end = this.state.pos;      const CommentWhitespace = {        start: spaceStart,        end,        comments,        leadingNode: null,        trailingNode: null,        containingNode: null      };      this.state.commentStack.push(CommentWhitespace);    }  }  finishToken(type, val) {    this.state.end = this.state.pos;    const prevType = this.state.type;    this.state.type = type;    this.state.value = val;    if (!this.isLookahead) {      this.state.endLoc = this.state.curPosition();      this.updateContext(prevType);    }  }  replaceToken(type) {    this.state.type = type;    this.updateContext();  }  readToken_numberSign() {    if (this.state.pos === 0 && this.readToken_interpreter()) {      return;    }    const nextPos = this.state.pos + 1;    const next = this.codePointAtPos(nextPos);    if (next >= 48 && next <= 57) {      throw this.raise(this.state.pos, ErrorMessages.UnexpectedDigitAfterHash);    }    if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) {      this.expectPlugin("recordAndTuple");      if (this.getPluginOption("recordAndTuple", "syntaxType") !== "hash") {        throw this.raise(this.state.pos, next === 123 ? ErrorMessages.RecordExpressionHashIncorrectStartSyntaxType : ErrorMessages.TupleExpressionHashIncorrectStartSyntaxType);      }      this.state.pos += 2;      if (next === 123) {        this.finishToken(7);      } else {        this.finishToken(1);      }    } else if (isIdentifierStart(next)) {      ++this.state.pos;      this.finishToken(128, this.readWord1(next));    } else if (next === 92) {      ++this.state.pos;      this.finishToken(128, this.readWord1());    } else {      this.finishOp(25, 1);    }  }  readToken_dot() {    const next = this.input.charCodeAt(this.state.pos + 1);    if (next >= 48 && next <= 57) {      this.readNumber(true);      return;    }    if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {      this.state.pos += 3;      this.finishToken(21);    } else {      ++this.state.pos;      this.finishToken(16);    }  }  readToken_slash() {    const next = this.input.charCodeAt(this.state.pos + 1);    if (next === 61) {      this.finishOp(29, 2);    } else {      this.finishOp(50, 1);    }  }  readToken_interpreter() {    if (this.state.pos !== 0 || this.length < 2) return false;    let ch = this.input.charCodeAt(this.state.pos + 1);    if (ch !== 33) return false;    const start = this.state.pos;    this.state.pos += 1;    while (!isNewLine(ch) && ++this.state.pos < this.length) {      ch = this.input.charCodeAt(this.state.pos);    }    const value = this.input.slice(start + 2, this.state.pos);    this.finishToken(26, value);    return true;  }  readToken_mult_modulo(code) {    let type = code === 42 ? 49 : 48;    let width = 1;    let next = this.input.charCodeAt(this.state.pos + 1);    if (code === 42 && next === 42) {      width++;      next = this.input.charCodeAt(this.state.pos + 2);      type = 51;    }    if (next === 61 && !this.state.inType) {      width++;      type = code === 37 ? 31 : 28;    }    this.finishOp(type, width);  }  readToken_pipe_amp(code) {    const next = this.input.charCodeAt(this.state.pos + 1);    if (next === code) {      if (this.input.charCodeAt(this.state.pos + 2) === 61) {        this.finishOp(28, 3);      } else {        this.finishOp(code === 124 ? 37 : 38, 2);      }      return;    }    if (code === 124) {      if (next === 62) {        this.finishOp(35, 2);        return;      }      if (this.hasPlugin("recordAndTuple") && next === 125) {        if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {          throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectEndSyntaxType);        }        this.state.pos += 2;        this.finishToken(9);        return;      }      if (this.hasPlugin("recordAndTuple") && next === 93) {        if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {          throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectEndSyntaxType);        }        this.state.pos += 2;        this.finishToken(4);        return;      }    }    if (next === 61) {      this.finishOp(28, 2);      return;    }    this.finishOp(code === 124 ? 39 : 41, 1);  }  readToken_caret() {    const next = this.input.charCodeAt(this.state.pos + 1);    if (next === 61 && !this.state.inType) {      this.finishOp(30, 2);    } else {      this.finishOp(40, 1);    }  }  readToken_plus_min(code) {    const next = this.input.charCodeAt(this.state.pos + 1);    if (next === code) {      this.finishOp(32, 2);      return;    }    if (next === 61) {      this.finishOp(28, 2);    } else {      this.finishOp(47, 1);    }  }  readToken_lt() {    const {      pos    } = this.state;    const next = this.input.charCodeAt(pos + 1);    if (next === 60) {      if (this.input.charCodeAt(pos + 2) === 61) {        this.finishOp(28, 3);        return;      }      this.finishOp(46, 2);      return;    }    if (next === 61) {      this.finishOp(45, 2);      return;    }    this.finishOp(43, 1);  }  readToken_gt() {    const {      pos    } = this.state;    const next = this.input.charCodeAt(pos + 1);    if (next === 62) {      const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;      if (this.input.charCodeAt(pos + size) === 61) {        this.finishOp(28, size + 1);        return;      }      this.finishOp(46, size);      return;    }    if (next === 61) {      this.finishOp(45, 2);      return;    }    this.finishOp(44, 1);  }  readToken_eq_excl(code) {    const next = this.input.charCodeAt(this.state.pos + 1);    if (next === 61) {      this.finishOp(42, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);      return;    }    if (code === 61 && next === 62) {      this.state.pos += 2;      this.finishToken(19);      return;    }    this.finishOp(code === 61 ? 27 : 33, 1);  }  readToken_question() {    const next = this.input.charCodeAt(this.state.pos + 1);    const next2 = this.input.charCodeAt(this.state.pos + 2);    if (next === 63) {      if (next2 === 61) {        this.finishOp(28, 3);      } else {        this.finishOp(36, 2);      }    } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {      this.state.pos += 2;      this.finishToken(18);    } else {      ++this.state.pos;      this.finishToken(17);    }  }  getTokenFromCode(code) {    switch (code) {      case 46:        this.readToken_dot();        return;      case 40:        ++this.state.pos;        this.finishToken(10);        return;      case 41:        ++this.state.pos;        this.finishToken(11);        return;      case 59:        ++this.state.pos;        this.finishToken(13);        return;      case 44:        ++this.state.pos;        this.finishToken(12);        return;      case 91:        if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {          if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {            throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectStartSyntaxType);          }          this.state.pos += 2;          this.finishToken(2);        } else {          ++this.state.pos;          this.finishToken(0);        }        return;      case 93:        ++this.state.pos;        this.finishToken(3);        return;      case 123:        if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {          if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {            throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectStartSyntaxType);          }          this.state.pos += 2;          this.finishToken(6);        } else {          ++this.state.pos;          this.finishToken(5);        }        return;      case 125:        ++this.state.pos;        this.finishToken(8);        return;      case 58:        if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {          this.finishOp(15, 2);        } else {          ++this.state.pos;          this.finishToken(14);        }        return;      case 63:        this.readToken_question();        return;      case 96:        ++this.state.pos;        this.finishToken(22);        return;      case 48:        {          const next = this.input.charCodeAt(this.state.pos + 1);          if (next === 120 || next === 88) {            this.readRadixNumber(16);            return;          }          if (next === 111 || next === 79) {            this.readRadixNumber(8);            return;          }          if (next === 98 || next === 66) {            this.readRadixNumber(2);            return;          }        }      case 49:      case 50:      case 51:      case 52:      case 53:      case 54:      case 55:      case 56:      case 57:        this.readNumber(false);        return;      case 34:      case 39:        this.readString(code);        return;      case 47:        this.readToken_slash();        return;      case 37:      case 42:        this.readToken_mult_modulo(code);        return;      case 124:      case 38:        this.readToken_pipe_amp(code);        return;      case 94:        this.readToken_caret();        return;      case 43:      case 45:        this.readToken_plus_min(code);        return;      case 60:        this.readToken_lt();        return;      case 62:        this.readToken_gt();        return;      case 61:      case 33:        this.readToken_eq_excl(code);        return;      case 126:        this.finishOp(34, 1);        return;      case 64:        ++this.state.pos;        this.finishToken(24);        return;      case 35:        this.readToken_numberSign();        return;      case 92:        this.readWord();        return;      default:        if (isIdentifierStart(code)) {          this.readWord(code);          return;        }    }    throw this.raise(this.state.pos, ErrorMessages.InvalidOrUnexpectedToken, String.fromCodePoint(code));  }  finishOp(type, size) {    const str = this.input.slice(this.state.pos, this.state.pos + size);    this.state.pos += size;    this.finishToken(type, str);  }  readRegexp() {    const start = this.state.start + 1;    let escaped, inClass;    let {      pos    } = this.state;    for (;; ++pos) {      if (pos >= this.length) {        throw this.raise(start, ErrorMessages.UnterminatedRegExp);      }      const ch = this.input.charCodeAt(pos);      if (isNewLine(ch)) {        throw this.raise(start, ErrorMessages.UnterminatedRegExp);      }      if (escaped) {        escaped = false;      } else {        if (ch === 91) {          inClass = true;        } else if (ch === 93 && inClass) {          inClass = false;        } else if (ch === 47 && !inClass) {          break;        }        escaped = ch === 92;      }    }    const content = this.input.slice(start, pos);    ++pos;    let mods = "";    while (pos < this.length) {      const cp = this.codePointAtPos(pos);      const char = String.fromCharCode(cp);      if (VALID_REGEX_FLAGS.has(cp)) {        if (mods.includes(char)) {          this.raise(pos + 1, ErrorMessages.DuplicateRegExpFlags);        }      } else if (isIdentifierChar(cp) || cp === 92) {        this.raise(pos + 1, ErrorMessages.MalformedRegExpFlags);      } else {        break;      }      ++pos;      mods += char;    }    this.state.pos = pos;    this.finishToken(127, {      pattern: content,      flags: mods    });  }  readInt(radix, len, forceLen, allowNumSeparator = true) {    const start = this.state.pos;    const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;    const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin;    let invalid = false;    let total = 0;    for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {      const code = this.input.charCodeAt(this.state.pos);      let val;      if (code === 95) {        const prev = this.input.charCodeAt(this.state.pos - 1);        const next = this.input.charCodeAt(this.state.pos + 1);        if (allowedSiblings.indexOf(next) === -1) {          this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator);        } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) {          this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator);        }        if (!allowNumSeparator) {          this.raise(this.state.pos, ErrorMessages.NumericSeparatorInEscapeSequence);        }        ++this.state.pos;        continue;      }      if (code >= 97) {        val = code - 97 + 10;      } else if (code >= 65) {        val = code - 65 + 10;      } else if (_isDigit(code)) {        val = code - 48;      } else {        val = Infinity;      }      if (val >= radix) {        if (this.options.errorRecovery && val <= 9) {          val = 0;          this.raise(this.state.start + i + 2, ErrorMessages.InvalidDigit, radix);        } else if (forceLen) {          val = 0;          invalid = true;        } else {          break;        }      }      ++this.state.pos;      total = total * radix + val;    }    if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) {      return null;    }    return total;  }  readRadixNumber(radix) {    const start = this.state.pos;    let isBigInt = false;    this.state.pos += 2;    const val = this.readInt(radix);    if (val == null) {      this.raise(this.state.start + 2, ErrorMessages.InvalidDigit, radix);    }    const next = this.input.charCodeAt(this.state.pos);    if (next === 110) {      ++this.state.pos;      isBigInt = true;    } else if (next === 109) {      throw this.raise(start, ErrorMessages.InvalidDecimal);    }    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {      throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier);    }    if (isBigInt) {      const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");      this.finishToken(125, str);      return;    }    this.finishToken(124, val);  }  readNumber(startsWithDot) {    const start = this.state.pos;    let isFloat = false;    let isBigInt = false;    let isDecimal = false;    let hasExponent = false;    let isOctal = false;    if (!startsWithDot && this.readInt(10) === null) {      this.raise(start, ErrorMessages.InvalidNumber);    }    const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;    if (hasLeadingZero) {      const integer = this.input.slice(start, this.state.pos);      this.recordStrictModeErrors(start, ErrorMessages.StrictOctalLiteral);      if (!this.state.strict) {        const underscorePos = integer.indexOf("_");        if (underscorePos > 0) {          this.raise(underscorePos + start, ErrorMessages.ZeroDigitNumericSeparator);        }      }      isOctal = hasLeadingZero && !/[89]/.test(integer);    }    let next = this.input.charCodeAt(this.state.pos);    if (next === 46 && !isOctal) {      ++this.state.pos;      this.readInt(10);      isFloat = true;      next = this.input.charCodeAt(this.state.pos);    }    if ((next === 69 || next === 101) && !isOctal) {      next = this.input.charCodeAt(++this.state.pos);      if (next === 43 || next === 45) {        ++this.state.pos;      }      if (this.readInt(10) === null) {        this.raise(start, ErrorMessages.InvalidOrMissingExponent);      }      isFloat = true;      hasExponent = true;      next = this.input.charCodeAt(this.state.pos);    }    if (next === 110) {      if (isFloat || hasLeadingZero) {        this.raise(start, ErrorMessages.InvalidBigIntLiteral);      }      ++this.state.pos;      isBigInt = true;    }    if (next === 109) {      this.expectPlugin("decimal", this.state.pos);      if (hasExponent || hasLeadingZero) {        this.raise(start, ErrorMessages.InvalidDecimal);      }      ++this.state.pos;      isDecimal = true;    }    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {      throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier);    }    const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, "");    if (isBigInt) {      this.finishToken(125, str);      return;    }    if (isDecimal) {      this.finishToken(126, str);      return;    }    const val = isOctal ? parseInt(str, 8) : parseFloat(str);    this.finishToken(124, val);  }  readCodePoint(throwOnInvalid) {    const ch = this.input.charCodeAt(this.state.pos);    let code;    if (ch === 123) {      const codePos = ++this.state.pos;      code = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, true, throwOnInvalid);      ++this.state.pos;      if (code !== null && code > 0x10ffff) {        if (throwOnInvalid) {          this.raise(codePos, ErrorMessages.InvalidCodePoint);        } else {          return null;        }      }    } else {      code = this.readHexChar(4, false, throwOnInvalid);    }    return code;  }  readString(quote) {    let out = "",        chunkStart = ++this.state.pos;    for (;;) {      if (this.state.pos >= this.length) {        throw this.raise(this.state.start, ErrorMessages.UnterminatedString);      }      const ch = this.input.charCodeAt(this.state.pos);      if (ch === quote) break;      if (ch === 92) {        out += this.input.slice(chunkStart, this.state.pos);        out += this.readEscapedChar(false);        chunkStart = this.state.pos;      } else if (ch === 8232 || ch === 8233) {        ++this.state.pos;        ++this.state.curLine;        this.state.lineStart = this.state.pos;      } else if (isNewLine(ch)) {        throw this.raise(this.state.start, ErrorMessages.UnterminatedString);      } else {        ++this.state.pos;      }    }    out += this.input.slice(chunkStart, this.state.pos++);    this.finishToken(123, out);  }  readTmplToken() {    let out = "",        chunkStart = this.state.pos,        containsInvalid = false;    for (;;) {      if (this.state.pos >= this.length) {        throw this.raise(this.state.start, ErrorMessages.UnterminatedTemplate);      }      const ch = this.input.charCodeAt(this.state.pos);      if (ch === 96 || ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) {        if (this.state.pos === this.state.start && this.match(20)) {          if (ch === 36) {            this.state.pos += 2;            this.finishToken(23);            return;          } else {            ++this.state.pos;            this.finishToken(22);            return;          }        }        out += this.input.slice(chunkStart, this.state.pos);        this.finishToken(20, containsInvalid ? null : out);        return;      }      if (ch === 92) {        out += this.input.slice(chunkStart, this.state.pos);        const escaped = this.readEscapedChar(true);        if (escaped === null) {          containsInvalid = true;        } else {          out += escaped;        }        chunkStart = this.state.pos;      } else if (isNewLine(ch)) {        out += this.input.slice(chunkStart, this.state.pos);        ++this.state.pos;        switch (ch) {          case 13:            if (this.input.charCodeAt(this.state.pos) === 10) {              ++this.state.pos;            }          case 10:            out += "\n";            break;          default:            out += String.fromCharCode(ch);            break;        }        ++this.state.curLine;        this.state.lineStart = this.state.pos;        chunkStart = this.state.pos;      } else {        ++this.state.pos;      }    }  }  recordStrictModeErrors(pos, message) {    if (this.state.strict && !this.state.strictErrors.has(pos)) {      this.raise(pos, message);    } else {      this.state.strictErrors.set(pos, message);    }  }  readEscapedChar(inTemplate) {    const throwOnInvalid = !inTemplate;    const ch = this.input.charCodeAt(++this.state.pos);    ++this.state.pos;    switch (ch) {      case 110:        return "\n";      case 114:        return "\r";      case 120:        {          const code = this.readHexChar(2, false, throwOnInvalid);          return code === null ? null : String.fromCharCode(code);        }      case 117:        {          const code = this.readCodePoint(throwOnInvalid);          return code === null ? null : String.fromCodePoint(code);        }      case 116:        return "\t";      case 98:        return "\b";      case 118:        return "\u000b";      case 102:        return "\f";      case 13:        if (this.input.charCodeAt(this.state.pos) === 10) {          ++this.state.pos;        }      case 10:        this.state.lineStart = this.state.pos;        ++this.state.curLine;      case 8232:      case 8233:        return "";      case 56:      case 57:        if (inTemplate) {          return null;        } else {          this.recordStrictModeErrors(this.state.pos - 1, ErrorMessages.StrictNumericEscape);        }      default:        if (ch >= 48 && ch <= 55) {          const codePos = this.state.pos - 1;          const match = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/);          let octalStr = match[0];          let octal = parseInt(octalStr, 8);          if (octal > 255) {            octalStr = octalStr.slice(0, -1);            octal = parseInt(octalStr, 8);          }          this.state.pos += octalStr.length - 1;          const next = this.input.charCodeAt(this.state.pos);          if (octalStr !== "0" || next === 56 || next === 57) {            if (inTemplate) {              return null;            } else {              this.recordStrictModeErrors(codePos, ErrorMessages.StrictNumericEscape);            }          }          return String.fromCharCode(octal);        }        return String.fromCharCode(ch);    }  }  readHexChar(len, forceLen, throwOnInvalid) {    const codePos = this.state.pos;    const n = this.readInt(16, len, forceLen, false);    if (n === null) {      if (throwOnInvalid) {        this.raise(codePos, ErrorMessages.InvalidEscapeSequence);      } else {        this.state.pos = codePos - 1;      }    }    return n;  }  readWord1(firstCode) {    this.state.containsEsc = false;    let word = "";    const start = this.state.pos;    let chunkStart = this.state.pos;    if (firstCode !== undefined) {      this.state.pos += firstCode <= 0xffff ? 1 : 2;    }    while (this.state.pos < this.length) {      const ch = this.codePointAtPos(this.state.pos);      if (isIdentifierChar(ch)) {        this.state.pos += ch <= 0xffff ? 1 : 2;      } else if (ch === 92) {        this.state.containsEsc = true;        word += this.input.slice(chunkStart, this.state.pos);        const escStart = this.state.pos;        const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;        if (this.input.charCodeAt(++this.state.pos) !== 117) {          this.raise(this.state.pos, ErrorMessages.MissingUnicodeEscape);          chunkStart = this.state.pos - 1;          continue;        }        ++this.state.pos;        const esc = this.readCodePoint(true);        if (esc !== null) {          if (!identifierCheck(esc)) {            this.raise(escStart, ErrorMessages.EscapedCharNotAnIdentifier);          }          word += String.fromCodePoint(esc);        }        chunkStart = this.state.pos;      } else {        break;      }    }    return word + this.input.slice(chunkStart, this.state.pos);  }  readWord(firstCode) {    const word = this.readWord1(firstCode);    const type = keywords$1.get(word);    if (type !== undefined) {      this.finishToken(type, tokenLabelName(type));    } else {      this.finishToken(122, word);    }  }  checkKeywordEscapes() {    const {      type    } = this.state;    if (tokenIsKeyword(type) && this.state.containsEsc) {      this.raise(this.state.start, ErrorMessages.InvalidEscapedReservedWord, tokenLabelName(type));    }  }  updateContext(prevType) {    const {      context,      type    } = this.state;    switch (type) {      case 8:        context.pop();        break;      case 5:      case 7:      case 23:        context.push(types.brace);        break;      case 22:        if (context[context.length - 1] === types.template) {          context.pop();        } else {          context.push(types.template);        }        break;    }  }}class ClassScope {  constructor() {    this.privateNames = new Set();    this.loneAccessors = new Map();    this.undefinedPrivateNames = new Map();  }}class ClassScopeHandler {  constructor(raise) {    this.stack = [];    this.undefinedPrivateNames = new Map();    this.raise = raise;  }  current() {    return this.stack[this.stack.length - 1];  }  enter() {    this.stack.push(new ClassScope());  }  exit() {    const oldClassScope = this.stack.pop();    const current = this.current();    for (const [name, pos] of Array.from(oldClassScope.undefinedPrivateNames)) {      if (current) {        if (!current.undefinedPrivateNames.has(name)) {          current.undefinedPrivateNames.set(name, pos);        }      } else {        this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name);      }    }  }  declarePrivateName(name, elementType, pos) {    const classScope = this.current();    let redefined = classScope.privateNames.has(name);    if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) {      const accessor = redefined && classScope.loneAccessors.get(name);      if (accessor) {        const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC;        const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC;        const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR;        const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR;        redefined = oldKind === newKind || oldStatic !== newStatic;        if (!redefined) classScope.loneAccessors.delete(name);      } else if (!redefined) {        classScope.loneAccessors.set(name, elementType);      }    }    if (redefined) {      this.raise(pos, ErrorMessages.PrivateNameRedeclaration, name);    }    classScope.privateNames.add(name);    classScope.undefinedPrivateNames.delete(name);  }  usePrivateName(name, pos) {    let classScope;    for (classScope of this.stack) {      if (classScope.privateNames.has(name)) return;    }    if (classScope) {      classScope.undefinedPrivateNames.set(name, pos);    } else {      this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name);    }  }}const kExpression = 0,      kMaybeArrowParameterDeclaration = 1,      kMaybeAsyncArrowParameterDeclaration = 2,      kParameterDeclaration = 3;class ExpressionScope {  constructor(type = kExpression) {    this.type = void 0;    this.type = type;  }  canBeArrowParameterDeclaration() {    return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration;  }  isCertainlyParameterDeclaration() {    return this.type === kParameterDeclaration;  }}class ArrowHeadParsingScope extends ExpressionScope {  constructor(type) {    super(type);    this.errors = new Map();  }  recordDeclarationError(pos, template) {    this.errors.set(pos, template);  }  clearDeclarationError(pos) {    this.errors.delete(pos);  }  iterateErrors(iterator) {    this.errors.forEach(iterator);  }}class ExpressionScopeHandler {  constructor(raise) {    this.stack = [new ExpressionScope()];    this.raise = raise;  }  enter(scope) {    this.stack.push(scope);  }  exit() {    this.stack.pop();  }  recordParameterInitializerError(pos, template) {    const {      stack    } = this;    let i = stack.length - 1;    let scope = stack[i];    while (!scope.isCertainlyParameterDeclaration()) {      if (scope.canBeArrowParameterDeclaration()) {        scope.recordDeclarationError(pos, template);      } else {        return;      }      scope = stack[--i];    }    this.raise(pos, template);  }  recordParenthesizedIdentifierError(pos, template) {    const {      stack    } = this;    const scope = stack[stack.length - 1];    if (scope.isCertainlyParameterDeclaration()) {      this.raise(pos, template);    } else if (scope.canBeArrowParameterDeclaration()) {      scope.recordDeclarationError(pos, template);    } else {      return;    }  }  recordAsyncArrowParametersError(pos, template) {    const {      stack    } = this;    let i = stack.length - 1;    let scope = stack[i];    while (scope.canBeArrowParameterDeclaration()) {      if (scope.type === kMaybeAsyncArrowParameterDeclaration) {        scope.recordDeclarationError(pos, template);      }      scope = stack[--i];    }  }  validateAsPattern() {    const {      stack    } = this;    const currentScope = stack[stack.length - 1];    if (!currentScope.canBeArrowParameterDeclaration()) return;    currentScope.iterateErrors((template, pos) => {      this.raise(pos, template);      let i = stack.length - 2;      let scope = stack[i];      while (scope.canBeArrowParameterDeclaration()) {        scope.clearDeclarationError(pos);        scope = stack[--i];      }    });  }}function newParameterDeclarationScope() {  return new ExpressionScope(kParameterDeclaration);}function newArrowHeadScope() {  return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration);}function newAsyncArrowScope() {  return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration);}function newExpressionScope() {  return new ExpressionScope();}const PARAM = 0b0000,      PARAM_YIELD = 0b0001,      PARAM_AWAIT = 0b0010,      PARAM_RETURN = 0b0100,      PARAM_IN = 0b1000;class ProductionParameterHandler {  constructor() {    this.stacks = [];  }  enter(flags) {    this.stacks.push(flags);  }  exit() {    this.stacks.pop();  }  currentFlags() {    return this.stacks[this.stacks.length - 1];  }  get hasAwait() {    return (this.currentFlags() & PARAM_AWAIT) > 0;  }  get hasYield() {    return (this.currentFlags() & PARAM_YIELD) > 0;  }  get hasReturn() {    return (this.currentFlags() & PARAM_RETURN) > 0;  }  get hasIn() {    return (this.currentFlags() & PARAM_IN) > 0;  }}function functionFlags(isAsync, isGenerator) {  return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);}class UtilParser extends Tokenizer {  addExtra(node, key, val) {    if (!node) return;    const extra = node.extra = node.extra || {};    extra[key] = val;  }  isContextual(token) {    return this.state.type === token && !this.state.containsEsc;  }  isUnparsedContextual(nameStart, name) {    const nameEnd = nameStart + name.length;    if (this.input.slice(nameStart, nameEnd) === name) {      const nextCh = this.input.charCodeAt(nameEnd);      return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);    }    return false;  }  isLookaheadContextual(name) {    const next = this.nextTokenStart();    return this.isUnparsedContextual(next, name);  }  eatContextual(token) {    if (this.isContextual(token)) {      this.next();      return true;    }    return false;  }  expectContextual(token, template) {    if (!this.eatContextual(token)) this.unexpected(null, template);  }  canInsertSemicolon() {    return this.match(129) || this.match(8) || this.hasPrecedingLineBreak();  }  hasPrecedingLineBreak() {    return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start));  }  hasFollowingLineBreak() {    skipWhiteSpaceToLineBreak.lastIndex = this.state.end;    return skipWhiteSpaceToLineBreak.test(this.input);  }  isLineTerminator() {    return this.eat(13) || this.canInsertSemicolon();  }  semicolon(allowAsi = true) {    if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;    this.raise(this.state.lastTokEnd, ErrorMessages.MissingSemicolon);  }  expect(type, pos) {    this.eat(type) || this.unexpected(pos, type);  }  assertNoSpace(message = "Unexpected space.") {    if (this.state.start > this.state.lastTokEnd) {      this.raise(this.state.lastTokEnd, {        code: ErrorCodes.SyntaxError,        reasonCode: "UnexpectedSpace",        template: message      });    }  }  unexpected(pos, messageOrType = {    code: ErrorCodes.SyntaxError,    reasonCode: "UnexpectedToken",    template: "Unexpected token"  }) {    if (isTokenType(messageOrType)) {      messageOrType = {        code: ErrorCodes.SyntaxError,        reasonCode: "UnexpectedToken",        template: `Unexpected token, expected "${tokenLabelName(messageOrType)}"`      };    }    throw this.raise(pos != null ? pos : this.state.start, messageOrType);  }  expectPlugin(name, pos) {    if (!this.hasPlugin(name)) {      throw this.raiseWithData(pos != null ? pos : this.state.start, {        missingPlugin: [name]      }, `This experimental syntax requires enabling the parser plugin: '${name}'`);    }    return true;  }  expectOnePlugin(names, pos) {    if (!names.some(n => this.hasPlugin(n))) {      throw this.raiseWithData(pos != null ? pos : this.state.start, {        missingPlugin: names      }, `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(", ")}'`);    }  }  tryParse(fn, oldState = this.state.clone()) {    const abortSignal = {      node: null    };    try {      const node = fn((node = null) => {        abortSignal.node = node;        throw abortSignal;      });      if (this.state.errors.length > oldState.errors.length) {        const failState = this.state;        this.state = oldState;        this.state.tokensLength = failState.tokensLength;        return {          node,          error: failState.errors[oldState.errors.length],          thrown: false,          aborted: false,          failState        };      }      return {        node,        error: null,        thrown: false,        aborted: false,        failState: null      };    } catch (error) {      const failState = this.state;      this.state = oldState;      if (error instanceof SyntaxError) {        return {          node: null,          error,          thrown: true,          aborted: false,          failState        };      }      if (error === abortSignal) {        return {          node: abortSignal.node,          error: null,          thrown: false,          aborted: true,          failState        };      }      throw error;    }  }  checkExpressionErrors(refExpressionErrors, andThrow) {    if (!refExpressionErrors) return false;    const {      shorthandAssign,      doubleProto,      optionalParameters    } = refExpressionErrors;    const hasErrors = shorthandAssign + doubleProto + optionalParameters > -3;    if (!andThrow) {      return hasErrors;    } else if (hasErrors) {      if (shorthandAssign >= 0) {        this.unexpected(shorthandAssign);      }      if (doubleProto >= 0) {        this.raise(doubleProto, ErrorMessages.DuplicateProto);      }      if (optionalParameters >= 0) {        this.unexpected(optionalParameters);      }    }  }  isLiteralPropertyName() {    return tokenIsLiteralPropertyName(this.state.type);  }  isPrivateName(node) {    return node.type === "PrivateName";  }  getPrivateNameSV(node) {    return node.id.name;  }  hasPropertyAsPrivateName(node) {    return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property);  }  isOptionalChain(node) {    return node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression";  }  isObjectProperty(node) {    return node.type === "ObjectProperty";  }  isObjectMethod(node) {    return node.type === "ObjectMethod";  }  initializeScopes(inModule = this.options.sourceType === "module") {    const oldLabels = this.state.labels;    this.state.labels = [];    const oldExportedIdentifiers = this.exportedIdentifiers;    this.exportedIdentifiers = new Set();    const oldInModule = this.inModule;    this.inModule = inModule;    const oldScope = this.scope;    const ScopeHandler = this.getScopeHandler();    this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);    const oldProdParam = this.prodParam;    this.prodParam = new ProductionParameterHandler();    const oldClassScope = this.classScope;    this.classScope = new ClassScopeHandler(this.raise.bind(this));    const oldExpressionScope = this.expressionScope;    this.expressionScope = new ExpressionScopeHandler(this.raise.bind(this));    return () => {      this.state.labels = oldLabels;      this.exportedIdentifiers = oldExportedIdentifiers;      this.inModule = oldInModule;      this.scope = oldScope;      this.prodParam = oldProdParam;      this.classScope = oldClassScope;      this.expressionScope = oldExpressionScope;    };  }  enterInitialScopes() {    let paramFlags = PARAM;    if (this.inModule) {      paramFlags |= PARAM_AWAIT;    }    this.scope.enter(SCOPE_PROGRAM);    this.prodParam.enter(paramFlags);  }}class ExpressionErrors {  constructor() {    this.shorthandAssign = -1;    this.doubleProto = -1;    this.optionalParameters = -1;  }}class Node {  constructor(parser, pos, loc) {    this.type = "";    this.start = pos;    this.end = 0;    this.loc = new SourceLocation(loc);    if (parser != null && parser.options.ranges) this.range = [pos, 0];    if (parser != null && parser.filename) this.loc.filename = parser.filename;  }}const NodePrototype = Node.prototype;{  NodePrototype.__clone = function () {    const newNode = new Node();    const keys = Object.keys(this);    for (let i = 0, length = keys.length; i < length; i++) {      const key = keys[i];      if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") {        newNode[key] = this[key];      }    }    return newNode;  };}function clonePlaceholder(node) {  return cloneIdentifier(node);}function cloneIdentifier(node) {  const {    type,    start,    end,    loc,    range,    extra,    name  } = node;  const cloned = Object.create(NodePrototype);  cloned.type = type;  cloned.start = start;  cloned.end = end;  cloned.loc = loc;  cloned.range = range;  cloned.extra = extra;  cloned.name = name;  if (type === "Placeholder") {    cloned.expectedNode = node.expectedNode;  }  return cloned;}function cloneStringLiteral(node) {  const {    type,    start,    end,    loc,    range,    extra  } = node;  if (type === "Placeholder") {    return clonePlaceholder(node);  }  const cloned = Object.create(NodePrototype);  cloned.type = "StringLiteral";  cloned.start = start;  cloned.end = end;  cloned.loc = loc;  cloned.range = range;  cloned.extra = extra;  cloned.value = node.value;  return cloned;}class NodeUtils extends UtilParser {  startNode() {    return new Node(this, this.state.start, this.state.startLoc);  }  startNodeAt(pos, loc) {    return new Node(this, pos, loc);  }  startNodeAtNode(type) {    return this.startNodeAt(type.start, type.loc.start);  }  finishNode(node, type) {    return this.finishNodeAt(node, type, this.state.lastTokEnd, this.state.lastTokEndLoc);  }  finishNodeAt(node, type, pos, loc) {    node.type = type;    node.end = pos;    node.loc.end = loc;    if (this.options.ranges) node.range[1] = pos;    if (this.options.attachComment) this.processComment(node);    return node;  }  resetStartLocation(node, start, startLoc) {    node.start = start;    node.loc.start = startLoc;    if (this.options.ranges) node.range[0] = start;  }  resetEndLocation(node, end = this.state.lastTokEnd, endLoc = this.state.lastTokEndLoc) {    node.end = end;    node.loc.end = endLoc;    if (this.options.ranges) node.range[1] = end;  }  resetStartLocationFromNode(node, locationNode) {    this.resetStartLocation(node, locationNode.start, locationNode.loc.start);  }}const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);const FlowErrors = makeErrorTemplates({  AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",  AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",  AssignReservedType: "Cannot overwrite reserved type %0.",  DeclareClassElement: "The `declare` modifier can only appear on class fields.",  DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.",  DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.",  EnumBooleanMemberNotInitialized: "Boolean enum members need to be initialized. Use either `%0 = true,` or `%0 = false,` in enum `%1`.",  EnumDuplicateMemberName: "Enum member names need to be unique, but the name `%0` has already been used before in enum `%1`.",  EnumInconsistentMemberValues: "Enum `%0` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.",  EnumInvalidExplicitType: "Enum type `%1` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.",  EnumInvalidExplicitTypeUnknownSupplied: "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.",  EnumInvalidMemberInitializerPrimaryType: "Enum `%0` has type `%2`, so the initializer of `%1` needs to be a %2 literal.",  EnumInvalidMemberInitializerSymbolType: "Symbol enum members cannot be initialized. Use `%1,` in enum `%0`.",  EnumInvalidMemberInitializerUnknownType: "The enum member initializer for `%1` needs to be a literal (either a boolean, number, or string) in enum `%0`.",  EnumInvalidMemberName: "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%0`, consider using `%1`, in enum `%2`.",  EnumNumberMemberNotInitialized: "Number enum members need to be initialized, e.g. `%1 = 1` in enum `%0`.",  EnumStringMemberInconsistentlyInitailized: "String enum members need to consistently either all use initializers, or use no initializers, in enum `%0`.",  GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.",  ImportTypeShorthandOnlyInPureImport: "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.",  InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.",  InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.",  InexactVariance: "Explicit inexact syntax cannot have variance.",  InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.",  MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",  NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.",  NestedFlowComment: "Cannot have a flow comment inside another flow comment.",  PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",  SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.",  SpreadVariance: "Spread properties cannot have variance.",  ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.",  ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",  ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.",  ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.",  ThisParamNoDefault: "The `this` parameter may not have a default value.",  TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",  TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.",  UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.",  UnexpectedReservedType: "Unexpected reserved type %0.",  UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.",  UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.",  UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.",  UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".',  UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.",  UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",  UnsupportedDeclareExportKind: "`declare export %0` is not supported. Use `%1` instead.",  UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.",  UnterminatedFlowComment: "Unterminated flow-comment."}, ErrorCodes.SyntaxError, "flow");function isEsModuleType(bodyElement) {  return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration");}function hasTypeImportKind(node) {  return node.importKind === "type" || node.importKind === "typeof";}function isMaybeDefaultImport(type) {  return tokenIsKeywordOrIdentifier(type) && type !== 91;}const exportSuggestions = {  const: "declare export var",  let: "declare export var",  type: "export type",  interface: "export interface"};function partition(list, test) {  const list1 = [];  const list2 = [];  for (let i = 0; i < list.length; i++) {    (test(list[i], i, list) ? list1 : list2).push(list[i]);  }  return [list1, list2];}const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/;var flow = (superClass => class extends superClass {  constructor(...args) {    super(...args);    this.flowPragma = undefined;  }  getScopeHandler() {    return FlowScopeHandler;  }  shouldParseTypes() {    return this.getPluginOption("flow", "all") || this.flowPragma === "flow";  }  shouldParseEnums() {    return !!this.getPluginOption("flow", "enums");  }  finishToken(type, val) {    if (type !== 123 && type !== 13 && type !== 26) {      if (this.flowPragma === undefined) {        this.flowPragma = null;      }    }    return super.finishToken(type, val);  }  addComment(comment) {    if (this.flowPragma === undefined) {      const matches = FLOW_PRAGMA_REGEX.exec(comment.value);      if (!matches) ; else if (matches[1] === "flow") {        this.flowPragma = "flow";      } else if (matches[1] === "noflow") {        this.flowPragma = "noflow";      } else {        throw new Error("Unexpected flow pragma");      }    }    return super.addComment(comment);  }  flowParseTypeInitialiser(tok) {    const oldInType = this.state.inType;    this.state.inType = true;    this.expect(tok || 14);    const type = this.flowParseType();    this.state.inType = oldInType;    return type;  }  flowParsePredicate() {    const node = this.startNode();    const moduloPos = this.state.start;    this.next();    this.expectContextual(101);    if (this.state.lastTokStart > moduloPos + 1) {      this.raise(moduloPos, FlowErrors.UnexpectedSpaceBetweenModuloChecks);    }    if (this.eat(10)) {      node.value = this.parseExpression();      this.expect(11);      return this.finishNode(node, "DeclaredPredicate");    } else {      return this.finishNode(node, "InferredPredicate");    }  }  flowParseTypeAndPredicateInitialiser() {    const oldInType = this.state.inType;    this.state.inType = true;    this.expect(14);    let type = null;    let predicate = null;    if (this.match(48)) {      this.state.inType = oldInType;      predicate = this.flowParsePredicate();    } else {      type = this.flowParseType();      this.state.inType = oldInType;      if (this.match(48)) {        predicate = this.flowParsePredicate();      }    }    return [type, predicate];  }  flowParseDeclareClass(node) {    this.next();    this.flowParseInterfaceish(node, true);    return this.finishNode(node, "DeclareClass");  }  flowParseDeclareFunction(node) {    this.next();    const id = node.id = this.parseIdentifier();    const typeNode = this.startNode();    const typeContainer = this.startNode();    if (this.match(43)) {      typeNode.typeParameters = this.flowParseTypeParameterDeclaration();    } else {      typeNode.typeParameters = null;    }    this.expect(10);    const tmp = this.flowParseFunctionTypeParams();    typeNode.params = tmp.params;    typeNode.rest = tmp.rest;    typeNode.this = tmp._this;    this.expect(11);    [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();    typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");    id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");    this.resetEndLocation(id);    this.semicolon();    this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.start);    return this.finishNode(node, "DeclareFunction");  }  flowParseDeclare(node, insideModule) {    if (this.match(74)) {      return this.flowParseDeclareClass(node);    } else if (this.match(62)) {      return this.flowParseDeclareFunction(node);    } else if (this.match(68)) {      return this.flowParseDeclareVariable(node);    } else if (this.eatContextual(117)) {      if (this.match(16)) {        return this.flowParseDeclareModuleExports(node);      } else {        if (insideModule) {          this.raise(this.state.lastTokStart, FlowErrors.NestedDeclareModule);        }        return this.flowParseDeclareModule(node);      }    } else if (this.isContextual(120)) {      return this.flowParseDeclareTypeAlias(node);    } else if (this.isContextual(121)) {      return this.flowParseDeclareOpaqueType(node);    } else if (this.isContextual(119)) {      return this.flowParseDeclareInterface(node);    } else if (this.match(76)) {      return this.flowParseDeclareExportDeclaration(node, insideModule);    } else {      throw this.unexpected();    }  }  flowParseDeclareVariable(node) {    this.next();    node.id = this.flowParseTypeAnnotatableIdentifier(true);    this.scope.declareName(node.id.name, BIND_VAR, node.id.start);    this.semicolon();    return this.finishNode(node, "DeclareVariable");  }  flowParseDeclareModule(node) {    this.scope.enter(SCOPE_OTHER);    if (this.match(123)) {      node.id = this.parseExprAtom();    } else {      node.id = this.parseIdentifier();    }    const bodyNode = node.body = this.startNode();    const body = bodyNode.body = [];    this.expect(5);    while (!this.match(8)) {      let bodyNode = this.startNode();      if (this.match(77)) {        this.next();        if (!this.isContextual(120) && !this.match(81)) {          this.raise(this.state.lastTokStart, FlowErrors.InvalidNonTypeImportInDeclareModule);        }        this.parseImport(bodyNode);      } else {        this.expectContextual(115, FlowErrors.UnsupportedStatementInDeclareModule);        bodyNode = this.flowParseDeclare(bodyNode, true);      }      body.push(bodyNode);    }    this.scope.exit();    this.expect(8);    this.finishNode(bodyNode, "BlockStatement");    let kind = null;    let hasModuleExport = false;    body.forEach(bodyElement => {      if (isEsModuleType(bodyElement)) {        if (kind === "CommonJS") {          this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind);        }        kind = "ES";      } else if (bodyElement.type === "DeclareModuleExports") {        if (hasModuleExport) {          this.raise(bodyElement.start, FlowErrors.DuplicateDeclareModuleExports);        }        if (kind === "ES") {          this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind);        }        kind = "CommonJS";        hasModuleExport = true;      }    });    node.kind = kind || "CommonJS";    return this.finishNode(node, "DeclareModule");  }  flowParseDeclareExportDeclaration(node, insideModule) {    this.expect(76);    if (this.eat(59)) {      if (this.match(62) || this.match(74)) {        node.declaration = this.flowParseDeclare(this.startNode());      } else {        node.declaration = this.flowParseType();        this.semicolon();      }      node.default = true;      return this.finishNode(node, "DeclareExportDeclaration");    } else {      if (this.match(69) || this.isLet() || (this.isContextual(120) || this.isContextual(119)) && !insideModule) {        const label = this.state.value;        const suggestion = exportSuggestions[label];        throw this.raise(this.state.start, FlowErrors.UnsupportedDeclareExportKind, label, suggestion);      }      if (this.match(68) || this.match(62) || this.match(74) || this.isContextual(121)) {        node.declaration = this.flowParseDeclare(this.startNode());        node.default = false;        return this.finishNode(node, "DeclareExportDeclaration");      } else if (this.match(49) || this.match(5) || this.isContextual(119) || this.isContextual(120) || this.isContextual(121)) {        node = this.parseExport(node);        if (node.type === "ExportNamedDeclaration") {          node.type = "ExportDeclaration";          node.default = false;          delete node.exportKind;        }        node.type = "Declare" + node.type;        return node;      }    }    throw this.unexpected();  }  flowParseDeclareModuleExports(node) {    this.next();    this.expectContextual(102);    node.typeAnnotation = this.flowParseTypeAnnotation();    this.semicolon();    return this.finishNode(node, "DeclareModuleExports");  }  flowParseDeclareTypeAlias(node) {    this.next();    this.flowParseTypeAlias(node);    node.type = "DeclareTypeAlias";    return node;  }  flowParseDeclareOpaqueType(node) {    this.next();    this.flowParseOpaqueType(node, true);    node.type = "DeclareOpaqueType";    return node;  }  flowParseDeclareInterface(node) {    this.next();    this.flowParseInterfaceish(node);    return this.finishNode(node, "DeclareInterface");  }  flowParseInterfaceish(node, isClass = false) {    node.id = this.flowParseRestrictedIdentifier(!isClass, true);    this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.start);    if (this.match(43)) {      node.typeParameters = this.flowParseTypeParameterDeclaration();    } else {      node.typeParameters = null;    }    node.extends = [];    node.implements = [];    node.mixins = [];    if (this.eat(75)) {      do {        node.extends.push(this.flowParseInterfaceExtends());      } while (!isClass && this.eat(12));    }    if (this.isContextual(108)) {      this.next();      do {        node.mixins.push(this.flowParseInterfaceExtends());      } while (this.eat(12));    }    if (this.isContextual(104)) {      this.next();      do {        node.implements.push(this.flowParseInterfaceExtends());      } while (this.eat(12));    }    node.body = this.flowParseObjectType({      allowStatic: isClass,      allowExact: false,      allowSpread: false,      allowProto: isClass,      allowInexact: false    });  }  flowParseInterfaceExtends() {    const node = this.startNode();    node.id = this.flowParseQualifiedTypeIdentifier();    if (this.match(43)) {      node.typeParameters = this.flowParseTypeParameterInstantiation();    } else {      node.typeParameters = null;    }    return this.finishNode(node, "InterfaceExtends");  }  flowParseInterface(node) {    this.flowParseInterfaceish(node);    return this.finishNode(node, "InterfaceDeclaration");  }  checkNotUnderscore(word) {    if (word === "_") {      this.raise(this.state.start, FlowErrors.UnexpectedReservedUnderscore);    }  }  checkReservedType(word, startLoc, declaration) {    if (!reservedTypes.has(word)) return;    this.raise(startLoc, declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, word);  }  flowParseRestrictedIdentifier(liberal, declaration) {    this.checkReservedType(this.state.value, this.state.start, declaration);    return this.parseIdentifier(liberal);  }  flowParseTypeAlias(node) {    node.id = this.flowParseRestrictedIdentifier(false, true);    this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);    if (this.match(43)) {      node.typeParameters = this.flowParseTypeParameterDeclaration();    } else {      node.typeParameters = null;    }    node.right = this.flowParseTypeInitialiser(27);    this.semicolon();    return this.finishNode(node, "TypeAlias");  }  flowParseOpaqueType(node, declare) {    this.expectContextual(120);    node.id = this.flowParseRestrictedIdentifier(true, true);    this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);    if (this.match(43)) {      node.typeParameters = this.flowParseTypeParameterDeclaration();    } else {      node.typeParameters = null;    }    node.supertype = null;    if (this.match(14)) {      node.supertype = this.flowParseTypeInitialiser(14);    }    node.impltype = null;    if (!declare) {      node.impltype = this.flowParseTypeInitialiser(27);    }    this.semicolon();    return this.finishNode(node, "OpaqueType");  }  flowParseTypeParameter(requireDefault = false) {    const nodeStart = this.state.start;    const node = this.startNode();    const variance = this.flowParseVariance();    const ident = this.flowParseTypeAnnotatableIdentifier();    node.name = ident.name;    node.variance = variance;    node.bound = ident.typeAnnotation;    if (this.match(27)) {      this.eat(27);      node.default = this.flowParseType();    } else {      if (requireDefault) {        this.raise(nodeStart, FlowErrors.MissingTypeParamDefault);      }    }    return this.finishNode(node, "TypeParameter");  }  flowParseTypeParameterDeclaration() {    const oldInType = this.state.inType;    const node = this.startNode();    node.params = [];    this.state.inType = true;    if (this.match(43) || this.match(132)) {      this.next();    } else {      this.unexpected();    }    let defaultRequired = false;    do {      const typeParameter = this.flowParseTypeParameter(defaultRequired);      node.params.push(typeParameter);      if (typeParameter.default) {        defaultRequired = true;      }      if (!this.match(44)) {        this.expect(12);      }    } while (!this.match(44));    this.expect(44);    this.state.inType = oldInType;    return this.finishNode(node, "TypeParameterDeclaration");  }  flowParseTypeParameterInstantiation() {    const node = this.startNode();    const oldInType = this.state.inType;    node.params = [];    this.state.inType = true;    this.expect(43);    const oldNoAnonFunctionType = this.state.noAnonFunctionType;    this.state.noAnonFunctionType = false;    while (!this.match(44)) {      node.params.push(this.flowParseType());      if (!this.match(44)) {        this.expect(12);      }    }    this.state.noAnonFunctionType = oldNoAnonFunctionType;    this.expect(44);    this.state.inType = oldInType;    return this.finishNode(node, "TypeParameterInstantiation");  }  flowParseTypeParameterInstantiationCallOrNew() {    const node = this.startNode();    const oldInType = this.state.inType;    node.params = [];    this.state.inType = true;    this.expect(43);    while (!this.match(44)) {      node.params.push(this.flowParseTypeOrImplicitInstantiation());      if (!this.match(44)) {        this.expect(12);      }    }    this.expect(44);    this.state.inType = oldInType;    return this.finishNode(node, "TypeParameterInstantiation");  }  flowParseInterfaceType() {    const node = this.startNode();    this.expectContextual(119);    node.extends = [];    if (this.eat(75)) {      do {        node.extends.push(this.flowParseInterfaceExtends());      } while (this.eat(12));    }    node.body = this.flowParseObjectType({      allowStatic: false,      allowExact: false,      allowSpread: false,      allowProto: false,      allowInexact: false    });    return this.finishNode(node, "InterfaceTypeAnnotation");  }  flowParseObjectPropertyKey() {    return this.match(124) || this.match(123) ? this.parseExprAtom() : this.parseIdentifier(true);  }  flowParseObjectTypeIndexer(node, isStatic, variance) {    node.static = isStatic;    if (this.lookahead().type === 14) {      node.id = this.flowParseObjectPropertyKey();      node.key = this.flowParseTypeInitialiser();    } else {      node.id = null;      node.key = this.flowParseType();    }    this.expect(3);    node.value = this.flowParseTypeInitialiser();    node.variance = variance;    return this.finishNode(node, "ObjectTypeIndexer");  }  flowParseObjectTypeInternalSlot(node, isStatic) {    node.static = isStatic;    node.id = this.flowParseObjectPropertyKey();    this.expect(3);    this.expect(3);    if (this.match(43) || this.match(10)) {      node.method = true;      node.optional = false;      node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));    } else {      node.method = false;      if (this.eat(17)) {        node.optional = true;      }      node.value = this.flowParseTypeInitialiser();    }    return this.finishNode(node, "ObjectTypeInternalSlot");  }  flowParseObjectTypeMethodish(node) {    node.params = [];    node.rest = null;    node.typeParameters = null;    node.this = null;    if (this.match(43)) {      node.typeParameters = this.flowParseTypeParameterDeclaration();    }    this.expect(10);    if (this.match(72)) {      node.this = this.flowParseFunctionTypeParam(true);      node.this.name = null;      if (!this.match(11)) {        this.expect(12);      }    }    while (!this.match(11) && !this.match(21)) {      node.params.push(this.flowParseFunctionTypeParam(false));      if (!this.match(11)) {        this.expect(12);      }    }    if (this.eat(21)) {      node.rest = this.flowParseFunctionTypeParam(false);    }    this.expect(11);    node.returnType = this.flowParseTypeInitialiser();    return this.finishNode(node, "FunctionTypeAnnotation");  }  flowParseObjectTypeCallProperty(node, isStatic) {    const valueNode = this.startNode();    node.static = isStatic;    node.value = this.flowParseObjectTypeMethodish(valueNode);    return this.finishNode(node, "ObjectTypeCallProperty");  }  flowParseObjectType({    allowStatic,    allowExact,    allowSpread,    allowProto,    allowInexact  }) {    const oldInType = this.state.inType;    this.state.inType = true;    const nodeStart = this.startNode();    nodeStart.callProperties = [];    nodeStart.properties = [];    nodeStart.indexers = [];    nodeStart.internalSlots = [];    let endDelim;    let exact;    let inexact = false;    if (allowExact && this.match(6)) {      this.expect(6);      endDelim = 9;      exact = true;    } else {      this.expect(5);      endDelim = 8;      exact = false;    }    nodeStart.exact = exact;    while (!this.match(endDelim)) {      let isStatic = false;      let protoStart = null;      let inexactStart = null;      const node = this.startNode();      if (allowProto && this.isContextual(109)) {        const lookahead = this.lookahead();        if (lookahead.type !== 14 && lookahead.type !== 17) {          this.next();          protoStart = this.state.start;          allowStatic = false;        }      }      if (allowStatic && this.isContextual(98)) {        const lookahead = this.lookahead();        if (lookahead.type !== 14 && lookahead.type !== 17) {          this.next();          isStatic = true;        }      }      const variance = this.flowParseVariance();      if (this.eat(0)) {        if (protoStart != null) {          this.unexpected(protoStart);        }        if (this.eat(0)) {          if (variance) {            this.unexpected(variance.start);          }          nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));        } else {          nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));        }      } else if (this.match(10) || this.match(43)) {        if (protoStart != null) {          this.unexpected(protoStart);        }        if (variance) {          this.unexpected(variance.start);        }        nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));      } else {        let kind = "init";        if (this.isContextual(92) || this.isContextual(97)) {          const lookahead = this.lookahead();          if (tokenIsLiteralPropertyName(lookahead.type)) {            kind = this.state.value;            this.next();          }        }        const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);        if (propOrInexact === null) {          inexact = true;          inexactStart = this.state.lastTokStart;        } else {          nodeStart.properties.push(propOrInexact);        }      }      this.flowObjectTypeSemicolon();      if (inexactStart && !this.match(8) && !this.match(9)) {        this.raise(inexactStart, FlowErrors.UnexpectedExplicitInexactInObject);      }    }    this.expect(endDelim);    if (allowSpread) {      nodeStart.inexact = inexact;    }    const out = this.finishNode(nodeStart, "ObjectTypeAnnotation");    this.state.inType = oldInType;    return out;  }  flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact) {    if (this.eat(21)) {      const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);      if (isInexactToken) {        if (!allowSpread) {          this.raise(this.state.lastTokStart, FlowErrors.InexactInsideNonObject);        } else if (!allowInexact) {          this.raise(this.state.lastTokStart, FlowErrors.InexactInsideExact);        }        if (variance) {          this.raise(variance.start, FlowErrors.InexactVariance);        }        return null;      }      if (!allowSpread) {        this.raise(this.state.lastTokStart, FlowErrors.UnexpectedSpreadType);      }      if (protoStart != null) {        this.unexpected(protoStart);      }      if (variance) {        this.raise(variance.start, FlowErrors.SpreadVariance);      }      node.argument = this.flowParseType();      return this.finishNode(node, "ObjectTypeSpreadProperty");    } else {      node.key = this.flowParseObjectPropertyKey();      node.static = isStatic;      node.proto = protoStart != null;      node.kind = kind;      let optional = false;      if (this.match(43) || this.match(10)) {        node.method = true;        if (protoStart != null) {          this.unexpected(protoStart);        }        if (variance) {          this.unexpected(variance.start);        }        node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));        if (kind === "get" || kind === "set") {          this.flowCheckGetterSetterParams(node);        }        if (!allowSpread && node.key.name === "constructor" && node.value.this) {          this.raise(node.value.this.start, FlowErrors.ThisParamBannedInConstructor);        }      } else {        if (kind !== "init") this.unexpected();        node.method = false;        if (this.eat(17)) {          optional = true;        }        node.value = this.flowParseTypeInitialiser();        node.variance = variance;      }      node.optional = optional;      return this.finishNode(node, "ObjectTypeProperty");    }  }  flowCheckGetterSetterParams(property) {    const paramCount = property.kind === "get" ? 0 : 1;    const start = property.start;    const length = property.value.params.length + (property.value.rest ? 1 : 0);    if (property.value.this) {      this.raise(property.value.this.start, property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam);    }    if (length !== paramCount) {      if (property.kind === "get") {        this.raise(start, ErrorMessages.BadGetterArity);      } else {        this.raise(start, ErrorMessages.BadSetterArity);      }    }    if (property.kind === "set" && property.value.rest) {      this.raise(start, ErrorMessages.BadSetterRestParameter);    }  }  flowObjectTypeSemicolon() {    if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {      this.unexpected();    }  }  flowParseQualifiedTypeIdentifier(startPos, startLoc, id) {    startPos = startPos || this.state.start;    startLoc = startLoc || this.state.startLoc;    let node = id || this.flowParseRestrictedIdentifier(true);    while (this.eat(16)) {      const node2 = this.startNodeAt(startPos, startLoc);      node2.qualification = node;      node2.id = this.flowParseRestrictedIdentifier(true);      node = this.finishNode(node2, "QualifiedTypeIdentifier");    }    return node;  }  flowParseGenericType(startPos, startLoc, id) {    const node = this.startNodeAt(startPos, startLoc);    node.typeParameters = null;    node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id);    if (this.match(43)) {      node.typeParameters = this.flowParseTypeParameterInstantiation();    }    return this.finishNode(node, "GenericTypeAnnotation");  }  flowParseTypeofType() {    const node = this.startNode();    this.expect(81);    node.argument = this.flowParsePrimaryType();    return this.finishNode(node, "TypeofTypeAnnotation");  }  flowParseTupleType() {    const node = this.startNode();    node.types = [];    this.expect(0);    while (this.state.pos < this.length && !this.match(3)) {      node.types.push(this.flowParseType());      if (this.match(3)) break;      this.expect(12);    }    this.expect(3);    return this.finishNode(node, "TupleTypeAnnotation");  }  flowParseFunctionTypeParam(first) {    let name = null;    let optional = false;    let typeAnnotation = null;    const node = this.startNode();    const lh = this.lookahead();    const isThis = this.state.type === 72;    if (lh.type === 14 || lh.type === 17) {      if (isThis && !first) {        this.raise(node.start, FlowErrors.ThisParamMustBeFirst);      }      name = this.parseIdentifier(isThis);      if (this.eat(17)) {        optional = true;        if (isThis) {          this.raise(node.start, FlowErrors.ThisParamMayNotBeOptional);        }      }      typeAnnotation = this.flowParseTypeInitialiser();    } else {      typeAnnotation = this.flowParseType();    }    node.name = name;    node.optional = optional;    node.typeAnnotation = typeAnnotation;    return this.finishNode(node, "FunctionTypeParam");  }  reinterpretTypeAsFunctionTypeParam(type) {    const node = this.startNodeAt(type.start, type.loc.start);    node.name = null;    node.optional = false;    node.typeAnnotation = type;    return this.finishNode(node, "FunctionTypeParam");  }  flowParseFunctionTypeParams(params = []) {    let rest = null;    let _this = null;    if (this.match(72)) {      _this = this.flowParseFunctionTypeParam(true);      _this.name = null;      if (!this.match(11)) {        this.expect(12);      }    }    while (!this.match(11) && !this.match(21)) {      params.push(this.flowParseFunctionTypeParam(false));      if (!this.match(11)) {        this.expect(12);      }    }    if (this.eat(21)) {      rest = this.flowParseFunctionTypeParam(false);    }    return {      params,      rest,      _this    };  }  flowIdentToTypeAnnotation(startPos, startLoc, node, id) {    switch (id.name) {      case "any":        return this.finishNode(node, "AnyTypeAnnotation");      case "bool":      case "boolean":        return this.finishNode(node, "BooleanTypeAnnotation");      case "mixed":        return this.finishNode(node, "MixedTypeAnnotation");      case "empty":        return this.finishNode(node, "EmptyTypeAnnotation");      case "number":        return this.finishNode(node, "NumberTypeAnnotation");      case "string":        return this.finishNode(node, "StringTypeAnnotation");      case "symbol":        return this.finishNode(node, "SymbolTypeAnnotation");      default:        this.checkNotUnderscore(id.name);        return this.flowParseGenericType(startPos, startLoc, id);    }  }  flowParsePrimaryType() {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const node = this.startNode();    let tmp;    let type;    let isGroupedType = false;    const oldNoAnonFunctionType = this.state.noAnonFunctionType;    switch (this.state.type) {      case 5:        return this.flowParseObjectType({          allowStatic: false,          allowExact: false,          allowSpread: true,          allowProto: false,          allowInexact: true        });      case 6:        return this.flowParseObjectType({          allowStatic: false,          allowExact: true,          allowSpread: true,          allowProto: false,          allowInexact: false        });      case 0:        this.state.noAnonFunctionType = false;        type = this.flowParseTupleType();        this.state.noAnonFunctionType = oldNoAnonFunctionType;        return type;      case 43:        node.typeParameters = this.flowParseTypeParameterDeclaration();        this.expect(10);        tmp = this.flowParseFunctionTypeParams();        node.params = tmp.params;        node.rest = tmp.rest;        node.this = tmp._this;        this.expect(11);        this.expect(19);        node.returnType = this.flowParseType();        return this.finishNode(node, "FunctionTypeAnnotation");      case 10:        this.next();        if (!this.match(11) && !this.match(21)) {          if (tokenIsIdentifier(this.state.type) || this.match(72)) {            const token = this.lookahead().type;            isGroupedType = token !== 17 && token !== 14;          } else {            isGroupedType = true;          }        }        if (isGroupedType) {          this.state.noAnonFunctionType = false;          type = this.flowParseType();          this.state.noAnonFunctionType = oldNoAnonFunctionType;          if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {            this.expect(11);            return type;          } else {            this.eat(12);          }        }        if (type) {          tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);        } else {          tmp = this.flowParseFunctionTypeParams();        }        node.params = tmp.params;        node.rest = tmp.rest;        node.this = tmp._this;        this.expect(11);        this.expect(19);        node.returnType = this.flowParseType();        node.typeParameters = null;        return this.finishNode(node, "FunctionTypeAnnotation");      case 123:        return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");      case 79:      case 80:        node.value = this.match(79);        this.next();        return this.finishNode(node, "BooleanLiteralTypeAnnotation");      case 47:        if (this.state.value === "-") {          this.next();          if (this.match(124)) {            return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node);          }          if (this.match(125)) {            return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node);          }          throw this.raise(this.state.start, FlowErrors.UnexpectedSubtractionOperand);        }        throw this.unexpected();      case 124:        return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");      case 125:        return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");      case 82:        this.next();        return this.finishNode(node, "VoidTypeAnnotation");      case 78:        this.next();        return this.finishNode(node, "NullLiteralTypeAnnotation");      case 72:        this.next();        return this.finishNode(node, "ThisTypeAnnotation");      case 49:        this.next();        return this.finishNode(node, "ExistsTypeAnnotation");      case 81:        return this.flowParseTypeofType();      default:        if (tokenIsKeyword(this.state.type)) {          const label = tokenLabelName(this.state.type);          this.next();          return super.createIdentifier(node, label);        } else if (tokenIsIdentifier(this.state.type)) {          if (this.isContextual(119)) {            return this.flowParseInterfaceType();          }          return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());        }    }    throw this.unexpected();  }  flowParsePostfixType() {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    let type = this.flowParsePrimaryType();    let seenOptionalIndexedAccess = false;    while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {      const node = this.startNodeAt(startPos, startLoc);      const optional = this.eat(18);      seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;      this.expect(0);      if (!optional && this.match(3)) {        node.elementType = type;        this.next();        type = this.finishNode(node, "ArrayTypeAnnotation");      } else {        node.objectType = type;        node.indexType = this.flowParseType();        this.expect(3);        if (seenOptionalIndexedAccess) {          node.optional = optional;          type = this.finishNode(node, "OptionalIndexedAccessType");        } else {          type = this.finishNode(node, "IndexedAccessType");        }      }    }    return type;  }  flowParsePrefixType() {    const node = this.startNode();    if (this.eat(17)) {      node.typeAnnotation = this.flowParsePrefixType();      return this.finishNode(node, "NullableTypeAnnotation");    } else {      return this.flowParsePostfixType();    }  }  flowParseAnonFunctionWithoutParens() {    const param = this.flowParsePrefixType();    if (!this.state.noAnonFunctionType && this.eat(19)) {      const node = this.startNodeAt(param.start, param.loc.start);      node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];      node.rest = null;      node.this = null;      node.returnType = this.flowParseType();      node.typeParameters = null;      return this.finishNode(node, "FunctionTypeAnnotation");    }    return param;  }  flowParseIntersectionType() {    const node = this.startNode();    this.eat(41);    const type = this.flowParseAnonFunctionWithoutParens();    node.types = [type];    while (this.eat(41)) {      node.types.push(this.flowParseAnonFunctionWithoutParens());    }    return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");  }  flowParseUnionType() {    const node = this.startNode();    this.eat(39);    const type = this.flowParseIntersectionType();    node.types = [type];    while (this.eat(39)) {      node.types.push(this.flowParseIntersectionType());    }    return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation");  }  flowParseType() {    const oldInType = this.state.inType;    this.state.inType = true;    const type = this.flowParseUnionType();    this.state.inType = oldInType;    return type;  }  flowParseTypeOrImplicitInstantiation() {    if (this.state.type === 122 && this.state.value === "_") {      const startPos = this.state.start;      const startLoc = this.state.startLoc;      const node = this.parseIdentifier();      return this.flowParseGenericType(startPos, startLoc, node);    } else {      return this.flowParseType();    }  }  flowParseTypeAnnotation() {    const node = this.startNode();    node.typeAnnotation = this.flowParseTypeInitialiser();    return this.finishNode(node, "TypeAnnotation");  }  flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {    const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();    if (this.match(14)) {      ident.typeAnnotation = this.flowParseTypeAnnotation();      this.resetEndLocation(ident);    }    return ident;  }  typeCastToParameter(node) {    node.expression.typeAnnotation = node.typeAnnotation;    this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end);    return node.expression;  }  flowParseVariance() {    let variance = null;    if (this.match(47)) {      variance = this.startNode();      if (this.state.value === "+") {        variance.kind = "plus";      } else {        variance.kind = "minus";      }      this.next();      this.finishNode(variance, "Variance");    }    return variance;  }  parseFunctionBody(node, allowExpressionBody, isMethod = false) {    if (allowExpressionBody) {      return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));    }    return super.parseFunctionBody(node, false, isMethod);  }  parseFunctionBodyAndFinish(node, type, isMethod = false) {    if (this.match(14)) {      const typeNode = this.startNode();      [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();      node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null;    }    super.parseFunctionBodyAndFinish(node, type, isMethod);  }  parseStatement(context, topLevel) {    if (this.state.strict && this.isContextual(119)) {      const lookahead = this.lookahead();      if (tokenIsKeywordOrIdentifier(lookahead.type)) {        const node = this.startNode();        this.next();        return this.flowParseInterface(node);      }    } else if (this.shouldParseEnums() && this.isContextual(116)) {      const node = this.startNode();      this.next();      return this.flowParseEnumDeclaration(node);    }    const stmt = super.parseStatement(context, topLevel);    if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {      this.flowPragma = null;    }    return stmt;  }  parseExpressionStatement(node, expr) {    if (expr.type === "Identifier") {      if (expr.name === "declare") {        if (this.match(74) || tokenIsIdentifier(this.state.type) || this.match(62) || this.match(68) || this.match(76)) {          return this.flowParseDeclare(node);        }      } else if (tokenIsIdentifier(this.state.type)) {        if (expr.name === "interface") {          return this.flowParseInterface(node);        } else if (expr.name === "type") {          return this.flowParseTypeAlias(node);        } else if (expr.name === "opaque") {          return this.flowParseOpaqueType(node, false);        }      }    }    return super.parseExpressionStatement(node, expr);  }  shouldParseExportDeclaration() {    const {      type    } = this.state;    if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 116) {      return !this.state.containsEsc;    }    return super.shouldParseExportDeclaration();  }  isExportDefaultSpecifier() {    const {      type    } = this.state;    if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 116) {      return this.state.containsEsc;    }    return super.isExportDefaultSpecifier();  }  parseExportDefaultExpression() {    if (this.shouldParseEnums() && this.isContextual(116)) {      const node = this.startNode();      this.next();      return this.flowParseEnumDeclaration(node);    }    return super.parseExportDefaultExpression();  }  parseConditional(expr, startPos, startLoc, refExpressionErrors) {    if (!this.match(17)) return expr;    if (this.state.maybeInArrowParameters) {      const nextCh = this.lookaheadCharCode();      if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {        this.setOptionalParametersError(refExpressionErrors);        return expr;      }    }    this.expect(17);    const state = this.state.clone();    const originalNoArrowAt = this.state.noArrowAt;    const node = this.startNodeAt(startPos, startLoc);    let {      consequent,      failed    } = this.tryParseConditionalConsequent();    let [valid, invalid] = this.getArrowLikeExpressions(consequent);    if (failed || invalid.length > 0) {      const noArrowAt = [...originalNoArrowAt];      if (invalid.length > 0) {        this.state = state;        this.state.noArrowAt = noArrowAt;        for (let i = 0; i < invalid.length; i++) {          noArrowAt.push(invalid[i].start);        }        ({          consequent,          failed        } = this.tryParseConditionalConsequent());        [valid, invalid] = this.getArrowLikeExpressions(consequent);      }      if (failed && valid.length > 1) {        this.raise(state.start, FlowErrors.AmbiguousConditionalArrow);      }      if (failed && valid.length === 1) {        this.state = state;        noArrowAt.push(valid[0].start);        this.state.noArrowAt = noArrowAt;        ({          consequent,          failed        } = this.tryParseConditionalConsequent());      }    }    this.getArrowLikeExpressions(consequent, true);    this.state.noArrowAt = originalNoArrowAt;    this.expect(14);    node.test = expr;    node.consequent = consequent;    node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));    return this.finishNode(node, "ConditionalExpression");  }  tryParseConditionalConsequent() {    this.state.noArrowParamsConversionAt.push(this.state.start);    const consequent = this.parseMaybeAssignAllowIn();    const failed = !this.match(14);    this.state.noArrowParamsConversionAt.pop();    return {      consequent,      failed    };  }  getArrowLikeExpressions(node, disallowInvalid) {    const stack = [node];    const arrows = [];    while (stack.length !== 0) {      const node = stack.pop();      if (node.type === "ArrowFunctionExpression") {        if (node.typeParameters || !node.returnType) {          this.finishArrowValidation(node);        } else {          arrows.push(node);        }        stack.push(node.body);      } else if (node.type === "ConditionalExpression") {        stack.push(node.consequent);        stack.push(node.alternate);      }    }    if (disallowInvalid) {      arrows.forEach(node => this.finishArrowValidation(node));      return [arrows, []];    }    return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));  }  finishArrowValidation(node) {    var _node$extra;    this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingComma, false);    this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);    super.checkParams(node, false, true);    this.scope.exit();  }  forwardNoArrowParamsConversionAt(node, parse) {    let result;    if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {      this.state.noArrowParamsConversionAt.push(this.state.start);      result = parse();      this.state.noArrowParamsConversionAt.pop();    } else {      result = parse();    }    return result;  }  parseParenItem(node, startPos, startLoc) {    node = super.parseParenItem(node, startPos, startLoc);    if (this.eat(17)) {      node.optional = true;      this.resetEndLocation(node);    }    if (this.match(14)) {      const typeCastNode = this.startNodeAt(startPos, startLoc);      typeCastNode.expression = node;      typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();      return this.finishNode(typeCastNode, "TypeCastExpression");    }    return node;  }  assertModuleNodeAllowed(node) {    if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") {      return;    }    super.assertModuleNodeAllowed(node);  }  parseExport(node) {    const decl = super.parseExport(node);    if (decl.type === "ExportNamedDeclaration" || decl.type === "ExportAllDeclaration") {      decl.exportKind = decl.exportKind || "value";    }    return decl;  }  parseExportDeclaration(node) {    if (this.isContextual(120)) {      node.exportKind = "type";      const declarationNode = this.startNode();      this.next();      if (this.match(5)) {        node.specifiers = this.parseExportSpecifiers(true);        this.parseExportFrom(node);        return null;      } else {        return this.flowParseTypeAlias(declarationNode);      }    } else if (this.isContextual(121)) {      node.exportKind = "type";      const declarationNode = this.startNode();      this.next();      return this.flowParseOpaqueType(declarationNode, false);    } else if (this.isContextual(119)) {      node.exportKind = "type";      const declarationNode = this.startNode();      this.next();      return this.flowParseInterface(declarationNode);    } else if (this.shouldParseEnums() && this.isContextual(116)) {      node.exportKind = "value";      const declarationNode = this.startNode();      this.next();      return this.flowParseEnumDeclaration(declarationNode);    } else {      return super.parseExportDeclaration(node);    }  }  eatExportStar(node) {    if (super.eatExportStar(...arguments)) return true;    if (this.isContextual(120) && this.lookahead().type === 49) {      node.exportKind = "type";      this.next();      this.next();      return true;    }    return false;  }  maybeParseExportNamespaceSpecifier(node) {    const pos = this.state.start;    const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);    if (hasNamespace && node.exportKind === "type") {      this.unexpected(pos);    }    return hasNamespace;  }  parseClassId(node, isStatement, optionalId) {    super.parseClassId(node, isStatement, optionalId);    if (this.match(43)) {      node.typeParameters = this.flowParseTypeParameterDeclaration();    }  }  parseClassMember(classBody, member, state) {    const pos = this.state.start;    if (this.isContextual(115)) {      if (this.parseClassMemberFromModifier(classBody, member)) {        return;      }      member.declare = true;    }    super.parseClassMember(classBody, member, state);    if (member.declare) {      if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") {        this.raise(pos, FlowErrors.DeclareClassElement);      } else if (member.value) {        this.raise(member.value.start, FlowErrors.DeclareClassFieldInitializer);      }    }  }  isIterator(word) {    return word === "iterator" || word === "asyncIterator";  }  readIterator() {    const word = super.readWord1();    const fullWord = "@@" + word;    if (!this.isIterator(word) || !this.state.inType) {      this.raise(this.state.pos, ErrorMessages.InvalidIdentifier, fullWord);    }    this.finishToken(122, fullWord);  }  getTokenFromCode(code) {    const next = this.input.charCodeAt(this.state.pos + 1);    if (code === 123 && next === 124) {      return this.finishOp(6, 2);    } else if (this.state.inType && (code === 62 || code === 60)) {      return this.finishOp(code === 62 ? 44 : 43, 1);    } else if (this.state.inType && code === 63) {      if (next === 46) {        return this.finishOp(18, 2);      }      return this.finishOp(17, 1);    } else if (isIteratorStart(code, next)) {      this.state.pos += 2;      return this.readIterator();    } else {      return super.getTokenFromCode(code);    }  }  isAssignable(node, isBinding) {    if (node.type === "TypeCastExpression") {      return this.isAssignable(node.expression, isBinding);    } else {      return super.isAssignable(node, isBinding);    }  }  toAssignable(node, isLHS = false) {    if (node.type === "TypeCastExpression") {      return super.toAssignable(this.typeCastToParameter(node), isLHS);    } else {      return super.toAssignable(node, isLHS);    }  }  toAssignableList(exprList, trailingCommaPos, isLHS) {    for (let i = 0; i < exprList.length; i++) {      const expr = exprList[i];      if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") {        exprList[i] = this.typeCastToParameter(expr);      }    }    return super.toAssignableList(exprList, trailingCommaPos, isLHS);  }  toReferencedList(exprList, isParenthesizedExpr) {    for (let i = 0; i < exprList.length; i++) {      var _expr$extra;      const expr = exprList[i];      if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {        this.raise(expr.typeAnnotation.start, FlowErrors.TypeCastInPattern);      }    }    return exprList;  }  parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {    const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors);    if (canBePattern && !this.state.maybeInArrowParameters) {      this.toReferencedList(node.elements);    }    return node;  }  checkLVal(expr, ...args) {    if (expr.type !== "TypeCastExpression") {      return super.checkLVal(expr, ...args);    }  }  parseClassProperty(node) {    if (this.match(14)) {      node.typeAnnotation = this.flowParseTypeAnnotation();    }    return super.parseClassProperty(node);  }  parseClassPrivateProperty(node) {    if (this.match(14)) {      node.typeAnnotation = this.flowParseTypeAnnotation();    }    return super.parseClassPrivateProperty(node);  }  isClassMethod() {    return this.match(43) || super.isClassMethod();  }  isClassProperty() {    return this.match(14) || super.isClassProperty();  }  isNonstaticConstructor(method) {    return !this.match(14) && super.isNonstaticConstructor(method);  }  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {    if (method.variance) {      this.unexpected(method.variance.start);    }    delete method.variance;    if (this.match(43)) {      method.typeParameters = this.flowParseTypeParameterDeclaration();    }    super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);    if (method.params && isConstructor) {      const params = method.params;      if (params.length > 0 && this.isThisParam(params[0])) {        this.raise(method.start, FlowErrors.ThisParamBannedInConstructor);      }    } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) {      const params = method.value.params;      if (params.length > 0 && this.isThisParam(params[0])) {        this.raise(method.start, FlowErrors.ThisParamBannedInConstructor);      }    }  }  pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {    if (method.variance) {      this.unexpected(method.variance.start);    }    delete method.variance;    if (this.match(43)) {      method.typeParameters = this.flowParseTypeParameterDeclaration();    }    super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);  }  parseClassSuper(node) {    super.parseClassSuper(node);    if (node.superClass && this.match(43)) {      node.superTypeParameters = this.flowParseTypeParameterInstantiation();    }    if (this.isContextual(104)) {      this.next();      const implemented = node.implements = [];      do {        const node = this.startNode();        node.id = this.flowParseRestrictedIdentifier(true);        if (this.match(43)) {          node.typeParameters = this.flowParseTypeParameterInstantiation();        } else {          node.typeParameters = null;        }        implemented.push(this.finishNode(node, "ClassImplements"));      } while (this.eat(12));    }  }  checkGetterSetterParams(method) {    super.checkGetterSetterParams(method);    const params = this.getObjectOrClassMethodParams(method);    if (params.length > 0) {      const param = params[0];      if (this.isThisParam(param) && method.kind === "get") {        this.raise(param.start, FlowErrors.GetterMayNotHaveThisParam);      } else if (this.isThisParam(param)) {        this.raise(param.start, FlowErrors.SetterMayNotHaveThisParam);      }    }  }  parsePropertyNamePrefixOperator(node) {    node.variance = this.flowParseVariance();  }  parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {    if (prop.variance) {      this.unexpected(prop.variance.start);    }    delete prop.variance;    let typeParameters;    if (this.match(43) && !isAccessor) {      typeParameters = this.flowParseTypeParameterDeclaration();      if (!this.match(10)) this.unexpected();    }    super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);    if (typeParameters) {      (prop.value || prop).typeParameters = typeParameters;    }  }  parseAssignableListItemTypes(param) {    if (this.eat(17)) {      if (param.type !== "Identifier") {        this.raise(param.start, FlowErrors.PatternIsOptional);      }      if (this.isThisParam(param)) {        this.raise(param.start, FlowErrors.ThisParamMayNotBeOptional);      }      param.optional = true;    }    if (this.match(14)) {      param.typeAnnotation = this.flowParseTypeAnnotation();    } else if (this.isThisParam(param)) {      this.raise(param.start, FlowErrors.ThisParamAnnotationRequired);    }    if (this.match(27) && this.isThisParam(param)) {      this.raise(param.start, FlowErrors.ThisParamNoDefault);    }    this.resetEndLocation(param);    return param;  }  parseMaybeDefault(startPos, startLoc, left) {    const node = super.parseMaybeDefault(startPos, startLoc, left);    if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {      this.raise(node.typeAnnotation.start, FlowErrors.TypeBeforeInitializer);    }    return node;  }  shouldParseDefaultImport(node) {    if (!hasTypeImportKind(node)) {      return super.shouldParseDefaultImport(node);    }    return isMaybeDefaultImport(this.state.type);  }  parseImportSpecifierLocal(node, specifier, type, contextDescription) {    specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();    this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);    node.specifiers.push(this.finishNode(specifier, type));  }  maybeParseDefaultImportSpecifier(node) {    node.importKind = "value";    let kind = null;    if (this.match(81)) {      kind = "typeof";    } else if (this.isContextual(120)) {      kind = "type";    }    if (kind) {      const lh = this.lookahead();      const {        type      } = lh;      if (kind === "type" && type === 49) {        this.unexpected(lh.start);      }      if (isMaybeDefaultImport(type) || type === 5 || type === 49) {        this.next();        node.importKind = kind;      }    }    return super.maybeParseDefaultImportSpecifier(node);  }  parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {    const firstIdent = specifier.imported;    let specifierTypeKind = null;    if (firstIdent.type === "Identifier") {      if (firstIdent.name === "type") {        specifierTypeKind = "type";      } else if (firstIdent.name === "typeof") {        specifierTypeKind = "typeof";      }    }    let isBinding = false;    if (this.isContextual(87) && !this.isLookaheadContextual("as")) {      const as_ident = this.parseIdentifier(true);      if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {        specifier.imported = as_ident;        specifier.importKind = specifierTypeKind;        specifier.local = cloneIdentifier(as_ident);      } else {        specifier.imported = firstIdent;        specifier.importKind = null;        specifier.local = this.parseIdentifier();      }    } else {      if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {        specifier.imported = this.parseIdentifier(true);        specifier.importKind = specifierTypeKind;      } else {        if (importedIsString) {          throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, firstIdent.value);        }        specifier.imported = firstIdent;        specifier.importKind = null;      }      if (this.eatContextual(87)) {        specifier.local = this.parseIdentifier();      } else {        isBinding = true;        specifier.local = cloneIdentifier(specifier.imported);      }    }    const specifierIsTypeImport = hasTypeImportKind(specifier);    if (isInTypeOnlyImport && specifierIsTypeImport) {      this.raise(specifier.start, FlowErrors.ImportTypeShorthandOnlyInPureImport);    }    if (isInTypeOnlyImport || specifierIsTypeImport) {      this.checkReservedType(specifier.local.name, specifier.local.start, true);    }    if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {      this.checkReservedWord(specifier.local.name, specifier.start, true, true);    }    this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL);    return this.finishNode(specifier, "ImportSpecifier");  }  parseBindingAtom() {    switch (this.state.type) {      case 72:        return this.parseIdentifier(true);      default:        return super.parseBindingAtom();    }  }  parseFunctionParams(node, allowModifiers) {    const kind = node.kind;    if (kind !== "get" && kind !== "set" && this.match(43)) {      node.typeParameters = this.flowParseTypeParameterDeclaration();    }    super.parseFunctionParams(node, allowModifiers);  }  parseVarId(decl, kind) {    super.parseVarId(decl, kind);    if (this.match(14)) {      decl.id.typeAnnotation = this.flowParseTypeAnnotation();      this.resetEndLocation(decl.id);    }  }  parseAsyncArrowFromCallExpression(node, call) {    if (this.match(14)) {      const oldNoAnonFunctionType = this.state.noAnonFunctionType;      this.state.noAnonFunctionType = true;      node.returnType = this.flowParseTypeAnnotation();      this.state.noAnonFunctionType = oldNoAnonFunctionType;    }    return super.parseAsyncArrowFromCallExpression(node, call);  }  shouldParseAsyncArrow() {    return this.match(14) || super.shouldParseAsyncArrow();  }  parseMaybeAssign(refExpressionErrors, afterLeftParse) {    var _jsx;    let state = null;    let jsx;    if (this.hasPlugin("jsx") && (this.match(132) || this.match(43))) {      state = this.state.clone();      jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);      if (!jsx.error) return jsx.node;      const {        context      } = this.state;      const curContext = context[context.length - 1];      if (curContext === types.j_oTag) {        context.length -= 2;      } else if (curContext === types.j_expr) {        context.length -= 1;      }    }    if ((_jsx = jsx) != null && _jsx.error || this.match(43)) {      var _jsx2, _jsx3;      state = state || this.state.clone();      let typeParameters;      const arrow = this.tryParse(abort => {        var _arrowExpression$extr;        typeParameters = this.flowParseTypeParameterDeclaration();        const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {          const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);          this.resetStartLocationFromNode(result, typeParameters);          return result;        });        if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();        const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);        if (expr.type !== "ArrowFunctionExpression") abort();        expr.typeParameters = typeParameters;        this.resetStartLocationFromNode(expr, typeParameters);        return arrowExpression;      }, state);      let arrowExpression = null;      if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") {        if (!arrow.error && !arrow.aborted) {          if (arrow.node.async) {            this.raise(typeParameters.start, FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction);          }          return arrow.node;        }        arrowExpression = arrow.node;      }      if ((_jsx2 = jsx) != null && _jsx2.node) {        this.state = jsx.failState;        return jsx.node;      }      if (arrowExpression) {        this.state = arrow.failState;        return arrowExpression;      }      if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;      if (arrow.thrown) throw arrow.error;      throw this.raise(typeParameters.start, FlowErrors.UnexpectedTokenAfterTypeParameter);    }    return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);  }  parseArrow(node) {    if (this.match(14)) {      const result = this.tryParse(() => {        const oldNoAnonFunctionType = this.state.noAnonFunctionType;        this.state.noAnonFunctionType = true;        const typeNode = this.startNode();        [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();        this.state.noAnonFunctionType = oldNoAnonFunctionType;        if (this.canInsertSemicolon()) this.unexpected();        if (!this.match(19)) this.unexpected();        return typeNode;      });      if (result.thrown) return null;      if (result.error) this.state = result.failState;      node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null;    }    return super.parseArrow(node);  }  shouldParseArrow(params) {    return this.match(14) || super.shouldParseArrow(params);  }  setArrowFunctionParameters(node, params) {    if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {      node.params = params;    } else {      super.setArrowFunctionParameters(node, params);    }  }  checkParams(node, allowDuplicates, isArrowFunction) {    if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {      return;    }    for (let i = 0; i < node.params.length; i++) {      if (this.isThisParam(node.params[i]) && i > 0) {        this.raise(node.params[i].start, FlowErrors.ThisParamMustBeFirst);      }    }    return super.checkParams(...arguments);  }  parseParenAndDistinguishExpression(canBeArrow) {    return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1);  }  parseSubscripts(base, startPos, startLoc, noCalls) {    if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startPos) !== -1) {      this.next();      const node = this.startNodeAt(startPos, startLoc);      node.callee = base;      node.arguments = this.parseCallExpressionArguments(11, false);      base = this.finishNode(node, "CallExpression");    } else if (base.type === "Identifier" && base.name === "async" && this.match(43)) {      const state = this.state.clone();      const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startPos, startLoc) || abort(), state);      if (!arrow.error && !arrow.aborted) return arrow.node;      const result = this.tryParse(() => super.parseSubscripts(base, startPos, startLoc, noCalls), state);      if (result.node && !result.error) return result.node;      if (arrow.node) {        this.state = arrow.failState;        return arrow.node;      }      if (result.node) {        this.state = result.failState;        return result.node;      }      throw arrow.error || result.error;    }    return super.parseSubscripts(base, startPos, startLoc, noCalls);  }  parseSubscript(base, startPos, startLoc, noCalls, subscriptState) {    if (this.match(18) && this.isLookaheadToken_lt()) {      subscriptState.optionalChainMember = true;      if (noCalls) {        subscriptState.stop = true;        return base;      }      this.next();      const node = this.startNodeAt(startPos, startLoc);      node.callee = base;      node.typeArguments = this.flowParseTypeParameterInstantiation();      this.expect(10);      node.arguments = this.parseCallExpressionArguments(11, false);      node.optional = true;      return this.finishCallExpression(node, true);    } else if (!noCalls && this.shouldParseTypes() && this.match(43)) {      const node = this.startNodeAt(startPos, startLoc);      node.callee = base;      const result = this.tryParse(() => {        node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();        this.expect(10);        node.arguments = this.parseCallExpressionArguments(11, false);        if (subscriptState.optionalChainMember) node.optional = false;        return this.finishCallExpression(node, subscriptState.optionalChainMember);      });      if (result.node) {        if (result.error) this.state = result.failState;        return result.node;      }    }    return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState);  }  parseNewArguments(node) {    let targs = null;    if (this.shouldParseTypes() && this.match(43)) {      targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;    }    node.typeArguments = targs;    super.parseNewArguments(node);  }  parseAsyncArrowWithTypeParameters(startPos, startLoc) {    const node = this.startNodeAt(startPos, startLoc);    this.parseFunctionParams(node);    if (!this.parseArrow(node)) return;    return this.parseArrowExpression(node, undefined, true);  }  readToken_mult_modulo(code) {    const next = this.input.charCodeAt(this.state.pos + 1);    if (code === 42 && next === 47 && this.state.hasFlowComment) {      this.state.hasFlowComment = false;      this.state.pos += 2;      this.nextToken();      return;    }    super.readToken_mult_modulo(code);  }  readToken_pipe_amp(code) {    const next = this.input.charCodeAt(this.state.pos + 1);    if (code === 124 && next === 125) {      this.finishOp(9, 2);      return;    }    super.readToken_pipe_amp(code);  }  parseTopLevel(file, program) {    const fileNode = super.parseTopLevel(file, program);    if (this.state.hasFlowComment) {      this.raise(this.state.pos, FlowErrors.UnterminatedFlowComment);    }    return fileNode;  }  skipBlockComment() {    if (this.hasPlugin("flowComments") && this.skipFlowComment()) {      if (this.state.hasFlowComment) {        this.unexpected(null, FlowErrors.NestedFlowComment);      }      this.hasFlowCommentCompletion();      this.state.pos += this.skipFlowComment();      this.state.hasFlowComment = true;      return;    }    if (this.state.hasFlowComment) {      const end = this.input.indexOf("*-/", this.state.pos += 2);      if (end === -1) {        throw this.raise(this.state.pos - 2, ErrorMessages.UnterminatedComment);      }      this.state.pos = end + 3;      return;    }    return super.skipBlockComment();  }  skipFlowComment() {    const {      pos    } = this.state;    let shiftToFirstNonWhiteSpace = 2;    while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {      shiftToFirstNonWhiteSpace++;    }    const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);    const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);    if (ch2 === 58 && ch3 === 58) {      return shiftToFirstNonWhiteSpace + 2;    }    if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") {      return shiftToFirstNonWhiteSpace + 12;    }    if (ch2 === 58 && ch3 !== 58) {      return shiftToFirstNonWhiteSpace;    }    return false;  }  hasFlowCommentCompletion() {    const end = this.input.indexOf("*/", this.state.pos);    if (end === -1) {      throw this.raise(this.state.pos, ErrorMessages.UnterminatedComment);    }  }  flowEnumErrorBooleanMemberNotInitialized(pos, {    enumName,    memberName  }) {    this.raise(pos, FlowErrors.EnumBooleanMemberNotInitialized, memberName, enumName);  }  flowEnumErrorInvalidMemberName(pos, {    enumName,    memberName  }) {    const suggestion = memberName[0].toUpperCase() + memberName.slice(1);    this.raise(pos, FlowErrors.EnumInvalidMemberName, memberName, suggestion, enumName);  }  flowEnumErrorDuplicateMemberName(pos, {    enumName,    memberName  }) {    this.raise(pos, FlowErrors.EnumDuplicateMemberName, memberName, enumName);  }  flowEnumErrorInconsistentMemberValues(pos, {    enumName  }) {    this.raise(pos, FlowErrors.EnumInconsistentMemberValues, enumName);  }  flowEnumErrorInvalidExplicitType(pos, {    enumName,    suppliedType  }) {    return this.raise(pos, suppliedType === null ? FlowErrors.EnumInvalidExplicitTypeUnknownSupplied : FlowErrors.EnumInvalidExplicitType, enumName, suppliedType);  }  flowEnumErrorInvalidMemberInitializer(pos, {    enumName,    explicitType,    memberName  }) {    let message = null;    switch (explicitType) {      case "boolean":      case "number":      case "string":        message = FlowErrors.EnumInvalidMemberInitializerPrimaryType;        break;      case "symbol":        message = FlowErrors.EnumInvalidMemberInitializerSymbolType;        break;      default:        message = FlowErrors.EnumInvalidMemberInitializerUnknownType;    }    return this.raise(pos, message, enumName, memberName, explicitType);  }  flowEnumErrorNumberMemberNotInitialized(pos, {    enumName,    memberName  }) {    this.raise(pos, FlowErrors.EnumNumberMemberNotInitialized, enumName, memberName);  }  flowEnumErrorStringMemberInconsistentlyInitailized(pos, {    enumName  }) {    this.raise(pos, FlowErrors.EnumStringMemberInconsistentlyInitailized, enumName);  }  flowEnumMemberInit() {    const startPos = this.state.start;    const endOfInit = () => this.match(12) || this.match(8);    switch (this.state.type) {      case 124:        {          const literal = this.parseNumericLiteral(this.state.value);          if (endOfInit()) {            return {              type: "number",              pos: literal.start,              value: literal            };          }          return {            type: "invalid",            pos: startPos          };        }      case 123:        {          const literal = this.parseStringLiteral(this.state.value);          if (endOfInit()) {            return {              type: "string",              pos: literal.start,              value: literal            };          }          return {            type: "invalid",            pos: startPos          };        }      case 79:      case 80:        {          const literal = this.parseBooleanLiteral(this.match(79));          if (endOfInit()) {            return {              type: "boolean",              pos: literal.start,              value: literal            };          }          return {            type: "invalid",            pos: startPos          };        }      default:        return {          type: "invalid",          pos: startPos        };    }  }  flowEnumMemberRaw() {    const pos = this.state.start;    const id = this.parseIdentifier(true);    const init = this.eat(27) ? this.flowEnumMemberInit() : {      type: "none",      pos    };    return {      id,      init    };  }  flowEnumCheckExplicitTypeMismatch(pos, context, expectedType) {    const {      explicitType    } = context;    if (explicitType === null) {      return;    }    if (explicitType !== expectedType) {      this.flowEnumErrorInvalidMemberInitializer(pos, context);    }  }  flowEnumMembers({    enumName,    explicitType  }) {    const seenNames = new Set();    const members = {      booleanMembers: [],      numberMembers: [],      stringMembers: [],      defaultedMembers: []    };    let hasUnknownMembers = false;    while (!this.match(8)) {      if (this.eat(21)) {        hasUnknownMembers = true;        break;      }      const memberNode = this.startNode();      const {        id,        init      } = this.flowEnumMemberRaw();      const memberName = id.name;      if (memberName === "") {        continue;      }      if (/^[a-z]/.test(memberName)) {        this.flowEnumErrorInvalidMemberName(id.start, {          enumName,          memberName        });      }      if (seenNames.has(memberName)) {        this.flowEnumErrorDuplicateMemberName(id.start, {          enumName,          memberName        });      }      seenNames.add(memberName);      const context = {        enumName,        explicitType,        memberName      };      memberNode.id = id;      switch (init.type) {        case "boolean":          {            this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "boolean");            memberNode.init = init.value;            members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember"));            break;          }        case "number":          {            this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "number");            memberNode.init = init.value;            members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember"));            break;          }        case "string":          {            this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "string");            memberNode.init = init.value;            members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember"));            break;          }        case "invalid":          {            throw this.flowEnumErrorInvalidMemberInitializer(init.pos, context);          }        case "none":          {            switch (explicitType) {              case "boolean":                this.flowEnumErrorBooleanMemberNotInitialized(init.pos, context);                break;              case "number":                this.flowEnumErrorNumberMemberNotInitialized(init.pos, context);                break;              default:                members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember"));            }          }      }      if (!this.match(8)) {        this.expect(12);      }    }    return {      members,      hasUnknownMembers    };  }  flowEnumStringMembers(initializedMembers, defaultedMembers, {    enumName  }) {    if (initializedMembers.length === 0) {      return defaultedMembers;    } else if (defaultedMembers.length === 0) {      return initializedMembers;    } else if (defaultedMembers.length > initializedMembers.length) {      for (const member of initializedMembers) {        this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {          enumName        });      }      return defaultedMembers;    } else {      for (const member of defaultedMembers) {        this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {          enumName        });      }      return initializedMembers;    }  }  flowEnumParseExplicitType({    enumName  }) {    if (this.eatContextual(95)) {      if (!tokenIsIdentifier(this.state.type)) {        throw this.flowEnumErrorInvalidExplicitType(this.state.start, {          enumName,          suppliedType: null        });      }      const {        value      } = this.state;      this.next();      if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") {        this.flowEnumErrorInvalidExplicitType(this.state.start, {          enumName,          suppliedType: value        });      }      return value;    }    return null;  }  flowEnumBody(node, {    enumName,    nameLoc  }) {    const explicitType = this.flowEnumParseExplicitType({      enumName    });    this.expect(5);    const {      members,      hasUnknownMembers    } = this.flowEnumMembers({      enumName,      explicitType    });    node.hasUnknownMembers = hasUnknownMembers;    switch (explicitType) {      case "boolean":        node.explicitType = true;        node.members = members.booleanMembers;        this.expect(8);        return this.finishNode(node, "EnumBooleanBody");      case "number":        node.explicitType = true;        node.members = members.numberMembers;        this.expect(8);        return this.finishNode(node, "EnumNumberBody");      case "string":        node.explicitType = true;        node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {          enumName        });        this.expect(8);        return this.finishNode(node, "EnumStringBody");      case "symbol":        node.members = members.defaultedMembers;        this.expect(8);        return this.finishNode(node, "EnumSymbolBody");      default:        {          const empty = () => {            node.members = [];            this.expect(8);            return this.finishNode(node, "EnumStringBody");          };          node.explicitType = false;          const boolsLen = members.booleanMembers.length;          const numsLen = members.numberMembers.length;          const strsLen = members.stringMembers.length;          const defaultedLen = members.defaultedMembers.length;          if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {            return empty();          } else if (!boolsLen && !numsLen) {            node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {              enumName            });            this.expect(8);            return this.finishNode(node, "EnumStringBody");          } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {            for (const member of members.defaultedMembers) {              this.flowEnumErrorBooleanMemberNotInitialized(member.start, {                enumName,                memberName: member.id.name              });            }            node.members = members.booleanMembers;            this.expect(8);            return this.finishNode(node, "EnumBooleanBody");          } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {            for (const member of members.defaultedMembers) {              this.flowEnumErrorNumberMemberNotInitialized(member.start, {                enumName,                memberName: member.id.name              });            }            node.members = members.numberMembers;            this.expect(8);            return this.finishNode(node, "EnumNumberBody");          } else {            this.flowEnumErrorInconsistentMemberValues(nameLoc, {              enumName            });            return empty();          }        }    }  }  flowParseEnumDeclaration(node) {    const id = this.parseIdentifier();    node.id = id;    node.body = this.flowEnumBody(this.startNode(), {      enumName: id.name,      nameLoc: id.start    });    return this.finishNode(node, "EnumDeclaration");  }  isLookaheadToken_lt() {    const next = this.nextTokenStart();    if (this.input.charCodeAt(next) === 60) {      const afterNext = this.input.charCodeAt(next + 1);      return afterNext !== 60 && afterNext !== 61;    }    return false;  }  maybeUnwrapTypeCastExpression(node) {    return node.type === "TypeCastExpression" ? node.expression : node;  }});const entities = {  quot: "\u0022",  amp: "&",  apos: "\u0027",  lt: "<",  gt: ">",  nbsp: "\u00A0",  iexcl: "\u00A1",  cent: "\u00A2",  pound: "\u00A3",  curren: "\u00A4",  yen: "\u00A5",  brvbar: "\u00A6",  sect: "\u00A7",  uml: "\u00A8",  copy: "\u00A9",  ordf: "\u00AA",  laquo: "\u00AB",  not: "\u00AC",  shy: "\u00AD",  reg: "\u00AE",  macr: "\u00AF",  deg: "\u00B0",  plusmn: "\u00B1",  sup2: "\u00B2",  sup3: "\u00B3",  acute: "\u00B4",  micro: "\u00B5",  para: "\u00B6",  middot: "\u00B7",  cedil: "\u00B8",  sup1: "\u00B9",  ordm: "\u00BA",  raquo: "\u00BB",  frac14: "\u00BC",  frac12: "\u00BD",  frac34: "\u00BE",  iquest: "\u00BF",  Agrave: "\u00C0",  Aacute: "\u00C1",  Acirc: "\u00C2",  Atilde: "\u00C3",  Auml: "\u00C4",  Aring: "\u00C5",  AElig: "\u00C6",  Ccedil: "\u00C7",  Egrave: "\u00C8",  Eacute: "\u00C9",  Ecirc: "\u00CA",  Euml: "\u00CB",  Igrave: "\u00CC",  Iacute: "\u00CD",  Icirc: "\u00CE",  Iuml: "\u00CF",  ETH: "\u00D0",  Ntilde: "\u00D1",  Ograve: "\u00D2",  Oacute: "\u00D3",  Ocirc: "\u00D4",  Otilde: "\u00D5",  Ouml: "\u00D6",  times: "\u00D7",  Oslash: "\u00D8",  Ugrave: "\u00D9",  Uacute: "\u00DA",  Ucirc: "\u00DB",  Uuml: "\u00DC",  Yacute: "\u00DD",  THORN: "\u00DE",  szlig: "\u00DF",  agrave: "\u00E0",  aacute: "\u00E1",  acirc: "\u00E2",  atilde: "\u00E3",  auml: "\u00E4",  aring: "\u00E5",  aelig: "\u00E6",  ccedil: "\u00E7",  egrave: "\u00E8",  eacute: "\u00E9",  ecirc: "\u00EA",  euml: "\u00EB",  igrave: "\u00EC",  iacute: "\u00ED",  icirc: "\u00EE",  iuml: "\u00EF",  eth: "\u00F0",  ntilde: "\u00F1",  ograve: "\u00F2",  oacute: "\u00F3",  ocirc: "\u00F4",  otilde: "\u00F5",  ouml: "\u00F6",  divide: "\u00F7",  oslash: "\u00F8",  ugrave: "\u00F9",  uacute: "\u00FA",  ucirc: "\u00FB",  uuml: "\u00FC",  yacute: "\u00FD",  thorn: "\u00FE",  yuml: "\u00FF",  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"};const HEX_NUMBER = /^[\da-fA-F]+$/;const DECIMAL_NUMBER = /^\d+$/;const JsxErrors = makeErrorTemplates({  AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.",  MissingClosingTagElement: "Expected corresponding JSX closing tag for <%0>.",  MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.",  UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",  UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.",  UnterminatedJsxContent: "Unterminated JSX contents.",  UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?"}, ErrorCodes.SyntaxError, "jsx");types.j_oTag = new TokContext("<tag");types.j_cTag = new TokContext("</tag");types.j_expr = new TokContext("<tag>...</tag>", true);function isFragment(object) {  return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false;}function getQualifiedJSXName(object) {  if (object.type === "JSXIdentifier") {    return object.name;  }  if (object.type === "JSXNamespacedName") {    return object.namespace.name + ":" + object.name.name;  }  if (object.type === "JSXMemberExpression") {    return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);  }  throw new Error("Node had unexpected type: " + object.type);}var jsx = (superClass => class extends superClass {  jsxReadToken() {    let out = "";    let chunkStart = this.state.pos;    for (;;) {      if (this.state.pos >= this.length) {        throw this.raise(this.state.start, JsxErrors.UnterminatedJsxContent);      }      const ch = this.input.charCodeAt(this.state.pos);      switch (ch) {        case 60:        case 123:          if (this.state.pos === this.state.start) {            if (ch === 60 && this.state.canStartJSXElement) {              ++this.state.pos;              return this.finishToken(132);            }            return super.getTokenFromCode(ch);          }          out += this.input.slice(chunkStart, this.state.pos);          return this.finishToken(131, out);        case 38:          out += this.input.slice(chunkStart, this.state.pos);          out += this.jsxReadEntity();          chunkStart = this.state.pos;          break;        case 62:        case 125:        default:          if (isNewLine(ch)) {            out += this.input.slice(chunkStart, this.state.pos);            out += this.jsxReadNewLine(true);            chunkStart = this.state.pos;          } else {            ++this.state.pos;          }      }    }  }  jsxReadNewLine(normalizeCRLF) {    const ch = this.input.charCodeAt(this.state.pos);    let out;    ++this.state.pos;    if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {      ++this.state.pos;      out = normalizeCRLF ? "\n" : "\r\n";    } else {      out = String.fromCharCode(ch);    }    ++this.state.curLine;    this.state.lineStart = this.state.pos;    return out;  }  jsxReadString(quote) {    let out = "";    let chunkStart = ++this.state.pos;    for (;;) {      if (this.state.pos >= this.length) {        throw this.raise(this.state.start, ErrorMessages.UnterminatedString);      }      const ch = this.input.charCodeAt(this.state.pos);      if (ch === quote) break;      if (ch === 38) {        out += this.input.slice(chunkStart, this.state.pos);        out += this.jsxReadEntity();        chunkStart = this.state.pos;      } else if (isNewLine(ch)) {        out += this.input.slice(chunkStart, this.state.pos);        out += this.jsxReadNewLine(false);        chunkStart = this.state.pos;      } else {        ++this.state.pos;      }    }    out += this.input.slice(chunkStart, this.state.pos++);    return this.finishToken(123, out);  }  jsxReadEntity() {    let str = "";    let count = 0;    let entity;    let ch = this.input[this.state.pos];    const startPos = ++this.state.pos;    while (this.state.pos < this.length && count++ < 10) {      ch = this.input[this.state.pos++];      if (ch === ";") {        if (str[0] === "#") {          if (str[1] === "x") {            str = str.substr(2);            if (HEX_NUMBER.test(str)) {              entity = String.fromCodePoint(parseInt(str, 16));            }          } else {            str = str.substr(1);            if (DECIMAL_NUMBER.test(str)) {              entity = String.fromCodePoint(parseInt(str, 10));            }          }        } else {          entity = entities[str];        }        break;      }      str += ch;    }    if (!entity) {      this.state.pos = startPos;      return "&";    }    return entity;  }  jsxReadWord() {    let ch;    const start = this.state.pos;    do {      ch = this.input.charCodeAt(++this.state.pos);    } while (isIdentifierChar(ch) || ch === 45);    return this.finishToken(130, this.input.slice(start, this.state.pos));  }  jsxParseIdentifier() {    const node = this.startNode();    if (this.match(130)) {      node.name = this.state.value;    } else if (tokenIsKeyword(this.state.type)) {      node.name = tokenLabelName(this.state.type);    } else {      this.unexpected();    }    this.next();    return this.finishNode(node, "JSXIdentifier");  }  jsxParseNamespacedName() {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const name = this.jsxParseIdentifier();    if (!this.eat(14)) return name;    const node = this.startNodeAt(startPos, startLoc);    node.namespace = name;    node.name = this.jsxParseIdentifier();    return this.finishNode(node, "JSXNamespacedName");  }  jsxParseElementName() {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    let node = this.jsxParseNamespacedName();    if (node.type === "JSXNamespacedName") {      return node;    }    while (this.eat(16)) {      const newNode = this.startNodeAt(startPos, startLoc);      newNode.object = node;      newNode.property = this.jsxParseIdentifier();      node = this.finishNode(newNode, "JSXMemberExpression");    }    return node;  }  jsxParseAttributeValue() {    let node;    switch (this.state.type) {      case 5:        node = this.startNode();        this.next();        node = this.jsxParseExpressionContainer(node);        if (node.expression.type === "JSXEmptyExpression") {          this.raise(node.start, JsxErrors.AttributeIsEmpty);        }        return node;      case 132:      case 123:        return this.parseExprAtom();      default:        throw this.raise(this.state.start, JsxErrors.UnsupportedJsxValue);    }  }  jsxParseEmptyExpression() {    const node = this.startNodeAt(this.state.lastTokEnd, this.state.lastTokEndLoc);    return this.finishNodeAt(node, "JSXEmptyExpression", this.state.start, this.state.startLoc);  }  jsxParseSpreadChild(node) {    this.next();    node.expression = this.parseExpression();    this.expect(8);    return this.finishNode(node, "JSXSpreadChild");  }  jsxParseExpressionContainer(node) {    if (this.match(8)) {      node.expression = this.jsxParseEmptyExpression();    } else {      const expression = this.parseExpression();      node.expression = expression;    }    this.expect(8);    return this.finishNode(node, "JSXExpressionContainer");  }  jsxParseAttribute() {    const node = this.startNode();    if (this.eat(5)) {      this.expect(21);      node.argument = this.parseMaybeAssignAllowIn();      this.expect(8);      return this.finishNode(node, "JSXSpreadAttribute");    }    node.name = this.jsxParseNamespacedName();    node.value = this.eat(27) ? this.jsxParseAttributeValue() : null;    return this.finishNode(node, "JSXAttribute");  }  jsxParseOpeningElementAt(startPos, startLoc) {    const node = this.startNodeAt(startPos, startLoc);    if (this.match(133)) {      this.expect(133);      return this.finishNode(node, "JSXOpeningFragment");    }    node.name = this.jsxParseElementName();    return this.jsxParseOpeningElementAfterName(node);  }  jsxParseOpeningElementAfterName(node) {    const attributes = [];    while (!this.match(50) && !this.match(133)) {      attributes.push(this.jsxParseAttribute());    }    node.attributes = attributes;    node.selfClosing = this.eat(50);    this.expect(133);    return this.finishNode(node, "JSXOpeningElement");  }  jsxParseClosingElementAt(startPos, startLoc) {    const node = this.startNodeAt(startPos, startLoc);    if (this.match(133)) {      this.expect(133);      return this.finishNode(node, "JSXClosingFragment");    }    node.name = this.jsxParseElementName();    this.expect(133);    return this.finishNode(node, "JSXClosingElement");  }  jsxParseElementAt(startPos, startLoc) {    const node = this.startNodeAt(startPos, startLoc);    const children = [];    const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);    let closingElement = null;    if (!openingElement.selfClosing) {      contents: for (;;) {        switch (this.state.type) {          case 132:            startPos = this.state.start;            startLoc = this.state.startLoc;            this.next();            if (this.eat(50)) {              closingElement = this.jsxParseClosingElementAt(startPos, startLoc);              break contents;            }            children.push(this.jsxParseElementAt(startPos, startLoc));            break;          case 131:            children.push(this.parseExprAtom());            break;          case 5:            {              const node = this.startNode();              this.next();              if (this.match(21)) {                children.push(this.jsxParseSpreadChild(node));              } else {                children.push(this.jsxParseExpressionContainer(node));              }              break;            }          default:            throw this.unexpected();        }      }      if (isFragment(openingElement) && !isFragment(closingElement)) {        this.raise(closingElement.start, JsxErrors.MissingClosingTagFragment);      } else if (!isFragment(openingElement) && isFragment(closingElement)) {        this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name));      } else if (!isFragment(openingElement) && !isFragment(closingElement)) {        if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {          this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name));        }      }    }    if (isFragment(openingElement)) {      node.openingFragment = openingElement;      node.closingFragment = closingElement;    } else {      node.openingElement = openingElement;      node.closingElement = closingElement;    }    node.children = children;    if (this.match(43)) {      throw this.raise(this.state.start, JsxErrors.UnwrappedAdjacentJSXElements);    }    return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement");  }  jsxParseElement() {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    this.next();    return this.jsxParseElementAt(startPos, startLoc);  }  parseExprAtom(refExpressionErrors) {    if (this.match(131)) {      return this.parseLiteral(this.state.value, "JSXText");    } else if (this.match(132)) {      return this.jsxParseElement();    } else if (this.match(43) && this.input.charCodeAt(this.state.pos) !== 33) {      this.replaceToken(132);      return this.jsxParseElement();    } else {      return super.parseExprAtom(refExpressionErrors);    }  }  getTokenFromCode(code) {    const context = this.curContext();    if (context === types.j_expr) {      return this.jsxReadToken();    }    if (context === types.j_oTag || context === types.j_cTag) {      if (isIdentifierStart(code)) {        return this.jsxReadWord();      }      if (code === 62) {        ++this.state.pos;        return this.finishToken(133);      }      if ((code === 34 || code === 39) && context === types.j_oTag) {        return this.jsxReadString(code);      }    }    if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {      ++this.state.pos;      return this.finishToken(132);    }    return super.getTokenFromCode(code);  }  updateContext(prevType) {    super.updateContext(prevType);    const {      context,      type    } = this.state;    if (type === 50 && prevType === 132) {      context.splice(-2, 2, types.j_cTag);      this.state.canStartJSXElement = false;    } else if (type === 132) {      context.push(types.j_expr, types.j_oTag);    } else if (type === 133) {      const out = context.pop();      if (out === types.j_oTag && prevType === 50 || out === types.j_cTag) {        context.pop();        this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;      } else {        this.state.canStartJSXElement = true;      }    } else {      this.state.canStartJSXElement = tokenComesBeforeExpression(type);    }  }});class TypeScriptScope extends Scope {  constructor(...args) {    super(...args);    this.types = new Set();    this.enums = new Set();    this.constEnums = new Set();    this.classes = new Set();    this.exportOnlyBindings = new Set();  }}class TypeScriptScopeHandler extends ScopeHandler {  createScope(flags) {    return new TypeScriptScope(flags);  }  declareName(name, bindingType, pos) {    const scope = this.currentScope();    if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {      this.maybeExportDefined(scope, name);      scope.exportOnlyBindings.add(name);      return;    }    super.declareName(...arguments);    if (bindingType & BIND_KIND_TYPE) {      if (!(bindingType & BIND_KIND_VALUE)) {        this.checkRedeclarationInScope(scope, name, bindingType, pos);        this.maybeExportDefined(scope, name);      }      scope.types.add(name);    }    if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name);    if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name);    if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name);  }  isRedeclaredInScope(scope, name, bindingType) {    if (scope.enums.has(name)) {      if (bindingType & BIND_FLAGS_TS_ENUM) {        const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);        const wasConst = scope.constEnums.has(name);        return isConst !== wasConst;      }      return true;    }    if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) {      if (scope.lexical.has(name)) {        return !!(bindingType & BIND_KIND_VALUE);      } else {        return false;      }    }    if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) {      return true;    }    return super.isRedeclaredInScope(...arguments);  }  checkLocalExport(id) {    const topLevelScope = this.scopeStack[0];    const {      name    } = id;    if (!topLevelScope.types.has(name) && !topLevelScope.exportOnlyBindings.has(name)) {      super.checkLocalExport(id);    }  }}function nonNull(x) {  if (x == null) {    throw new Error(`Unexpected ${x} value.`);  }  return x;}function assert(x) {  if (!x) {    throw new Error("Assert fail");  }}const TSErrors = makeErrorTemplates({  AbstractMethodHasImplementation: "Method '%0' cannot have an implementation because it is marked abstract.",  AbstractPropertyHasInitializer: "Property '%0' cannot have an initializer because it is marked abstract.",  AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.",  AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.",  ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.",  ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.",  ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.",  DeclareAccessor: "'declare' is not allowed in %0ters.",  DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.",  DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.",  DuplicateAccessibilityModifier: "Accessibility modifier already seen.",  DuplicateModifier: "Duplicate modifier: '%0'.",  EmptyHeritageClauseType: "'%0' list cannot be empty.",  EmptyTypeArguments: "Type argument list cannot be empty.",  EmptyTypeParameters: "Type parameter list cannot be empty.",  ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.",  ImportAliasHasImportType: "An import alias can not use 'import type'.",  IncompatibleModifiers: "'%0' modifier cannot be used with '%1' modifier.",  IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.",  IndexSignatureHasAccessibility: "Index signatures cannot have an accessibility modifier ('%0').",  IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.",  IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.",  IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.",  InvalidModifierOnTypeMember: "'%0' modifier cannot appear on a type member.",  InvalidModifiersOrder: "'%0' modifier must precede '%1' modifier.",  InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.",  MissingInterfaceName: "'interface' declarations must be followed by an identifier.",  MixedLabeledAndUnlabeledElements: "Tuple members must all have names or all not have names.",  NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.",  NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.",  OptionalTypeBeforeRequired: "A required element cannot follow an optional element.",  OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.",  PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",  PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.",  PrivateElementHasAccessibility: "Private elements cannot have an accessibility modifier ('%0').",  ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.",  ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.",  ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",  SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.",  SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.",  SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.",  StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.",  TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",  TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.",  TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",  TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",  UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.",  UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.",  UnexpectedTypeAnnotation: "Did not expect a type annotation here.",  UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.",  UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.",  UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.",  UnsupportedSignatureParameterKind: "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got %0."}, ErrorCodes.SyntaxError, "typescript");function keywordTypeFromName(value) {  switch (value) {    case "any":      return "TSAnyKeyword";    case "boolean":      return "TSBooleanKeyword";    case "bigint":      return "TSBigIntKeyword";    case "never":      return "TSNeverKeyword";    case "number":      return "TSNumberKeyword";    case "object":      return "TSObjectKeyword";    case "string":      return "TSStringKeyword";    case "symbol":      return "TSSymbolKeyword";    case "undefined":      return "TSUndefinedKeyword";    case "unknown":      return "TSUnknownKeyword";    default:      return undefined;  }}function tsIsAccessModifier(modifier) {  return modifier === "private" || modifier === "public" || modifier === "protected";}var typescript = (superClass => class extends superClass {  getScopeHandler() {    return TypeScriptScopeHandler;  }  tsIsIdentifier() {    return tokenIsIdentifier(this.state.type);  }  tsTokenCanFollowModifier() {    return (this.match(0) || this.match(5) || this.match(49) || this.match(21) || this.match(128) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak();  }  tsNextTokenCanFollowModifier() {    this.next();    return this.tsTokenCanFollowModifier();  }  tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) {    if (!tokenIsIdentifier(this.state.type)) {      return undefined;    }    const modifier = this.state.value;    if (allowedModifiers.indexOf(modifier) !== -1) {      if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {        return undefined;      }      if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {        return modifier;      }    }    return undefined;  }  tsParseModifiers(modified, allowedModifiers, disallowedModifiers, errorTemplate, stopOnStartOfClassStaticBlock) {    const enforceOrder = (pos, modifier, before, after) => {      if (modifier === before && modified[after]) {        this.raise(pos, TSErrors.InvalidModifiersOrder, before, after);      }    };    const incompatible = (pos, modifier, mod1, mod2) => {      if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {        this.raise(pos, TSErrors.IncompatibleModifiers, mod1, mod2);      }    };    for (;;) {      const startPos = this.state.start;      const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock);      if (!modifier) break;      if (tsIsAccessModifier(modifier)) {        if (modified.accessibility) {          this.raise(startPos, TSErrors.DuplicateAccessibilityModifier);        } else {          enforceOrder(startPos, modifier, modifier, "override");          enforceOrder(startPos, modifier, modifier, "static");          enforceOrder(startPos, modifier, modifier, "readonly");          modified.accessibility = modifier;        }      } else {        if (Object.hasOwnProperty.call(modified, modifier)) {          this.raise(startPos, TSErrors.DuplicateModifier, modifier);        } else {          enforceOrder(startPos, modifier, "static", "readonly");          enforceOrder(startPos, modifier, "static", "override");          enforceOrder(startPos, modifier, "override", "readonly");          enforceOrder(startPos, modifier, "abstract", "override");          incompatible(startPos, modifier, "declare", "override");          incompatible(startPos, modifier, "static", "abstract");        }        modified[modifier] = true;      }      if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {        this.raise(startPos, errorTemplate, modifier);      }    }  }  tsIsListTerminator(kind) {    switch (kind) {      case "EnumMembers":      case "TypeMembers":        return this.match(8);      case "HeritageClauseElement":        return this.match(5);      case "TupleElementTypes":        return this.match(3);      case "TypeParametersOrArguments":        return this.match(44);    }    throw new Error("Unreachable");  }  tsParseList(kind, parseElement) {    const result = [];    while (!this.tsIsListTerminator(kind)) {      result.push(parseElement());    }    return result;  }  tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {    return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));  }  tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {    const result = [];    let trailingCommaPos = -1;    for (;;) {      if (this.tsIsListTerminator(kind)) {        break;      }      trailingCommaPos = -1;      const element = parseElement();      if (element == null) {        return undefined;      }      result.push(element);      if (this.eat(12)) {        trailingCommaPos = this.state.lastTokStart;        continue;      }      if (this.tsIsListTerminator(kind)) {        break;      }      if (expectSuccess) {        this.expect(12);      }      return undefined;    }    if (refTrailingCommaPos) {      refTrailingCommaPos.value = trailingCommaPos;    }    return result;  }  tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {    if (!skipFirstToken) {      if (bracket) {        this.expect(0);      } else {        this.expect(43);      }    }    const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);    if (bracket) {      this.expect(3);    } else {      this.expect(44);    }    return result;  }  tsParseImportType() {    const node = this.startNode();    this.expect(77);    this.expect(10);    if (!this.match(123)) {      this.raise(this.state.start, TSErrors.UnsupportedImportTypeArgument);    }    node.argument = this.parseExprAtom();    this.expect(11);    if (this.eat(16)) {      node.qualifier = this.tsParseEntityName(true);    }    if (this.match(43)) {      node.typeParameters = this.tsParseTypeArguments();    }    return this.finishNode(node, "TSImportType");  }  tsParseEntityName(allowReservedWords) {    let entity = this.parseIdentifier();    while (this.eat(16)) {      const node = this.startNodeAtNode(entity);      node.left = entity;      node.right = this.parseIdentifier(allowReservedWords);      entity = this.finishNode(node, "TSQualifiedName");    }    return entity;  }  tsParseTypeReference() {    const node = this.startNode();    node.typeName = this.tsParseEntityName(false);    if (!this.hasPrecedingLineBreak() && this.match(43)) {      node.typeParameters = this.tsParseTypeArguments();    }    return this.finishNode(node, "TSTypeReference");  }  tsParseThisTypePredicate(lhs) {    this.next();    const node = this.startNodeAtNode(lhs);    node.parameterName = lhs;    node.typeAnnotation = this.tsParseTypeAnnotation(false);    node.asserts = false;    return this.finishNode(node, "TSTypePredicate");  }  tsParseThisTypeNode() {    const node = this.startNode();    this.next();    return this.finishNode(node, "TSThisType");  }  tsParseTypeQuery() {    const node = this.startNode();    this.expect(81);    if (this.match(77)) {      node.exprName = this.tsParseImportType();    } else {      node.exprName = this.tsParseEntityName(true);    }    return this.finishNode(node, "TSTypeQuery");  }  tsParseTypeParameter() {    const node = this.startNode();    node.name = this.tsParseTypeParameterName();    node.constraint = this.tsEatThenParseType(75);    node.default = this.tsEatThenParseType(27);    return this.finishNode(node, "TSTypeParameter");  }  tsTryParseTypeParameters() {    if (this.match(43)) {      return this.tsParseTypeParameters();    }  }  tsParseTypeParameters() {    const node = this.startNode();    if (this.match(43) || this.match(132)) {      this.next();    } else {      this.unexpected();    }    const refTrailingCommaPos = {      value: -1    };    node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true, refTrailingCommaPos);    if (node.params.length === 0) {      this.raise(node.start, TSErrors.EmptyTypeParameters);    }    if (refTrailingCommaPos.value !== -1) {      this.addExtra(node, "trailingComma", refTrailingCommaPos.value);    }    return this.finishNode(node, "TSTypeParameterDeclaration");  }  tsTryNextParseConstantContext() {    if (this.lookahead().type === 69) {      this.next();      return this.tsParseTypeReference();    }    return null;  }  tsFillSignature(returnToken, signature) {    const returnTokenRequired = returnToken === 19;    signature.typeParameters = this.tsTryParseTypeParameters();    this.expect(10);    signature.parameters = this.tsParseBindingListForSignature();    if (returnTokenRequired) {      signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken);    } else if (this.match(returnToken)) {      signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken);    }  }  tsParseBindingListForSignature() {    return this.parseBindingList(11, 41).map(pattern => {      if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") {        this.raise(pattern.start, TSErrors.UnsupportedSignatureParameterKind, pattern.type);      }      return pattern;    });  }  tsParseTypeMemberSemicolon() {    if (!this.eat(12) && !this.isLineTerminator()) {      this.expect(13);    }  }  tsParseSignatureMember(kind, node) {    this.tsFillSignature(14, node);    this.tsParseTypeMemberSemicolon();    return this.finishNode(node, kind);  }  tsIsUnambiguouslyIndexSignature() {    this.next();    if (tokenIsIdentifier(this.state.type)) {      this.next();      return this.match(14);    }    return false;  }  tsTryParseIndexSignature(node) {    if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {      return undefined;    }    this.expect(0);    const id = this.parseIdentifier();    id.typeAnnotation = this.tsParseTypeAnnotation();    this.resetEndLocation(id);    this.expect(3);    node.parameters = [id];    const type = this.tsTryParseTypeAnnotation();    if (type) node.typeAnnotation = type;    this.tsParseTypeMemberSemicolon();    return this.finishNode(node, "TSIndexSignature");  }  tsParsePropertyOrMethodSignature(node, readonly) {    if (this.eat(17)) node.optional = true;    const nodeAny = node;    if (this.match(10) || this.match(43)) {      if (readonly) {        this.raise(node.start, TSErrors.ReadonlyForMethodSignature);      }      const method = nodeAny;      if (method.kind && this.match(43)) {        this.raise(this.state.pos, TSErrors.AccesorCannotHaveTypeParameters);      }      this.tsFillSignature(14, method);      this.tsParseTypeMemberSemicolon();      if (method.kind === "get") {        if (method.parameters.length > 0) {          this.raise(this.state.pos, ErrorMessages.BadGetterArity);          if (this.isThisParam(method.parameters[0])) {            this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter);          }        }      } else if (method.kind === "set") {        if (method.parameters.length !== 1) {          this.raise(this.state.pos, ErrorMessages.BadSetterArity);        } else {          const firstParameter = method.parameters[0];          if (this.isThisParam(firstParameter)) {            this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter);          }          if (firstParameter.type === "Identifier" && firstParameter.optional) {            this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveOptionalParameter);          }          if (firstParameter.type === "RestElement") {            this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveRestParameter);          }        }        if (method.typeAnnotation) {          this.raise(method.typeAnnotation.start, TSErrors.SetAccesorCannotHaveReturnType);        }      } else {        method.kind = "method";      }      return this.finishNode(method, "TSMethodSignature");    } else {      const property = nodeAny;      if (readonly) property.readonly = true;      const type = this.tsTryParseTypeAnnotation();      if (type) property.typeAnnotation = type;      this.tsParseTypeMemberSemicolon();      return this.finishNode(property, "TSPropertySignature");    }  }  tsParseTypeMember() {    const node = this.startNode();    if (this.match(10) || this.match(43)) {      return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);    }    if (this.match(71)) {      const id = this.startNode();      this.next();      if (this.match(10) || this.match(43)) {        return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);      } else {        node.key = this.createIdentifier(id, "new");        return this.tsParsePropertyOrMethodSignature(node, false);      }    }    this.tsParseModifiers(node, ["readonly"], ["declare", "abstract", "private", "protected", "public", "static", "override"], TSErrors.InvalidModifierOnTypeMember);    const idx = this.tsTryParseIndexSignature(node);    if (idx) {      return idx;    }    this.parsePropertyName(node);    if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) {      node.kind = node.key.name;      this.parsePropertyName(node);    }    return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);  }  tsParseTypeLiteral() {    const node = this.startNode();    node.members = this.tsParseObjectTypeMembers();    return this.finishNode(node, "TSTypeLiteral");  }  tsParseObjectTypeMembers() {    this.expect(5);    const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));    this.expect(8);    return members;  }  tsIsStartOfMappedType() {    this.next();    if (this.eat(47)) {      return this.isContextual(112);    }    if (this.isContextual(112)) {      this.next();    }    if (!this.match(0)) {      return false;    }    this.next();    if (!this.tsIsIdentifier()) {      return false;    }    this.next();    return this.match(52);  }  tsParseMappedTypeParameter() {    const node = this.startNode();    node.name = this.tsParseTypeParameterName();    node.constraint = this.tsExpectThenParseType(52);    return this.finishNode(node, "TSTypeParameter");  }  tsParseMappedType() {    const node = this.startNode();    this.expect(5);    if (this.match(47)) {      node.readonly = this.state.value;      this.next();      this.expectContextual(112);    } else if (this.eatContextual(112)) {      node.readonly = true;    }    this.expect(0);    node.typeParameter = this.tsParseMappedTypeParameter();    node.nameType = this.eatContextual(87) ? this.tsParseType() : null;    this.expect(3);    if (this.match(47)) {      node.optional = this.state.value;      this.next();      this.expect(17);    } else if (this.eat(17)) {      node.optional = true;    }    node.typeAnnotation = this.tsTryParseType();    this.semicolon();    this.expect(8);    return this.finishNode(node, "TSMappedType");  }  tsParseTupleType() {    const node = this.startNode();    node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);    let seenOptionalElement = false;    let labeledElements = null;    node.elementTypes.forEach(elementNode => {      var _labeledElements;      let {        type      } = elementNode;      if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) {        this.raise(elementNode.start, TSErrors.OptionalTypeBeforeRequired);      }      seenOptionalElement = seenOptionalElement || type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType";      if (type === "TSRestType") {        elementNode = elementNode.typeAnnotation;        type = elementNode.type;      }      const isLabeled = type === "TSNamedTupleMember";      labeledElements = (_labeledElements = labeledElements) != null ? _labeledElements : isLabeled;      if (labeledElements !== isLabeled) {        this.raise(elementNode.start, TSErrors.MixedLabeledAndUnlabeledElements);      }    });    return this.finishNode(node, "TSTupleType");  }  tsParseTupleElementType() {    const {      start: startPos,      startLoc    } = this.state;    const rest = this.eat(21);    let type = this.tsParseType();    const optional = this.eat(17);    const labeled = this.eat(14);    if (labeled) {      const labeledNode = this.startNodeAtNode(type);      labeledNode.optional = optional;      if (type.type === "TSTypeReference" && !type.typeParameters && type.typeName.type === "Identifier") {        labeledNode.label = type.typeName;      } else {        this.raise(type.start, TSErrors.InvalidTupleMemberLabel);        labeledNode.label = type;      }      labeledNode.elementType = this.tsParseType();      type = this.finishNode(labeledNode, "TSNamedTupleMember");    } else if (optional) {      const optionalTypeNode = this.startNodeAtNode(type);      optionalTypeNode.typeAnnotation = type;      type = this.finishNode(optionalTypeNode, "TSOptionalType");    }    if (rest) {      const restNode = this.startNodeAt(startPos, startLoc);      restNode.typeAnnotation = type;      type = this.finishNode(restNode, "TSRestType");    }    return type;  }  tsParseParenthesizedType() {    const node = this.startNode();    this.expect(10);    node.typeAnnotation = this.tsParseType();    this.expect(11);    return this.finishNode(node, "TSParenthesizedType");  }  tsParseFunctionOrConstructorType(type, abstract) {    const node = this.startNode();    if (type === "TSConstructorType") {      node.abstract = !!abstract;      if (abstract) this.next();      this.next();    }    this.tsFillSignature(19, node);    return this.finishNode(node, type);  }  tsParseLiteralTypeNode() {    const node = this.startNode();    node.literal = (() => {      switch (this.state.type) {        case 124:        case 125:        case 123:        case 79:        case 80:          return this.parseExprAtom();        default:          throw this.unexpected();      }    })();    return this.finishNode(node, "TSLiteralType");  }  tsParseTemplateLiteralType() {    const node = this.startNode();    node.literal = this.parseTemplate(false);    return this.finishNode(node, "TSLiteralType");  }  parseTemplateSubstitution() {    if (this.state.inType) return this.tsParseType();    return super.parseTemplateSubstitution();  }  tsParseThisTypeOrThisTypePredicate() {    const thisKeyword = this.tsParseThisTypeNode();    if (this.isContextual(107) && !this.hasPrecedingLineBreak()) {      return this.tsParseThisTypePredicate(thisKeyword);    } else {      return thisKeyword;    }  }  tsParseNonArrayType() {    switch (this.state.type) {      case 123:      case 124:      case 125:      case 79:      case 80:        return this.tsParseLiteralTypeNode();      case 47:        if (this.state.value === "-") {          const node = this.startNode();          const nextToken = this.lookahead();          if (nextToken.type !== 124 && nextToken.type !== 125) {            throw this.unexpected();          }          node.literal = this.parseMaybeUnary();          return this.finishNode(node, "TSLiteralType");        }        break;      case 72:        return this.tsParseThisTypeOrThisTypePredicate();      case 81:        return this.tsParseTypeQuery();      case 77:        return this.tsParseImportType();      case 5:        return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();      case 0:        return this.tsParseTupleType();      case 10:        return this.tsParseParenthesizedType();      case 22:        return this.tsParseTemplateLiteralType();      default:        {          const {            type          } = this.state;          if (tokenIsIdentifier(type) || type === 82 || type === 78) {            const nodeType = type === 82 ? "TSVoidKeyword" : type === 78 ? "TSNullKeyword" : keywordTypeFromName(this.state.value);            if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {              const node = this.startNode();              this.next();              return this.finishNode(node, nodeType);            }            return this.tsParseTypeReference();          }        }    }    throw this.unexpected();  }  tsParseArrayTypeOrHigher() {    let type = this.tsParseNonArrayType();    while (!this.hasPrecedingLineBreak() && this.eat(0)) {      if (this.match(3)) {        const node = this.startNodeAtNode(type);        node.elementType = type;        this.expect(3);        type = this.finishNode(node, "TSArrayType");      } else {        const node = this.startNodeAtNode(type);        node.objectType = type;        node.indexType = this.tsParseType();        this.expect(3);        type = this.finishNode(node, "TSIndexedAccessType");      }    }    return type;  }  tsParseTypeOperator() {    const node = this.startNode();    const operator = this.state.value;    this.next();    node.operator = operator;    node.typeAnnotation = this.tsParseTypeOperatorOrHigher();    if (operator === "readonly") {      this.tsCheckTypeAnnotationForReadOnly(node);    }    return this.finishNode(node, "TSTypeOperator");  }  tsCheckTypeAnnotationForReadOnly(node) {    switch (node.typeAnnotation.type) {      case "TSTupleType":      case "TSArrayType":        return;      default:        this.raise(node.start, TSErrors.UnexpectedReadonly);    }  }  tsParseInferType() {    const node = this.startNode();    this.expectContextual(106);    const typeParameter = this.startNode();    typeParameter.name = this.tsParseTypeParameterName();    node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");    return this.finishNode(node, "TSInferType");  }  tsParseTypeOperatorOrHigher() {    const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;    return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(106) ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher();  }  tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {    const node = this.startNode();    const hasLeadingOperator = this.eat(operator);    const types = [];    do {      types.push(parseConstituentType());    } while (this.eat(operator));    if (types.length === 1 && !hasLeadingOperator) {      return types[0];    }    node.types = types;    return this.finishNode(node, kind);  }  tsParseIntersectionTypeOrHigher() {    return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 41);  }  tsParseUnionTypeOrHigher() {    return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 39);  }  tsIsStartOfFunctionType() {    if (this.match(43)) {      return true;    }    return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));  }  tsSkipParameterStart() {    if (tokenIsIdentifier(this.state.type) || this.match(72)) {      this.next();      return true;    }    if (this.match(5)) {      let braceStackCounter = 1;      this.next();      while (braceStackCounter > 0) {        if (this.match(5)) {          ++braceStackCounter;        } else if (this.match(8)) {          --braceStackCounter;        }        this.next();      }      return true;    }    if (this.match(0)) {      let braceStackCounter = 1;      this.next();      while (braceStackCounter > 0) {        if (this.match(0)) {          ++braceStackCounter;        } else if (this.match(3)) {          --braceStackCounter;        }        this.next();      }      return true;    }    return false;  }  tsIsUnambiguouslyStartOfFunctionType() {    this.next();    if (this.match(11) || this.match(21)) {      return true;    }    if (this.tsSkipParameterStart()) {      if (this.match(14) || this.match(12) || this.match(17) || this.match(27)) {        return true;      }      if (this.match(11)) {        this.next();        if (this.match(19)) {          return true;        }      }    }    return false;  }  tsParseTypeOrTypePredicateAnnotation(returnToken) {    return this.tsInType(() => {      const t = this.startNode();      this.expect(returnToken);      const node = this.startNode();      const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));      if (asserts && this.match(72)) {        let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();        if (thisTypePredicate.type === "TSThisType") {          node.parameterName = thisTypePredicate;          node.asserts = true;          node.typeAnnotation = null;          thisTypePredicate = this.finishNode(node, "TSTypePredicate");        } else {          this.resetStartLocationFromNode(thisTypePredicate, node);          thisTypePredicate.asserts = true;        }        t.typeAnnotation = thisTypePredicate;        return this.finishNode(t, "TSTypeAnnotation");      }      const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));      if (!typePredicateVariable) {        if (!asserts) {          return this.tsParseTypeAnnotation(false, t);        }        node.parameterName = this.parseIdentifier();        node.asserts = asserts;        node.typeAnnotation = null;        t.typeAnnotation = this.finishNode(node, "TSTypePredicate");        return this.finishNode(t, "TSTypeAnnotation");      }      const type = this.tsParseTypeAnnotation(false);      node.parameterName = typePredicateVariable;      node.typeAnnotation = type;      node.asserts = asserts;      t.typeAnnotation = this.finishNode(node, "TSTypePredicate");      return this.finishNode(t, "TSTypeAnnotation");    });  }  tsTryParseTypeOrTypePredicateAnnotation() {    return this.match(14) ? this.tsParseTypeOrTypePredicateAnnotation(14) : undefined;  }  tsTryParseTypeAnnotation() {    return this.match(14) ? this.tsParseTypeAnnotation() : undefined;  }  tsTryParseType() {    return this.tsEatThenParseType(14);  }  tsParseTypePredicatePrefix() {    const id = this.parseIdentifier();    if (this.isContextual(107) && !this.hasPrecedingLineBreak()) {      this.next();      return id;    }  }  tsParseTypePredicateAsserts() {    if (this.state.type !== 100) {      return false;    }    const containsEsc = this.state.containsEsc;    this.next();    if (!tokenIsIdentifier(this.state.type) && !this.match(72)) {      return false;    }    if (containsEsc) {      this.raise(this.state.lastTokStart, ErrorMessages.InvalidEscapedReservedWord, "asserts");    }    return true;  }  tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {    this.tsInType(() => {      if (eatColon) this.expect(14);      t.typeAnnotation = this.tsParseType();    });    return this.finishNode(t, "TSTypeAnnotation");  }  tsParseType() {    assert(this.state.inType);    const type = this.tsParseNonConditionalType();    if (this.hasPrecedingLineBreak() || !this.eat(75)) {      return type;    }    const node = this.startNodeAtNode(type);    node.checkType = type;    node.extendsType = this.tsParseNonConditionalType();    this.expect(17);    node.trueType = this.tsParseType();    this.expect(14);    node.falseType = this.tsParseType();    return this.finishNode(node, "TSConditionalType");  }  isAbstractConstructorSignature() {    return this.isContextual(114) && this.lookahead().type === 71;  }  tsParseNonConditionalType() {    if (this.tsIsStartOfFunctionType()) {      return this.tsParseFunctionOrConstructorType("TSFunctionType");    }    if (this.match(71)) {      return this.tsParseFunctionOrConstructorType("TSConstructorType");    } else if (this.isAbstractConstructorSignature()) {      return this.tsParseFunctionOrConstructorType("TSConstructorType", true);    }    return this.tsParseUnionTypeOrHigher();  }  tsParseTypeAssertion() {    if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {      this.raise(this.state.start, TSErrors.ReservedTypeAssertion);    }    const node = this.startNode();    const _const = this.tsTryNextParseConstantContext();    node.typeAnnotation = _const || this.tsNextThenParseType();    this.expect(44);    node.expression = this.parseMaybeUnary();    return this.finishNode(node, "TSTypeAssertion");  }  tsParseHeritageClause(descriptor) {    const originalStart = this.state.start;    const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", this.tsParseExpressionWithTypeArguments.bind(this));    if (!delimitedList.length) {      this.raise(originalStart, TSErrors.EmptyHeritageClauseType, descriptor);    }    return delimitedList;  }  tsParseExpressionWithTypeArguments() {    const node = this.startNode();    node.expression = this.tsParseEntityName(false);    if (this.match(43)) {      node.typeParameters = this.tsParseTypeArguments();    }    return this.finishNode(node, "TSExpressionWithTypeArguments");  }  tsParseInterfaceDeclaration(node) {    if (tokenIsIdentifier(this.state.type)) {      node.id = this.parseIdentifier();      this.checkLVal(node.id, "typescript interface declaration", BIND_TS_INTERFACE);    } else {      node.id = null;      this.raise(this.state.start, TSErrors.MissingInterfaceName);    }    node.typeParameters = this.tsTryParseTypeParameters();    if (this.eat(75)) {      node.extends = this.tsParseHeritageClause("extends");    }    const body = this.startNode();    body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));    node.body = this.finishNode(body, "TSInterfaceBody");    return this.finishNode(node, "TSInterfaceDeclaration");  }  tsParseTypeAliasDeclaration(node) {    node.id = this.parseIdentifier();    this.checkLVal(node.id, "typescript type alias", BIND_TS_TYPE);    node.typeParameters = this.tsTryParseTypeParameters();    node.typeAnnotation = this.tsInType(() => {      this.expect(27);      if (this.isContextual(105) && this.lookahead().type !== 16) {        const node = this.startNode();        this.next();        return this.finishNode(node, "TSIntrinsicKeyword");      }      return this.tsParseType();    });    this.semicolon();    return this.finishNode(node, "TSTypeAliasDeclaration");  }  tsInNoContext(cb) {    const oldContext = this.state.context;    this.state.context = [oldContext[0]];    try {      return cb();    } finally {      this.state.context = oldContext;    }  }  tsInType(cb) {    const oldInType = this.state.inType;    this.state.inType = true;    try {      return cb();    } finally {      this.state.inType = oldInType;    }  }  tsEatThenParseType(token) {    return !this.match(token) ? undefined : this.tsNextThenParseType();  }  tsExpectThenParseType(token) {    return this.tsDoThenParseType(() => this.expect(token));  }  tsNextThenParseType() {    return this.tsDoThenParseType(() => this.next());  }  tsDoThenParseType(cb) {    return this.tsInType(() => {      cb();      return this.tsParseType();    });  }  tsParseEnumMember() {    const node = this.startNode();    node.id = this.match(123) ? this.parseExprAtom() : this.parseIdentifier(true);    if (this.eat(27)) {      node.initializer = this.parseMaybeAssignAllowIn();    }    return this.finishNode(node, "TSEnumMember");  }  tsParseEnumDeclaration(node, isConst) {    if (isConst) node.const = true;    node.id = this.parseIdentifier();    this.checkLVal(node.id, "typescript enum declaration", isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM);    this.expect(5);    node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));    this.expect(8);    return this.finishNode(node, "TSEnumDeclaration");  }  tsParseModuleBlock() {    const node = this.startNode();    this.scope.enter(SCOPE_OTHER);    this.expect(5);    this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);    this.scope.exit();    return this.finishNode(node, "TSModuleBlock");  }  tsParseModuleOrNamespaceDeclaration(node, nested = false) {    node.id = this.parseIdentifier();    if (!nested) {      this.checkLVal(node.id, "module or namespace declaration", BIND_TS_NAMESPACE);    }    if (this.eat(16)) {      const inner = this.startNode();      this.tsParseModuleOrNamespaceDeclaration(inner, true);      node.body = inner;    } else {      this.scope.enter(SCOPE_TS_MODULE);      this.prodParam.enter(PARAM);      node.body = this.tsParseModuleBlock();      this.prodParam.exit();      this.scope.exit();    }    return this.finishNode(node, "TSModuleDeclaration");  }  tsParseAmbientExternalModuleDeclaration(node) {    if (this.isContextual(103)) {      node.global = true;      node.id = this.parseIdentifier();    } else if (this.match(123)) {      node.id = this.parseExprAtom();    } else {      this.unexpected();    }    if (this.match(5)) {      this.scope.enter(SCOPE_TS_MODULE);      this.prodParam.enter(PARAM);      node.body = this.tsParseModuleBlock();      this.prodParam.exit();      this.scope.exit();    } else {      this.semicolon();    }    return this.finishNode(node, "TSModuleDeclaration");  }  tsParseImportEqualsDeclaration(node, isExport) {    node.isExport = isExport || false;    node.id = this.parseIdentifier();    this.checkLVal(node.id, "import equals declaration", BIND_LEXICAL);    this.expect(27);    const moduleReference = this.tsParseModuleReference();    if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") {      this.raise(moduleReference.start, TSErrors.ImportAliasHasImportType);    }    node.moduleReference = moduleReference;    this.semicolon();    return this.finishNode(node, "TSImportEqualsDeclaration");  }  tsIsExternalModuleReference() {    return this.isContextual(110) && this.lookaheadCharCode() === 40;  }  tsParseModuleReference() {    return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);  }  tsParseExternalModuleReference() {    const node = this.startNode();    this.expectContextual(110);    this.expect(10);    if (!this.match(123)) {      throw this.unexpected();    }    node.expression = this.parseExprAtom();    this.expect(11);    return this.finishNode(node, "TSExternalModuleReference");  }  tsLookAhead(f) {    const state = this.state.clone();    const res = f();    this.state = state;    return res;  }  tsTryParseAndCatch(f) {    const result = this.tryParse(abort => f() || abort());    if (result.aborted || !result.node) return undefined;    if (result.error) this.state = result.failState;    return result.node;  }  tsTryParse(f) {    const state = this.state.clone();    const result = f();    if (result !== undefined && result !== false) {      return result;    } else {      this.state = state;      return undefined;    }  }  tsTryParseDeclare(nany) {    if (this.isLineTerminator()) {      return;    }    let starttype = this.state.type;    let kind;    if (this.isContextual(93)) {      starttype = 68;      kind = "let";    }    return this.tsInAmbientContext(() => {      switch (starttype) {        case 62:          nany.declare = true;          return this.parseFunctionStatement(nany, false, true);        case 74:          nany.declare = true;          return this.parseClass(nany, true, false);        case 69:          if (this.match(69) && this.isLookaheadContextual("enum")) {            this.expect(69);            this.expectContextual(116);            return this.tsParseEnumDeclaration(nany, true);          }        case 68:          kind = kind || this.state.value;          return this.parseVarStatement(nany, kind);        case 103:          return this.tsParseAmbientExternalModuleDeclaration(nany);        default:          {            if (tokenIsIdentifier(starttype)) {              return this.tsParseDeclaration(nany, this.state.value, true);            }          }      }    });  }  tsTryParseExportDeclaration() {    return this.tsParseDeclaration(this.startNode(), this.state.value, true);  }  tsParseExpressionStatement(node, expr) {    switch (expr.name) {      case "declare":        {          const declaration = this.tsTryParseDeclare(node);          if (declaration) {            declaration.declare = true;            return declaration;          }          break;        }      case "global":        if (this.match(5)) {          this.scope.enter(SCOPE_TS_MODULE);          this.prodParam.enter(PARAM);          const mod = node;          mod.global = true;          mod.id = expr;          mod.body = this.tsParseModuleBlock();          this.scope.exit();          this.prodParam.exit();          return this.finishNode(mod, "TSModuleDeclaration");        }        break;      default:        return this.tsParseDeclaration(node, expr.name, false);    }  }  tsParseDeclaration(node, value, next) {    switch (value) {      case "abstract":        if (this.tsCheckLineTerminator(next) && (this.match(74) || tokenIsIdentifier(this.state.type))) {          return this.tsParseAbstractDeclaration(node);        }        break;      case "enum":        if (next || tokenIsIdentifier(this.state.type)) {          if (next) this.next();          return this.tsParseEnumDeclaration(node, false);        }        break;      case "interface":        if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {          return this.tsParseInterfaceDeclaration(node);        }        break;      case "module":        if (this.tsCheckLineTerminator(next)) {          if (this.match(123)) {            return this.tsParseAmbientExternalModuleDeclaration(node);          } else if (tokenIsIdentifier(this.state.type)) {            return this.tsParseModuleOrNamespaceDeclaration(node);          }        }        break;      case "namespace":        if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {          return this.tsParseModuleOrNamespaceDeclaration(node);        }        break;      case "type":        if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {          return this.tsParseTypeAliasDeclaration(node);        }        break;    }  }  tsCheckLineTerminator(next) {    if (next) {      if (this.hasFollowingLineBreak()) return false;      this.next();      return true;    }    return !this.isLineTerminator();  }  tsTryParseGenericAsyncArrowFunction(startPos, startLoc) {    if (!this.match(43)) {      return undefined;    }    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;    this.state.maybeInArrowParameters = true;    const res = this.tsTryParseAndCatch(() => {      const node = this.startNodeAt(startPos, startLoc);      node.typeParameters = this.tsParseTypeParameters();      super.parseFunctionParams(node);      node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();      this.expect(19);      return node;    });    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;    if (!res) {      return undefined;    }    return this.parseArrowExpression(res, null, true);  }  tsParseTypeArguments() {    const node = this.startNode();    node.params = this.tsInType(() => this.tsInNoContext(() => {      this.expect(43);      return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this));    }));    if (node.params.length === 0) {      this.raise(node.start, TSErrors.EmptyTypeArguments);    }    this.expect(44);    return this.finishNode(node, "TSTypeParameterInstantiation");  }  tsIsDeclarationStart() {    return tokenIsTSDeclarationStart(this.state.type);  }  isExportDefaultSpecifier() {    if (this.tsIsDeclarationStart()) return false;    return super.isExportDefaultSpecifier();  }  parseAssignableListItem(allowModifiers, decorators) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    let accessibility;    let readonly = false;    let override = false;    if (allowModifiers !== undefined) {      const modified = {};      this.tsParseModifiers(modified, ["public", "private", "protected", "override", "readonly"]);      accessibility = modified.accessibility;      override = modified.override;      readonly = modified.readonly;      if (allowModifiers === false && (accessibility || readonly || override)) {        this.raise(startPos, TSErrors.UnexpectedParameterModifier);      }    }    const left = this.parseMaybeDefault();    this.parseAssignableListItemTypes(left);    const elt = this.parseMaybeDefault(left.start, left.loc.start, left);    if (accessibility || readonly || override) {      const pp = this.startNodeAt(startPos, startLoc);      if (decorators.length) {        pp.decorators = decorators;      }      if (accessibility) pp.accessibility = accessibility;      if (readonly) pp.readonly = readonly;      if (override) pp.override = override;      if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {        this.raise(pp.start, TSErrors.UnsupportedParameterPropertyKind);      }      pp.parameter = elt;      return this.finishNode(pp, "TSParameterProperty");    }    if (decorators.length) {      left.decorators = decorators;    }    return elt;  }  parseFunctionBodyAndFinish(node, type, isMethod = false) {    if (this.match(14)) {      node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);    }    const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined;    if (bodilessType && !this.match(5) && this.isLineTerminator()) {      this.finishNode(node, bodilessType);      return;    }    if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) {      this.raise(node.start, TSErrors.DeclareFunctionHasImplementation);      if (node.declare) {        super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);        return;      }    }    super.parseFunctionBodyAndFinish(node, type, isMethod);  }  registerFunctionStatementId(node) {    if (!node.body && node.id) {      this.checkLVal(node.id, "function name", BIND_TS_AMBIENT);    } else {      super.registerFunctionStatementId(...arguments);    }  }  tsCheckForInvalidTypeCasts(items) {    items.forEach(node => {      if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") {        this.raise(node.typeAnnotation.start, TSErrors.UnexpectedTypeAnnotation);      }    });  }  toReferencedList(exprList, isInParens) {    this.tsCheckForInvalidTypeCasts(exprList);    return exprList;  }  parseArrayLike(...args) {    const node = super.parseArrayLike(...args);    if (node.type === "ArrayExpression") {      this.tsCheckForInvalidTypeCasts(node.elements);    }    return node;  }  parseSubscript(base, startPos, startLoc, noCalls, state) {    if (!this.hasPrecedingLineBreak() && this.match(33)) {      this.state.canStartJSXElement = false;      this.next();      const nonNullExpression = this.startNodeAt(startPos, startLoc);      nonNullExpression.expression = base;      return this.finishNode(nonNullExpression, "TSNonNullExpression");    }    let isOptionalCall = false;    if (this.match(18) && this.lookaheadCharCode() === 60) {      if (noCalls) {        state.stop = true;        return base;      }      state.optionalChainMember = isOptionalCall = true;      this.next();    }    if (this.match(43)) {      let missingParenErrorPos;      const result = this.tsTryParseAndCatch(() => {        if (!noCalls && this.atPossibleAsyncArrow(base)) {          const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc);          if (asyncArrowFn) {            return asyncArrowFn;          }        }        const node = this.startNodeAt(startPos, startLoc);        node.callee = base;        const typeArguments = this.tsParseTypeArguments();        if (typeArguments) {          if (isOptionalCall && !this.match(10)) {            missingParenErrorPos = this.state.pos;            this.unexpected();          }          if (!noCalls && this.eat(10)) {            node.arguments = this.parseCallExpressionArguments(11, false);            this.tsCheckForInvalidTypeCasts(node.arguments);            node.typeParameters = typeArguments;            if (state.optionalChainMember) {              node.optional = isOptionalCall;            }            return this.finishCallExpression(node, state.optionalChainMember);          } else if (this.match(22)) {            const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state);            result.typeParameters = typeArguments;            return result;          }        }        this.unexpected();      });      if (missingParenErrorPos) {        this.unexpected(missingParenErrorPos, 10);      }      if (result) return result;    }    return super.parseSubscript(base, startPos, startLoc, noCalls, state);  }  parseNewArguments(node) {    if (this.match(43)) {      const typeParameters = this.tsTryParseAndCatch(() => {        const args = this.tsParseTypeArguments();        if (!this.match(10)) this.unexpected();        return args;      });      if (typeParameters) {        node.typeParameters = typeParameters;      }    }    super.parseNewArguments(node);  }  parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {    if (tokenOperatorPrecedence(52) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual(87)) {      const node = this.startNodeAt(leftStartPos, leftStartLoc);      node.expression = left;      const _const = this.tsTryNextParseConstantContext();      if (_const) {        node.typeAnnotation = _const;      } else {        node.typeAnnotation = this.tsNextThenParseType();      }      this.finishNode(node, "TSAsExpression");      this.reScan_lt_gt();      return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);    }    return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec);  }  checkReservedWord(word, startLoc, checkKeywords, isBinding) {}  checkDuplicateExports() {}  parseImport(node) {    node.importKind = "value";    if (tokenIsIdentifier(this.state.type) || this.match(49) || this.match(5)) {      let ahead = this.lookahead();      if (this.isContextual(120) && ahead.type !== 12 && ahead.type !== 91 && ahead.type !== 27) {        node.importKind = "type";        this.next();        ahead = this.lookahead();      }      if (tokenIsIdentifier(this.state.type) && ahead.type === 27) {        return this.tsParseImportEqualsDeclaration(node);      }    }    const importNode = super.parseImport(node);    if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") {      this.raise(importNode.start, TSErrors.TypeImportCannotSpecifyDefaultAndNamed);    }    return importNode;  }  parseExport(node) {    if (this.match(77)) {      this.next();      if (this.isContextual(120) && this.lookaheadCharCode() !== 61) {        node.importKind = "type";        this.next();      } else {        node.importKind = "value";      }      return this.tsParseImportEqualsDeclaration(node, true);    } else if (this.eat(27)) {      const assign = node;      assign.expression = this.parseExpression();      this.semicolon();      return this.finishNode(assign, "TSExportAssignment");    } else if (this.eatContextual(87)) {      const decl = node;      this.expectContextual(118);      decl.id = this.parseIdentifier();      this.semicolon();      return this.finishNode(decl, "TSNamespaceExportDeclaration");    } else {      if (this.isContextual(120) && this.lookahead().type === 5) {        this.next();        node.exportKind = "type";      } else {        node.exportKind = "value";      }      return super.parseExport(node);    }  }  isAbstractClass() {    return this.isContextual(114) && this.lookahead().type === 74;  }  parseExportDefaultExpression() {    if (this.isAbstractClass()) {      const cls = this.startNode();      this.next();      cls.abstract = true;      this.parseClass(cls, true, true);      return cls;    }    if (this.match(119)) {      const interfaceNode = this.startNode();      this.next();      const result = this.tsParseInterfaceDeclaration(interfaceNode);      if (result) return result;    }    return super.parseExportDefaultExpression();  }  parseStatementContent(context, topLevel) {    if (this.state.type === 69) {      const ahead = this.lookahead();      if (ahead.type === 116) {        const node = this.startNode();        this.next();        this.expectContextual(116);        return this.tsParseEnumDeclaration(node, true);      }    }    return super.parseStatementContent(context, topLevel);  }  parseAccessModifier() {    return this.tsParseModifier(["public", "protected", "private"]);  }  tsHasSomeModifiers(member, modifiers) {    return modifiers.some(modifier => {      if (tsIsAccessModifier(modifier)) {        return member.accessibility === modifier;      }      return !!member[modifier];    });  }  tsIsStartOfStaticBlocks() {    return this.isContextual(98) && this.lookaheadCharCode() === 123;  }  parseClassMember(classBody, member, state) {    const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"];    this.tsParseModifiers(member, modifiers, undefined, undefined, true);    const callParseClassMemberWithIsStatic = () => {      if (this.tsIsStartOfStaticBlocks()) {        this.next();        this.next();        if (this.tsHasSomeModifiers(member, modifiers)) {          this.raise(this.state.pos, TSErrors.StaticBlockCannotHaveModifier);        }        this.parseClassStaticBlock(classBody, member);      } else {        this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);      }    };    if (member.declare) {      this.tsInAmbientContext(callParseClassMemberWithIsStatic);    } else {      callParseClassMemberWithIsStatic();    }  }  parseClassMemberWithIsStatic(classBody, member, state, isStatic) {    const idx = this.tsTryParseIndexSignature(member);    if (idx) {      classBody.body.push(idx);      if (member.abstract) {        this.raise(member.start, TSErrors.IndexSignatureHasAbstract);      }      if (member.accessibility) {        this.raise(member.start, TSErrors.IndexSignatureHasAccessibility, member.accessibility);      }      if (member.declare) {        this.raise(member.start, TSErrors.IndexSignatureHasDeclare);      }      if (member.override) {        this.raise(member.start, TSErrors.IndexSignatureHasOverride);      }      return;    }    if (!this.state.inAbstractClass && member.abstract) {      this.raise(member.start, TSErrors.NonAbstractClassHasAbstractMethod);    }    if (member.override) {      if (!state.hadSuperClass) {        this.raise(member.start, TSErrors.OverrideNotInSubClass);      }    }    super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);  }  parsePostMemberNameModifiers(methodOrProp) {    const optional = this.eat(17);    if (optional) methodOrProp.optional = true;    if (methodOrProp.readonly && this.match(10)) {      this.raise(methodOrProp.start, TSErrors.ClassMethodHasReadonly);    }    if (methodOrProp.declare && this.match(10)) {      this.raise(methodOrProp.start, TSErrors.ClassMethodHasDeclare);    }  }  parseExpressionStatement(node, expr) {    const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr) : undefined;    return decl || super.parseExpressionStatement(node, expr);  }  shouldParseExportDeclaration() {    if (this.tsIsDeclarationStart()) return true;    return super.shouldParseExportDeclaration();  }  parseConditional(expr, startPos, startLoc, refExpressionErrors) {    if (!this.state.maybeInArrowParameters || !this.match(17)) {      return super.parseConditional(expr, startPos, startLoc, refExpressionErrors);    }    const result = this.tryParse(() => super.parseConditional(expr, startPos, startLoc));    if (!result.node) {      if (result.error) {        super.setOptionalParametersError(refExpressionErrors, result.error);      }      return expr;    }    if (result.error) this.state = result.failState;    return result.node;  }  parseParenItem(node, startPos, startLoc) {    node = super.parseParenItem(node, startPos, startLoc);    if (this.eat(17)) {      node.optional = true;      this.resetEndLocation(node);    }    if (this.match(14)) {      const typeCastNode = this.startNodeAt(startPos, startLoc);      typeCastNode.expression = node;      typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();      return this.finishNode(typeCastNode, "TSTypeCastExpression");    }    return node;  }  parseExportDeclaration(node) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const isDeclare = this.eatContextual(115);    if (isDeclare && (this.isContextual(115) || !this.shouldParseExportDeclaration())) {      throw this.raise(this.state.start, TSErrors.ExpectedAmbientAfterExportDeclare);    }    let declaration;    if (tokenIsIdentifier(this.state.type)) {      declaration = this.tsTryParseExportDeclaration();    }    if (!declaration) {      declaration = super.parseExportDeclaration(node);    }    if (declaration && (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare)) {      node.exportKind = "type";    }    if (declaration && isDeclare) {      this.resetStartLocation(declaration, startPos, startLoc);      declaration.declare = true;    }    return declaration;  }  parseClassId(node, isStatement, optionalId) {    if ((!isStatement || optionalId) && this.isContextual(104)) {      return;    }    super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS);    const typeParameters = this.tsTryParseTypeParameters();    if (typeParameters) node.typeParameters = typeParameters;  }  parseClassPropertyAnnotation(node) {    if (!node.optional && this.eat(33)) {      node.definite = true;    }    const type = this.tsTryParseTypeAnnotation();    if (type) node.typeAnnotation = type;  }  parseClassProperty(node) {    this.parseClassPropertyAnnotation(node);    if (this.state.isAmbientContext && this.match(27)) {      this.raise(this.state.start, TSErrors.DeclareClassFieldHasInitializer);    }    if (node.abstract && this.match(27)) {      const {        key      } = node;      this.raise(this.state.start, TSErrors.AbstractPropertyHasInitializer, key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);    }    return super.parseClassProperty(node);  }  parseClassPrivateProperty(node) {    if (node.abstract) {      this.raise(node.start, TSErrors.PrivateElementHasAbstract);    }    if (node.accessibility) {      this.raise(node.start, TSErrors.PrivateElementHasAccessibility, node.accessibility);    }    this.parseClassPropertyAnnotation(node);    return super.parseClassPrivateProperty(node);  }  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {    const typeParameters = this.tsTryParseTypeParameters();    if (typeParameters && isConstructor) {      this.raise(typeParameters.start, TSErrors.ConstructorHasTypeParameters);    }    if (method.declare && (method.kind === "get" || method.kind === "set")) {      this.raise(method.start, TSErrors.DeclareAccessor, method.kind);    }    if (typeParameters) method.typeParameters = typeParameters;    super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);  }  pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {    const typeParameters = this.tsTryParseTypeParameters();    if (typeParameters) method.typeParameters = typeParameters;    super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);  }  declareClassPrivateMethodInScope(node, kind) {    if (node.type === "TSDeclareMethod") return;    if (node.type === "MethodDefinition" && !node.value.body) return;    super.declareClassPrivateMethodInScope(node, kind);  }  parseClassSuper(node) {    super.parseClassSuper(node);    if (node.superClass && this.match(43)) {      node.superTypeParameters = this.tsParseTypeArguments();    }    if (this.eatContextual(104)) {      node.implements = this.tsParseHeritageClause("implements");    }  }  parseObjPropValue(prop, ...args) {    const typeParameters = this.tsTryParseTypeParameters();    if (typeParameters) prop.typeParameters = typeParameters;    super.parseObjPropValue(prop, ...args);  }  parseFunctionParams(node, allowModifiers) {    const typeParameters = this.tsTryParseTypeParameters();    if (typeParameters) node.typeParameters = typeParameters;    super.parseFunctionParams(node, allowModifiers);  }  parseVarId(decl, kind) {    super.parseVarId(decl, kind);    if (decl.id.type === "Identifier" && this.eat(33)) {      decl.definite = true;    }    const type = this.tsTryParseTypeAnnotation();    if (type) {      decl.id.typeAnnotation = type;      this.resetEndLocation(decl.id);    }  }  parseAsyncArrowFromCallExpression(node, call) {    if (this.match(14)) {      node.returnType = this.tsParseTypeAnnotation();    }    return super.parseAsyncArrowFromCallExpression(node, call);  }  parseMaybeAssign(...args) {    var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3;    let state;    let jsx;    let typeCast;    if (this.hasPlugin("jsx") && (this.match(132) || this.match(43))) {      state = this.state.clone();      jsx = this.tryParse(() => super.parseMaybeAssign(...args), state);      if (!jsx.error) return jsx.node;      const {        context      } = this.state;      if (context[context.length - 1] === types.j_oTag) {        context.length -= 2;      } else if (context[context.length - 1] === types.j_expr) {        context.length -= 1;      }    }    if (!((_jsx = jsx) != null && _jsx.error) && !this.match(43)) {      return super.parseMaybeAssign(...args);    }    let typeParameters;    state = state || this.state.clone();    const arrow = this.tryParse(abort => {      var _expr$extra, _typeParameters;      typeParameters = this.tsParseTypeParameters();      const expr = super.parseMaybeAssign(...args);      if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {        abort();      }      if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {        this.resetStartLocationFromNode(expr, typeParameters);      }      expr.typeParameters = typeParameters;      return expr;    }, state);    if (!arrow.error && !arrow.aborted) {      if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);      return arrow.node;    }    if (!jsx) {      assert(!this.hasPlugin("jsx"));      typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);      if (!typeCast.error) return typeCast.node;    }    if ((_jsx2 = jsx) != null && _jsx2.node) {      this.state = jsx.failState;      return jsx.node;    }    if (arrow.node) {      this.state = arrow.failState;      if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);      return arrow.node;    }    if ((_typeCast = typeCast) != null && _typeCast.node) {      this.state = typeCast.failState;      return typeCast.node;    }    if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;    if (arrow.thrown) throw arrow.error;    if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error;    throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error);  }  reportReservedArrowTypeParam(node) {    var _node$extra;    if (node.params.length === 1 && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {      this.raise(node.start, TSErrors.ReservedArrowTypeParam);    }  }  parseMaybeUnary(refExpressionErrors) {    if (!this.hasPlugin("jsx") && this.match(43)) {      return this.tsParseTypeAssertion();    } else {      return super.parseMaybeUnary(refExpressionErrors);    }  }  parseArrow(node) {    if (this.match(14)) {      const result = this.tryParse(abort => {        const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);        if (this.canInsertSemicolon() || !this.match(19)) abort();        return returnType;      });      if (result.aborted) return;      if (!result.thrown) {        if (result.error) this.state = result.failState;        node.returnType = result.node;      }    }    return super.parseArrow(node);  }  parseAssignableListItemTypes(param) {    if (this.eat(17)) {      if (param.type !== "Identifier" && !this.state.isAmbientContext && !this.state.inType) {        this.raise(param.start, TSErrors.PatternIsOptional);      }      param.optional = true;    }    const type = this.tsTryParseTypeAnnotation();    if (type) param.typeAnnotation = type;    this.resetEndLocation(param);    return param;  }  isAssignable(node, isBinding) {    switch (node.type) {      case "TSTypeCastExpression":        return this.isAssignable(node.expression, isBinding);      case "TSParameterProperty":        return true;      default:        return super.isAssignable(node, isBinding);    }  }  toAssignable(node, isLHS = false) {    switch (node.type) {      case "TSTypeCastExpression":        return super.toAssignable(this.typeCastToParameter(node), isLHS);      case "TSParameterProperty":        return super.toAssignable(node, isLHS);      case "ParenthesizedExpression":        return this.toAssignableParenthesizedExpression(node, isLHS);      case "TSAsExpression":      case "TSNonNullExpression":      case "TSTypeAssertion":        node.expression = this.toAssignable(node.expression, isLHS);        return node;      default:        return super.toAssignable(node, isLHS);    }  }  toAssignableParenthesizedExpression(node, isLHS) {    switch (node.expression.type) {      case "TSAsExpression":      case "TSNonNullExpression":      case "TSTypeAssertion":      case "ParenthesizedExpression":        node.expression = this.toAssignable(node.expression, isLHS);        return node;      default:        return super.toAssignable(node, isLHS);    }  }  checkLVal(expr, contextDescription, ...args) {    var _expr$extra2;    switch (expr.type) {      case "TSTypeCastExpression":        return;      case "TSParameterProperty":        this.checkLVal(expr.parameter, "parameter property", ...args);        return;      case "TSAsExpression":      case "TSTypeAssertion":        if (!args[0] && contextDescription !== "parenthesized expression" && !((_expr$extra2 = expr.extra) != null && _expr$extra2.parenthesized)) {          this.raise(expr.start, ErrorMessages.InvalidLhs, contextDescription);          break;        }        this.checkLVal(expr.expression, "parenthesized expression", ...args);        return;      case "TSNonNullExpression":        this.checkLVal(expr.expression, contextDescription, ...args);        return;      default:        super.checkLVal(expr, contextDescription, ...args);        return;    }  }  parseBindingAtom() {    switch (this.state.type) {      case 72:        return this.parseIdentifier(true);      default:        return super.parseBindingAtom();    }  }  parseMaybeDecoratorArguments(expr) {    if (this.match(43)) {      const typeArguments = this.tsParseTypeArguments();      if (this.match(10)) {        const call = super.parseMaybeDecoratorArguments(expr);        call.typeParameters = typeArguments;        return call;      }      this.unexpected(this.state.start, 10);    }    return super.parseMaybeDecoratorArguments(expr);  }  checkCommaAfterRest(close) {    if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {      this.next();    } else {      super.checkCommaAfterRest(close);    }  }  isClassMethod() {    return this.match(43) || super.isClassMethod();  }  isClassProperty() {    return this.match(33) || this.match(14) || super.isClassProperty();  }  parseMaybeDefault(...args) {    const node = super.parseMaybeDefault(...args);    if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {      this.raise(node.typeAnnotation.start, TSErrors.TypeAnnotationAfterAssign);    }    return node;  }  getTokenFromCode(code) {    if (this.state.inType) {      if (code === 62) {        return this.finishOp(44, 1);      }      if (code === 60) {        return this.finishOp(43, 1);      }    }    return super.getTokenFromCode(code);  }  reScan_lt_gt() {    const {      type    } = this.state;    if (type === 43) {      this.state.pos -= 1;      this.readToken_lt();    } else if (type === 44) {      this.state.pos -= 1;      this.readToken_gt();    }  }  toAssignableList(exprList) {    for (let i = 0; i < exprList.length; i++) {      const expr = exprList[i];      if (!expr) continue;      switch (expr.type) {        case "TSTypeCastExpression":          exprList[i] = this.typeCastToParameter(expr);          break;        case "TSAsExpression":        case "TSTypeAssertion":          if (!this.state.maybeInArrowParameters) {            exprList[i] = this.typeCastToParameter(expr);          } else {            this.raise(expr.start, TSErrors.UnexpectedTypeCastInParameter);          }          break;      }    }    return super.toAssignableList(...arguments);  }  typeCastToParameter(node) {    node.expression.typeAnnotation = node.typeAnnotation;    this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end);    return node.expression;  }  shouldParseArrow(params) {    if (this.match(14)) {      return params.every(expr => this.isAssignable(expr, true));    }    return super.shouldParseArrow(params);  }  shouldParseAsyncArrow() {    return this.match(14) || super.shouldParseAsyncArrow();  }  canHaveLeadingDecorator() {    return super.canHaveLeadingDecorator() || this.isAbstractClass();  }  jsxParseOpeningElementAfterName(node) {    if (this.match(43)) {      const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArguments());      if (typeArguments) node.typeParameters = typeArguments;    }    return super.jsxParseOpeningElementAfterName(node);  }  getGetterSetterExpectedParamCount(method) {    const baseCount = super.getGetterSetterExpectedParamCount(method);    const params = this.getObjectOrClassMethodParams(method);    const firstParam = params[0];    const hasContextParam = firstParam && this.isThisParam(firstParam);    return hasContextParam ? baseCount + 1 : baseCount;  }  parseCatchClauseParam() {    const param = super.parseCatchClauseParam();    const type = this.tsTryParseTypeAnnotation();    if (type) {      param.typeAnnotation = type;      this.resetEndLocation(param);    }    return param;  }  tsInAmbientContext(cb) {    const oldIsAmbientContext = this.state.isAmbientContext;    this.state.isAmbientContext = true;    try {      return cb();    } finally {      this.state.isAmbientContext = oldIsAmbientContext;    }  }  parseClass(node, ...args) {    const oldInAbstractClass = this.state.inAbstractClass;    this.state.inAbstractClass = !!node.abstract;    try {      return super.parseClass(node, ...args);    } finally {      this.state.inAbstractClass = oldInAbstractClass;    }  }  tsParseAbstractDeclaration(node) {    if (this.match(74)) {      node.abstract = true;      return this.parseClass(node, true, false);    } else if (this.isContextual(119)) {      if (!this.hasFollowingLineBreak()) {        node.abstract = true;        this.raise(node.start, TSErrors.NonClassMethodPropertyHasAbstractModifer);        this.next();        return this.tsParseInterfaceDeclaration(node);      }    } else {      this.unexpected(null, 74);    }  }  parseMethod(...args) {    const method = super.parseMethod(...args);    if (method.abstract) {      const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body;      if (hasBody) {        const {          key        } = method;        this.raise(method.start, TSErrors.AbstractMethodHasImplementation, key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);      }    }    return method;  }  tsParseTypeParameterName() {    const typeName = this.parseIdentifier();    return typeName.name;  }  shouldParseAsAmbientContext() {    return !!this.getPluginOption("typescript", "dts");  }  parse() {    if (this.shouldParseAsAmbientContext()) {      this.state.isAmbientContext = true;    }    return super.parse();  }  getExpression() {    if (this.shouldParseAsAmbientContext()) {      this.state.isAmbientContext = true;    }    return super.getExpression();  }  parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {    if (!isString && isMaybeTypeOnly) {      this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);      return this.finishNode(node, "ExportSpecifier");    }    node.exportKind = "value";    return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);  }  parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {    if (!importedIsString && isMaybeTypeOnly) {      this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);      return this.finishNode(specifier, "ImportSpecifier");    }    specifier.importKind = "value";    return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly);  }  parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {    const leftOfAsKey = isImport ? "imported" : "local";    const rightOfAsKey = isImport ? "local" : "exported";    let leftOfAs = node[leftOfAsKey];    let rightOfAs;    let hasTypeSpecifier = false;    let canParseAsKeyword = true;    const pos = leftOfAs.start;    if (this.isContextual(87)) {      const firstAs = this.parseIdentifier();      if (this.isContextual(87)) {        const secondAs = this.parseIdentifier();        if (tokenIsKeywordOrIdentifier(this.state.type)) {          hasTypeSpecifier = true;          leftOfAs = firstAs;          rightOfAs = this.parseIdentifier();          canParseAsKeyword = false;        } else {          rightOfAs = secondAs;          canParseAsKeyword = false;        }      } else if (tokenIsKeywordOrIdentifier(this.state.type)) {        canParseAsKeyword = false;        rightOfAs = this.parseIdentifier();      } else {        hasTypeSpecifier = true;        leftOfAs = firstAs;      }    } else if (tokenIsKeywordOrIdentifier(this.state.type)) {      hasTypeSpecifier = true;      leftOfAs = this.parseIdentifier();    }    if (hasTypeSpecifier && isInTypeOnlyImportExport) {      this.raise(pos, isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports);    }    node[leftOfAsKey] = leftOfAs;    node[rightOfAsKey] = rightOfAs;    const kindKey = isImport ? "importKind" : "exportKind";    node[kindKey] = hasTypeSpecifier ? "type" : "value";    if (canParseAsKeyword && this.eatContextual(87)) {      node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();    }    if (!node[rightOfAsKey]) {      node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);    }    if (isImport) {      this.checkLVal(node[rightOfAsKey], "import specifier", BIND_LEXICAL);    }  }});const PlaceHolderErrors = makeErrorTemplates({  ClassNameIsRequired: "A class name is required."}, ErrorCodes.SyntaxError);var placeholders = (superClass => class extends superClass {  parsePlaceholder(expectedNode) {    if (this.match(134)) {      const node = this.startNode();      this.next();      this.assertNoSpace("Unexpected space in placeholder.");      node.name = super.parseIdentifier(true);      this.assertNoSpace("Unexpected space in placeholder.");      this.expect(134);      return this.finishPlaceholder(node, expectedNode);    }  }  finishPlaceholder(node, expectedNode) {    const isFinished = !!(node.expectedNode && node.type === "Placeholder");    node.expectedNode = expectedNode;    return isFinished ? node : this.finishNode(node, "Placeholder");  }  getTokenFromCode(code) {    if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {      return this.finishOp(134, 2);    }    return super.getTokenFromCode(...arguments);  }  parseExprAtom() {    return this.parsePlaceholder("Expression") || super.parseExprAtom(...arguments);  }  parseIdentifier() {    return this.parsePlaceholder("Identifier") || super.parseIdentifier(...arguments);  }  checkReservedWord(word) {    if (word !== undefined) super.checkReservedWord(...arguments);  }  parseBindingAtom() {    return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments);  }  checkLVal(expr) {    if (expr.type !== "Placeholder") super.checkLVal(...arguments);  }  toAssignable(node) {    if (node && node.type === "Placeholder" && node.expectedNode === "Expression") {      node.expectedNode = "Pattern";      return node;    }    return super.toAssignable(...arguments);  }  isLet(context) {    if (super.isLet(context)) {      return true;    }    if (!this.isContextual(93)) {      return false;    }    if (context) return false;    const nextToken = this.lookahead();    if (nextToken.type === 134) {      return true;    }    return false;  }  verifyBreakContinue(node) {    if (node.label && node.label.type === "Placeholder") return;    super.verifyBreakContinue(...arguments);  }  parseExpressionStatement(node, expr) {    if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) {      return super.parseExpressionStatement(...arguments);    }    if (this.match(14)) {      const stmt = node;      stmt.label = this.finishPlaceholder(expr, "Identifier");      this.next();      stmt.body = this.parseStatement("label");      return this.finishNode(stmt, "LabeledStatement");    }    this.semicolon();    node.name = expr.name;    return this.finishPlaceholder(node, "Statement");  }  parseBlock() {    return this.parsePlaceholder("BlockStatement") || super.parseBlock(...arguments);  }  parseFunctionId() {    return this.parsePlaceholder("Identifier") || super.parseFunctionId(...arguments);  }  parseClass(node, isStatement, optionalId) {    const type = isStatement ? "ClassDeclaration" : "ClassExpression";    this.next();    this.takeDecorators(node);    const oldStrict = this.state.strict;    const placeholder = this.parsePlaceholder("Identifier");    if (placeholder) {      if (this.match(75) || this.match(134) || this.match(5)) {        node.id = placeholder;      } else if (optionalId || !isStatement) {        node.id = null;        node.body = this.finishPlaceholder(placeholder, "ClassBody");        return this.finishNode(node, type);      } else {        this.unexpected(null, PlaceHolderErrors.ClassNameIsRequired);      }    } else {      this.parseClassId(node, isStatement, optionalId);    }    this.parseClassSuper(node);    node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass, oldStrict);    return this.finishNode(node, type);  }  parseExport(node) {    const placeholder = this.parsePlaceholder("Identifier");    if (!placeholder) return super.parseExport(...arguments);    if (!this.isContextual(91) && !this.match(12)) {      node.specifiers = [];      node.source = null;      node.declaration = this.finishPlaceholder(placeholder, "Declaration");      return this.finishNode(node, "ExportNamedDeclaration");    }    this.expectPlugin("exportDefaultFrom");    const specifier = this.startNode();    specifier.exported = placeholder;    node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];    return super.parseExport(node);  }  isExportDefaultSpecifier() {    if (this.match(59)) {      const next = this.nextTokenStart();      if (this.isUnparsedContextual(next, "from")) {        if (this.input.startsWith(tokenLabelName(134), this.nextTokenStartSince(next + 4))) {          return true;        }      }    }    return super.isExportDefaultSpecifier();  }  maybeParseExportDefaultSpecifier(node) {    if (node.specifiers && node.specifiers.length > 0) {      return true;    }    return super.maybeParseExportDefaultSpecifier(...arguments);  }  checkExport(node) {    const {      specifiers    } = node;    if (specifiers != null && specifiers.length) {      node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder");    }    super.checkExport(node);    node.specifiers = specifiers;  }  parseImport(node) {    const placeholder = this.parsePlaceholder("Identifier");    if (!placeholder) return super.parseImport(...arguments);    node.specifiers = [];    if (!this.isContextual(91) && !this.match(12)) {      node.source = this.finishPlaceholder(placeholder, "StringLiteral");      this.semicolon();      return this.finishNode(node, "ImportDeclaration");    }    const specifier = this.startNodeAtNode(placeholder);    specifier.local = placeholder;    this.finishNode(specifier, "ImportDefaultSpecifier");    node.specifiers.push(specifier);    if (this.eat(12)) {      const hasStarImport = this.maybeParseStarImportSpecifier(node);      if (!hasStarImport) this.parseNamedImportSpecifiers(node);    }    this.expectContextual(91);    node.source = this.parseImportSource();    this.semicolon();    return this.finishNode(node, "ImportDeclaration");  }  parseImportSource() {    return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments);  }});var v8intrinsic = (superClass => class extends superClass {  parseV8Intrinsic() {    if (this.match(48)) {      const v8IntrinsicStart = this.state.start;      const node = this.startNode();      this.next();      if (tokenIsIdentifier(this.state.type)) {        const name = this.parseIdentifierName(this.state.start);        const identifier = this.createIdentifier(node, name);        identifier.type = "V8IntrinsicIdentifier";        if (this.match(10)) {          return identifier;        }      }      this.unexpected(v8IntrinsicStart);    }  }  parseExprAtom() {    return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);  }});function hasPlugin(plugins, name) {  return plugins.some(plugin => {    if (Array.isArray(plugin)) {      return plugin[0] === name;    } else {      return plugin === name;    }  });}function getPluginOption(plugins, name, option) {  const plugin = plugins.find(plugin => {    if (Array.isArray(plugin)) {      return plugin[0] === name;    } else {      return plugin === name;    }  });  if (plugin && Array.isArray(plugin)) {    return plugin[1][option];  }  return null;}const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"];const TOPIC_TOKENS = ["^", "%", "#"];const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"];function validatePlugins(plugins) {  if (hasPlugin(plugins, "decorators")) {    if (hasPlugin(plugins, "decorators-legacy")) {      throw new Error("Cannot use the decorators and decorators-legacy plugin together");    }    const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport");    if (decoratorsBeforeExport == null) {      throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option," + " whose value must be a boolean. If you are migrating from" + " Babylon/Babel 6 or want to use the old decorators proposal, you" + " should use the 'decorators-legacy' plugin instead of 'decorators'.");    } else if (typeof decoratorsBeforeExport !== "boolean") {      throw new Error("'decoratorsBeforeExport' must be a boolean.");    }  }  if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) {    throw new Error("Cannot combine flow and typescript plugins.");  }  if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) {    throw new Error("Cannot combine placeholders and v8intrinsic plugins.");  }  if (hasPlugin(plugins, "pipelineOperator")) {    const proposal = getPluginOption(plugins, "pipelineOperator", "proposal");    if (!PIPELINE_PROPOSALS.includes(proposal)) {      const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", ");      throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`);    }    const tupleSyntaxIsHash = hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") === "hash";    if (proposal === "hack") {      if (hasPlugin(plugins, "placeholders")) {        throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");      }      if (hasPlugin(plugins, "v8intrinsic")) {        throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");      }      const topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken");      if (!TOPIC_TOKENS.includes(topicToken)) {        const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", ");        throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`);      }      if (topicToken === "#" && tupleSyntaxIsHash) {        throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.');      }    } else if (proposal === "smart" && tupleSyntaxIsHash) {      throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.');    }  }  if (hasPlugin(plugins, "moduleAttributes")) {    {      if (hasPlugin(plugins, "importAssertions")) {        throw new Error("Cannot combine importAssertions and moduleAttributes plugins.");      }      const moduleAttributesVerionPluginOption = getPluginOption(plugins, "moduleAttributes", "version");      if (moduleAttributesVerionPluginOption !== "may-2020") {        throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'.");      }    }  }  if (hasPlugin(plugins, "recordAndTuple") && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) {    throw new Error("'recordAndTuple' requires 'syntaxType' option whose value should be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", "));  }  if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) {    const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");    error.missingPlugins = "doExpressions";    throw error;  }}const mixinPlugins = {  estree,  jsx,  flow,  typescript,  v8intrinsic,  placeholders};const mixinPluginNames = Object.keys(mixinPlugins);const defaultOptions = {  sourceType: "script",  sourceFilename: undefined,  startColumn: 0,  startLine: 1,  allowAwaitOutsideFunction: false,  allowReturnOutsideFunction: false,  allowImportExportEverywhere: false,  allowSuperOutsideMethod: false,  allowUndeclaredExports: false,  plugins: [],  strictMode: null,  ranges: false,  tokens: false,  createParenthesizedExpressions: false,  errorRecovery: false,  attachComment: true};function getOptions(opts) {  const options = {};  for (const key of Object.keys(defaultOptions)) {    options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];  }  return options;}const unwrapParenthesizedExpression = node => {  return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;};class LValParser extends NodeUtils {  toAssignable(node, isLHS = false) {    var _node$extra, _node$extra3;    let parenthesized = undefined;    if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {      parenthesized = unwrapParenthesizedExpression(node);      if (isLHS) {        if (parenthesized.type === "Identifier") {          this.expressionScope.recordParenthesizedIdentifierError(node.start, ErrorMessages.InvalidParenthesizedAssignment);        } else if (parenthesized.type !== "MemberExpression") {          this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment);        }      } else {        this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment);      }    }    switch (node.type) {      case "Identifier":      case "ObjectPattern":      case "ArrayPattern":      case "AssignmentPattern":      case "RestElement":        break;      case "ObjectExpression":        node.type = "ObjectPattern";        for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {          var _node$extra2;          const prop = node.properties[i];          const isLast = i === last;          this.toAssignableObjectExpressionProp(prop, isLast, isLHS);          if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingComma) {            this.raiseRestNotLast(node.extra.trailingComma);          }        }        break;      case "ObjectProperty":        this.toAssignable(node.value, isLHS);        break;      case "SpreadElement":        {          this.checkToRestConversion(node);          node.type = "RestElement";          const arg = node.argument;          this.toAssignable(arg, isLHS);          break;        }      case "ArrayExpression":        node.type = "ArrayPattern";        this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingComma, isLHS);        break;      case "AssignmentExpression":        if (node.operator !== "=") {          this.raise(node.left.end, ErrorMessages.MissingEqInAssignment);        }        node.type = "AssignmentPattern";        delete node.operator;        this.toAssignable(node.left, isLHS);        break;      case "ParenthesizedExpression":        this.toAssignable(parenthesized, isLHS);        break;    }    return node;  }  toAssignableObjectExpressionProp(prop, isLast, isLHS) {    if (prop.type === "ObjectMethod") {      const error = prop.kind === "get" || prop.kind === "set" ? ErrorMessages.PatternHasAccessor : ErrorMessages.PatternHasMethod;      this.raise(prop.key.start, error);    } else if (prop.type === "SpreadElement" && !isLast) {      this.raiseRestNotLast(prop.start);    } else {      this.toAssignable(prop, isLHS);    }  }  toAssignableList(exprList, trailingCommaPos, isLHS) {    let end = exprList.length;    if (end) {      const last = exprList[end - 1];      if ((last == null ? void 0 : last.type) === "RestElement") {        --end;      } else if ((last == null ? void 0 : last.type) === "SpreadElement") {        last.type = "RestElement";        let arg = last.argument;        this.toAssignable(arg, isLHS);        arg = unwrapParenthesizedExpression(arg);        if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern" && arg.type !== "ObjectPattern") {          this.unexpected(arg.start);        }        if (trailingCommaPos) {          this.raiseTrailingCommaAfterRest(trailingCommaPos);        }        --end;      }    }    for (let i = 0; i < end; i++) {      const elt = exprList[i];      if (elt) {        this.toAssignable(elt, isLHS);        if (elt.type === "RestElement") {          this.raiseRestNotLast(elt.start);        }      }    }    return exprList;  }  isAssignable(node, isBinding) {    switch (node.type) {      case "Identifier":      case "ObjectPattern":      case "ArrayPattern":      case "AssignmentPattern":      case "RestElement":        return true;      case "ObjectExpression":        {          const last = node.properties.length - 1;          return node.properties.every((prop, i) => {            return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop);          });        }      case "ObjectProperty":        return this.isAssignable(node.value);      case "SpreadElement":        return this.isAssignable(node.argument);      case "ArrayExpression":        return node.elements.every(element => element === null || this.isAssignable(element));      case "AssignmentExpression":        return node.operator === "=";      case "ParenthesizedExpression":        return this.isAssignable(node.expression);      case "MemberExpression":      case "OptionalMemberExpression":        return !isBinding;      default:        return false;    }  }  toReferencedList(exprList, isParenthesizedExpr) {    return exprList;  }  toReferencedListDeep(exprList, isParenthesizedExpr) {    this.toReferencedList(exprList, isParenthesizedExpr);    for (const expr of exprList) {      if ((expr == null ? void 0 : expr.type) === "ArrayExpression") {        this.toReferencedListDeep(expr.elements);      }    }  }  parseSpread(refExpressionErrors, refNeedsArrowPos) {    const node = this.startNode();    this.next();    node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined, refNeedsArrowPos);    return this.finishNode(node, "SpreadElement");  }  parseRestBinding() {    const node = this.startNode();    this.next();    node.argument = this.parseBindingAtom();    return this.finishNode(node, "RestElement");  }  parseBindingAtom() {    switch (this.state.type) {      case 0:        {          const node = this.startNode();          this.next();          node.elements = this.parseBindingList(3, 93, true);          return this.finishNode(node, "ArrayPattern");        }      case 5:        return this.parseObjectLike(8, true);    }    return this.parseIdentifier();  }  parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) {    const elts = [];    let first = true;    while (!this.eat(close)) {      if (first) {        first = false;      } else {        this.expect(12);      }      if (allowEmpty && this.match(12)) {        elts.push(null);      } else if (this.eat(close)) {        break;      } else if (this.match(21)) {        elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));        this.checkCommaAfterRest(closeCharCode);        this.expect(close);        break;      } else {        const decorators = [];        if (this.match(24) && this.hasPlugin("decorators")) {          this.raise(this.state.start, ErrorMessages.UnsupportedParameterDecorator);        }        while (this.match(24)) {          decorators.push(this.parseDecorator());        }        elts.push(this.parseAssignableListItem(allowModifiers, decorators));      }    }    return elts;  }  parseBindingRestProperty(prop) {    this.next();    prop.argument = this.parseIdentifier();    this.checkCommaAfterRest(125);    return this.finishNode(prop, "RestElement");  }  parseBindingProperty() {    const prop = this.startNode();    const {      type,      start: startPos,      startLoc    } = this.state;    if (type === 21) {      return this.parseBindingRestProperty(prop);    } else {      this.parsePropertyName(prop);    }    prop.method = false;    this.parseObjPropValue(prop, startPos, startLoc, false, false, true, false);    return prop;  }  parseAssignableListItem(allowModifiers, decorators) {    const left = this.parseMaybeDefault();    this.parseAssignableListItemTypes(left);    const elt = this.parseMaybeDefault(left.start, left.loc.start, left);    if (decorators.length) {      left.decorators = decorators;    }    return elt;  }  parseAssignableListItemTypes(param) {    return param;  }  parseMaybeDefault(startPos, startLoc, left) {    var _startLoc, _startPos, _left;    startLoc = (_startLoc = startLoc) != null ? _startLoc : this.state.startLoc;    startPos = (_startPos = startPos) != null ? _startPos : this.state.start;    left = (_left = left) != null ? _left : this.parseBindingAtom();    if (!this.eat(27)) return left;    const node = this.startNodeAt(startPos, startLoc);    node.left = left;    node.right = this.parseMaybeAssignAllowIn();    return this.finishNode(node, "AssignmentPattern");  }  checkLVal(expr, contextDescription, bindingType = BIND_NONE, checkClashes, disallowLetBinding, strictModeChanged = false) {    switch (expr.type) {      case "Identifier":        {          const {            name          } = expr;          if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(name, this.inModule) : isStrictBindOnlyReservedWord(name))) {            this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.StrictEvalArguments : ErrorMessages.StrictEvalArgumentsBinding, name);          }          if (checkClashes) {            if (checkClashes.has(name)) {              this.raise(expr.start, ErrorMessages.ParamDupe);            } else {              checkClashes.add(name);            }          }          if (disallowLetBinding && name === "let") {            this.raise(expr.start, ErrorMessages.LetInLexicalBinding);          }          if (!(bindingType & BIND_NONE)) {            this.scope.declareName(name, bindingType, expr.start);          }          break;        }      case "MemberExpression":        if (bindingType !== BIND_NONE) {          this.raise(expr.start, ErrorMessages.InvalidPropertyBindingPattern);        }        break;      case "ObjectPattern":        for (let prop of expr.properties) {          if (this.isObjectProperty(prop)) prop = prop.value;else if (this.isObjectMethod(prop)) continue;          this.checkLVal(prop, "object destructuring pattern", bindingType, checkClashes, disallowLetBinding);        }        break;      case "ArrayPattern":        for (const elem of expr.elements) {          if (elem) {            this.checkLVal(elem, "array destructuring pattern", bindingType, checkClashes, disallowLetBinding);          }        }        break;      case "AssignmentPattern":        this.checkLVal(expr.left, "assignment pattern", bindingType, checkClashes);        break;      case "RestElement":        this.checkLVal(expr.argument, "rest element", bindingType, checkClashes);        break;      case "ParenthesizedExpression":        this.checkLVal(expr.expression, "parenthesized expression", bindingType, checkClashes);        break;      default:        {          this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.InvalidLhs : ErrorMessages.InvalidLhsBinding, contextDescription);        }    }  }  checkToRestConversion(node) {    if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") {      this.raise(node.argument.start, ErrorMessages.InvalidRestAssignmentPattern);    }  }  checkCommaAfterRest(close) {    if (this.match(12)) {      if (this.lookaheadCharCode() === close) {        this.raiseTrailingCommaAfterRest(this.state.start);      } else {        this.raiseRestNotLast(this.state.start);      }    }  }  raiseRestNotLast(pos) {    throw this.raise(pos, ErrorMessages.ElementAfterRest);  }  raiseTrailingCommaAfterRest(pos) {    this.raise(pos, ErrorMessages.RestTrailingComma);  }}const invalidHackPipeBodies = new Map([["ArrowFunctionExpression", "arrow function"], ["AssignmentExpression", "assignment"], ["ConditionalExpression", "conditional"], ["YieldExpression", "yield"]]);class ExpressionParser extends LValParser {  checkProto(prop, isRecord, protoRef, refExpressionErrors) {    if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {      return;    }    const key = prop.key;    const name = key.type === "Identifier" ? key.name : key.value;    if (name === "__proto__") {      if (isRecord) {        this.raise(key.start, ErrorMessages.RecordNoProto);        return;      }      if (protoRef.used) {        if (refExpressionErrors) {          if (refExpressionErrors.doubleProto === -1) {            refExpressionErrors.doubleProto = key.start;          }        } else {          this.raise(key.start, ErrorMessages.DuplicateProto);        }      }      protoRef.used = true;    }  }  shouldExitDescending(expr, potentialArrowAt) {    return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt;  }  getExpression() {    this.enterInitialScopes();    this.nextToken();    const expr = this.parseExpression();    if (!this.match(129)) {      this.unexpected();    }    this.finalizeRemainingComments();    expr.comments = this.state.comments;    expr.errors = this.state.errors;    if (this.options.tokens) {      expr.tokens = this.tokens;    }    return expr;  }  parseExpression(disallowIn, refExpressionErrors) {    if (disallowIn) {      return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));    }    return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));  }  parseExpressionBase(refExpressionErrors) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const expr = this.parseMaybeAssign(refExpressionErrors);    if (this.match(12)) {      const node = this.startNodeAt(startPos, startLoc);      node.expressions = [expr];      while (this.eat(12)) {        node.expressions.push(this.parseMaybeAssign(refExpressionErrors));      }      this.toReferencedList(node.expressions);      return this.finishNode(node, "SequenceExpression");    }    return expr;  }  parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {    return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));  }  parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {    return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));  }  setOptionalParametersError(refExpressionErrors, resultError) {    var _resultError$pos;    refExpressionErrors.optionalParameters = (_resultError$pos = resultError == null ? void 0 : resultError.pos) != null ? _resultError$pos : this.state.start;  }  parseMaybeAssign(refExpressionErrors, afterLeftParse) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    if (this.isContextual(99)) {      if (this.prodParam.hasYield) {        let left = this.parseYield();        if (afterLeftParse) {          left = afterLeftParse.call(this, left, startPos, startLoc);        }        return left;      }    }    let ownExpressionErrors;    if (refExpressionErrors) {      ownExpressionErrors = false;    } else {      refExpressionErrors = new ExpressionErrors();      ownExpressionErrors = true;    }    const {      type    } = this.state;    if (type === 10 || tokenIsIdentifier(type)) {      this.state.potentialArrowAt = this.state.start;    }    let left = this.parseMaybeConditional(refExpressionErrors);    if (afterLeftParse) {      left = afterLeftParse.call(this, left, startPos, startLoc);    }    if (tokenIsAssignment(this.state.type)) {      const node = this.startNodeAt(startPos, startLoc);      const operator = this.state.value;      node.operator = operator;      if (this.match(27)) {        node.left = this.toAssignable(left, true);        if (refExpressionErrors.doubleProto >= startPos) {          refExpressionErrors.doubleProto = -1;        }        if (refExpressionErrors.shorthandAssign >= startPos) {          refExpressionErrors.shorthandAssign = -1;        }      } else {        node.left = left;      }      this.checkLVal(left, "assignment expression");      this.next();      node.right = this.parseMaybeAssign();      return this.finishNode(node, "AssignmentExpression");    } else if (ownExpressionErrors) {      this.checkExpressionErrors(refExpressionErrors, true);    }    return left;  }  parseMaybeConditional(refExpressionErrors) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const potentialArrowAt = this.state.potentialArrowAt;    const expr = this.parseExprOps(refExpressionErrors);    if (this.shouldExitDescending(expr, potentialArrowAt)) {      return expr;    }    return this.parseConditional(expr, startPos, startLoc, refExpressionErrors);  }  parseConditional(expr, startPos, startLoc, refExpressionErrors) {    if (this.eat(17)) {      const node = this.startNodeAt(startPos, startLoc);      node.test = expr;      node.consequent = this.parseMaybeAssignAllowIn();      this.expect(14);      node.alternate = this.parseMaybeAssign();      return this.finishNode(node, "ConditionalExpression");    }    return expr;  }  parseMaybeUnaryOrPrivate(refExpressionErrors) {    return this.match(128) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);  }  parseExprOps(refExpressionErrors) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const potentialArrowAt = this.state.potentialArrowAt;    const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);    if (this.shouldExitDescending(expr, potentialArrowAt)) {      return expr;    }    return this.parseExprOp(expr, startPos, startLoc, -1);  }  parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {    if (this.isPrivateName(left)) {      const value = this.getPrivateNameSV(left);      const {        start      } = left;      if (minPrec >= tokenOperatorPrecedence(52) || !this.prodParam.hasIn || !this.match(52)) {        this.raise(start, ErrorMessages.PrivateInExpectedIn, value);      }      this.classScope.usePrivateName(value, start);    }    const op = this.state.type;    if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(52))) {      let prec = tokenOperatorPrecedence(op);      if (prec > minPrec) {        if (op === 35) {          this.expectPlugin("pipelineOperator");          if (this.state.inFSharpPipelineDirectBody) {            return left;          }          this.checkPipelineAtInfixOperator(left, leftStartPos);        }        const node = this.startNodeAt(leftStartPos, leftStartLoc);        node.left = left;        node.operator = this.state.value;        const logical = op === 37 || op === 38;        const coalesce = op === 36;        if (coalesce) {          prec = tokenOperatorPrecedence(38);        }        this.next();        if (op === 35 && this.getPluginOption("pipelineOperator", "proposal") === "minimal") {          if (this.state.type === 90 && this.prodParam.hasAwait) {            throw this.raise(this.state.start, ErrorMessages.UnexpectedAwaitAfterPipelineBody);          }        }        node.right = this.parseExprOpRightExpr(op, prec);        this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression");        const nextOp = this.state.type;        if (coalesce && (nextOp === 37 || nextOp === 38) || logical && nextOp === 36) {          throw this.raise(this.state.start, ErrorMessages.MixingCoalesceWithLogical);        }        return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);      }    }    return left;  }  parseExprOpRightExpr(op, prec) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    switch (op) {      case 35:        switch (this.getPluginOption("pipelineOperator", "proposal")) {          case "hack":            return this.withTopicBindingContext(() => {              return this.parseHackPipeBody();            });          case "smart":            return this.withTopicBindingContext(() => {              if (this.prodParam.hasYield && this.isContextual(99)) {                throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, this.state.value);              }              return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startPos, startLoc);            });          case "fsharp":            return this.withSoloAwaitPermittingContext(() => {              return this.parseFSharpPipelineBody(prec);            });        }      default:        return this.parseExprOpBaseRightExpr(op, prec);    }  }  parseExprOpBaseRightExpr(op, prec) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);  }  parseHackPipeBody() {    var _body$extra;    const {      start    } = this.state;    const body = this.parseMaybeAssign();    if (invalidHackPipeBodies.has(body.type) && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {      this.raise(start, ErrorMessages.PipeUnparenthesizedBody, invalidHackPipeBodies.get(body.type));    }    if (!this.topicReferenceWasUsedInCurrentContext()) {      this.raise(start, ErrorMessages.PipeTopicUnused);    }    return body;  }  checkExponentialAfterUnary(node) {    if (this.match(51)) {      this.raise(node.argument.start, ErrorMessages.UnexpectedTokenUnaryExponentiation);    }  }  parseMaybeUnary(refExpressionErrors, sawUnary) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const isAwait = this.isContextual(90);    if (isAwait && this.isAwaitAllowed()) {      this.next();      const expr = this.parseAwait(startPos, startLoc);      if (!sawUnary) this.checkExponentialAfterUnary(expr);      return expr;    }    const update = this.match(32);    const node = this.startNode();    if (tokenIsPrefix(this.state.type)) {      node.operator = this.state.value;      node.prefix = true;      if (this.match(66)) {        this.expectPlugin("throwExpressions");      }      const isDelete = this.match(83);      this.next();      node.argument = this.parseMaybeUnary(null, true);      this.checkExpressionErrors(refExpressionErrors, true);      if (this.state.strict && isDelete) {        const arg = node.argument;        if (arg.type === "Identifier") {          this.raise(node.start, ErrorMessages.StrictDelete);        } else if (this.hasPropertyAsPrivateName(arg)) {          this.raise(node.start, ErrorMessages.DeletePrivateField);        }      }      if (!update) {        if (!sawUnary) this.checkExponentialAfterUnary(node);        return this.finishNode(node, "UnaryExpression");      }    }    const expr = this.parseUpdate(node, update, refExpressionErrors);    if (isAwait) {      const {        type      } = this.state;      const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(48);      if (startsExpr && !this.isAmbiguousAwait()) {        this.raiseOverwrite(startPos, ErrorMessages.AwaitNotInAsyncContext);        return this.parseAwait(startPos, startLoc);      }    }    return expr;  }  parseUpdate(node, update, refExpressionErrors) {    if (update) {      this.checkLVal(node.argument, "prefix operation");      return this.finishNode(node, "UpdateExpression");    }    const startPos = this.state.start;    const startLoc = this.state.startLoc;    let expr = this.parseExprSubscripts(refExpressionErrors);    if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;    while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {      const node = this.startNodeAt(startPos, startLoc);      node.operator = this.state.value;      node.prefix = false;      node.argument = expr;      this.checkLVal(expr, "postfix operation");      this.next();      expr = this.finishNode(node, "UpdateExpression");    }    return expr;  }  parseExprSubscripts(refExpressionErrors) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    const potentialArrowAt = this.state.potentialArrowAt;    const expr = this.parseExprAtom(refExpressionErrors);    if (this.shouldExitDescending(expr, potentialArrowAt)) {      return expr;    }    return this.parseSubscripts(expr, startPos, startLoc);  }  parseSubscripts(base, startPos, startLoc, noCalls) {    const state = {      optionalChainMember: false,      maybeAsyncArrow: this.atPossibleAsyncArrow(base),      stop: false    };    do {      base = this.parseSubscript(base, startPos, startLoc, noCalls, state);      state.maybeAsyncArrow = false;    } while (!state.stop);    return base;  }  parseSubscript(base, startPos, startLoc, noCalls, state) {    if (!noCalls && this.eat(15)) {      return this.parseBind(base, startPos, startLoc, noCalls, state);    } else if (this.match(22)) {      return this.parseTaggedTemplateExpression(base, startPos, startLoc, state);    }    let optional = false;    if (this.match(18)) {      if (noCalls && this.lookaheadCharCode() === 40) {        state.stop = true;        return base;      }      state.optionalChainMember = optional = true;      this.next();    }    if (!noCalls && this.match(10)) {      return this.parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional);    } else {      const computed = this.eat(0);      if (computed || optional || this.eat(16)) {        return this.parseMember(base, startPos, startLoc, state, computed, optional);      } else {        state.stop = true;        return base;      }    }  }  parseMember(base, startPos, startLoc, state, computed, optional) {    const node = this.startNodeAt(startPos, startLoc);    node.object = base;    node.computed = computed;    const privateName = !computed && this.match(128) && this.state.value;    const property = computed ? this.parseExpression() : privateName ? this.parsePrivateName() : this.parseIdentifier(true);    if (privateName !== false) {      if (node.object.type === "Super") {        this.raise(startPos, ErrorMessages.SuperPrivateField);      }      this.classScope.usePrivateName(privateName, property.start);    }    node.property = property;    if (computed) {      this.expect(3);    }    if (state.optionalChainMember) {      node.optional = optional;      return this.finishNode(node, "OptionalMemberExpression");    } else {      return this.finishNode(node, "MemberExpression");    }  }  parseBind(base, startPos, startLoc, noCalls, state) {    const node = this.startNodeAt(startPos, startLoc);    node.object = base;    node.callee = this.parseNoCallExpr();    state.stop = true;    return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls);  }  parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional) {    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;    let refExpressionErrors = null;    this.state.maybeInArrowParameters = true;    this.next();    let node = this.startNodeAt(startPos, startLoc);    node.callee = base;    if (state.maybeAsyncArrow) {      this.expressionScope.enter(newAsyncArrowScope());      refExpressionErrors = new ExpressionErrors();    }    if (state.optionalChainMember) {      node.optional = optional;    }    if (optional) {      node.arguments = this.parseCallExpressionArguments(11);    } else {      node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors);    }    this.finishCallExpression(node, state.optionalChainMember);    if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {      state.stop = true;      this.expressionScope.validateAsPattern();      this.expressionScope.exit();      node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);    } else {      if (state.maybeAsyncArrow) {        this.checkExpressionErrors(refExpressionErrors, true);        this.expressionScope.exit();      }      this.toReferencedArguments(node);    }    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;    return node;  }  toReferencedArguments(node, isParenthesizedExpr) {    this.toReferencedListDeep(node.arguments, isParenthesizedExpr);  }  parseTaggedTemplateExpression(base, startPos, startLoc, state) {    const node = this.startNodeAt(startPos, startLoc);    node.tag = base;    node.quasi = this.parseTemplate(true);    if (state.optionalChainMember) {      this.raise(startPos, ErrorMessages.OptionalChainingNoTemplate);    }    return this.finishNode(node, "TaggedTemplateExpression");  }  atPossibleAsyncArrow(base) {    return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt;  }  finishCallExpression(node, optional) {    if (node.callee.type === "Import") {      if (node.arguments.length === 2) {        {          if (!this.hasPlugin("moduleAttributes")) {            this.expectPlugin("importAssertions");          }        }      }      if (node.arguments.length === 0 || node.arguments.length > 2) {        this.raise(node.start, ErrorMessages.ImportCallArity, this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? "one or two arguments" : "one argument");      } else {        for (const arg of node.arguments) {          if (arg.type === "SpreadElement") {            this.raise(arg.start, ErrorMessages.ImportCallSpreadArgument);          }        }      }    }    return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");  }  parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) {    const elts = [];    let first = true;    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;    this.state.inFSharpPipelineDirectBody = false;    while (!this.eat(close)) {      if (first) {        first = false;      } else {        this.expect(12);        if (this.match(close)) {          if (dynamicImport && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) {            this.raise(this.state.lastTokStart, ErrorMessages.ImportCallArgumentTrailingComma);          }          if (nodeForExtra) {            this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);          }          this.next();          break;        }      }      elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder));    }    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;    return elts;  }  shouldParseAsyncArrow() {    return this.match(19) && !this.canInsertSemicolon();  }  parseAsyncArrowFromCallExpression(node, call) {    var _call$extra;    this.resetPreviousNodeTrailingComments(call);    this.expect(19);    this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingComma);    if (call.innerComments) {      setInnerComments(node, call.innerComments);    }    if (call.callee.trailingComments) {      setInnerComments(node, call.callee.trailingComments);    }    return node;  }  parseNoCallExpr() {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);  }  parseExprAtom(refExpressionErrors) {    let node;    const {      type    } = this.state;    switch (type) {      case 73:        return this.parseSuper();      case 77:        node = this.startNode();        this.next();        if (this.match(16)) {          return this.parseImportMetaProperty(node);        }        if (!this.match(10)) {          this.raise(this.state.lastTokStart, ErrorMessages.UnsupportedImport);        }        return this.finishNode(node, "Import");      case 72:        node = this.startNode();        this.next();        return this.finishNode(node, "ThisExpression");      case 84:        {          return this.parseDo(this.startNode(), false);        }      case 50:      case 29:        {          this.readRegexp();          return this.parseRegExpLiteral(this.state.value);        }      case 124:        return this.parseNumericLiteral(this.state.value);      case 125:        return this.parseBigIntLiteral(this.state.value);      case 126:        return this.parseDecimalLiteral(this.state.value);      case 123:        return this.parseStringLiteral(this.state.value);      case 78:        return this.parseNullLiteral();      case 79:        return this.parseBooleanLiteral(true);      case 80:        return this.parseBooleanLiteral(false);      case 10:        {          const canBeArrow = this.state.potentialArrowAt === this.state.start;          return this.parseParenAndDistinguishExpression(canBeArrow);        }      case 2:      case 1:        {          return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true);        }      case 0:        {          return this.parseArrayLike(3, true, false, refExpressionErrors);        }      case 6:      case 7:        {          return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);        }      case 5:        {          return this.parseObjectLike(8, false, false, refExpressionErrors);        }      case 62:        return this.parseFunctionOrFunctionSent();      case 24:        this.parseDecorators();      case 74:        node = this.startNode();        this.takeDecorators(node);        return this.parseClass(node, false);      case 71:        return this.parseNewOrNewTarget();      case 22:        return this.parseTemplate(false);      case 15:        {          node = this.startNode();          this.next();          node.object = null;          const callee = node.callee = this.parseNoCallExpr();          if (callee.type === "MemberExpression") {            return this.finishNode(node, "BindExpression");          } else {            throw this.raise(callee.start, ErrorMessages.UnsupportedBind);          }        }      case 128:        {          this.raise(this.state.start, ErrorMessages.PrivateInExpectedIn, this.state.value);          return this.parsePrivateName();        }      case 31:        {          return this.parseTopicReferenceThenEqualsSign(48, "%");        }      case 30:        {          return this.parseTopicReferenceThenEqualsSign(40, "^");        }      case 40:      case 48:      case 25:        {          const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");          if (pipeProposal) {            return this.parseTopicReference(pipeProposal);          } else {            throw this.unexpected();          }        }      case 43:        {          const lookaheadCh = this.input.codePointAt(this.nextTokenStart());          if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {            this.expectOnePlugin(["jsx", "flow", "typescript"]);            break;          } else {            throw this.unexpected();          }        }      default:        if (tokenIsIdentifier(type)) {          if (this.isContextual(117) && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) {            return this.parseModuleExpression();          }          const canBeArrow = this.state.potentialArrowAt === this.state.start;          const containsEsc = this.state.containsEsc;          const id = this.parseIdentifier();          if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) {            const {              type            } = this.state;            if (type === 62) {              this.resetPreviousNodeTrailingComments(id);              this.next();              return this.parseFunction(this.startNodeAtNode(id), undefined, true);            } else if (tokenIsIdentifier(type)) {              if (this.lookaheadCharCode() === 61) {                return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));              } else {                return id;              }            } else if (type === 84) {              this.resetPreviousNodeTrailingComments(id);              return this.parseDo(this.startNodeAtNode(id), true);            }          }          if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {            this.next();            return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);          }          return id;        } else {          throw this.unexpected();        }    }  }  parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {    const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");    if (pipeProposal) {      this.state.type = topicTokenType;      this.state.value = topicTokenValue;      this.state.pos--;      this.state.end--;      this.state.endLoc.column--;      return this.parseTopicReference(pipeProposal);    } else {      throw this.unexpected();    }  }  parseTopicReference(pipeProposal) {    const node = this.startNode();    const start = this.state.start;    const tokenType = this.state.type;    this.next();    return this.finishTopicReference(node, start, pipeProposal, tokenType);  }  finishTopicReference(node, start, pipeProposal, tokenType) {    if (this.testTopicReferenceConfiguration(pipeProposal, start, tokenType)) {      let nodeType;      if (pipeProposal === "smart") {        nodeType = "PipelinePrimaryTopicReference";      } else {        nodeType = "TopicReference";      }      if (!this.topicReferenceIsAllowedInCurrentContext()) {        if (pipeProposal === "smart") {          this.raise(start, ErrorMessages.PrimaryTopicNotAllowed);        } else {          this.raise(start, ErrorMessages.PipeTopicUnbound);        }      }      this.registerTopicReference();      return this.finishNode(node, nodeType);    } else {      throw this.raise(start, ErrorMessages.PipeTopicUnconfiguredToken, tokenLabelName(tokenType));    }  }  testTopicReferenceConfiguration(pipeProposal, start, tokenType) {    switch (pipeProposal) {      case "hack":        {          const pluginTopicToken = this.getPluginOption("pipelineOperator", "topicToken");          return tokenLabelName(tokenType) === pluginTopicToken;        }      case "smart":        return tokenType === 25;      default:        throw this.raise(start, ErrorMessages.PipeTopicRequiresHackPipes);    }  }  parseAsyncArrowUnaryFunction(node) {    this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));    const params = [this.parseIdentifier()];    this.prodParam.exit();    if (this.hasPrecedingLineBreak()) {      this.raise(this.state.pos, ErrorMessages.LineTerminatorBeforeArrow);    }    this.expect(19);    this.parseArrowExpression(node, params, true);    return node;  }  parseDo(node, isAsync) {    this.expectPlugin("doExpressions");    if (isAsync) {      this.expectPlugin("asyncDoExpressions");    }    node.async = isAsync;    this.next();    const oldLabels = this.state.labels;    this.state.labels = [];    if (isAsync) {      this.prodParam.enter(PARAM_AWAIT);      node.body = this.parseBlock();      this.prodParam.exit();    } else {      node.body = this.parseBlock();    }    this.state.labels = oldLabels;    return this.finishNode(node, "DoExpression");  }  parseSuper() {    const node = this.startNode();    this.next();    if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {      this.raise(node.start, ErrorMessages.SuperNotAllowed);    } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {      this.raise(node.start, ErrorMessages.UnexpectedSuper);    }    if (!this.match(10) && !this.match(0) && !this.match(16)) {      this.raise(node.start, ErrorMessages.UnsupportedSuper);    }    return this.finishNode(node, "Super");  }  parsePrivateName() {    const node = this.startNode();    const id = this.startNodeAt(this.state.start + 1, new Position(this.state.curLine, this.state.start + 1 - this.state.lineStart));    const name = this.state.value;    this.next();    node.id = this.createIdentifier(id, name);    return this.finishNode(node, "PrivateName");  }  parseFunctionOrFunctionSent() {    const node = this.startNode();    this.next();    if (this.prodParam.hasYield && this.match(16)) {      const meta = this.createIdentifier(this.startNodeAtNode(node), "function");      this.next();      if (this.match(96)) {        this.expectPlugin("functionSent");      } else if (!this.hasPlugin("functionSent")) {        this.unexpected();      }      return this.parseMetaProperty(node, meta, "sent");    }    return this.parseFunction(node);  }  parseMetaProperty(node, meta, propertyName) {    node.meta = meta;    const containsEsc = this.state.containsEsc;    node.property = this.parseIdentifier(true);    if (node.property.name !== propertyName || containsEsc) {      this.raise(node.property.start, ErrorMessages.UnsupportedMetaProperty, meta.name, propertyName);    }    return this.finishNode(node, "MetaProperty");  }  parseImportMetaProperty(node) {    const id = this.createIdentifier(this.startNodeAtNode(node), "import");    this.next();    if (this.isContextual(94)) {      if (!this.inModule) {        this.raise(id.start, SourceTypeModuleErrorMessages.ImportMetaOutsideModule);      }      this.sawUnambiguousESM = true;    }    return this.parseMetaProperty(node, id, "meta");  }  parseLiteralAtNode(value, type, node) {    this.addExtra(node, "rawValue", value);    this.addExtra(node, "raw", this.input.slice(node.start, this.state.end));    node.value = value;    this.next();    return this.finishNode(node, type);  }  parseLiteral(value, type) {    const node = this.startNode();    return this.parseLiteralAtNode(value, type, node);  }  parseStringLiteral(value) {    return this.parseLiteral(value, "StringLiteral");  }  parseNumericLiteral(value) {    return this.parseLiteral(value, "NumericLiteral");  }  parseBigIntLiteral(value) {    return this.parseLiteral(value, "BigIntLiteral");  }  parseDecimalLiteral(value) {    return this.parseLiteral(value, "DecimalLiteral");  }  parseRegExpLiteral(value) {    const node = this.parseLiteral(value.value, "RegExpLiteral");    node.pattern = value.pattern;    node.flags = value.flags;    return node;  }  parseBooleanLiteral(value) {    const node = this.startNode();    node.value = value;    this.next();    return this.finishNode(node, "BooleanLiteral");  }  parseNullLiteral() {    const node = this.startNode();    this.next();    return this.finishNode(node, "NullLiteral");  }  parseParenAndDistinguishExpression(canBeArrow) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    let val;    this.next();    this.expressionScope.enter(newArrowHeadScope());    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;    this.state.maybeInArrowParameters = true;    this.state.inFSharpPipelineDirectBody = false;    const innerStartPos = this.state.start;    const innerStartLoc = this.state.startLoc;    const exprList = [];    const refExpressionErrors = new ExpressionErrors();    let first = true;    let spreadStart;    let optionalCommaStart;    while (!this.match(11)) {      if (first) {        first = false;      } else {        this.expect(12, refExpressionErrors.optionalParameters === -1 ? null : refExpressionErrors.optionalParameters);        if (this.match(11)) {          optionalCommaStart = this.state.start;          break;        }      }      if (this.match(21)) {        const spreadNodeStartPos = this.state.start;        const spreadNodeStartLoc = this.state.startLoc;        spreadStart = this.state.start;        exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc));        this.checkCommaAfterRest(41);        break;      } else {        exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem));      }    }    const innerEndPos = this.state.lastTokEnd;    const innerEndLoc = this.state.lastTokEndLoc;    this.expect(11);    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;    let arrowNode = this.startNodeAt(startPos, startLoc);    if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {      this.expressionScope.validateAsPattern();      this.expressionScope.exit();      this.parseArrowExpression(arrowNode, exprList, false);      return arrowNode;    }    this.expressionScope.exit();    if (!exprList.length) {      this.unexpected(this.state.lastTokStart);    }    if (optionalCommaStart) this.unexpected(optionalCommaStart);    if (spreadStart) this.unexpected(spreadStart);    this.checkExpressionErrors(refExpressionErrors, true);    this.toReferencedListDeep(exprList, true);    if (exprList.length > 1) {      val = this.startNodeAt(innerStartPos, innerStartLoc);      val.expressions = exprList;      this.finishNode(val, "SequenceExpression");      this.resetEndLocation(val, innerEndPos, innerEndLoc);    } else {      val = exprList[0];    }    if (!this.options.createParenthesizedExpressions) {      this.addExtra(val, "parenthesized", true);      this.addExtra(val, "parenStart", startPos);      this.takeSurroundingComments(val, startPos, this.state.lastTokEnd);      return val;    }    const parenExpression = this.startNodeAt(startPos, startLoc);    parenExpression.expression = val;    this.finishNode(parenExpression, "ParenthesizedExpression");    return parenExpression;  }  shouldParseArrow(params) {    return !this.canInsertSemicolon();  }  parseArrow(node) {    if (this.eat(19)) {      return node;    }  }  parseParenItem(node, startPos, startLoc) {    return node;  }  parseNewOrNewTarget() {    const node = this.startNode();    this.next();    if (this.match(16)) {      const meta = this.createIdentifier(this.startNodeAtNode(node), "new");      this.next();      const metaProp = this.parseMetaProperty(node, meta, "target");      if (!this.scope.inNonArrowFunction && !this.scope.inClass) {        this.raise(metaProp.start, ErrorMessages.UnexpectedNewTarget);      }      return metaProp;    }    return this.parseNew(node);  }  parseNew(node) {    node.callee = this.parseNoCallExpr();    if (node.callee.type === "Import") {      this.raise(node.callee.start, ErrorMessages.ImportCallNotNewExpression);    } else if (this.isOptionalChain(node.callee)) {      this.raise(this.state.lastTokEnd, ErrorMessages.OptionalChainingNoNew);    } else if (this.eat(18)) {      this.raise(this.state.start, ErrorMessages.OptionalChainingNoNew);    }    this.parseNewArguments(node);    return this.finishNode(node, "NewExpression");  }  parseNewArguments(node) {    if (this.eat(10)) {      const args = this.parseExprList(11);      this.toReferencedList(args);      node.arguments = args;    } else {      node.arguments = [];    }  }  parseTemplateElement(isTagged) {    const elem = this.startNode();    if (this.state.value === null) {      if (!isTagged) {        this.raise(this.state.start + 1, ErrorMessages.InvalidEscapeSequenceTemplate);      }    }    elem.value = {      raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"),      cooked: this.state.value    };    this.next();    elem.tail = this.match(22);    return this.finishNode(elem, "TemplateElement");  }  parseTemplate(isTagged) {    const node = this.startNode();    this.next();    node.expressions = [];    let curElt = this.parseTemplateElement(isTagged);    node.quasis = [curElt];    while (!curElt.tail) {      this.expect(23);      node.expressions.push(this.parseTemplateSubstitution());      this.expect(8);      node.quasis.push(curElt = this.parseTemplateElement(isTagged));    }    this.next();    return this.finishNode(node, "TemplateLiteral");  }  parseTemplateSubstitution() {    return this.parseExpression();  }  parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {    if (isRecord) {      this.expectPlugin("recordAndTuple");    }    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;    this.state.inFSharpPipelineDirectBody = false;    const propHash = Object.create(null);    let first = true;    const node = this.startNode();    node.properties = [];    this.next();    while (!this.match(close)) {      if (first) {        first = false;      } else {        this.expect(12);        if (this.match(close)) {          this.addExtra(node, "trailingComma", this.state.lastTokStart);          break;        }      }      let prop;      if (isPattern) {        prop = this.parseBindingProperty();      } else {        prop = this.parsePropertyDefinition(refExpressionErrors);        this.checkProto(prop, isRecord, propHash, refExpressionErrors);      }      if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") {        this.raise(prop.start, ErrorMessages.InvalidRecordProperty);      }      if (prop.shorthand) {        this.addExtra(prop, "shorthand", true);      }      node.properties.push(prop);    }    this.next();    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;    let type = "ObjectExpression";    if (isPattern) {      type = "ObjectPattern";    } else if (isRecord) {      type = "RecordExpression";    }    return this.finishNode(node, type);  }  maybeAsyncOrAccessorProp(prop) {    return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(49));  }  parsePropertyDefinition(refExpressionErrors) {    let decorators = [];    if (this.match(24)) {      if (this.hasPlugin("decorators")) {        this.raise(this.state.start, ErrorMessages.UnsupportedPropertyDecorator);      }      while (this.match(24)) {        decorators.push(this.parseDecorator());      }    }    const prop = this.startNode();    let isAsync = false;    let isAccessor = false;    let startPos;    let startLoc;    if (this.match(21)) {      if (decorators.length) this.unexpected();      return this.parseSpread();    }    if (decorators.length) {      prop.decorators = decorators;      decorators = [];    }    prop.method = false;    if (refExpressionErrors) {      startPos = this.state.start;      startLoc = this.state.startLoc;    }    let isGenerator = this.eat(49);    this.parsePropertyNamePrefixOperator(prop);    const containsEsc = this.state.containsEsc;    const key = this.parsePropertyName(prop);    if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {      const keyName = key.name;      if (keyName === "async" && !this.hasPrecedingLineBreak()) {        isAsync = true;        this.resetPreviousNodeTrailingComments(key);        isGenerator = this.eat(49);        this.parsePropertyName(prop);      }      if (keyName === "get" || keyName === "set") {        isAccessor = true;        this.resetPreviousNodeTrailingComments(key);        prop.kind = keyName;        if (this.match(49)) {          isGenerator = true;          this.raise(this.state.pos, ErrorMessages.AccessorIsGenerator, keyName);          this.next();        }        this.parsePropertyName(prop);      }    }    this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);    return prop;  }  getGetterSetterExpectedParamCount(method) {    return method.kind === "get" ? 0 : 1;  }  getObjectOrClassMethodParams(method) {    return method.params;  }  checkGetterSetterParams(method) {    var _params;    const paramCount = this.getGetterSetterExpectedParamCount(method);    const params = this.getObjectOrClassMethodParams(method);    const start = method.start;    if (params.length !== paramCount) {      if (method.kind === "get") {        this.raise(start, ErrorMessages.BadGetterArity);      } else {        this.raise(start, ErrorMessages.BadSetterArity);      }    }    if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") {      this.raise(start, ErrorMessages.BadSetterRestParameter);    }  }  parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {    if (isAccessor) {      this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod");      this.checkGetterSetterParams(prop);      return prop;    }    if (isAsync || isGenerator || this.match(10)) {      if (isPattern) this.unexpected();      prop.kind = "method";      prop.method = true;      return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");    }  }  parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {    prop.shorthand = false;    if (this.eat(14)) {      prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors);      return this.finishNode(prop, "ObjectProperty");    }    if (!prop.computed && prop.key.type === "Identifier") {      this.checkReservedWord(prop.key.name, prop.key.start, true, false);      if (isPattern) {        prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));      } else if (this.match(27) && refExpressionErrors) {        if (refExpressionErrors.shorthandAssign === -1) {          refExpressionErrors.shorthandAssign = this.state.start;        }        prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));      } else {        prop.value = cloneIdentifier(prop.key);      }      prop.shorthand = true;      return this.finishNode(prop, "ObjectProperty");    }  }  parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {    const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);    if (!node) this.unexpected();    return node;  }  parsePropertyName(prop) {    if (this.eat(0)) {      prop.computed = true;      prop.key = this.parseMaybeAssignAllowIn();      this.expect(3);    } else {      const {        type,        value      } = this.state;      let key;      if (tokenIsKeywordOrIdentifier(type)) {        key = this.parseIdentifier(true);      } else {        switch (type) {          case 124:            key = this.parseNumericLiteral(value);            break;          case 123:            key = this.parseStringLiteral(value);            break;          case 125:            key = this.parseBigIntLiteral(value);            break;          case 126:            key = this.parseDecimalLiteral(value);            break;          case 128:            {              const privateKeyPos = this.state.start + 1;              this.raise(privateKeyPos, ErrorMessages.UnexpectedPrivateField);              key = this.parsePrivateName();              break;            }          default:            throw this.unexpected();        }      }      prop.key = key;      if (type !== 128) {        prop.computed = false;      }    }    return prop.key;  }  initFunction(node, isAsync) {    node.id = null;    node.generator = false;    node.async = !!isAsync;  }  parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {    this.initFunction(node, isAsync);    node.generator = !!isGenerator;    const allowModifiers = isConstructor;    this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));    this.prodParam.enter(functionFlags(isAsync, node.generator));    this.parseFunctionParams(node, allowModifiers);    this.parseFunctionBodyAndFinish(node, type, true);    this.prodParam.exit();    this.scope.exit();    return node;  }  parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {    if (isTuple) {      this.expectPlugin("recordAndTuple");    }    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;    this.state.inFSharpPipelineDirectBody = false;    const node = this.startNode();    this.next();    node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;    return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression");  }  parseArrowExpression(node, params, isAsync, trailingCommaPos) {    this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);    let flags = functionFlags(isAsync, false);    if (!this.match(0) && this.prodParam.hasIn) {      flags |= PARAM_IN;    }    this.prodParam.enter(flags);    this.initFunction(node, isAsync);    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;    if (params) {      this.state.maybeInArrowParameters = true;      this.setArrowFunctionParameters(node, params, trailingCommaPos);    }    this.state.maybeInArrowParameters = false;    this.parseFunctionBody(node, true);    this.prodParam.exit();    this.scope.exit();    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;    return this.finishNode(node, "ArrowFunctionExpression");  }  setArrowFunctionParameters(node, params, trailingCommaPos) {    node.params = this.toAssignableList(params, trailingCommaPos, false);  }  parseFunctionBodyAndFinish(node, type, isMethod = false) {    this.parseFunctionBody(node, false, isMethod);    this.finishNode(node, type);  }  parseFunctionBody(node, allowExpression, isMethod = false) {    const isExpression = allowExpression && !this.match(5);    this.expressionScope.enter(newExpressionScope());    if (isExpression) {      node.body = this.parseMaybeAssign();      this.checkParams(node, false, allowExpression, false);    } else {      const oldStrict = this.state.strict;      const oldLabels = this.state.labels;      this.state.labels = [];      this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN);      node.body = this.parseBlock(true, false, hasStrictModeDirective => {        const nonSimple = !this.isSimpleParamList(node.params);        if (hasStrictModeDirective && nonSimple) {          const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start;          this.raise(errorPos, ErrorMessages.IllegalLanguageModeDirective);        }        const strictModeChanged = !oldStrict && this.state.strict;        this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);        if (this.state.strict && node.id) {          this.checkLVal(node.id, "function name", BIND_OUTSIDE, undefined, undefined, strictModeChanged);        }      });      this.prodParam.exit();      this.state.labels = oldLabels;    }    this.expressionScope.exit();  }  isSimpleParamList(params) {    for (let i = 0, len = params.length; i < len; i++) {      if (params[i].type !== "Identifier") return false;    }    return true;  }  checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {    const checkClashes = new Set();    for (const param of node.params) {      this.checkLVal(param, "function parameter list", BIND_VAR, allowDuplicates ? null : checkClashes, undefined, strictModeChanged);    }  }  parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {    const elts = [];    let first = true;    while (!this.eat(close)) {      if (first) {        first = false;      } else {        this.expect(12);        if (this.match(close)) {          if (nodeForExtra) {            this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);          }          this.next();          break;        }      }      elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));    }    return elts;  }  parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) {    let elt;    if (this.match(12)) {      if (!allowEmpty) {        this.raise(this.state.pos, ErrorMessages.UnexpectedToken, ",");      }      elt = null;    } else if (this.match(21)) {      const spreadNodeStartPos = this.state.start;      const spreadNodeStartLoc = this.state.startLoc;      elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartPos, spreadNodeStartLoc);    } else if (this.match(17)) {      this.expectPlugin("partialApplication");      if (!allowPlaceholder) {        this.raise(this.state.start, ErrorMessages.UnexpectedArgumentPlaceholder);      }      const node = this.startNode();      this.next();      elt = this.finishNode(node, "ArgumentPlaceholder");    } else {      elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem);    }    return elt;  }  parseIdentifier(liberal) {    const node = this.startNode();    const name = this.parseIdentifierName(node.start, liberal);    return this.createIdentifier(node, name);  }  createIdentifier(node, name) {    node.name = name;    node.loc.identifierName = name;    return this.finishNode(node, "Identifier");  }  parseIdentifierName(pos, liberal) {    let name;    const {      start,      type    } = this.state;    if (tokenIsKeywordOrIdentifier(type)) {      name = this.state.value;    } else {      throw this.unexpected();    }    const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);    if (liberal) {      if (tokenIsKeyword) {        this.replaceToken(122);      }    } else {      this.checkReservedWord(name, start, tokenIsKeyword, false);    }    this.next();    return name;  }  checkReservedWord(word, startLoc, checkKeywords, isBinding) {    if (word.length > 10) {      return;    }    if (!canBeReservedWord(word)) {      return;    }    if (word === "yield") {      if (this.prodParam.hasYield) {        this.raise(startLoc, ErrorMessages.YieldBindingIdentifier);        return;      }    } else if (word === "await") {      if (this.prodParam.hasAwait) {        this.raise(startLoc, ErrorMessages.AwaitBindingIdentifier);        return;      } else if (this.scope.inStaticBlock) {        this.raise(startLoc, ErrorMessages.AwaitBindingIdentifierInStaticBlock);        return;      } else {        this.expressionScope.recordAsyncArrowParametersError(startLoc, ErrorMessages.AwaitBindingIdentifier);      }    } else if (word === "arguments") {      if (this.scope.inClassAndNotInNonArrowFunction) {        this.raise(startLoc, ErrorMessages.ArgumentsInClass);        return;      }    }    if (checkKeywords && isKeyword(word)) {      this.raise(startLoc, ErrorMessages.UnexpectedKeyword, word);      return;    }    const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;    if (reservedTest(word, this.inModule)) {      this.raise(startLoc, ErrorMessages.UnexpectedReservedWord, word);    }  }  isAwaitAllowed() {    if (this.prodParam.hasAwait) return true;    if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) {      return true;    }    return false;  }  parseAwait(startPos, startLoc) {    const node = this.startNodeAt(startPos, startLoc);    this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.AwaitExpressionFormalParameter);    if (this.eat(49)) {      this.raise(node.start, ErrorMessages.ObsoleteAwaitStar);    }    if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {      if (this.isAmbiguousAwait()) {        this.ambiguousScriptDifferentAst = true;      } else {        this.sawUnambiguousESM = true;      }    }    if (!this.state.soloAwait) {      node.argument = this.parseMaybeUnary(null, true);    }    return this.finishNode(node, "AwaitExpression");  }  isAmbiguousAwait() {    return this.hasPrecedingLineBreak() || this.match(47) || this.match(10) || this.match(0) || this.match(22) || this.match(127) || this.match(50) || this.hasPlugin("v8intrinsic") && this.match(48);  }  parseYield() {    const node = this.startNode();    this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.YieldInParameter);    this.next();    let delegating = false;    let argument = null;    if (!this.hasPrecedingLineBreak()) {      delegating = this.eat(49);      switch (this.state.type) {        case 13:        case 129:        case 8:        case 11:        case 3:        case 9:        case 14:        case 12:          if (!delegating) break;        default:          argument = this.parseMaybeAssign();      }    }    node.delegate = delegating;    node.argument = argument;    return this.finishNode(node, "YieldExpression");  }  checkPipelineAtInfixOperator(left, leftStartPos) {    if (this.getPluginOption("pipelineOperator", "proposal") === "smart") {      if (left.type === "SequenceExpression") {        this.raise(leftStartPos, ErrorMessages.PipelineHeadSequenceExpression);      }    }  }  checkHackPipeBodyEarlyErrors(startPos) {    if (!this.topicReferenceWasUsedInCurrentContext()) {      this.raise(startPos, ErrorMessages.PipeTopicUnused);    }  }  parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc) {    const bodyNode = this.startNodeAt(startPos, startLoc);    if (this.isSimpleReference(childExpr)) {      bodyNode.callee = childExpr;      return this.finishNode(bodyNode, "PipelineBareFunction");    } else {      this.checkSmartPipeTopicBodyEarlyErrors(startPos);      bodyNode.expression = childExpr;      return this.finishNode(bodyNode, "PipelineTopicExpression");    }  }  isSimpleReference(expression) {    switch (expression.type) {      case "MemberExpression":        return !expression.computed && this.isSimpleReference(expression.object);      case "Identifier":        return true;      default:        return false;    }  }  checkSmartPipeTopicBodyEarlyErrors(startPos) {    if (this.match(19)) {      throw this.raise(this.state.start, ErrorMessages.PipelineBodyNoArrow);    } else if (!this.topicReferenceWasUsedInCurrentContext()) {      this.raise(startPos, ErrorMessages.PipelineTopicUnused);    }  }  withTopicBindingContext(callback) {    const outerContextTopicState = this.state.topicContext;    this.state.topicContext = {      maxNumOfResolvableTopics: 1,      maxTopicIndex: null    };    try {      return callback();    } finally {      this.state.topicContext = outerContextTopicState;    }  }  withSmartMixTopicForbiddingContext(callback) {    const proposal = this.getPluginOption("pipelineOperator", "proposal");    if (proposal === "smart") {      const outerContextTopicState = this.state.topicContext;      this.state.topicContext = {        maxNumOfResolvableTopics: 0,        maxTopicIndex: null      };      try {        return callback();      } finally {        this.state.topicContext = outerContextTopicState;      }    } else {      return callback();    }  }  withSoloAwaitPermittingContext(callback) {    const outerContextSoloAwaitState = this.state.soloAwait;    this.state.soloAwait = true;    try {      return callback();    } finally {      this.state.soloAwait = outerContextSoloAwaitState;    }  }  allowInAnd(callback) {    const flags = this.prodParam.currentFlags();    const prodParamToSet = PARAM_IN & ~flags;    if (prodParamToSet) {      this.prodParam.enter(flags | PARAM_IN);      try {        return callback();      } finally {        this.prodParam.exit();      }    }    return callback();  }  disallowInAnd(callback) {    const flags = this.prodParam.currentFlags();    const prodParamToClear = PARAM_IN & flags;    if (prodParamToClear) {      this.prodParam.enter(flags & ~PARAM_IN);      try {        return callback();      } finally {        this.prodParam.exit();      }    }    return callback();  }  registerTopicReference() {    this.state.topicContext.maxTopicIndex = 0;  }  topicReferenceIsAllowedInCurrentContext() {    return this.state.topicContext.maxNumOfResolvableTopics >= 1;  }  topicReferenceWasUsedInCurrentContext() {    return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;  }  parseFSharpPipelineBody(prec) {    const startPos = this.state.start;    const startLoc = this.state.startLoc;    this.state.potentialArrowAt = this.state.start;    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;    this.state.inFSharpPipelineDirectBody = true;    const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, prec);    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;    return ret;  }  parseModuleExpression() {    this.expectPlugin("moduleBlocks");    const node = this.startNode();    this.next();    this.eat(5);    const revertScopes = this.initializeScopes(true);    this.enterInitialScopes();    const program = this.startNode();    try {      node.body = this.parseProgram(program, 8, "module");    } finally {      revertScopes();    }    this.eat(8);    return this.finishNode(node, "ModuleExpression");  }  parsePropertyNamePrefixOperator(prop) {}}const loopLabel = {  kind: "loop"},      switchLabel = {  kind: "switch"};const FUNC_NO_FLAGS = 0b000,      FUNC_STATEMENT = 0b001,      FUNC_HANGING_STATEMENT = 0b010,      FUNC_NULLABLE_ID = 0b100;const loneSurrogate = /[\uD800-\uDFFF]/u;const keywordRelationalOperator = /in(?:stanceof)?/y;function babel7CompatTokens(tokens) {  for (let i = 0; i < tokens.length; i++) {    const token = tokens[i];    const {      type    } = token;    if (type === 128) {      {        const {          loc,          start,          value,          end        } = token;        const hashEndPos = start + 1;        const hashEndLoc = new Position(loc.start.line, loc.start.column + 1);        tokens.splice(i, 1, new Token({          type: getExportedToken(25),          value: "#",          start: start,          end: hashEndPos,          startLoc: loc.start,          endLoc: hashEndLoc        }), new Token({          type: getExportedToken(122),          value: value,          start: hashEndPos,          end: end,          startLoc: hashEndLoc,          endLoc: loc.end        }));        i++;        continue;      }    }    if (typeof type === "number") {      token.type = getExportedToken(type);    }  }  return tokens;}class StatementParser extends ExpressionParser {  parseTopLevel(file, program) {    file.program = this.parseProgram(program);    file.comments = this.state.comments;    if (this.options.tokens) file.tokens = babel7CompatTokens(this.tokens);    return this.finishNode(file, "File");  }  parseProgram(program, end = 129, sourceType = this.options.sourceType) {    program.sourceType = sourceType;    program.interpreter = this.parseInterpreterDirective();    this.parseBlockBody(program, true, true, end);    if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {      for (const [name] of Array.from(this.scope.undefinedExports)) {        const pos = this.scope.undefinedExports.get(name);        this.raise(pos, ErrorMessages.ModuleExportUndefined, name);      }    }    return this.finishNode(program, "Program");  }  stmtToDirective(stmt) {    const directive = stmt;    directive.type = "Directive";    directive.value = directive.expression;    delete directive.expression;    const directiveLiteral = directive.value;    const expressionValue = directiveLiteral.value;    const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end);    const val = directiveLiteral.value = raw.slice(1, -1);    this.addExtra(directiveLiteral, "raw", raw);    this.addExtra(directiveLiteral, "rawValue", val);    this.addExtra(directiveLiteral, "expressionValue", expressionValue);    directiveLiteral.type = "DirectiveLiteral";    return directive;  }  parseInterpreterDirective() {    if (!this.match(26)) {      return null;    }    const node = this.startNode();    node.value = this.state.value;    this.next();    return this.finishNode(node, "InterpreterDirective");  }  isLet(context) {    if (!this.isContextual(93)) {      return false;    }    return this.isLetKeyword(context);  }  isLetKeyword(context) {    const next = this.nextTokenStart();    const nextCh = this.codePointAtPos(next);    if (nextCh === 92 || nextCh === 91) {      return true;    }    if (context) return false;    if (nextCh === 123) return true;    if (isIdentifierStart(nextCh)) {      keywordRelationalOperator.lastIndex = next;      if (keywordRelationalOperator.test(this.input)) {        const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);        if (!isIdentifierChar(endCh) && endCh !== 92) {          return false;        }      }      return true;    }    return false;  }  parseStatement(context, topLevel) {    if (this.match(24)) {      this.parseDecorators(true);    }    return this.parseStatementContent(context, topLevel);  }  parseStatementContent(context, topLevel) {    let starttype = this.state.type;    const node = this.startNode();    let kind;    if (this.isLet(context)) {      starttype = 68;      kind = "let";    }    switch (starttype) {      case 54:        return this.parseBreakContinueStatement(node, true);      case 57:        return this.parseBreakContinueStatement(node, false);      case 58:        return this.parseDebuggerStatement(node);      case 84:        return this.parseDoStatement(node);      case 85:        return this.parseForStatement(node);      case 62:        if (this.lookaheadCharCode() === 46) break;        if (context) {          if (this.state.strict) {            this.raise(this.state.start, ErrorMessages.StrictFunction);          } else if (context !== "if" && context !== "label") {            this.raise(this.state.start, ErrorMessages.SloppyFunction);          }        }        return this.parseFunctionStatement(node, false, !context);      case 74:        if (context) this.unexpected();        return this.parseClass(node, true);      case 63:        return this.parseIfStatement(node);      case 64:        return this.parseReturnStatement(node);      case 65:        return this.parseSwitchStatement(node);      case 66:        return this.parseThrowStatement(node);      case 67:        return this.parseTryStatement(node);      case 69:      case 68:        kind = kind || this.state.value;        if (context && kind !== "var") {          this.raise(this.state.start, ErrorMessages.UnexpectedLexicalDeclaration);        }        return this.parseVarStatement(node, kind);      case 86:        return this.parseWhileStatement(node);      case 70:        return this.parseWithStatement(node);      case 5:        return this.parseBlock();      case 13:        return this.parseEmptyStatement(node);      case 77:        {          const nextTokenCharCode = this.lookaheadCharCode();          if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {            break;          }        }      case 76:        {          if (!this.options.allowImportExportEverywhere && !topLevel) {            this.raise(this.state.start, ErrorMessages.UnexpectedImportExport);          }          this.next();          let result;          if (starttype === 77) {            result = this.parseImport(node);            if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) {              this.sawUnambiguousESM = true;            }          } else {            result = this.parseExport(node);            if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") {              this.sawUnambiguousESM = true;            }          }          this.assertModuleNodeAllowed(node);          return result;        }      default:        {          if (this.isAsyncFunction()) {            if (context) {              this.raise(this.state.start, ErrorMessages.AsyncFunctionInSingleStatementContext);            }            this.next();            return this.parseFunctionStatement(node, true, !context);          }        }    }    const maybeName = this.state.value;    const expr = this.parseExpression();    if (tokenIsIdentifier(starttype) && expr.type === "Identifier" && this.eat(14)) {      return this.parseLabeledStatement(node, maybeName, expr, context);    } else {      return this.parseExpressionStatement(node, expr);    }  }  assertModuleNodeAllowed(node) {    if (!this.options.allowImportExportEverywhere && !this.inModule) {      this.raise(node.start, SourceTypeModuleErrorMessages.ImportOutsideModule);    }  }  takeDecorators(node) {    const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];    if (decorators.length) {      node.decorators = decorators;      this.resetStartLocationFromNode(node, decorators[0]);      this.state.decoratorStack[this.state.decoratorStack.length - 1] = [];    }  }  canHaveLeadingDecorator() {    return this.match(74);  }  parseDecorators(allowExport) {    const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];    while (this.match(24)) {      const decorator = this.parseDecorator();      currentContextDecorators.push(decorator);    }    if (this.match(76)) {      if (!allowExport) {        this.unexpected();      }      if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) {        this.raise(this.state.start, ErrorMessages.DecoratorExportClass);      }    } else if (!this.canHaveLeadingDecorator()) {      throw this.raise(this.state.start, ErrorMessages.UnexpectedLeadingDecorator);    }  }  parseDecorator() {    this.expectOnePlugin(["decorators-legacy", "decorators"]);    const node = this.startNode();    this.next();    if (this.hasPlugin("decorators")) {      this.state.decoratorStack.push([]);      const startPos = this.state.start;      const startLoc = this.state.startLoc;      let expr;      if (this.eat(10)) {        expr = this.parseExpression();        this.expect(11);      } else {        expr = this.parseIdentifier(false);        while (this.eat(16)) {          const node = this.startNodeAt(startPos, startLoc);          node.object = expr;          node.property = this.parseIdentifier(true);          node.computed = false;          expr = this.finishNode(node, "MemberExpression");        }      }      node.expression = this.parseMaybeDecoratorArguments(expr);      this.state.decoratorStack.pop();    } else {      node.expression = this.parseExprSubscripts();    }    return this.finishNode(node, "Decorator");  }  parseMaybeDecoratorArguments(expr) {    if (this.eat(10)) {      const node = this.startNodeAtNode(expr);      node.callee = expr;      node.arguments = this.parseCallExpressionArguments(11, false);      this.toReferencedList(node.arguments);      return this.finishNode(node, "CallExpression");    }    return expr;  }  parseBreakContinueStatement(node, isBreak) {    this.next();    if (this.isLineTerminator()) {      node.label = null;    } else {      node.label = this.parseIdentifier();      this.semicolon();    }    this.verifyBreakContinue(node, isBreak);    return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");  }  verifyBreakContinue(node, isBreak) {    let i;    for (i = 0; i < this.state.labels.length; ++i) {      const lab = this.state.labels[i];      if (node.label == null || lab.name === node.label.name) {        if (lab.kind != null && (isBreak || lab.kind === "loop")) break;        if (node.label && isBreak) break;      }    }    if (i === this.state.labels.length) {      this.raise(node.start, ErrorMessages.IllegalBreakContinue, isBreak ? "break" : "continue");    }  }  parseDebuggerStatement(node) {    this.next();    this.semicolon();    return this.finishNode(node, "DebuggerStatement");  }  parseHeaderExpression() {    this.expect(10);    const val = this.parseExpression();    this.expect(11);    return val;  }  parseDoStatement(node) {    this.next();    this.state.labels.push(loopLabel);    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("do"));    this.state.labels.pop();    this.expect(86);    node.test = this.parseHeaderExpression();    this.eat(13);    return this.finishNode(node, "DoWhileStatement");  }  parseForStatement(node) {    this.next();    this.state.labels.push(loopLabel);    let awaitAt = -1;    if (this.isAwaitAllowed() && this.eatContextual(90)) {      awaitAt = this.state.lastTokStart;    }    this.scope.enter(SCOPE_OTHER);    this.expect(10);    if (this.match(13)) {      if (awaitAt > -1) {        this.unexpected(awaitAt);      }      return this.parseFor(node, null);    }    const startsWithLet = this.isContextual(93);    const isLet = startsWithLet && this.isLetKeyword();    if (this.match(68) || this.match(69) || isLet) {      const init = this.startNode();      const kind = isLet ? "let" : this.state.value;      this.next();      this.parseVar(init, true, kind);      this.finishNode(init, "VariableDeclaration");      if ((this.match(52) || this.isContextual(95)) && init.declarations.length === 1) {        return this.parseForIn(node, init, awaitAt);      }      if (awaitAt > -1) {        this.unexpected(awaitAt);      }      return this.parseFor(node, init);    }    const startsWithAsync = this.isContextual(89);    const refExpressionErrors = new ExpressionErrors();    const init = this.parseExpression(true, refExpressionErrors);    const isForOf = this.isContextual(95);    if (isForOf) {      if (startsWithLet) {        this.raise(init.start, ErrorMessages.ForOfLet);      } else if (awaitAt === -1 && startsWithAsync && init.type === "Identifier") {        this.raise(init.start, ErrorMessages.ForOfAsync);      }    }    if (isForOf || this.match(52)) {      this.toAssignable(init, true);      const description = isForOf ? "for-of statement" : "for-in statement";      this.checkLVal(init, description);      return this.parseForIn(node, init, awaitAt);    } else {      this.checkExpressionErrors(refExpressionErrors, true);    }    if (awaitAt > -1) {      this.unexpected(awaitAt);    }    return this.parseFor(node, init);  }  parseFunctionStatement(node, isAsync, declarationPosition) {    this.next();    return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync);  }  parseIfStatement(node) {    this.next();    node.test = this.parseHeaderExpression();    node.consequent = this.parseStatement("if");    node.alternate = this.eat(60) ? this.parseStatement("if") : null;    return this.finishNode(node, "IfStatement");  }  parseReturnStatement(node) {    if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {      this.raise(this.state.start, ErrorMessages.IllegalReturn);    }    this.next();    if (this.isLineTerminator()) {      node.argument = null;    } else {      node.argument = this.parseExpression();      this.semicolon();    }    return this.finishNode(node, "ReturnStatement");  }  parseSwitchStatement(node) {    this.next();    node.discriminant = this.parseHeaderExpression();    const cases = node.cases = [];    this.expect(5);    this.state.labels.push(switchLabel);    this.scope.enter(SCOPE_OTHER);    let cur;    for (let sawDefault; !this.match(8);) {      if (this.match(55) || this.match(59)) {        const isCase = this.match(55);        if (cur) this.finishNode(cur, "SwitchCase");        cases.push(cur = this.startNode());        cur.consequent = [];        this.next();        if (isCase) {          cur.test = this.parseExpression();        } else {          if (sawDefault) {            this.raise(this.state.lastTokStart, ErrorMessages.MultipleDefaultsInSwitch);          }          sawDefault = true;          cur.test = null;        }        this.expect(14);      } else {        if (cur) {          cur.consequent.push(this.parseStatement(null));        } else {          this.unexpected();        }      }    }    this.scope.exit();    if (cur) this.finishNode(cur, "SwitchCase");    this.next();    this.state.labels.pop();    return this.finishNode(node, "SwitchStatement");  }  parseThrowStatement(node) {    this.next();    if (this.hasPrecedingLineBreak()) {      this.raise(this.state.lastTokEnd, ErrorMessages.NewlineAfterThrow);    }    node.argument = this.parseExpression();    this.semicolon();    return this.finishNode(node, "ThrowStatement");  }  parseCatchClauseParam() {    const param = this.parseBindingAtom();    const simple = param.type === "Identifier";    this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);    this.checkLVal(param, "catch clause", BIND_LEXICAL);    return param;  }  parseTryStatement(node) {    this.next();    node.block = this.parseBlock();    node.handler = null;    if (this.match(56)) {      const clause = this.startNode();      this.next();      if (this.match(10)) {        this.expect(10);        clause.param = this.parseCatchClauseParam();        this.expect(11);      } else {        clause.param = null;        this.scope.enter(SCOPE_OTHER);      }      clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));      this.scope.exit();      node.handler = this.finishNode(clause, "CatchClause");    }    node.finalizer = this.eat(61) ? this.parseBlock() : null;    if (!node.handler && !node.finalizer) {      this.raise(node.start, ErrorMessages.NoCatchOrFinally);    }    return this.finishNode(node, "TryStatement");  }  parseVarStatement(node, kind) {    this.next();    this.parseVar(node, false, kind);    this.semicolon();    return this.finishNode(node, "VariableDeclaration");  }  parseWhileStatement(node) {    this.next();    node.test = this.parseHeaderExpression();    this.state.labels.push(loopLabel);    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("while"));    this.state.labels.pop();    return this.finishNode(node, "WhileStatement");  }  parseWithStatement(node) {    if (this.state.strict) {      this.raise(this.state.start, ErrorMessages.StrictWith);    }    this.next();    node.object = this.parseHeaderExpression();    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("with"));    return this.finishNode(node, "WithStatement");  }  parseEmptyStatement(node) {    this.next();    return this.finishNode(node, "EmptyStatement");  }  parseLabeledStatement(node, maybeName, expr, context) {    for (const label of this.state.labels) {      if (label.name === maybeName) {        this.raise(expr.start, ErrorMessages.LabelRedeclaration, maybeName);      }    }    const kind = tokenIsLoop(this.state.type) ? "loop" : this.match(65) ? "switch" : null;    for (let i = this.state.labels.length - 1; i >= 0; i--) {      const label = this.state.labels[i];      if (label.statementStart === node.start) {        label.statementStart = this.state.start;        label.kind = kind;      } else {        break;      }    }    this.state.labels.push({      name: maybeName,      kind: kind,      statementStart: this.state.start    });    node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label");    this.state.labels.pop();    node.label = expr;    return this.finishNode(node, "LabeledStatement");  }  parseExpressionStatement(node, expr) {    node.expression = expr;    this.semicolon();    return this.finishNode(node, "ExpressionStatement");  }  parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {    const node = this.startNode();    if (allowDirectives) {      this.state.strictErrors.clear();    }    this.expect(5);    if (createNewLexicalScope) {      this.scope.enter(SCOPE_OTHER);    }    this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);    if (createNewLexicalScope) {      this.scope.exit();    }    return this.finishNode(node, "BlockStatement");  }  isValidDirective(stmt) {    return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized;  }  parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {    const body = node.body = [];    const directives = node.directives = [];    this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);  }  parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {    const oldStrict = this.state.strict;    let hasStrictModeDirective = false;    let parsedNonDirective = false;    while (!this.match(end)) {      const stmt = this.parseStatement(null, topLevel);      if (directives && !parsedNonDirective) {        if (this.isValidDirective(stmt)) {          const directive = this.stmtToDirective(stmt);          directives.push(directive);          if (!hasStrictModeDirective && directive.value.value === "use strict") {            hasStrictModeDirective = true;            this.setStrict(true);          }          continue;        }        parsedNonDirective = true;        this.state.strictErrors.clear();      }      body.push(stmt);    }    if (afterBlockParse) {      afterBlockParse.call(this, hasStrictModeDirective);    }    if (!oldStrict) {      this.setStrict(false);    }    this.next();  }  parseFor(node, init) {    node.init = init;    this.semicolon(false);    node.test = this.match(13) ? null : this.parseExpression();    this.semicolon(false);    node.update = this.match(11) ? null : this.parseExpression();    this.expect(11);    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for"));    this.scope.exit();    this.state.labels.pop();    return this.finishNode(node, "ForStatement");  }  parseForIn(node, init, awaitAt) {    const isForIn = this.match(52);    this.next();    if (isForIn) {      if (awaitAt > -1) this.unexpected(awaitAt);    } else {      node.await = awaitAt > -1;    }    if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) {      this.raise(init.start, ErrorMessages.ForInOfLoopInitializer, isForIn ? "for-in" : "for-of");    } else if (init.type === "AssignmentPattern") {      this.raise(init.start, ErrorMessages.InvalidLhs, "for-loop");    }    node.left = init;    node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();    this.expect(11);    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for"));    this.scope.exit();    this.state.labels.pop();    return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement");  }  parseVar(node, isFor, kind) {    const declarations = node.declarations = [];    const isTypescript = this.hasPlugin("typescript");    node.kind = kind;    for (;;) {      const decl = this.startNode();      this.parseVarId(decl, kind);      if (this.eat(27)) {        decl.init = isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();      } else {        if (kind === "const" && !(this.match(52) || this.isContextual(95))) {          if (!isTypescript) {            this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Const declarations");          }        } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(52) || this.isContextual(95)))) {          this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Complex binding patterns");        }        decl.init = null;      }      declarations.push(this.finishNode(decl, "VariableDeclarator"));      if (!this.eat(12)) break;    }    return node;  }  parseVarId(decl, kind) {    decl.id = this.parseBindingAtom();    this.checkLVal(decl.id, "variable declaration", kind === "var" ? BIND_VAR : BIND_LEXICAL, undefined, kind !== "var");  }  parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) {    const isStatement = statement & FUNC_STATEMENT;    const isHangingStatement = statement & FUNC_HANGING_STATEMENT;    const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID);    this.initFunction(node, isAsync);    if (this.match(49) && isHangingStatement) {      this.raise(this.state.start, ErrorMessages.GeneratorInSingleStatementContext);    }    node.generator = this.eat(49);    if (isStatement) {      node.id = this.parseFunctionId(requireId);    }    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;    this.state.maybeInArrowParameters = false;    this.scope.enter(SCOPE_FUNCTION);    this.prodParam.enter(functionFlags(isAsync, node.generator));    if (!isStatement) {      node.id = this.parseFunctionId();    }    this.parseFunctionParams(node, false);    this.withSmartMixTopicForbiddingContext(() => {      this.parseFunctionBodyAndFinish(node, isStatement ? "FunctionDeclaration" : "FunctionExpression");    });    this.prodParam.exit();    this.scope.exit();    if (isStatement && !isHangingStatement) {      this.registerFunctionStatementId(node);    }    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;    return node;  }  parseFunctionId(requireId) {    return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;  }  parseFunctionParams(node, allowModifiers) {    this.expect(10);    this.expressionScope.enter(newParameterDeclarationScope());    node.params = this.parseBindingList(11, 41, false, allowModifiers);    this.expressionScope.exit();  }  registerFunctionStatementId(node) {    if (!node.id) return;    this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.start);  }  parseClass(node, isStatement, optionalId) {    this.next();    this.takeDecorators(node);    const oldStrict = this.state.strict;    this.state.strict = true;    this.parseClassId(node, isStatement, optionalId);    this.parseClassSuper(node);    node.body = this.parseClassBody(!!node.superClass, oldStrict);    return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");  }  isClassProperty() {    return this.match(27) || this.match(13) || this.match(8);  }  isClassMethod() {    return this.match(10);  }  isNonstaticConstructor(method) {    return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor");  }  parseClassBody(hadSuperClass, oldStrict) {    this.classScope.enter();    const state = {      hadConstructor: false,      hadSuperClass    };    let decorators = [];    const classBody = this.startNode();    classBody.body = [];    this.expect(5);    this.withSmartMixTopicForbiddingContext(() => {      while (!this.match(8)) {        if (this.eat(13)) {          if (decorators.length > 0) {            throw this.raise(this.state.lastTokEnd, ErrorMessages.DecoratorSemicolon);          }          continue;        }        if (this.match(24)) {          decorators.push(this.parseDecorator());          continue;        }        const member = this.startNode();        if (decorators.length) {          member.decorators = decorators;          this.resetStartLocationFromNode(member, decorators[0]);          decorators = [];        }        this.parseClassMember(classBody, member, state);        if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {          this.raise(member.start, ErrorMessages.DecoratorConstructor);        }      }    });    this.state.strict = oldStrict;    this.next();    if (decorators.length) {      throw this.raise(this.state.start, ErrorMessages.TrailingDecorator);    }    this.classScope.exit();    return this.finishNode(classBody, "ClassBody");  }  parseClassMemberFromModifier(classBody, member) {    const key = this.parseIdentifier(true);    if (this.isClassMethod()) {      const method = member;      method.kind = "method";      method.computed = false;      method.key = key;      method.static = false;      this.pushClassMethod(classBody, method, false, false, false, false);      return true;    } else if (this.isClassProperty()) {      const prop = member;      prop.computed = false;      prop.key = key;      prop.static = false;      classBody.body.push(this.parseClassProperty(prop));      return true;    }    this.resetPreviousNodeTrailingComments(key);    return false;  }  parseClassMember(classBody, member, state) {    const isStatic = this.isContextual(98);    if (isStatic) {      if (this.parseClassMemberFromModifier(classBody, member)) {        return;      }      if (this.eat(5)) {        this.parseClassStaticBlock(classBody, member);        return;      }    }    this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);  }  parseClassMemberWithIsStatic(classBody, member, state, isStatic) {    const publicMethod = member;    const privateMethod = member;    const publicProp = member;    const privateProp = member;    const method = publicMethod;    const publicMember = publicMethod;    member.static = isStatic;    this.parsePropertyNamePrefixOperator(member);    if (this.eat(49)) {      method.kind = "method";      const isPrivateName = this.match(128);      this.parseClassElementName(method);      if (isPrivateName) {        this.pushClassPrivateMethod(classBody, privateMethod, true, false);        return;      }      if (this.isNonstaticConstructor(publicMethod)) {        this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsGenerator);      }      this.pushClassMethod(classBody, publicMethod, true, false, false, false);      return;    }    const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc;    const isPrivate = this.match(128);    const key = this.parseClassElementName(member);    const maybeQuestionTokenStart = this.state.start;    this.parsePostMemberNameModifiers(publicMember);    if (this.isClassMethod()) {      method.kind = "method";      if (isPrivate) {        this.pushClassPrivateMethod(classBody, privateMethod, false, false);        return;      }      const isConstructor = this.isNonstaticConstructor(publicMethod);      let allowsDirectSuper = false;      if (isConstructor) {        publicMethod.kind = "constructor";        if (state.hadConstructor && !this.hasPlugin("typescript")) {          this.raise(key.start, ErrorMessages.DuplicateConstructor);        }        if (isConstructor && this.hasPlugin("typescript") && member.override) {          this.raise(key.start, ErrorMessages.OverrideOnConstructor);        }        state.hadConstructor = true;        allowsDirectSuper = state.hadSuperClass;      }      this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);    } else if (this.isClassProperty()) {      if (isPrivate) {        this.pushClassPrivateProperty(classBody, privateProp);      } else {        this.pushClassProperty(classBody, publicProp);      }    } else if (isContextual && key.name === "async" && !this.isLineTerminator()) {      this.resetPreviousNodeTrailingComments(key);      const isGenerator = this.eat(49);      if (publicMember.optional) {        this.unexpected(maybeQuestionTokenStart);      }      method.kind = "method";      const isPrivate = this.match(128);      this.parseClassElementName(method);      this.parsePostMemberNameModifiers(publicMember);      if (isPrivate) {        this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);      } else {        if (this.isNonstaticConstructor(publicMethod)) {          this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAsync);        }        this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);      }    } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(49) && this.isLineTerminator())) {      this.resetPreviousNodeTrailingComments(key);      method.kind = key.name;      const isPrivate = this.match(128);      this.parseClassElementName(publicMethod);      if (isPrivate) {        this.pushClassPrivateMethod(classBody, privateMethod, false, false);      } else {        if (this.isNonstaticConstructor(publicMethod)) {          this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAccessor);        }        this.pushClassMethod(classBody, publicMethod, false, false, false, false);      }      this.checkGetterSetterParams(publicMethod);    } else if (this.isLineTerminator()) {      if (isPrivate) {        this.pushClassPrivateProperty(classBody, privateProp);      } else {        this.pushClassProperty(classBody, publicProp);      }    } else {      this.unexpected();    }  }  parseClassElementName(member) {    const {      type,      value,      start    } = this.state;    if ((type === 122 || type === 123) && member.static && value === "prototype") {      this.raise(start, ErrorMessages.StaticPrototype);    }    if (type === 128) {      if (value === "constructor") {        this.raise(start, ErrorMessages.ConstructorClassPrivateField);      }      const key = this.parsePrivateName();      member.key = key;      return key;    }    return this.parsePropertyName(member);  }  parseClassStaticBlock(classBody, member) {    var _member$decorators;    this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER);    const oldLabels = this.state.labels;    this.state.labels = [];    this.prodParam.enter(PARAM);    const body = member.body = [];    this.parseBlockOrModuleBlockBody(body, undefined, false, 8);    this.prodParam.exit();    this.scope.exit();    this.state.labels = oldLabels;    classBody.body.push(this.finishNode(member, "StaticBlock"));    if ((_member$decorators = member.decorators) != null && _member$decorators.length) {      this.raise(member.start, ErrorMessages.DecoratorStaticBlock);    }  }  pushClassProperty(classBody, prop) {    if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) {      this.raise(prop.key.start, ErrorMessages.ConstructorClassField);    }    classBody.body.push(this.parseClassProperty(prop));  }  pushClassPrivateProperty(classBody, prop) {    const node = this.parseClassPrivateProperty(prop);    classBody.body.push(node);    this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.start);  }  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {    classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true));  }  pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {    const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true);    classBody.body.push(node);    const kind = node.kind === "get" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === "set" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER;    this.declareClassPrivateMethodInScope(node, kind);  }  declareClassPrivateMethodInScope(node, kind) {    this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.start);  }  parsePostMemberNameModifiers(methodOrProp) {}  parseClassPrivateProperty(node) {    this.parseInitializer(node);    this.semicolon();    return this.finishNode(node, "ClassPrivateProperty");  }  parseClassProperty(node) {    this.parseInitializer(node);    this.semicolon();    return this.finishNode(node, "ClassProperty");  }  parseInitializer(node) {    this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);    this.expressionScope.enter(newExpressionScope());    this.prodParam.enter(PARAM);    node.value = this.eat(27) ? this.parseMaybeAssignAllowIn() : null;    this.expressionScope.exit();    this.prodParam.exit();    this.scope.exit();  }  parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) {    if (tokenIsIdentifier(this.state.type)) {      node.id = this.parseIdentifier();      if (isStatement) {        this.checkLVal(node.id, "class name", bindingType);      }    } else {      if (optionalId || !isStatement) {        node.id = null;      } else {        this.unexpected(null, ErrorMessages.MissingClassName);      }    }  }  parseClassSuper(node) {    node.superClass = this.eat(75) ? this.parseExprSubscripts() : null;  }  parseExport(node) {    const hasDefault = this.maybeParseExportDefaultSpecifier(node);    const parseAfterDefault = !hasDefault || this.eat(12);    const hasStar = parseAfterDefault && this.eatExportStar(node);    const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);    const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));    const isFromRequired = hasDefault || hasStar;    if (hasStar && !hasNamespace) {      if (hasDefault) this.unexpected();      this.parseExportFrom(node, true);      return this.finishNode(node, "ExportAllDeclaration");    }    const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);    if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) {      throw this.unexpected(null, 5);    }    let hasDeclaration;    if (isFromRequired || hasSpecifiers) {      hasDeclaration = false;      this.parseExportFrom(node, isFromRequired);    } else {      hasDeclaration = this.maybeParseExportDeclaration(node);    }    if (isFromRequired || hasSpecifiers || hasDeclaration) {      this.checkExport(node, true, false, !!node.source);      return this.finishNode(node, "ExportNamedDeclaration");    }    if (this.eat(59)) {      node.declaration = this.parseExportDefaultExpression();      this.checkExport(node, true, true);      return this.finishNode(node, "ExportDefaultDeclaration");    }    throw this.unexpected(null, 5);  }  eatExportStar(node) {    return this.eat(49);  }  maybeParseExportDefaultSpecifier(node) {    if (this.isExportDefaultSpecifier()) {      this.expectPlugin("exportDefaultFrom");      const specifier = this.startNode();      specifier.exported = this.parseIdentifier(true);      node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];      return true;    }    return false;  }  maybeParseExportNamespaceSpecifier(node) {    if (this.isContextual(87)) {      if (!node.specifiers) node.specifiers = [];      const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc);      this.next();      specifier.exported = this.parseModuleExportName();      node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));      return true;    }    return false;  }  maybeParseExportNamedSpecifiers(node) {    if (this.match(5)) {      if (!node.specifiers) node.specifiers = [];      const isTypeExport = node.exportKind === "type";      node.specifiers.push(...this.parseExportSpecifiers(isTypeExport));      node.source = null;      node.declaration = null;      if (this.hasPlugin("importAssertions")) {        node.assertions = [];      }      return true;    }    return false;  }  maybeParseExportDeclaration(node) {    if (this.shouldParseExportDeclaration()) {      node.specifiers = [];      node.source = null;      if (this.hasPlugin("importAssertions")) {        node.assertions = [];      }      node.declaration = this.parseExportDeclaration(node);      return true;    }    return false;  }  isAsyncFunction() {    if (!this.isContextual(89)) return false;    const next = this.nextTokenStart();    return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, "function");  }  parseExportDefaultExpression() {    const expr = this.startNode();    const isAsync = this.isAsyncFunction();    if (this.match(62) || isAsync) {      this.next();      if (isAsync) {        this.next();      }      return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync);    } else if (this.match(74)) {      return this.parseClass(expr, true, true);    } else if (this.match(24)) {      if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) {        this.raise(this.state.start, ErrorMessages.DecoratorBeforeExport);      }      this.parseDecorators(false);      return this.parseClass(expr, true, true);    } else if (this.match(69) || this.match(68) || this.isLet()) {      throw this.raise(this.state.start, ErrorMessages.UnsupportedDefaultExport);    } else {      const res = this.parseMaybeAssignAllowIn();      this.semicolon();      return res;    }  }  parseExportDeclaration(node) {    return this.parseStatement(null);  }  isExportDefaultSpecifier() {    const {      type    } = this.state;    if (tokenIsIdentifier(type)) {      if (type === 89 && !this.state.containsEsc || type === 93) {        return false;      }      if ((type === 120 || type === 119) && !this.state.containsEsc) {        const {          type: nextType        } = this.lookahead();        if (tokenIsIdentifier(nextType) && nextType !== 91 || nextType === 5) {          this.expectOnePlugin(["flow", "typescript"]);          return false;        }      }    } else if (!this.match(59)) {      return false;    }    const next = this.nextTokenStart();    const hasFrom = this.isUnparsedContextual(next, "from");    if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {      return true;    }    if (this.match(59) && hasFrom) {      const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));      return nextAfterFrom === 34 || nextAfterFrom === 39;    }    return false;  }  parseExportFrom(node, expect) {    if (this.eatContextual(91)) {      node.source = this.parseImportSource();      this.checkExport(node);      const assertions = this.maybeParseImportAssertions();      if (assertions) {        node.assertions = assertions;      }    } else if (expect) {      this.unexpected();    }    this.semicolon();  }  shouldParseExportDeclaration() {    const {      type    } = this.state;    if (type === 24) {      this.expectOnePlugin(["decorators", "decorators-legacy"]);      if (this.hasPlugin("decorators")) {        if (this.getPluginOption("decorators", "decoratorsBeforeExport")) {          this.unexpected(this.state.start, ErrorMessages.DecoratorBeforeExport);        } else {          return true;        }      }    }    return type === 68 || type === 69 || type === 62 || type === 74 || this.isLet() || this.isAsyncFunction();  }  checkExport(node, checkNames, isDefault, isFrom) {    if (checkNames) {      if (isDefault) {        this.checkDuplicateExports(node, "default");        if (this.hasPlugin("exportDefaultFrom")) {          var _declaration$extra;          const declaration = node.declaration;          if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {            this.raise(declaration.start, ErrorMessages.ExportDefaultFromAsIdentifier);          }        }      } else if (node.specifiers && node.specifiers.length) {        for (const specifier of node.specifiers) {          const {            exported          } = specifier;          const exportedName = exported.type === "Identifier" ? exported.name : exported.value;          this.checkDuplicateExports(specifier, exportedName);          if (!isFrom && specifier.local) {            const {              local            } = specifier;            if (local.type !== "Identifier") {              this.raise(specifier.start, ErrorMessages.ExportBindingIsString, local.value, exportedName);            } else {              this.checkReservedWord(local.name, local.start, true, false);              this.scope.checkLocalExport(local);            }          }        }      } else if (node.declaration) {        if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") {          const id = node.declaration.id;          if (!id) throw new Error("Assertion failure");          this.checkDuplicateExports(node, id.name);        } else if (node.declaration.type === "VariableDeclaration") {          for (const declaration of node.declaration.declarations) {            this.checkDeclaration(declaration.id);          }        }      }    }    const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];    if (currentContextDecorators.length) {      throw this.raise(node.start, ErrorMessages.UnsupportedDecoratorExport);    }  }  checkDeclaration(node) {    if (node.type === "Identifier") {      this.checkDuplicateExports(node, node.name);    } else if (node.type === "ObjectPattern") {      for (const prop of node.properties) {        this.checkDeclaration(prop);      }    } else if (node.type === "ArrayPattern") {      for (const elem of node.elements) {        if (elem) {          this.checkDeclaration(elem);        }      }    } else if (node.type === "ObjectProperty") {      this.checkDeclaration(node.value);    } else if (node.type === "RestElement") {      this.checkDeclaration(node.argument);    } else if (node.type === "AssignmentPattern") {      this.checkDeclaration(node.left);    }  }  checkDuplicateExports(node, name) {    if (this.exportedIdentifiers.has(name)) {      this.raise(node.start, name === "default" ? ErrorMessages.DuplicateDefaultExport : ErrorMessages.DuplicateExport, name);    }    this.exportedIdentifiers.add(name);  }  parseExportSpecifiers(isInTypeExport) {    const nodes = [];    let first = true;    this.expect(5);    while (!this.eat(8)) {      if (first) {        first = false;      } else {        this.expect(12);        if (this.eat(8)) break;      }      const isMaybeTypeOnly = this.isContextual(120);      const isString = this.match(123);      const node = this.startNode();      node.local = this.parseModuleExportName();      nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));    }    return nodes;  }  parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {    if (this.eatContextual(87)) {      node.exported = this.parseModuleExportName();    } else if (isString) {      node.exported = cloneStringLiteral(node.local);    } else if (!node.exported) {      node.exported = cloneIdentifier(node.local);    }    return this.finishNode(node, "ExportSpecifier");  }  parseModuleExportName() {    if (this.match(123)) {      const result = this.parseStringLiteral(this.state.value);      const surrogate = result.value.match(loneSurrogate);      if (surrogate) {        this.raise(result.start, ErrorMessages.ModuleExportNameHasLoneSurrogate, surrogate[0].charCodeAt(0).toString(16));      }      return result;    }    return this.parseIdentifier(true);  }  parseImport(node) {    node.specifiers = [];    if (!this.match(123)) {      const hasDefault = this.maybeParseDefaultImportSpecifier(node);      const parseNext = !hasDefault || this.eat(12);      const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);      if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);      this.expectContextual(91);    }    node.source = this.parseImportSource();    const assertions = this.maybeParseImportAssertions();    if (assertions) {      node.assertions = assertions;    } else {      const attributes = this.maybeParseModuleAttributes();      if (attributes) {        node.attributes = attributes;      }    }    this.semicolon();    return this.finishNode(node, "ImportDeclaration");  }  parseImportSource() {    if (!this.match(123)) this.unexpected();    return this.parseExprAtom();  }  shouldParseDefaultImport(node) {    return tokenIsIdentifier(this.state.type);  }  parseImportSpecifierLocal(node, specifier, type, contextDescription) {    specifier.local = this.parseIdentifier();    this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);    node.specifiers.push(this.finishNode(specifier, type));  }  parseAssertEntries() {    const attrs = [];    const attrNames = new Set();    do {      if (this.match(8)) {        break;      }      const node = this.startNode();      const keyName = this.state.value;      if (attrNames.has(keyName)) {        this.raise(this.state.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, keyName);      }      attrNames.add(keyName);      if (this.match(123)) {        node.key = this.parseStringLiteral(keyName);      } else {        node.key = this.parseIdentifier(true);      }      this.expect(14);      if (!this.match(123)) {        throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue);      }      node.value = this.parseStringLiteral(this.state.value);      this.finishNode(node, "ImportAttribute");      attrs.push(node);    } while (this.eat(12));    return attrs;  }  maybeParseModuleAttributes() {    if (this.match(70) && !this.hasPrecedingLineBreak()) {      this.expectPlugin("moduleAttributes");      this.next();    } else {      if (this.hasPlugin("moduleAttributes")) return [];      return null;    }    const attrs = [];    const attributes = new Set();    do {      const node = this.startNode();      node.key = this.parseIdentifier(true);      if (node.key.name !== "type") {        this.raise(node.key.start, ErrorMessages.ModuleAttributeDifferentFromType, node.key.name);      }      if (attributes.has(node.key.name)) {        this.raise(node.key.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, node.key.name);      }      attributes.add(node.key.name);      this.expect(14);      if (!this.match(123)) {        throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue);      }      node.value = this.parseStringLiteral(this.state.value);      this.finishNode(node, "ImportAttribute");      attrs.push(node);    } while (this.eat(12));    return attrs;  }  maybeParseImportAssertions() {    if (this.isContextual(88) && !this.hasPrecedingLineBreak()) {      this.expectPlugin("importAssertions");      this.next();    } else {      if (this.hasPlugin("importAssertions")) return [];      return null;    }    this.eat(5);    const attrs = this.parseAssertEntries();    this.eat(8);    return attrs;  }  maybeParseDefaultImportSpecifier(node) {    if (this.shouldParseDefaultImport(node)) {      this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier");      return true;    }    return false;  }  maybeParseStarImportSpecifier(node) {    if (this.match(49)) {      const specifier = this.startNode();      this.next();      this.expectContextual(87);      this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier");      return true;    }    return false;  }  parseNamedImportSpecifiers(node) {    let first = true;    this.expect(5);    while (!this.eat(8)) {      if (first) {        first = false;      } else {        if (this.eat(14)) {          throw this.raise(this.state.start, ErrorMessages.DestructureNamedImport);        }        this.expect(12);        if (this.eat(8)) break;      }      const specifier = this.startNode();      const importedIsString = this.match(123);      const isMaybeTypeOnly = this.isContextual(120);      specifier.imported = this.parseModuleExportName();      const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly);      node.specifiers.push(importSpecifier);    }  }  parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {    if (this.eatContextual(87)) {      specifier.local = this.parseIdentifier();    } else {      const {        imported      } = specifier;      if (importedIsString) {        throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, imported.value);      }      this.checkReservedWord(imported.name, specifier.start, true, true);      if (!specifier.local) {        specifier.local = cloneIdentifier(imported);      }    }    this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL);    return this.finishNode(specifier, "ImportSpecifier");  }  isThisParam(param) {    return param.type === "Identifier" && param.name === "this";  }}class Parser extends StatementParser {  constructor(options, input) {    options = getOptions(options);    super(options, input);    this.options = options;    this.initializeScopes();    this.plugins = pluginsMap(this.options.plugins);    this.filename = options.sourceFilename;  }  getScopeHandler() {    return ScopeHandler;  }  parse() {    this.enterInitialScopes();    const file = this.startNode();    const program = this.startNode();    this.nextToken();    file.errors = null;    this.parseTopLevel(file, program);    file.errors = this.state.errors;    return file;  }}function pluginsMap(plugins) {  const pluginMap = new Map();  for (const plugin of plugins) {    const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];    if (!pluginMap.has(name)) pluginMap.set(name, options || {});  }  return pluginMap;}function parse(input, options) {  var _options;  if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") {    options = Object.assign({}, options);    try {      options.sourceType = "module";      const parser = getParser(options, input);      const ast = parser.parse();      if (parser.sawUnambiguousESM) {        return ast;      }      if (parser.ambiguousScriptDifferentAst) {        try {          options.sourceType = "script";          return getParser(options, input).parse();        } catch (_unused) {}      } else {        ast.program.sourceType = "script";      }      return ast;    } catch (moduleError) {      try {        options.sourceType = "script";        return getParser(options, input).parse();      } catch (_unused2) {}      throw moduleError;    }  } else {    return getParser(options, input).parse();  }}function parseExpression(input, options) {  const parser = getParser(options, input);  if (parser.options.strictMode) {    parser.state.strict = true;  }  return parser.getExpression();}function generateExportedTokenTypes(internalTokenTypes) {  const tokenTypes = {};  for (const typeName of Object.keys(internalTokenTypes)) {    tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);  }  return tokenTypes;}const tokTypes = generateExportedTokenTypes(tt);function getParser(options, input) {  let cls = Parser;  if (options != null && options.plugins) {    validatePlugins(options.plugins);    cls = getParserClass(options.plugins);  }  return new cls(options, input);}const parserClassCache = {};function getParserClass(pluginsFromOptions) {  const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name));  const key = pluginList.join("/");  let cls = parserClassCache[key];  if (!cls) {    cls = Parser;    for (const plugin of pluginList) {      cls = mixinPlugins[plugin](cls);    }    parserClassCache[key] = cls;  }  return cls;}var parse_1 = parse;var parseExpression_1 = parseExpression;var tokTypes_1 = tokTypes;//# sourceMappingURL=index.js.map/*#__PURE__*/Object.defineProperty({	parse: parse_1,	parseExpression: parseExpression_1,	tokTypes: tokTypes_1}, '__esModule', {value: true});const isStaticExp = (p) => p.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ && p.isStatic;const isBuiltInType = (tag, expected) => tag === expected || tag === hyphenate(expected);function isCoreComponent(tag) {    if (isBuiltInType(tag, 'Teleport')) {        return TELEPORT;    }    else if (isBuiltInType(tag, 'Suspense')) {        return SUSPENSE;    }    else if (isBuiltInType(tag, 'KeepAlive')) {        return KEEP_ALIVE;    }    else if (isBuiltInType(tag, 'BaseTransition')) {        return BASE_TRANSITION;    }}const nonIdentifierRE = /^\d|[^\$\w]/;const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;/** * Simple lexer to check if an expression is a member expression. This is * lax and only checks validity at the root level (i.e. does not validate exps * inside square brackets), but it's ok since these are only used on template * expressions and false positives are invalid expressions in the first place. */const isMemberExpressionBrowser = (path) => {    // remove whitespaces around . or [ first    path = path.trim().replace(whitespaceRE, s => s.trim());    let state = 0 /* MemberExpLexState.inMemberExp */;    let stateStack = [];    let currentOpenBracketCount = 0;    let currentOpenParensCount = 0;    let currentStringType = null;    for (let i = 0; i < path.length; i++) {        const char = path.charAt(i);        switch (state) {            case 0 /* MemberExpLexState.inMemberExp */:                if (char === '[') {                    stateStack.push(state);                    state = 1 /* MemberExpLexState.inBrackets */;                    currentOpenBracketCount++;                }                else if (char === '(') {                    stateStack.push(state);                    state = 2 /* MemberExpLexState.inParens */;                    currentOpenParensCount++;                }                else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {                    return false;                }                break;            case 1 /* MemberExpLexState.inBrackets */:                if (char === `'` || char === `"` || char === '`') {                    stateStack.push(state);                    state = 3 /* MemberExpLexState.inString */;                    currentStringType = char;                }                else if (char === `[`) {                    currentOpenBracketCount++;                }                else if (char === `]`) {                    if (!--currentOpenBracketCount) {                        state = stateStack.pop();                    }                }                break;            case 2 /* MemberExpLexState.inParens */:                if (char === `'` || char === `"` || char === '`') {                    stateStack.push(state);                    state = 3 /* MemberExpLexState.inString */;                    currentStringType = char;                }                else if (char === `(`) {                    currentOpenParensCount++;                }                else if (char === `)`) {                    // if the exp ends as a call then it should not be considered valid                    if (i === path.length - 1) {                        return false;                    }                    if (!--currentOpenParensCount) {                        state = stateStack.pop();                    }                }                break;            case 3 /* MemberExpLexState.inString */:                if (char === currentStringType) {                    state = stateStack.pop();                    currentStringType = null;                }                break;        }    }    return !currentOpenBracketCount && !currentOpenParensCount;};const isMemberExpressionNode = (path, context) => {        try {            let ret = parseExpression_1(path, {                plugins: context.expressionPlugins            });            if (ret.type === 'TSAsExpression' || ret.type === 'TSTypeAssertion') {                ret = ret.expression;            }            return (ret.type === 'MemberExpression' ||                ret.type === 'OptionalMemberExpression' ||                ret.type === 'Identifier');        }        catch (e) {            return false;        }    };const isMemberExpression = isMemberExpressionNode;function getInnerRange(loc, offset, length) {    const source = loc.source.slice(offset, offset + length);    const newLoc = {        source,        start: advancePositionWithClone(loc.start, loc.source, offset),        end: loc.end    };    if (length != null) {        newLoc.end = advancePositionWithClone(loc.start, loc.source, offset + length);    }    return newLoc;}function advancePositionWithClone(pos, source, numberOfCharacters = source.length) {    return advancePositionWithMutation(extend({}, pos), source, numberOfCharacters);}// advance by mutation without cloning (for performance reasons), since this// gets called a lot in the parserfunction advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {    let linesCount = 0;    let lastNewLinePos = -1;    for (let i = 0; i < numberOfCharacters; i++) {        if (source.charCodeAt(i) === 10 /* newline char code */) {            linesCount++;            lastNewLinePos = i;        }    }    pos.offset += numberOfCharacters;    pos.line += linesCount;    pos.column =        lastNewLinePos === -1            ? pos.column + numberOfCharacters            : numberOfCharacters - lastNewLinePos;    return pos;}function assert$1(condition, msg) {    /* istanbul ignore if */    if (!condition) {        throw new Error(msg || `unexpected compiler condition`);    }}function findDir(node, name, allowEmpty = false) {    for (let i = 0; i < node.props.length; i++) {        const p = node.props[i];        if (p.type === 7 /* NodeTypes.DIRECTIVE */ &&            (allowEmpty || p.exp) &&            (isString(name) ? p.name === name : name.test(p.name))) {            return p;        }    }}function findProp(node, name, dynamicOnly = false, allowEmpty = false) {    for (let i = 0; i < node.props.length; i++) {        const p = node.props[i];        if (p.type === 6 /* NodeTypes.ATTRIBUTE */) {            if (dynamicOnly)                continue;            if (p.name === name && (p.value || allowEmpty)) {                return p;            }        }        else if (p.name === 'bind' &&            (p.exp || allowEmpty) &&            isStaticArgOf(p.arg, name)) {            return p;        }    }}function isStaticArgOf(arg, name) {    return !!(arg && isStaticExp(arg) && arg.content === name);}function hasDynamicKeyVBind(node) {    return node.props.some(p => p.type === 7 /* NodeTypes.DIRECTIVE */ &&        p.name === 'bind' &&        (!p.arg || // v-bind="obj"            p.arg.type !== 4 /* NodeTypes.SIMPLE_EXPRESSION */ || // v-bind:[_ctx.foo]            !p.arg.isStatic) // v-bind:[foo]    );}function isText(node) {    return node.type === 5 /* NodeTypes.INTERPOLATION */ || node.type === 2 /* NodeTypes.TEXT */;}function isVSlot(p) {    return p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'slot';}function isTemplateNode(node) {    return (node.type === 1 /* NodeTypes.ELEMENT */ && node.tagType === 3 /* ElementTypes.TEMPLATE */);}function isSlotOutlet(node) {    return node.type === 1 /* NodeTypes.ELEMENT */ && node.tagType === 2 /* ElementTypes.SLOT */;}function getVNodeHelper(ssr, isComponent) {    return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;}function getVNodeBlockHelper(ssr, isComponent) {    return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;}const propsHelperSet = new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);function getUnnormalizedProps(props, callPath = []) {    if (props &&        !isString(props) &&        props.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */) {        const callee = props.callee;        if (!isString(callee) && propsHelperSet.has(callee)) {            return getUnnormalizedProps(props.arguments[0], callPath.concat(props));        }    }    return [props, callPath];}function injectProp(node, prop, context) {    let propsWithInjection;    /**     * 1. mergeProps(...)     * 2. toHandlers(...)     * 3. normalizeProps(...)     * 4. normalizeProps(guardReactiveProps(...))     *     * we need to get the real props before normalization     */    let props = node.type === 13 /* NodeTypes.VNODE_CALL */ ? node.props : node.arguments[2];    let callPath = [];    let parentCall;    if (props &&        !isString(props) &&        props.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */) {        const ret = getUnnormalizedProps(props);        props = ret[0];        callPath = ret[1];        parentCall = callPath[callPath.length - 1];    }    if (props == null || isString(props)) {        propsWithInjection = createObjectExpression([prop]);    }    else if (props.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */) {        // merged props... add ours        // only inject key to object literal if it's the first argument so that        // if doesn't override user provided keys        const first = props.arguments[0];        if (!isString(first) && first.type === 15 /* NodeTypes.JS_OBJECT_EXPRESSION */) {            // #6631            if (!hasProp(prop, first)) {                first.properties.unshift(prop);            }        }        else {            if (props.callee === TO_HANDLERS) {                // #2366                propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [                    createObjectExpression([prop]),                    props                ]);            }            else {                props.arguments.unshift(createObjectExpression([prop]));            }        }        !propsWithInjection && (propsWithInjection = props);    }    else if (props.type === 15 /* NodeTypes.JS_OBJECT_EXPRESSION */) {        if (!hasProp(prop, props)) {            props.properties.unshift(prop);        }        propsWithInjection = props;    }    else {        // single v-bind with expression, return a merged replacement        propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [            createObjectExpression([prop]),            props        ]);        // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(props))`,        // it will be rewritten as `normalizeProps(mergeProps({ key: 0 }, props))`,        // the `guardReactiveProps` will no longer be needed        if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {            parentCall = callPath[callPath.length - 2];        }    }    if (node.type === 13 /* NodeTypes.VNODE_CALL */) {        if (parentCall) {            parentCall.arguments[0] = propsWithInjection;        }        else {            node.props = propsWithInjection;        }    }    else {        if (parentCall) {            parentCall.arguments[0] = propsWithInjection;        }        else {            node.arguments[2] = propsWithInjection;        }    }}// check existing key to avoid overriding user provided keysfunction hasProp(prop, props) {    let result = false;    if (prop.key.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {        const propKeyName = prop.key.content;        result = props.properties.some(p => p.key.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&            p.key.content === propKeyName);    }    return result;}function toValidAssetId(name, type) {    // see issue#4422, we need adding identifier on validAssetId if variable `name` has specific character    return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => {        return searchValue === '-' ? '_' : name.charCodeAt(replaceValue).toString();    })}`;}// Check if a node contains expressions that reference current context scope idsfunction hasScopeRef(node, ids) {    if (!node || Object.keys(ids).length === 0) {        return false;    }    switch (node.type) {        case 1 /* NodeTypes.ELEMENT */:            for (let i = 0; i < node.props.length; i++) {                const p = node.props[i];                if (p.type === 7 /* NodeTypes.DIRECTIVE */ &&                    (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) {                    return true;                }            }            return node.children.some(c => hasScopeRef(c, ids));        case 11 /* NodeTypes.FOR */:            if (hasScopeRef(node.source, ids)) {                return true;            }            return node.children.some(c => hasScopeRef(c, ids));        case 9 /* NodeTypes.IF */:            return node.branches.some(b => hasScopeRef(b, ids));        case 10 /* NodeTypes.IF_BRANCH */:            if (hasScopeRef(node.condition, ids)) {                return true;            }            return node.children.some(c => hasScopeRef(c, ids));        case 4 /* NodeTypes.SIMPLE_EXPRESSION */:            return (!node.isStatic &&                isSimpleIdentifier(node.content) &&                !!ids[node.content]);        case 8 /* NodeTypes.COMPOUND_EXPRESSION */:            return node.children.some(c => isObject(c) && hasScopeRef(c, ids));        case 5 /* NodeTypes.INTERPOLATION */:        case 12 /* NodeTypes.TEXT_CALL */:            return hasScopeRef(node.content, ids);        case 2 /* NodeTypes.TEXT */:        case 3 /* NodeTypes.COMMENT */:            return false;        default:            return false;    }}function getMemoedVNodeCall(node) {    if (node.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */ && node.callee === WITH_MEMO) {        return node.arguments[1].returns;    }    else {        return node;    }}function makeBlock(node, { helper, removeHelper, inSSR }) {    if (!node.isBlock) {        node.isBlock = true;        removeHelper(getVNodeHelper(inSSR, node.isComponent));        helper(OPEN_BLOCK);        helper(getVNodeBlockHelper(inSSR, node.isComponent));    }}const deprecationData = {    ["COMPILER_IS_ON_ELEMENT" /* CompilerDeprecationTypes.COMPILER_IS_ON_ELEMENT */]: {        message: `Platform-native elements with "is" prop will no longer be ` +            `treated as components in Vue 3 unless the "is" value is explicitly ` +            `prefixed with "vue:".`,        link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`    },    ["COMPILER_V_BIND_SYNC" /* CompilerDeprecationTypes.COMPILER_V_BIND_SYNC */]: {        message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +            `argument instead. \`v-bind:${key}.sync\` should be changed to ` +            `\`v-model:${key}\`.`,        link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`    },    ["COMPILER_V_BIND_PROP" /* CompilerDeprecationTypes.COMPILER_V_BIND_PROP */]: {        message: `.prop modifier for v-bind has been removed and no longer necessary. ` +            `Vue 3 will automatically set a binding as DOM property when appropriate.`    },    ["COMPILER_V_BIND_OBJECT_ORDER" /* CompilerDeprecationTypes.COMPILER_V_BIND_OBJECT_ORDER */]: {        message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript ` +            `object spread: it will now overwrite an existing non-mergeable attribute ` +            `that appears before v-bind in the case of conflict. ` +            `To retain 2.x behavior, move v-bind to make it the first attribute. ` +            `You can also suppress this warning if the usage is intended.`,        link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`    },    ["COMPILER_V_ON_NATIVE" /* CompilerDeprecationTypes.COMPILER_V_ON_NATIVE */]: {        message: `.native modifier for v-on has been removed as is no longer necessary.`,        link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`    },    ["COMPILER_V_IF_V_FOR_PRECEDENCE" /* CompilerDeprecationTypes.COMPILER_V_IF_V_FOR_PRECEDENCE */]: {        message: `v-if / v-for precedence when used on the same element has changed ` +            `in Vue 3: v-if now takes higher precedence and will no longer have ` +            `access to v-for scope variables. It is best to avoid the ambiguity ` +            `with <template> tags or use a computed property that filters v-for ` +            `data source.`,        link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`    },    ["COMPILER_NATIVE_TEMPLATE" /* CompilerDeprecationTypes.COMPILER_NATIVE_TEMPLATE */]: {        message: `<template> with no special directives will render as a native template ` +            `element instead of its inner content in Vue 3.`    },    ["COMPILER_INLINE_TEMPLATE" /* CompilerDeprecationTypes.COMPILER_INLINE_TEMPLATE */]: {        message: `"inline-template" has been removed in Vue 3.`,        link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`    },    ["COMPILER_FILTER" /* CompilerDeprecationTypes.COMPILER_FILTERS */]: {        message: `filters have been removed in Vue 3. ` +            `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +            `Use method calls or computed properties instead.`,        link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`    }};function getCompatValue(key, context) {    const config = context.options        ? context.options.compatConfig        : context.compatConfig;    const value = config && config[key];    if (key === 'MODE') {        return value || 3; // compiler defaults to v3 behavior    }    else {        return value;    }}function isCompatEnabled(key, context) {    const mode = getCompatValue('MODE', context);    const value = getCompatValue(key, context);    // in v3 mode, only enable if explicitly set to true    // otherwise enable for any non-false value    return mode === 3 ? value === true : value !== false;}function checkCompatEnabled(key, context, loc, ...args) {    const enabled = isCompatEnabled(key, context);    if (enabled) {        warnDeprecation(key, context, loc, ...args);    }    return enabled;}function warnDeprecation(key, context, loc, ...args) {    const val = getCompatValue(key, context);    if (val === 'suppress-warning') {        return;    }    const { message, link } = deprecationData[key];    const msg = `(deprecation ${key}) ${typeof message === 'function' ? message(...args) : message}${link ? `\n  Details: ${link}` : ``}`;    const err = new SyntaxError(msg);    err.code = key;    if (loc)        err.loc = loc;    context.onWarn(err);}// The default decoder only provides escapes for characters reserved as part of// the template syntax, and is only used if the custom renderer did not provide// a platform-specific decoder.const decodeRE = /&(gt|lt|amp|apos|quot);/g;const decodeMap = {    gt: '>',    lt: '<',    amp: '&',    apos: "'",    quot: '"'};const defaultParserOptions = {    delimiters: [`{{`, `}}`],    getNamespace: () => 0 /* Namespaces.HTML */,    getTextMode: () => 0 /* TextModes.DATA */,    isVoidTag: NO,    isPreTag: NO,    isCustomElement: NO,    decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),    onError: defaultOnError,    onWarn: defaultOnWarn,    comments: true};function baseParse(content, options = {}) {    const context = createParserContext(content, options);    const start = getCursor(context);    return createRoot(parseChildren(context, 0 /* TextModes.DATA */, []), getSelection(context, start));}function createParserContext(content, rawOptions) {    const options = extend({}, defaultParserOptions);    let key;    for (key in rawOptions) {        // @ts-ignore        options[key] =            rawOptions[key] === undefined                ? defaultParserOptions[key]                : rawOptions[key];    }    return {        options,        column: 1,        line: 1,        offset: 0,        originalSource: content,        source: content,        inPre: false,        inVPre: false,        onWarn: options.onWarn    };}function parseChildren(context, mode, ancestors) {    const parent = last(ancestors);    const ns = parent ? parent.ns : 0 /* Namespaces.HTML */;    const nodes = [];    while (!isEnd(context, mode, ancestors)) {        const s = context.source;        let node = undefined;        if (mode === 0 /* TextModes.DATA */ || mode === 1 /* TextModes.RCDATA */) {            if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {                // '{{'                node = parseInterpolation(context, mode);            }            else if (mode === 0 /* TextModes.DATA */ && s[0] === '<') {                // https://html.spec.whatwg.org/multipage/parsing.html#tag-open-state                if (s.length === 1) {                    emitError(context, 5 /* ErrorCodes.EOF_BEFORE_TAG_NAME */, 1);                }                else if (s[1] === '!') {                    // https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state                    if (startsWith(s, '<!--')) {                        node = parseComment(context);                    }                    else if (startsWith(s, '<!DOCTYPE')) {                        // Ignore DOCTYPE by a limitation.                        node = parseBogusComment(context);                    }                    else if (startsWith(s, '<![CDATA[')) {                        if (ns !== 0 /* Namespaces.HTML */) {                            node = parseCDATA(context, ancestors);                        }                        else {                            emitError(context, 1 /* ErrorCodes.CDATA_IN_HTML_CONTENT */);                            node = parseBogusComment(context);                        }                    }                    else {                        emitError(context, 11 /* ErrorCodes.INCORRECTLY_OPENED_COMMENT */);                        node = parseBogusComment(context);                    }                }                else if (s[1] === '/') {                    // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state                    if (s.length === 2) {                        emitError(context, 5 /* ErrorCodes.EOF_BEFORE_TAG_NAME */, 2);                    }                    else if (s[2] === '>') {                        emitError(context, 14 /* ErrorCodes.MISSING_END_TAG_NAME */, 2);                        advanceBy(context, 3);                        continue;                    }                    else if (/[a-z]/i.test(s[2])) {                        emitError(context, 23 /* ErrorCodes.X_INVALID_END_TAG */);                        parseTag(context, 1 /* TagType.End */, parent);                        continue;                    }                    else {                        emitError(context, 12 /* ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2);                        node = parseBogusComment(context);                    }                }                else if (/[a-z]/i.test(s[1])) {                    node = parseElement(context, ancestors);                }                else if (s[1] === '?') {                    emitError(context, 21 /* ErrorCodes.UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1);                    node = parseBogusComment(context);                }                else {                    emitError(context, 12 /* ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1);                }            }        }        if (!node) {            node = parseText(context, mode);        }        if (isArray(node)) {            for (let i = 0; i < node.length; i++) {                pushNode(nodes, node[i]);            }        }        else {            pushNode(nodes, node);        }    }    // Whitespace handling strategy like v2    let removedWhitespace = false;    if (mode !== 2 /* TextModes.RAWTEXT */ && mode !== 1 /* TextModes.RCDATA */) {        const shouldCondense = context.options.whitespace !== 'preserve';        for (let i = 0; i < nodes.length; i++) {            const node = nodes[i];            if (node.type === 2 /* NodeTypes.TEXT */) {                if (!context.inPre) {                    if (!/[^\t\r\n\f ]/.test(node.content)) {                        const prev = nodes[i - 1];                        const next = nodes[i + 1];                        // Remove if:                        // - the whitespace is the first or last node, or:                        // - (condense mode) the whitespace is between twos comments, or:                        // - (condense mode) the whitespace is between comment and element, or:                        // - (condense mode) the whitespace is between two elements AND contains newline                        if (!prev ||                            !next ||                            (shouldCondense &&                                ((prev.type === 3 /* NodeTypes.COMMENT */ &&                                    next.type === 3 /* NodeTypes.COMMENT */) ||                                    (prev.type === 3 /* NodeTypes.COMMENT */ &&                                        next.type === 1 /* NodeTypes.ELEMENT */) ||                                    (prev.type === 1 /* NodeTypes.ELEMENT */ &&                                        next.type === 3 /* NodeTypes.COMMENT */) ||                                    (prev.type === 1 /* NodeTypes.ELEMENT */ &&                                        next.type === 1 /* NodeTypes.ELEMENT */ &&                                        /[\r\n]/.test(node.content))))) {                            removedWhitespace = true;                            nodes[i] = null;                        }                        else {                            // Otherwise, the whitespace is condensed into a single space                            node.content = ' ';                        }                    }                    else if (shouldCondense) {                        // in condense mode, consecutive whitespaces in text are condensed                        // down to a single space.                        node.content = node.content.replace(/[\t\r\n\f ]+/g, ' ');                    }                }                else {                    // #6410 normalize windows newlines in <pre>:                    // in SSR, browsers normalize server-rendered \r\n into a single \n                    // in the DOM                    node.content = node.content.replace(/\r\n/g, '\n');                }            }            // Remove comment nodes if desired by configuration.            else if (node.type === 3 /* NodeTypes.COMMENT */ && !context.options.comments) {                removedWhitespace = true;                nodes[i] = null;            }        }        if (context.inPre && parent && context.options.isPreTag(parent.tag)) {            // remove leading newline per html spec            // https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element            const first = nodes[0];            if (first && first.type === 2 /* NodeTypes.TEXT */) {                first.content = first.content.replace(/^\r?\n/, '');            }        }    }    return removedWhitespace ? nodes.filter(Boolean) : nodes;}function pushNode(nodes, node) {    if (node.type === 2 /* NodeTypes.TEXT */) {        const prev = last(nodes);        // Merge if both this and the previous node are text and those are        // consecutive. This happens for cases like "a < b".        if (prev &&            prev.type === 2 /* NodeTypes.TEXT */ &&            prev.loc.end.offset === node.loc.start.offset) {            prev.content += node.content;            prev.loc.end = node.loc.end;            prev.loc.source += node.loc.source;            return;        }    }    nodes.push(node);}function parseCDATA(context, ancestors) {    advanceBy(context, 9);    const nodes = parseChildren(context, 3 /* TextModes.CDATA */, ancestors);    if (context.source.length === 0) {        emitError(context, 6 /* ErrorCodes.EOF_IN_CDATA */);    }    else {        advanceBy(context, 3);    }    return nodes;}function parseComment(context) {    const start = getCursor(context);    let content;    // Regular comment.    const match = /--(\!)?>/.exec(context.source);    if (!match) {        content = context.source.slice(4);        advanceBy(context, context.source.length);        emitError(context, 7 /* ErrorCodes.EOF_IN_COMMENT */);    }    else {        if (match.index <= 3) {            emitError(context, 0 /* ErrorCodes.ABRUPT_CLOSING_OF_EMPTY_COMMENT */);        }        if (match[1]) {            emitError(context, 10 /* ErrorCodes.INCORRECTLY_CLOSED_COMMENT */);        }        content = context.source.slice(4, match.index);        // Advancing with reporting nested comments.        const s = context.source.slice(0, match.index);        let prevIndex = 1, nestedIndex = 0;        while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) {            advanceBy(context, nestedIndex - prevIndex + 1);            if (nestedIndex + 4 < s.length) {                emitError(context, 16 /* ErrorCodes.NESTED_COMMENT */);            }            prevIndex = nestedIndex + 1;        }        advanceBy(context, match.index + match[0].length - prevIndex + 1);    }    return {        type: 3 /* NodeTypes.COMMENT */,        content,        loc: getSelection(context, start)    };}function parseBogusComment(context) {    const start = getCursor(context);    const contentStart = context.source[1] === '?' ? 1 : 2;    let content;    const closeIndex = context.source.indexOf('>');    if (closeIndex === -1) {        content = context.source.slice(contentStart);        advanceBy(context, context.source.length);    }    else {        content = context.source.slice(contentStart, closeIndex);        advanceBy(context, closeIndex + 1);    }    return {        type: 3 /* NodeTypes.COMMENT */,        content,        loc: getSelection(context, start)    };}function parseElement(context, ancestors) {    // Start tag.    const wasInPre = context.inPre;    const wasInVPre = context.inVPre;    const parent = last(ancestors);    const element = parseTag(context, 0 /* TagType.Start */, parent);    const isPreBoundary = context.inPre && !wasInPre;    const isVPreBoundary = context.inVPre && !wasInVPre;    if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {        // #4030 self-closing <pre> tag        if (isPreBoundary) {            context.inPre = false;        }        if (isVPreBoundary) {            context.inVPre = false;        }        return element;    }    // Children.    ancestors.push(element);    const mode = context.options.getTextMode(element, parent);    const children = parseChildren(context, mode, ancestors);    ancestors.pop();    element.children = children;    // End tag.    if (startsWithEndTagOpen(context.source, element.tag)) {        parseTag(context, 1 /* TagType.End */, parent);    }    else {        emitError(context, 24 /* ErrorCodes.X_MISSING_END_TAG */, 0, element.loc.start);        if (context.source.length === 0 && element.tag.toLowerCase() === 'script') {            const first = children[0];            if (first && startsWith(first.loc.source, '<!--')) {                emitError(context, 8 /* ErrorCodes.EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */);            }        }    }    element.loc = getSelection(context, element.loc.start);    if (isPreBoundary) {        context.inPre = false;    }    if (isVPreBoundary) {        context.inVPre = false;    }    return element;}const isSpecialTemplateDirective = /*#__PURE__*/ makeMap(`if,else,else-if,for,slot`);function parseTag(context, type, parent) {    // Tag open.    const start = getCursor(context);    const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source);    const tag = match[1];    const ns = context.options.getNamespace(tag, parent);    advanceBy(context, match[0].length);    advanceSpaces(context);    // save current state in case we need to re-parse attributes with v-pre    const cursor = getCursor(context);    const currentSource = context.source;    // check <pre> tag    if (context.options.isPreTag(tag)) {        context.inPre = true;    }    // Attributes.    let props = parseAttributes(context, type);    // check v-pre    if (type === 0 /* TagType.Start */ &&        !context.inVPre &&        props.some(p => p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'pre')) {        context.inVPre = true;        // reset context        extend(context, cursor);        context.source = currentSource;        // re-parse attrs and filter out v-pre itself        props = parseAttributes(context, type).filter(p => p.name !== 'v-pre');    }    // Tag close.    let isSelfClosing = false;    if (context.source.length === 0) {        emitError(context, 9 /* ErrorCodes.EOF_IN_TAG */);    }    else {        isSelfClosing = startsWith(context.source, '/>');        if (type === 1 /* TagType.End */ && isSelfClosing) {            emitError(context, 4 /* ErrorCodes.END_TAG_WITH_TRAILING_SOLIDUS */);        }        advanceBy(context, isSelfClosing ? 2 : 1);    }    if (type === 1 /* TagType.End */) {        return;    }    let tagType = 0 /* ElementTypes.ELEMENT */;    if (!context.inVPre) {        if (tag === 'slot') {            tagType = 2 /* ElementTypes.SLOT */;        }        else if (tag === 'template') {            if (props.some(p => p.type === 7 /* NodeTypes.DIRECTIVE */ && isSpecialTemplateDirective(p.name))) {                tagType = 3 /* ElementTypes.TEMPLATE */;            }        }        else if (isComponent(tag, props, context)) {            tagType = 1 /* ElementTypes.COMPONENT */;        }    }    return {        type: 1 /* NodeTypes.ELEMENT */,        ns,        tag,        tagType,        props,        isSelfClosing,        children: [],        loc: getSelection(context, start),        codegenNode: undefined // to be created during transform phase    };}function isComponent(tag, props, context) {    const options = context.options;    if (options.isCustomElement(tag)) {        return false;    }    if (tag === 'component' ||        /^[A-Z]/.test(tag) ||        isCoreComponent(tag) ||        (options.isBuiltInComponent && options.isBuiltInComponent(tag)) ||        (options.isNativeTag && !options.isNativeTag(tag))) {        return true;    }    // at this point the tag should be a native tag, but check for potential "is"    // casting    for (let i = 0; i < props.length; i++) {        const p = props[i];        if (p.type === 6 /* NodeTypes.ATTRIBUTE */) {            if (p.name === 'is' && p.value) {                if (p.value.content.startsWith('vue:')) {                    return true;                }            }        }        else {            // directive            // v-is (TODO Deprecate)            if (p.name === 'is') {                return true;            }            else if (            // :is on plain element - only treat as component in compat mode            p.name === 'bind' &&                isStaticArgOf(p.arg, 'is') &&                false &&                checkCompatEnabled("COMPILER_IS_ON_ELEMENT" /* CompilerDeprecationTypes.COMPILER_IS_ON_ELEMENT */, context, p.loc)) {                return true;            }        }    }}function parseAttributes(context, type) {    const props = [];    const attributeNames = new Set();    while (context.source.length > 0 &&        !startsWith(context.source, '>') &&        !startsWith(context.source, '/>')) {        if (startsWith(context.source, '/')) {            emitError(context, 22 /* ErrorCodes.UNEXPECTED_SOLIDUS_IN_TAG */);            advanceBy(context, 1);            advanceSpaces(context);            continue;        }        if (type === 1 /* TagType.End */) {            emitError(context, 3 /* ErrorCodes.END_TAG_WITH_ATTRIBUTES */);        }        const attr = parseAttribute(context, attributeNames);        // Trim whitespace between class        // https://github.com/vuejs/core/issues/4251        if (attr.type === 6 /* NodeTypes.ATTRIBUTE */ &&            attr.value &&            attr.name === 'class') {            attr.value.content = attr.value.content.replace(/\s+/g, ' ').trim();        }        if (type === 0 /* TagType.Start */) {            props.push(attr);        }        if (/^[^\t\r\n\f />]/.test(context.source)) {            emitError(context, 15 /* ErrorCodes.MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */);        }        advanceSpaces(context);    }    return props;}function parseAttribute(context, nameSet) {    // Name.    const start = getCursor(context);    const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source);    const name = match[0];    if (nameSet.has(name)) {        emitError(context, 2 /* ErrorCodes.DUPLICATE_ATTRIBUTE */);    }    nameSet.add(name);    if (name[0] === '=') {        emitError(context, 19 /* ErrorCodes.UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */);    }    {        const pattern = /["'<]/g;        let m;        while ((m = pattern.exec(name))) {            emitError(context, 17 /* ErrorCodes.UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */, m.index);        }    }    advanceBy(context, name.length);    // Value    let value = undefined;    if (/^[\t\r\n\f ]*=/.test(context.source)) {        advanceSpaces(context);        advanceBy(context, 1);        advanceSpaces(context);        value = parseAttributeValue(context);        if (!value) {            emitError(context, 13 /* ErrorCodes.MISSING_ATTRIBUTE_VALUE */);        }    }    const loc = getSelection(context, start);    if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) {        const match = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(name);        let isPropShorthand = startsWith(name, '.');        let dirName = match[1] ||            (isPropShorthand || startsWith(name, ':')                ? 'bind'                : startsWith(name, '@')                    ? 'on'                    : 'slot');        let arg;        if (match[2]) {            const isSlot = dirName === 'slot';            const startOffset = name.lastIndexOf(match[2]);            const loc = getSelection(context, getNewPosition(context, start, startOffset), getNewPosition(context, start, startOffset + match[2].length + ((isSlot && match[3]) || '').length));            let content = match[2];            let isStatic = true;            if (content.startsWith('[')) {                isStatic = false;                if (!content.endsWith(']')) {                    emitError(context, 27 /* ErrorCodes.X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */);                    content = content.slice(1);                }                else {                    content = content.slice(1, content.length - 1);                }            }            else if (isSlot) {                // #1241 special case for v-slot: vuetify relies extensively on slot                // names containing dots. v-slot doesn't have any modifiers and Vue 2.x                // supports such usage so we are keeping it consistent with 2.x.                content += match[3] || '';            }            arg = {                type: 4 /* NodeTypes.SIMPLE_EXPRESSION */,                content,                isStatic,                constType: isStatic                    ? 3 /* ConstantTypes.CAN_STRINGIFY */                    : 0 /* ConstantTypes.NOT_CONSTANT */,                loc            };        }        if (value && value.isQuoted) {            const valueLoc = value.loc;            valueLoc.start.offset++;            valueLoc.start.column++;            valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);            valueLoc.source = valueLoc.source.slice(1, -1);        }        const modifiers = match[3] ? match[3].slice(1).split('.') : [];        if (isPropShorthand)            modifiers.push('prop');        return {            type: 7 /* NodeTypes.DIRECTIVE */,            name: dirName,            exp: value && {                type: 4 /* NodeTypes.SIMPLE_EXPRESSION */,                content: value.content,                isStatic: false,                // Treat as non-constant by default. This can be potentially set to                // other values by `transformExpression` to make it eligible for hoisting.                constType: 0 /* ConstantTypes.NOT_CONSTANT */,                loc: value.loc            },            arg,            modifiers,            loc        };    }    // missing directive name or illegal directive name    if (!context.inVPre && startsWith(name, 'v-')) {        emitError(context, 26 /* ErrorCodes.X_MISSING_DIRECTIVE_NAME */);    }    return {        type: 6 /* NodeTypes.ATTRIBUTE */,        name,        value: value && {            type: 2 /* NodeTypes.TEXT */,            content: value.content,            loc: value.loc        },        loc    };}function parseAttributeValue(context) {    const start = getCursor(context);    let content;    const quote = context.source[0];    const isQuoted = quote === `"` || quote === `'`;    if (isQuoted) {        // Quoted value.        advanceBy(context, 1);        const endIndex = context.source.indexOf(quote);        if (endIndex === -1) {            content = parseTextData(context, context.source.length, 4 /* TextModes.ATTRIBUTE_VALUE */);        }        else {            content = parseTextData(context, endIndex, 4 /* TextModes.ATTRIBUTE_VALUE */);            advanceBy(context, 1);        }    }    else {        // Unquoted        const match = /^[^\t\r\n\f >]+/.exec(context.source);        if (!match) {            return undefined;        }        const unexpectedChars = /["'<=`]/g;        let m;        while ((m = unexpectedChars.exec(match[0]))) {            emitError(context, 18 /* ErrorCodes.UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */, m.index);        }        content = parseTextData(context, match[0].length, 4 /* TextModes.ATTRIBUTE_VALUE */);    }    return { content, isQuoted, loc: getSelection(context, start) };}function parseInterpolation(context, mode) {    const [open, close] = context.options.delimiters;    const closeIndex = context.source.indexOf(close, open.length);    if (closeIndex === -1) {        emitError(context, 25 /* ErrorCodes.X_MISSING_INTERPOLATION_END */);        return undefined;    }    const start = getCursor(context);    advanceBy(context, open.length);    const innerStart = getCursor(context);    const innerEnd = getCursor(context);    const rawContentLength = closeIndex - open.length;    const rawContent = context.source.slice(0, rawContentLength);    const preTrimContent = parseTextData(context, rawContentLength, mode);    const content = preTrimContent.trim();    const startOffset = preTrimContent.indexOf(content);    if (startOffset > 0) {        advancePositionWithMutation(innerStart, rawContent, startOffset);    }    const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);    advancePositionWithMutation(innerEnd, rawContent, endOffset);    advanceBy(context, close.length);    return {        type: 5 /* NodeTypes.INTERPOLATION */,        content: {            type: 4 /* NodeTypes.SIMPLE_EXPRESSION */,            isStatic: false,            // Set `isConstant` to false by default and will decide in transformExpression            constType: 0 /* ConstantTypes.NOT_CONSTANT */,            content,            loc: getSelection(context, innerStart, innerEnd)        },        loc: getSelection(context, start)    };}function parseText(context, mode) {    const endTokens = mode === 3 /* TextModes.CDATA */ ? [']]>'] : ['<', context.options.delimiters[0]];    let endIndex = context.source.length;    for (let i = 0; i < endTokens.length; i++) {        const index = context.source.indexOf(endTokens[i], 1);        if (index !== -1 && endIndex > index) {            endIndex = index;        }    }    const start = getCursor(context);    const content = parseTextData(context, endIndex, mode);    return {        type: 2 /* NodeTypes.TEXT */,        content,        loc: getSelection(context, start)    };}/** * Get text data with a given length from the current location. * This translates HTML entities in the text data. */function parseTextData(context, length, mode) {    const rawText = context.source.slice(0, length);    advanceBy(context, length);    if (mode === 2 /* TextModes.RAWTEXT */ ||        mode === 3 /* TextModes.CDATA */ ||        !rawText.includes('&')) {        return rawText;    }    else {        // DATA or RCDATA containing "&"". Entity decoding required.        return context.options.decodeEntities(rawText, mode === 4 /* TextModes.ATTRIBUTE_VALUE */);    }}function getCursor(context) {    const { column, line, offset } = context;    return { column, line, offset };}function getSelection(context, start, end) {    end = end || getCursor(context);    return {        start,        end,        source: context.originalSource.slice(start.offset, end.offset)    };}function last(xs) {    return xs[xs.length - 1];}function startsWith(source, searchString) {    return source.startsWith(searchString);}function advanceBy(context, numberOfCharacters) {    const { source } = context;    advancePositionWithMutation(context, source, numberOfCharacters);    context.source = source.slice(numberOfCharacters);}function advanceSpaces(context) {    const match = /^[\t\r\n\f ]+/.exec(context.source);    if (match) {        advanceBy(context, match[0].length);    }}function getNewPosition(context, start, numberOfCharacters) {    return advancePositionWithClone(start, context.originalSource.slice(start.offset, numberOfCharacters), numberOfCharacters);}function emitError(context, code, offset, loc = getCursor(context)) {    if (offset) {        loc.offset += offset;        loc.column += offset;    }    context.options.onError(createCompilerError(code, {        start: loc,        end: loc,        source: ''    }));}function isEnd(context, mode, ancestors) {    const s = context.source;    switch (mode) {        case 0 /* TextModes.DATA */:            if (startsWith(s, '</')) {                // TODO: probably bad performance                for (let i = ancestors.length - 1; i >= 0; --i) {                    if (startsWithEndTagOpen(s, ancestors[i].tag)) {                        return true;                    }                }            }            break;        case 1 /* TextModes.RCDATA */:        case 2 /* TextModes.RAWTEXT */: {            const parent = last(ancestors);            if (parent && startsWithEndTagOpen(s, parent.tag)) {                return true;            }            break;        }        case 3 /* TextModes.CDATA */:            if (startsWith(s, ']]>')) {                return true;            }            break;    }    return !s;}function startsWithEndTagOpen(source, tag) {    return (startsWith(source, '</') &&        source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() &&        /[\t\r\n\f />]/.test(source[2 + tag.length] || '>'));}function hoistStatic(root, context) {    walk(root, context,     // Root node is unfortunately non-hoistable due to potential parent    // fallthrough attributes.    isSingleElementRoot(root, root.children[0]));}function isSingleElementRoot(root, child) {    const { children } = root;    return (children.length === 1 &&        child.type === 1 /* NodeTypes.ELEMENT */ &&        !isSlotOutlet(child));}function walk(node, context, doNotHoistNode = false) {    const { children } = node;    const originalCount = children.length;    let hoistedCount = 0;    for (let i = 0; i < children.length; i++) {        const child = children[i];        // only plain elements & text calls are eligible for hoisting.        if (child.type === 1 /* NodeTypes.ELEMENT */ &&            child.tagType === 0 /* ElementTypes.ELEMENT */) {            const constantType = doNotHoistNode                ? 0 /* ConstantTypes.NOT_CONSTANT */                : getConstantType(child, context);            if (constantType > 0 /* ConstantTypes.NOT_CONSTANT */) {                if (constantType >= 2 /* ConstantTypes.CAN_HOIST */) {                    child.codegenNode.patchFlag =                        -1 /* PatchFlags.HOISTED */ + (` /* HOISTED */` );                    child.codegenNode = context.hoist(child.codegenNode);                    hoistedCount++;                    continue;                }            }            else {                // node may contain dynamic children, but its props may be eligible for                // hoisting.                const codegenNode = child.codegenNode;                if (codegenNode.type === 13 /* NodeTypes.VNODE_CALL */) {                    const flag = getPatchFlag(codegenNode);                    if ((!flag ||                        flag === 512 /* PatchFlags.NEED_PATCH */ ||                        flag === 1 /* PatchFlags.TEXT */) &&                        getGeneratedPropsConstantType(child, context) >=                            2 /* ConstantTypes.CAN_HOIST */) {                        const props = getNodeProps(child);                        if (props) {                            codegenNode.props = context.hoist(props);                        }                    }                    if (codegenNode.dynamicProps) {                        codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);                    }                }            }        }        // walk further        if (child.type === 1 /* NodeTypes.ELEMENT */) {            const isComponent = child.tagType === 1 /* ElementTypes.COMPONENT */;            if (isComponent) {                context.scopes.vSlot++;            }            walk(child, context);            if (isComponent) {                context.scopes.vSlot--;            }        }        else if (child.type === 11 /* NodeTypes.FOR */) {            // Do not hoist v-for single child because it has to be a block            walk(child, context, child.children.length === 1);        }        else if (child.type === 9 /* NodeTypes.IF */) {            for (let i = 0; i < child.branches.length; i++) {                // Do not hoist v-if single child because it has to be a block                walk(child.branches[i], context, child.branches[i].children.length === 1);            }        }    }    if (hoistedCount && context.transformHoist) {        context.transformHoist(children, context, node);    }    // all children were hoisted - the entire children array is hoistable.    if (hoistedCount &&        hoistedCount === originalCount &&        node.type === 1 /* NodeTypes.ELEMENT */ &&        node.tagType === 0 /* ElementTypes.ELEMENT */ &&        node.codegenNode &&        node.codegenNode.type === 13 /* NodeTypes.VNODE_CALL */ &&        isArray(node.codegenNode.children)) {        node.codegenNode.children = context.hoist(createArrayExpression(node.codegenNode.children));    }}function getConstantType(node, context) {    const { constantCache } = context;    switch (node.type) {        case 1 /* NodeTypes.ELEMENT */:            if (node.tagType !== 0 /* ElementTypes.ELEMENT */) {                return 0 /* ConstantTypes.NOT_CONSTANT */;            }            const cached = constantCache.get(node);            if (cached !== undefined) {                return cached;            }            const codegenNode = node.codegenNode;            if (codegenNode.type !== 13 /* NodeTypes.VNODE_CALL */) {                return 0 /* ConstantTypes.NOT_CONSTANT */;            }            if (codegenNode.isBlock &&                node.tag !== 'svg' &&                node.tag !== 'foreignObject') {                return 0 /* ConstantTypes.NOT_CONSTANT */;            }            const flag = getPatchFlag(codegenNode);            if (!flag) {                let returnType = 3 /* ConstantTypes.CAN_STRINGIFY */;                // Element itself has no patch flag. However we still need to check:                // 1. Even for a node with no patch flag, it is possible for it to contain                // non-hoistable expressions that refers to scope variables, e.g. compiler                // injected keys or cached event handlers. Therefore we need to always                // check the codegenNode's props to be sure.                const generatedPropsType = getGeneratedPropsConstantType(node, context);                if (generatedPropsType === 0 /* ConstantTypes.NOT_CONSTANT */) {                    constantCache.set(node, 0 /* ConstantTypes.NOT_CONSTANT */);                    return 0 /* ConstantTypes.NOT_CONSTANT */;                }                if (generatedPropsType < returnType) {                    returnType = generatedPropsType;                }                // 2. its children.                for (let i = 0; i < node.children.length; i++) {                    const childType = getConstantType(node.children[i], context);                    if (childType === 0 /* ConstantTypes.NOT_CONSTANT */) {                        constantCache.set(node, 0 /* ConstantTypes.NOT_CONSTANT */);                        return 0 /* ConstantTypes.NOT_CONSTANT */;                    }                    if (childType < returnType) {                        returnType = childType;                    }                }                // 3. if the type is not already CAN_SKIP_PATCH which is the lowest non-0                // type, check if any of the props can cause the type to be lowered                // we can skip can_patch because it's guaranteed by the absence of a                // patchFlag.                if (returnType > 1 /* ConstantTypes.CAN_SKIP_PATCH */) {                    for (let i = 0; i < node.props.length; i++) {                        const p = node.props[i];                        if (p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'bind' && p.exp) {                            const expType = getConstantType(p.exp, context);                            if (expType === 0 /* ConstantTypes.NOT_CONSTANT */) {                                constantCache.set(node, 0 /* ConstantTypes.NOT_CONSTANT */);                                return 0 /* ConstantTypes.NOT_CONSTANT */;                            }                            if (expType < returnType) {                                returnType = expType;                            }                        }                    }                }                // only svg/foreignObject could be block here, however if they are                // static then they don't need to be blocks since there will be no                // nested updates.                if (codegenNode.isBlock) {                    // except set custom directives.                    for (let i = 0; i < node.props.length; i++) {                        const p = node.props[i];                        if (p.type === 7 /* NodeTypes.DIRECTIVE */) {                            constantCache.set(node, 0 /* ConstantTypes.NOT_CONSTANT */);                            return 0 /* ConstantTypes.NOT_CONSTANT */;                        }                    }                    context.removeHelper(OPEN_BLOCK);                    context.removeHelper(getVNodeBlockHelper(context.inSSR, codegenNode.isComponent));                    codegenNode.isBlock = false;                    context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));                }                constantCache.set(node, returnType);                return returnType;            }            else {                constantCache.set(node, 0 /* ConstantTypes.NOT_CONSTANT */);                return 0 /* ConstantTypes.NOT_CONSTANT */;            }        case 2 /* NodeTypes.TEXT */:        case 3 /* NodeTypes.COMMENT */:            return 3 /* ConstantTypes.CAN_STRINGIFY */;        case 9 /* NodeTypes.IF */:        case 11 /* NodeTypes.FOR */:        case 10 /* NodeTypes.IF_BRANCH */:            return 0 /* ConstantTypes.NOT_CONSTANT */;        case 5 /* NodeTypes.INTERPOLATION */:        case 12 /* NodeTypes.TEXT_CALL */:            return getConstantType(node.content, context);        case 4 /* NodeTypes.SIMPLE_EXPRESSION */:            return node.constType;        case 8 /* NodeTypes.COMPOUND_EXPRESSION */:            let returnType = 3 /* ConstantTypes.CAN_STRINGIFY */;            for (let i = 0; i < node.children.length; i++) {                const child = node.children[i];                if (isString(child) || isSymbol(child)) {                    continue;                }                const childType = getConstantType(child, context);                if (childType === 0 /* ConstantTypes.NOT_CONSTANT */) {                    return 0 /* ConstantTypes.NOT_CONSTANT */;                }                else if (childType < returnType) {                    returnType = childType;                }            }            return returnType;        default:            return 0 /* ConstantTypes.NOT_CONSTANT */;    }}const allowHoistedHelperSet = new Set([    NORMALIZE_CLASS,    NORMALIZE_STYLE,    NORMALIZE_PROPS,    GUARD_REACTIVE_PROPS]);function getConstantTypeOfHelperCall(value, context) {    if (value.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */ &&        !isString(value.callee) &&        allowHoistedHelperSet.has(value.callee)) {        const arg = value.arguments[0];        if (arg.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {            return getConstantType(arg, context);        }        else if (arg.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */) {            // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(exp))`            return getConstantTypeOfHelperCall(arg, context);        }    }    return 0 /* ConstantTypes.NOT_CONSTANT */;}function getGeneratedPropsConstantType(node, context) {    let returnType = 3 /* ConstantTypes.CAN_STRINGIFY */;    const props = getNodeProps(node);    if (props && props.type === 15 /* NodeTypes.JS_OBJECT_EXPRESSION */) {        const { properties } = props;        for (let i = 0; i < properties.length; i++) {            const { key, value } = properties[i];            const keyType = getConstantType(key, context);            if (keyType === 0 /* ConstantTypes.NOT_CONSTANT */) {                return keyType;            }            if (keyType < returnType) {                returnType = keyType;            }            let valueType;            if (value.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {                valueType = getConstantType(value, context);            }            else if (value.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */) {                // some helper calls can be hoisted,                // such as the `normalizeProps` generated by the compiler for pre-normalize class,                // in this case we need to respect the ConstantType of the helper's arguments                valueType = getConstantTypeOfHelperCall(value, context);            }            else {                valueType = 0 /* ConstantTypes.NOT_CONSTANT */;            }            if (valueType === 0 /* ConstantTypes.NOT_CONSTANT */) {                return valueType;            }            if (valueType < returnType) {                returnType = valueType;            }        }    }    return returnType;}function getNodeProps(node) {    const codegenNode = node.codegenNode;    if (codegenNode.type === 13 /* NodeTypes.VNODE_CALL */) {        return codegenNode.props;    }}function getPatchFlag(node) {    const flag = node.patchFlag;    return flag ? parseInt(flag, 10) : undefined;}function createTransformContext(root, { filename = '', prefixIdentifiers = false, hoistStatic = false, cacheHandlers = false, nodeTransforms = [], directiveTransforms = {}, transformHoist = null, isBuiltInComponent = NOOP, isCustomElement = NOOP, expressionPlugins = [], scopeId = null, slotted = true, ssr = false, inSSR = false, ssrCssVars = ``, bindingMetadata = EMPTY_OBJ, inline = false, isTS = false, onError = defaultOnError, onWarn = defaultOnWarn, compatConfig }) {    const nameMatch = filename.replace(/\?.*$/, '').match(/([^/\\]+)\.\w+$/);    const context = {        // options        selfName: nameMatch && capitalize(camelize(nameMatch[1])),        prefixIdentifiers,        hoistStatic,        cacheHandlers,        nodeTransforms,        directiveTransforms,        transformHoist,        isBuiltInComponent,        isCustomElement,        expressionPlugins,        scopeId,        slotted,        ssr,        inSSR,        ssrCssVars,        bindingMetadata,        inline,        isTS,        onError,        onWarn,        compatConfig,        // state        root,        helpers: new Map(),        components: new Set(),        directives: new Set(),        hoists: [],        imports: [],        constantCache: new Map(),        temps: 0,        cached: 0,        identifiers: Object.create(null),        scopes: {            vFor: 0,            vSlot: 0,            vPre: 0,            vOnce: 0        },        parent: null,        currentNode: root,        childIndex: 0,        inVOnce: false,        // methods        helper(name) {            const count = context.helpers.get(name) || 0;            context.helpers.set(name, count + 1);            return name;        },        removeHelper(name) {            const count = context.helpers.get(name);            if (count) {                const currentCount = count - 1;                if (!currentCount) {                    context.helpers.delete(name);                }                else {                    context.helpers.set(name, currentCount);                }            }        },        helperString(name) {            return `_${helperNameMap[context.helper(name)]}`;        },        replaceNode(node) {            /* istanbul ignore if */            {                if (!context.currentNode) {                    throw new Error(`Node being replaced is already removed.`);                }                if (!context.parent) {                    throw new Error(`Cannot replace root node.`);                }            }            context.parent.children[context.childIndex] = context.currentNode = node;        },        removeNode(node) {            if (!context.parent) {                throw new Error(`Cannot remove root node.`);            }            const list = context.parent.children;            const removalIndex = node                ? list.indexOf(node)                : context.currentNode                    ? context.childIndex                    : -1;            /* istanbul ignore if */            if (removalIndex < 0) {                throw new Error(`node being removed is not a child of current parent`);            }            if (!node || node === context.currentNode) {                // current node removed                context.currentNode = null;                context.onNodeRemoved();            }            else {                // sibling node removed                if (context.childIndex > removalIndex) {                    context.childIndex--;                    context.onNodeRemoved();                }            }            context.parent.children.splice(removalIndex, 1);        },        onNodeRemoved: () => { },        addIdentifiers(exp) {            // identifier tracking only happens in non-browser builds.            {                if (isString(exp)) {                    addId(exp);                }                else if (exp.identifiers) {                    exp.identifiers.forEach(addId);                }                else if (exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {                    addId(exp.content);                }            }        },        removeIdentifiers(exp) {            {                if (isString(exp)) {                    removeId(exp);                }                else if (exp.identifiers) {                    exp.identifiers.forEach(removeId);                }                else if (exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {                    removeId(exp.content);                }            }        },        hoist(exp) {            if (isString(exp))                exp = createSimpleExpression(exp);            context.hoists.push(exp);            const identifier = createSimpleExpression(`_hoisted_${context.hoists.length}`, false, exp.loc, 2 /* ConstantTypes.CAN_HOIST */);            identifier.hoisted = exp;            return identifier;        },        cache(exp, isVNode = false) {            return createCacheExpression(context.cached++, exp, isVNode);        }    };    function addId(id) {        const { identifiers } = context;        if (identifiers[id] === undefined) {            identifiers[id] = 0;        }        identifiers[id]++;    }    function removeId(id) {        context.identifiers[id]--;    }    return context;}function transform(root, options) {    const context = createTransformContext(root, options);    traverseNode(root, context);    if (options.hoistStatic) {        hoistStatic(root, context);    }    if (!options.ssr) {        createRootCodegen(root, context);    }    // finalize meta information    root.helpers = [...context.helpers.keys()];    root.components = [...context.components];    root.directives = [...context.directives];    root.imports = context.imports;    root.hoists = context.hoists;    root.temps = context.temps;    root.cached = context.cached;}function createRootCodegen(root, context) {    const { helper } = context;    const { children } = root;    if (children.length === 1) {        const child = children[0];        // if the single child is an element, turn it into a block.        if (isSingleElementRoot(root, child) && child.codegenNode) {            // single element root is never hoisted so codegenNode will never be            // SimpleExpressionNode            const codegenNode = child.codegenNode;            if (codegenNode.type === 13 /* NodeTypes.VNODE_CALL */) {                makeBlock(codegenNode, context);            }            root.codegenNode = codegenNode;        }        else {            // - single <slot/>, IfNode, ForNode: already blocks.            // - single text node: always patched.            // root codegen falls through via genNode()            root.codegenNode = child;        }    }    else if (children.length > 1) {        // root has multiple nodes - return a fragment block.        let patchFlag = 64 /* PatchFlags.STABLE_FRAGMENT */;        let patchFlagText = PatchFlagNames[64 /* PatchFlags.STABLE_FRAGMENT */];        // check if the fragment actually contains a single valid child with        // the rest being comments        if (children.filter(c => c.type !== 3 /* NodeTypes.COMMENT */).length === 1) {            patchFlag |= 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */;            patchFlagText += `, ${PatchFlagNames[2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]}`;        }        root.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, root.children, patchFlag + (` /* ${patchFlagText} */` ), undefined, undefined, true, undefined, false /* isComponent */);    }    else ;}function traverseChildren(parent, context) {    let i = 0;    const nodeRemoved = () => {        i--;    };    for (; i < parent.children.length; i++) {        const child = parent.children[i];        if (isString(child))            continue;        context.parent = parent;        context.childIndex = i;        context.onNodeRemoved = nodeRemoved;        traverseNode(child, context);    }}function traverseNode(node, context) {    context.currentNode = node;    // apply transform plugins    const { nodeTransforms } = context;    const exitFns = [];    for (let i = 0; i < nodeTransforms.length; i++) {        const onExit = nodeTransforms[i](node, context);        if (onExit) {            if (isArray(onExit)) {                exitFns.push(...onExit);            }            else {                exitFns.push(onExit);            }        }        if (!context.currentNode) {            // node was removed            return;        }        else {            // node may have been replaced            node = context.currentNode;        }    }    switch (node.type) {        case 3 /* NodeTypes.COMMENT */:            if (!context.ssr) {                // inject import for the Comment symbol, which is needed for creating                // comment nodes with `createVNode`                context.helper(CREATE_COMMENT);            }            break;        case 5 /* NodeTypes.INTERPOLATION */:            // no need to traverse, but we need to inject toString helper            if (!context.ssr) {                context.helper(TO_DISPLAY_STRING);            }            break;        // for container types, further traverse downwards        case 9 /* NodeTypes.IF */:            for (let i = 0; i < node.branches.length; i++) {                traverseNode(node.branches[i], context);            }            break;        case 10 /* NodeTypes.IF_BRANCH */:        case 11 /* NodeTypes.FOR */:        case 1 /* NodeTypes.ELEMENT */:        case 0 /* NodeTypes.ROOT */:            traverseChildren(node, context);            break;    }    // exit transforms    context.currentNode = node;    let i = exitFns.length;    while (i--) {        exitFns[i]();    }}function createStructuralDirectiveTransform(name, fn) {    const matches = isString(name)        ? (n) => n === name        : (n) => name.test(n);    return (node, context) => {        if (node.type === 1 /* NodeTypes.ELEMENT */) {            const { props } = node;            // structural directive transforms are not concerned with slots            // as they are handled separately in vSlot.ts            if (node.tagType === 3 /* ElementTypes.TEMPLATE */ && props.some(isVSlot)) {                return;            }            const exitFns = [];            for (let i = 0; i < props.length; i++) {                const prop = props[i];                if (prop.type === 7 /* NodeTypes.DIRECTIVE */ && matches(prop.name)) {                    // structural directives are removed to avoid infinite recursion                    // also we remove them *before* applying so that it can further                    // traverse itself in case it moves the node around                    props.splice(i, 1);                    i--;                    const onExit = fn(node, prop, context);                    if (onExit)                        exitFns.push(onExit);                }            }            return exitFns;        }    };}/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');/** * Encode an integer in the range of 0 to 63 to a single base 64 digit. */var encode = function (number) {  if (0 <= number && number < intToCharMap.length) {    return intToCharMap[number];  }  throw new TypeError("Must be between 0 and 63: " + number);};/** * Decode a single base 64 character code digit to an integer. Returns -1 on * failure. */var decode = function (charCode) {  var bigA = 65;     // 'A'  var bigZ = 90;     // 'Z'  var littleA = 97;  // 'a'  var littleZ = 122; // 'z'  var zero = 48;     // '0'  var nine = 57;     // '9'  var plus = 43;     // '+'  var slash = 47;    // '/'  var littleOffset = 26;  var numberOffset = 52;  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ  if (bigA <= charCode && charCode <= bigZ) {    return (charCode - bigA);  }  // 26 - 51: abcdefghijklmnopqrstuvwxyz  if (littleA <= charCode && charCode <= littleZ) {    return (charCode - littleA + littleOffset);  }  // 52 - 61: 0123456789  if (zero <= charCode && charCode <= nine) {    return (charCode - zero + numberOffset);  }  // 62: +  if (charCode == plus) {    return 62;  }  // 63: /  if (charCode == slash) {    return 63;  }  // Invalid base64 digit.  return -1;};var base64 = {	encode: encode,	decode: decode};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause * * Based on the Base 64 VLQ implementation in Closure Compiler: * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java * * Copyright 2011 The Closure Compiler Authors. All rights reserved. * 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. *  * Neither the name of Google Inc. nor the names of its *    contributors may be used to endorse or promote products derived *    from this software without specific prior written permission. * * 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 THE COPYRIGHT * OWNER OR CONTRIBUTORS 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. */// A single base 64 digit can contain 6 bits of data. For the base 64 variable// length quantities we use in the source map spec, the first bit is the sign,// the next four bits are the actual value, and the 6th bit is the// continuation bit. The continuation bit tells us whether there are more// digits in this value following this digit.////   Continuation//   |    Sign//   |    |//   V    V//   101011var VLQ_BASE_SHIFT = 5;// binary: 100000var VLQ_BASE = 1 << VLQ_BASE_SHIFT;// binary: 011111var VLQ_BASE_MASK = VLQ_BASE - 1;// binary: 100000var VLQ_CONTINUATION_BIT = VLQ_BASE;/** * Converts from a two-complement value to a value where the sign bit is * placed in the least significant bit.  For example, as decimals: *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary) *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary) */function toVLQSigned(aValue) {  return aValue < 0    ? ((-aValue) << 1) + 1    : (aValue << 1) + 0;}/** * Converts to a two-complement value from a value where the sign bit is * placed in the least significant bit.  For example, as decimals: *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1 *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2 */function fromVLQSigned(aValue) {  var isNegative = (aValue & 1) === 1;  var shifted = aValue >> 1;  return isNegative    ? -shifted    : shifted;}/** * Returns the base 64 VLQ encoded value. */var encode$1 = function base64VLQ_encode(aValue) {  var encoded = "";  var digit;  var vlq = toVLQSigned(aValue);  do {    digit = vlq & VLQ_BASE_MASK;    vlq >>>= VLQ_BASE_SHIFT;    if (vlq > 0) {      // There are still more digits in this value, so we must make sure the      // continuation bit is marked.      digit |= VLQ_CONTINUATION_BIT;    }    encoded += base64.encode(digit);  } while (vlq > 0);  return encoded;};/** * Decodes the next base 64 VLQ value from the given string and returns the * value and the rest of the string via the out parameter. */var decode$1 = function base64VLQ_decode(aStr, aIndex, aOutParam) {  var strLen = aStr.length;  var result = 0;  var shift = 0;  var continuation, digit;  do {    if (aIndex >= strLen) {      throw new Error("Expected more digits in base 64 VLQ value.");    }    digit = base64.decode(aStr.charCodeAt(aIndex++));    if (digit === -1) {      throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));    }    continuation = !!(digit & VLQ_CONTINUATION_BIT);    digit &= VLQ_BASE_MASK;    result = result + (digit << shift);    shift += VLQ_BASE_SHIFT;  } while (continuation);  aOutParam.value = fromVLQSigned(result);  aOutParam.rest = aIndex;};var base64Vlq = {	encode: encode$1,	decode: decode$1};function getDefaultExportFromCjs (x) {	return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;}function getAugmentedNamespace(n) {	if (n.__esModule) return n;	var a = Object.defineProperty({}, '__esModule', {value: true});	Object.keys(n).forEach(function (k) {		var d = Object.getOwnPropertyDescriptor(n, k);		Object.defineProperty(a, k, d.get ? d : {			enumerable: true,			get: function () {				return n[k];			}		});	});	return a;}function createCommonjsModule(fn) {  var module = { exports: {} };	return fn(module, module.exports), module.exports;}/* -*- Mode: js; js-indent-level: 2; -*- */var util = createCommonjsModule(function (module, exports) {/* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause *//** * This is a helper function for getting values from parameter/options * objects. * * @param args The object we are extracting values from * @param name The name of the property we are getting. * @param defaultValue An optional value to return if the property is missing * from the object. If this is not specified and the property is missing, an * error will be thrown. */function getArg(aArgs, aName, aDefaultValue) {  if (aName in aArgs) {    return aArgs[aName];  } else if (arguments.length === 3) {    return aDefaultValue;  } else {    throw new Error('"' + aName + '" is a required argument.');  }}exports.getArg = getArg;var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;var dataUrlRegexp = /^data:.+\,.+$/;function urlParse(aUrl) {  var match = aUrl.match(urlRegexp);  if (!match) {    return null;  }  return {    scheme: match[1],    auth: match[2],    host: match[3],    port: match[4],    path: match[5]  };}exports.urlParse = urlParse;function urlGenerate(aParsedUrl) {  var url = '';  if (aParsedUrl.scheme) {    url += aParsedUrl.scheme + ':';  }  url += '//';  if (aParsedUrl.auth) {    url += aParsedUrl.auth + '@';  }  if (aParsedUrl.host) {    url += aParsedUrl.host;  }  if (aParsedUrl.port) {    url += ":" + aParsedUrl.port;  }  if (aParsedUrl.path) {    url += aParsedUrl.path;  }  return url;}exports.urlGenerate = urlGenerate;/** * Normalizes a path, or the path portion of a URL: * * - Replaces consecutive slashes with one slash. * - Removes unnecessary '.' parts. * - Removes unnecessary '<dir>/..' parts. * * Based on code in the Node.js 'path' core module. * * @param aPath The path or url to normalize. */function normalize(aPath) {  var path = aPath;  var url = urlParse(aPath);  if (url) {    if (!url.path) {      return aPath;    }    path = url.path;  }  var isAbsolute = exports.isAbsolute(path);  var parts = path.split(/\/+/);  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {    part = parts[i];    if (part === '.') {      parts.splice(i, 1);    } else if (part === '..') {      up++;    } else if (up > 0) {      if (part === '') {        // The first part is blank if the path is absolute. Trying to go        // above the root is a no-op. Therefore we can remove all '..' parts        // directly after the root.        parts.splice(i + 1, up);        up = 0;      } else {        parts.splice(i, 2);        up--;      }    }  }  path = parts.join('/');  if (path === '') {    path = isAbsolute ? '/' : '.';  }  if (url) {    url.path = path;    return urlGenerate(url);  }  return path;}exports.normalize = normalize;/** * Joins two paths/URLs. * * @param aRoot The root path or URL. * @param aPath The path or URL to be joined with the root. * * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended *   first. * - Otherwise aPath is a path. If aRoot is a URL, then its path portion *   is updated with the result and aRoot is returned. Otherwise the result *   is returned. *   - If aPath is absolute, the result is aPath. *   - Otherwise the two paths are joined with a slash. * - Joining for example 'http://' and 'www.example.com' is also supported. */function join(aRoot, aPath) {  if (aRoot === "") {    aRoot = ".";  }  if (aPath === "") {    aPath = ".";  }  var aPathUrl = urlParse(aPath);  var aRootUrl = urlParse(aRoot);  if (aRootUrl) {    aRoot = aRootUrl.path || '/';  }  // `join(foo, '//www.example.org')`  if (aPathUrl && !aPathUrl.scheme) {    if (aRootUrl) {      aPathUrl.scheme = aRootUrl.scheme;    }    return urlGenerate(aPathUrl);  }  if (aPathUrl || aPath.match(dataUrlRegexp)) {    return aPath;  }  // `join('http://', 'www.example.com')`  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {    aRootUrl.host = aPath;    return urlGenerate(aRootUrl);  }  var joined = aPath.charAt(0) === '/'    ? aPath    : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);  if (aRootUrl) {    aRootUrl.path = joined;    return urlGenerate(aRootUrl);  }  return joined;}exports.join = join;exports.isAbsolute = function (aPath) {  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);};/** * Make a path relative to a URL or another path. * * @param aRoot The root path or URL. * @param aPath The path or URL to be made relative to aRoot. */function relative(aRoot, aPath) {  if (aRoot === "") {    aRoot = ".";  }  aRoot = aRoot.replace(/\/$/, '');  // It is possible for the path to be above the root. In this case, simply  // checking whether the root is a prefix of the path won't work. Instead, we  // need to remove components from the root one by one, until either we find  // a prefix that fits, or we run out of components to remove.  var level = 0;  while (aPath.indexOf(aRoot + '/') !== 0) {    var index = aRoot.lastIndexOf("/");    if (index < 0) {      return aPath;    }    // If the only part of the root that is left is the scheme (i.e. http://,    // file:///, etc.), one or more slashes (/), or simply nothing at all, we    // have exhausted all components, so the path is not relative to the root.    aRoot = aRoot.slice(0, index);    if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {      return aPath;    }    ++level;  }  // Make sure we add a "../" for each component we removed from the root.  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);}exports.relative = relative;var supportsNullProto = (function () {  var obj = Object.create(null);  return !('__proto__' in obj);}());function identity (s) {  return s;}/** * Because behavior goes wacky when you set `__proto__` on objects, we * have to prefix all the strings in our set with an arbitrary character. * * See https://github.com/mozilla/source-map/pull/31 and * https://github.com/mozilla/source-map/issues/30 * * @param String aStr */function toSetString(aStr) {  if (isProtoString(aStr)) {    return '$' + aStr;  }  return aStr;}exports.toSetString = supportsNullProto ? identity : toSetString;function fromSetString(aStr) {  if (isProtoString(aStr)) {    return aStr.slice(1);  }  return aStr;}exports.fromSetString = supportsNullProto ? identity : fromSetString;function isProtoString(s) {  if (!s) {    return false;  }  var length = s.length;  if (length < 9 /* "__proto__".length */) {    return false;  }  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||      s.charCodeAt(length - 2) !== 95  /* '_' */ ||      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||      s.charCodeAt(length - 4) !== 116 /* 't' */ ||      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||      s.charCodeAt(length - 8) !== 95  /* '_' */ ||      s.charCodeAt(length - 9) !== 95  /* '_' */) {    return false;  }  for (var i = length - 10; i >= 0; i--) {    if (s.charCodeAt(i) !== 36 /* '$' */) {      return false;    }  }  return true;}/** * Comparator between two mappings where the original positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same original source/line/column, but different generated * line and column the same. Useful when searching for a mapping with a * stubbed out mapping. */function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {  var cmp = strcmp(mappingA.source, mappingB.source);  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0 || onlyCompareOriginal) {    return cmp;  }  cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.generatedLine - mappingB.generatedLine;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByOriginalPositions = compareByOriginalPositions;/** * Comparator between two mappings with deflated source and name indices where * the generated positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same generated line and column, but different * source/name/original line and column the same. Useful when searching for a * mapping with a stubbed out mapping. */function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {  var cmp = mappingA.generatedLine - mappingB.generatedLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0 || onlyCompareGenerated) {    return cmp;  }  cmp = strcmp(mappingA.source, mappingB.source);  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;function strcmp(aStr1, aStr2) {  if (aStr1 === aStr2) {    return 0;  }  if (aStr1 === null) {    return 1; // aStr2 !== null  }  if (aStr2 === null) {    return -1; // aStr1 !== null  }  if (aStr1 > aStr2) {    return 1;  }  return -1;}/** * Comparator between two mappings with inflated source and name strings where * the generated positions are compared. */function compareByGeneratedPositionsInflated(mappingA, mappingB) {  var cmp = mappingA.generatedLine - mappingB.generatedLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0) {    return cmp;  }  cmp = strcmp(mappingA.source, mappingB.source);  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;/** * Strip any JSON XSSI avoidance prefix from the string (as documented * in the source maps specification), and then parse the string as * JSON. */function parseSourceMapInput(str) {  return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));}exports.parseSourceMapInput = parseSourceMapInput;/** * Compute the URL of a source given the the source root, the source's * URL, and the source map's URL. */function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {  sourceURL = sourceURL || '';  if (sourceRoot) {    // This follows what Chrome does.    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {      sourceRoot += '/';    }    // The spec says:    //   Line 4: An optional source root, useful for relocating source    //   files on a server or removing repeated values in the    //   “sources” entry.  This value is prepended to the individual    //   entries in the “source” field.    sourceURL = sourceRoot + sourceURL;  }  // Historically, SourceMapConsumer did not take the sourceMapURL as  // a parameter.  This mode is still somewhat supported, which is why  // this code block is conditional.  However, it's preferable to pass  // the source map URL to SourceMapConsumer, so that this function  // can implement the source URL resolution algorithm as outlined in  // the spec.  This block is basically the equivalent of:  //    new URL(sourceURL, sourceMapURL).toString()  // ... except it avoids using URL, which wasn't available in the  // older releases of node still supported by this library.  //  // The spec says:  //   If the sources are not absolute URLs after prepending of the  //   “sourceRoot”, the sources are resolved relative to the  //   SourceMap (like resolving script src in a html document).  if (sourceMapURL) {    var parsed = urlParse(sourceMapURL);    if (!parsed) {      throw new Error("sourceMapURL could not be parsed");    }    if (parsed.path) {      // Strip the last path component, but keep the "/".      var index = parsed.path.lastIndexOf('/');      if (index >= 0) {        parsed.path = parsed.path.substring(0, index + 1);      }    }    sourceURL = join(urlGenerate(parsed), sourceURL);  }  return normalize(sourceURL);}exports.computeSourceURL = computeSourceURL;});/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var has = Object.prototype.hasOwnProperty;var hasNativeMap = typeof Map !== "undefined";/** * A data structure which is a combination of an array and a set. Adding a new * member is O(1), testing for membership is O(1), and finding the index of an * element is O(1). Removing elements from the set is not supported. Only * strings are supported for membership. */function ArraySet() {  this._array = [];  this._set = hasNativeMap ? new Map() : Object.create(null);}/** * Static method for creating ArraySet instances from an existing array. */ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {  var set = new ArraySet();  for (var i = 0, len = aArray.length; i < len; i++) {    set.add(aArray[i], aAllowDuplicates);  }  return set;};/** * Return how many unique items are in this ArraySet. If duplicates have been * added, than those do not count towards the size. * * @returns Number */ArraySet.prototype.size = function ArraySet_size() {  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;};/** * Add the given string to this set. * * @param String aStr */ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);  var idx = this._array.length;  if (!isDuplicate || aAllowDuplicates) {    this._array.push(aStr);  }  if (!isDuplicate) {    if (hasNativeMap) {      this._set.set(aStr, idx);    } else {      this._set[sStr] = idx;    }  }};/** * Is the given string a member of this set? * * @param String aStr */ArraySet.prototype.has = function ArraySet_has(aStr) {  if (hasNativeMap) {    return this._set.has(aStr);  } else {    var sStr = util.toSetString(aStr);    return has.call(this._set, sStr);  }};/** * What is the index of the given string in the array? * * @param String aStr */ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {  if (hasNativeMap) {    var idx = this._set.get(aStr);    if (idx >= 0) {        return idx;    }  } else {    var sStr = util.toSetString(aStr);    if (has.call(this._set, sStr)) {      return this._set[sStr];    }  }  throw new Error('"' + aStr + '" is not in the set.');};/** * What is the element at the given index? * * @param Number aIdx */ArraySet.prototype.at = function ArraySet_at(aIdx) {  if (aIdx >= 0 && aIdx < this._array.length) {    return this._array[aIdx];  }  throw new Error('No element indexed by ' + aIdx);};/** * Returns the array representation of this set (which has the proper indices * indicated by indexOf). Note that this is a copy of the internal array used * for storing the members so that no one can mess with internal state. */ArraySet.prototype.toArray = function ArraySet_toArray() {  return this._array.slice();};var ArraySet_1 = ArraySet;var arraySet = {	ArraySet: ArraySet_1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2014 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause *//** * Determine whether mappingB is after mappingA with respect to generated * position. */function generatedPositionAfter(mappingA, mappingB) {  // Optimized for most common case  var lineA = mappingA.generatedLine;  var lineB = mappingB.generatedLine;  var columnA = mappingA.generatedColumn;  var columnB = mappingB.generatedColumn;  return lineB > lineA || lineB == lineA && columnB >= columnA ||         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;}/** * A data structure to provide a sorted view of accumulated mappings in a * performance conscious manner. It trades a neglibable overhead in general * case for a large speedup in case of mappings being added in order. */function MappingList() {  this._array = [];  this._sorted = true;  // Serves as infimum  this._last = {generatedLine: -1, generatedColumn: 0};}/** * Iterate through internal items. This method takes the same arguments that * `Array.prototype.forEach` takes. * * NOTE: The order of the mappings is NOT guaranteed. */MappingList.prototype.unsortedForEach =  function MappingList_forEach(aCallback, aThisArg) {    this._array.forEach(aCallback, aThisArg);  };/** * Add the given source mapping. * * @param Object aMapping */MappingList.prototype.add = function MappingList_add(aMapping) {  if (generatedPositionAfter(this._last, aMapping)) {    this._last = aMapping;    this._array.push(aMapping);  } else {    this._sorted = false;    this._array.push(aMapping);  }};/** * Returns the flat, sorted array of mappings. The mappings are sorted by * generated position. * * WARNING: This method returns internal data without copying, for * performance. The return value must NOT be mutated, and should be treated as * an immutable borrow. If you want to take ownership, you must make your own * copy. */MappingList.prototype.toArray = function MappingList_toArray() {  if (!this._sorted) {    this._array.sort(util.compareByGeneratedPositionsInflated);    this._sorted = true;  }  return this._array;};var MappingList_1 = MappingList;var mappingList = {	MappingList: MappingList_1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var ArraySet$1 = arraySet.ArraySet;var MappingList$1 = mappingList.MappingList;/** * An instance of the SourceMapGenerator represents a source map which is * being built incrementally. You may pass an object with the following * properties: * *   - file: The filename of the generated source. *   - sourceRoot: A root for all relative URLs in this source map. */function SourceMapGenerator(aArgs) {  if (!aArgs) {    aArgs = {};  }  this._file = util.getArg(aArgs, 'file', null);  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);  this._sources = new ArraySet$1();  this._names = new ArraySet$1();  this._mappings = new MappingList$1();  this._sourcesContents = null;}SourceMapGenerator.prototype._version = 3;/** * Creates a new SourceMapGenerator based on a SourceMapConsumer * * @param aSourceMapConsumer The SourceMap. */SourceMapGenerator.fromSourceMap =  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {    var sourceRoot = aSourceMapConsumer.sourceRoot;    var generator = new SourceMapGenerator({      file: aSourceMapConsumer.file,      sourceRoot: sourceRoot    });    aSourceMapConsumer.eachMapping(function (mapping) {      var newMapping = {        generated: {          line: mapping.generatedLine,          column: mapping.generatedColumn        }      };      if (mapping.source != null) {        newMapping.source = mapping.source;        if (sourceRoot != null) {          newMapping.source = util.relative(sourceRoot, newMapping.source);        }        newMapping.original = {          line: mapping.originalLine,          column: mapping.originalColumn        };        if (mapping.name != null) {          newMapping.name = mapping.name;        }      }      generator.addMapping(newMapping);    });    aSourceMapConsumer.sources.forEach(function (sourceFile) {      var sourceRelative = sourceFile;      if (sourceRoot !== null) {        sourceRelative = util.relative(sourceRoot, sourceFile);      }      if (!generator._sources.has(sourceRelative)) {        generator._sources.add(sourceRelative);      }      var content = aSourceMapConsumer.sourceContentFor(sourceFile);      if (content != null) {        generator.setSourceContent(sourceFile, content);      }    });    return generator;  };/** * Add a single mapping from original source line and column to the generated * source's line and column for this source map being created. The mapping * object should have the following properties: * *   - generated: An object with the generated line and column positions. *   - original: An object with the original line and column positions. *   - source: The original source file (relative to the sourceRoot). *   - name: An optional original token name for this mapping. */SourceMapGenerator.prototype.addMapping =  function SourceMapGenerator_addMapping(aArgs) {    var generated = util.getArg(aArgs, 'generated');    var original = util.getArg(aArgs, 'original', null);    var source = util.getArg(aArgs, 'source', null);    var name = util.getArg(aArgs, 'name', null);    if (!this._skipValidation) {      this._validateMapping(generated, original, source, name);    }    if (source != null) {      source = String(source);      if (!this._sources.has(source)) {        this._sources.add(source);      }    }    if (name != null) {      name = String(name);      if (!this._names.has(name)) {        this._names.add(name);      }    }    this._mappings.add({      generatedLine: generated.line,      generatedColumn: generated.column,      originalLine: original != null && original.line,      originalColumn: original != null && original.column,      source: source,      name: name    });  };/** * Set the source content for a source file. */SourceMapGenerator.prototype.setSourceContent =  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {    var source = aSourceFile;    if (this._sourceRoot != null) {      source = util.relative(this._sourceRoot, source);    }    if (aSourceContent != null) {      // Add the source content to the _sourcesContents map.      // Create a new _sourcesContents map if the property is null.      if (!this._sourcesContents) {        this._sourcesContents = Object.create(null);      }      this._sourcesContents[util.toSetString(source)] = aSourceContent;    } else if (this._sourcesContents) {      // Remove the source file from the _sourcesContents map.      // If the _sourcesContents map is empty, set the property to null.      delete this._sourcesContents[util.toSetString(source)];      if (Object.keys(this._sourcesContents).length === 0) {        this._sourcesContents = null;      }    }  };/** * Applies the mappings of a sub-source-map for a specific source file to the * source map being generated. Each mapping to the supplied source file is * rewritten using the supplied source map. Note: The resolution for the * resulting mappings is the minimium of this map and the supplied map. * * @param aSourceMapConsumer The source map to be applied. * @param aSourceFile Optional. The filename of the source file. *        If omitted, SourceMapConsumer's file property will be used. * @param aSourceMapPath Optional. The dirname of the path to the source map *        to be applied. If relative, it is relative to the SourceMapConsumer. *        This parameter is needed when the two source maps aren't in the same *        directory, and the source map to be applied contains relative source *        paths. If so, those relative source paths need to be rewritten *        relative to the SourceMapGenerator. */SourceMapGenerator.prototype.applySourceMap =  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {    var sourceFile = aSourceFile;    // If aSourceFile is omitted, we will use the file property of the SourceMap    if (aSourceFile == null) {      if (aSourceMapConsumer.file == null) {        throw new Error(          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +          'or the source map\'s "file" property. Both were omitted.'        );      }      sourceFile = aSourceMapConsumer.file;    }    var sourceRoot = this._sourceRoot;    // Make "sourceFile" relative if an absolute Url is passed.    if (sourceRoot != null) {      sourceFile = util.relative(sourceRoot, sourceFile);    }    // Applying the SourceMap can add and remove items from the sources and    // the names array.    var newSources = new ArraySet$1();    var newNames = new ArraySet$1();    // Find mappings for the "sourceFile"    this._mappings.unsortedForEach(function (mapping) {      if (mapping.source === sourceFile && mapping.originalLine != null) {        // Check if it can be mapped by the source map, then update the mapping.        var original = aSourceMapConsumer.originalPositionFor({          line: mapping.originalLine,          column: mapping.originalColumn        });        if (original.source != null) {          // Copy mapping          mapping.source = original.source;          if (aSourceMapPath != null) {            mapping.source = util.join(aSourceMapPath, mapping.source);          }          if (sourceRoot != null) {            mapping.source = util.relative(sourceRoot, mapping.source);          }          mapping.originalLine = original.line;          mapping.originalColumn = original.column;          if (original.name != null) {            mapping.name = original.name;          }        }      }      var source = mapping.source;      if (source != null && !newSources.has(source)) {        newSources.add(source);      }      var name = mapping.name;      if (name != null && !newNames.has(name)) {        newNames.add(name);      }    }, this);    this._sources = newSources;    this._names = newNames;    // Copy sourcesContents of applied map.    aSourceMapConsumer.sources.forEach(function (sourceFile) {      var content = aSourceMapConsumer.sourceContentFor(sourceFile);      if (content != null) {        if (aSourceMapPath != null) {          sourceFile = util.join(aSourceMapPath, sourceFile);        }        if (sourceRoot != null) {          sourceFile = util.relative(sourceRoot, sourceFile);        }        this.setSourceContent(sourceFile, content);      }    }, this);  };/** * A mapping can have one of the three levels of data: * *   1. Just the generated position. *   2. The Generated position, original position, and original source. *   3. Generated and original position, original source, as well as a name *      token. * * To maintain consistency, we validate that any new mapping being added falls * in to one of these categories. */SourceMapGenerator.prototype._validateMapping =  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,                                              aName) {    // When aOriginal is truthy but has empty values for .line and .column,    // it is most likely a programmer error. In this case we throw a very    // specific error message to try to guide them the right way.    // For example: https://github.com/Polymer/polymer-bundler/pull/519    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {        throw new Error(            'original.line and original.column are not numbers -- you probably meant to omit ' +            'the original mapping entirely and only map the generated position. If so, pass ' +            'null for the original mapping instead of an object with empty or null values.'        );    }    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated        && aGenerated.line > 0 && aGenerated.column >= 0        && !aOriginal && !aSource && !aName) {      // Case 1.      return;    }    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated             && aOriginal && 'line' in aOriginal && 'column' in aOriginal             && aGenerated.line > 0 && aGenerated.column >= 0             && aOriginal.line > 0 && aOriginal.column >= 0             && aSource) {      // Cases 2 and 3.      return;    }    else {      throw new Error('Invalid mapping: ' + JSON.stringify({        generated: aGenerated,        source: aSource,        original: aOriginal,        name: aName      }));    }  };/** * Serialize the accumulated mappings in to the stream of base 64 VLQs * specified by the source map format. */SourceMapGenerator.prototype._serializeMappings =  function SourceMapGenerator_serializeMappings() {    var previousGeneratedColumn = 0;    var previousGeneratedLine = 1;    var previousOriginalColumn = 0;    var previousOriginalLine = 0;    var previousName = 0;    var previousSource = 0;    var result = '';    var next;    var mapping;    var nameIdx;    var sourceIdx;    var mappings = this._mappings.toArray();    for (var i = 0, len = mappings.length; i < len; i++) {      mapping = mappings[i];      next = '';      if (mapping.generatedLine !== previousGeneratedLine) {        previousGeneratedColumn = 0;        while (mapping.generatedLine !== previousGeneratedLine) {          next += ';';          previousGeneratedLine++;        }      }      else {        if (i > 0) {          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {            continue;          }          next += ',';        }      }      next += base64Vlq.encode(mapping.generatedColumn                                 - previousGeneratedColumn);      previousGeneratedColumn = mapping.generatedColumn;      if (mapping.source != null) {        sourceIdx = this._sources.indexOf(mapping.source);        next += base64Vlq.encode(sourceIdx - previousSource);        previousSource = sourceIdx;        // lines are stored 0-based in SourceMap spec version 3        next += base64Vlq.encode(mapping.originalLine - 1                                   - previousOriginalLine);        previousOriginalLine = mapping.originalLine - 1;        next += base64Vlq.encode(mapping.originalColumn                                   - previousOriginalColumn);        previousOriginalColumn = mapping.originalColumn;        if (mapping.name != null) {          nameIdx = this._names.indexOf(mapping.name);          next += base64Vlq.encode(nameIdx - previousName);          previousName = nameIdx;        }      }      result += next;    }    return result;  };SourceMapGenerator.prototype._generateSourcesContent =  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {    return aSources.map(function (source) {      if (!this._sourcesContents) {        return null;      }      if (aSourceRoot != null) {        source = util.relative(aSourceRoot, source);      }      var key = util.toSetString(source);      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)        ? this._sourcesContents[key]        : null;    }, this);  };/** * Externalize the source map. */SourceMapGenerator.prototype.toJSON =  function SourceMapGenerator_toJSON() {    var map = {      version: this._version,      sources: this._sources.toArray(),      names: this._names.toArray(),      mappings: this._serializeMappings()    };    if (this._file != null) {      map.file = this._file;    }    if (this._sourceRoot != null) {      map.sourceRoot = this._sourceRoot;    }    if (this._sourcesContents) {      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);    }    return map;  };/** * Render the source map being generated to a string. */SourceMapGenerator.prototype.toString =  function SourceMapGenerator_toString() {    return JSON.stringify(this.toJSON());  };var SourceMapGenerator_1 = SourceMapGenerator;var sourceMapGenerator = {	SourceMapGenerator: SourceMapGenerator_1};/* -*- Mode: js; js-indent-level: 2; -*- */var binarySearch = createCommonjsModule(function (module, exports) {/* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */exports.GREATEST_LOWER_BOUND = 1;exports.LEAST_UPPER_BOUND = 2;/** * Recursive implementation of binary search. * * @param aLow Indices here and lower do not contain the needle. * @param aHigh Indices here and higher do not contain the needle. * @param aNeedle The element being searched for. * @param aHaystack The non-empty array being searched. * @param aCompare Function which takes two elements and returns -1, 0, or 1. * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. */function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {  // This function terminates when one of the following is true:  //  //   1. We find the exact element we are looking for.  //  //   2. We did not find the exact element, but we can return the index of  //      the next-closest element.  //  //   3. We did not find the exact element, and there is no next-closest  //      element than the one we are searching for, so we return -1.  var mid = Math.floor((aHigh - aLow) / 2) + aLow;  var cmp = aCompare(aNeedle, aHaystack[mid], true);  if (cmp === 0) {    // Found the element we are looking for.    return mid;  }  else if (cmp > 0) {    // Our needle is greater than aHaystack[mid].    if (aHigh - mid > 1) {      // The element is in the upper half.      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);    }    // The exact needle element was not found in this haystack. Determine if    // we are in termination case (3) or (2) and return the appropriate thing.    if (aBias == exports.LEAST_UPPER_BOUND) {      return aHigh < aHaystack.length ? aHigh : -1;    } else {      return mid;    }  }  else {    // Our needle is less than aHaystack[mid].    if (mid - aLow > 1) {      // The element is in the lower half.      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);    }    // we are in termination case (3) or (2) and return the appropriate thing.    if (aBias == exports.LEAST_UPPER_BOUND) {      return mid;    } else {      return aLow < 0 ? -1 : aLow;    }  }}/** * This is an implementation of binary search which will always try and return * the index of the closest element if there is no exact hit. This is because * mappings between original and generated line/col pairs are single points, * and there is an implicit region between each of them, so a miss just means * that you aren't on the very start of a region. * * @param aNeedle The element you are looking for. * @param aHaystack The array that is being searched. * @param aCompare A function which takes the needle and an element in the *     array and returns -1, 0, or 1 depending on whether the needle is less *     than, equal to, or greater than the element, respectively. * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. */exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {  if (aHaystack.length === 0) {    return -1;  }  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);  if (index < 0) {    return -1;  }  // We have found either the exact element, or the next-closest element than  // the one we are searching for. However, there may be more than one such  // element. Make sure we always return the smallest of these.  while (index - 1 >= 0) {    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {      break;    }    --index;  }  return index;};});/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */// It turns out that some (most?) JavaScript engines don't self-host// `Array.prototype.sort`. This makes sense because C++ will likely remain// faster than JS when doing raw CPU-intensive sorting. However, when using a// custom comparator function, calling back and forth between the VM's C++ and// JIT'd JS is rather slow *and* loses JIT type information, resulting in// worse generated code for the comparator function than would be optimal. In// fact, when sorting with a comparator, these costs outweigh the benefits of// sorting in C++. By using our own JS-implemented Quick Sort (below), we get// a ~3500ms mean speed-up in `bench/bench.html`./** * Swap the elements indexed by `x` and `y` in the array `ary`. * * @param {Array} ary *        The array. * @param {Number} x *        The index of the first item. * @param {Number} y *        The index of the second item. */function swap(ary, x, y) {  var temp = ary[x];  ary[x] = ary[y];  ary[y] = temp;}/** * Returns a random integer within the range `low .. high` inclusive. * * @param {Number} low *        The lower bound on the range. * @param {Number} high *        The upper bound on the range. */function randomIntInRange(low, high) {  return Math.round(low + (Math.random() * (high - low)));}/** * The Quick Sort algorithm. * * @param {Array} ary *        An array to sort. * @param {function} comparator *        Function to use to compare two items. * @param {Number} p *        Start index of the array * @param {Number} r *        End index of the array */function doQuickSort(ary, comparator, p, r) {  // If our lower bound is less than our upper bound, we (1) partition the  // array into two pieces and (2) recurse on each half. If it is not, this is  // the empty array and our base case.  if (p < r) {    // (1) Partitioning.    //    // The partitioning chooses a pivot between `p` and `r` and moves all    // elements that are less than or equal to the pivot to the before it, and    // all the elements that are greater than it after it. The effect is that    // once partition is done, the pivot is in the exact place it will be when    // the array is put in sorted order, and it will not need to be moved    // again. This runs in O(n) time.    // Always choose a random pivot so that an input array which is reverse    // sorted does not cause O(n^2) running time.    var pivotIndex = randomIntInRange(p, r);    var i = p - 1;    swap(ary, pivotIndex, r);    var pivot = ary[r];    // Immediately after `j` is incremented in this loop, the following hold    // true:    //    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.    //    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.    for (var j = p; j < r; j++) {      if (comparator(ary[j], pivot) <= 0) {        i += 1;        swap(ary, i, j);      }    }    swap(ary, i + 1, j);    var q = i + 1;    // (2) Recurse on each half.    doQuickSort(ary, comparator, p, q - 1);    doQuickSort(ary, comparator, q + 1, r);  }}/** * Sort the given array in-place with the given comparator function. * * @param {Array} ary *        An array to sort. * @param {function} comparator *        Function to use to compare two items. */var quickSort_1 = function (ary, comparator) {  doQuickSort(ary, comparator, 0, ary.length - 1);};var quickSort = {	quickSort: quickSort_1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var ArraySet$2 = arraySet.ArraySet;var quickSort$1 = quickSort.quickSort;function SourceMapConsumer(aSourceMap, aSourceMapURL) {  var sourceMap = aSourceMap;  if (typeof aSourceMap === 'string') {    sourceMap = util.parseSourceMapInput(aSourceMap);  }  return sourceMap.sections != null    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);}SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);};/** * The version of the source mapping spec that we are consuming. */SourceMapConsumer.prototype._version = 3;// `__generatedMappings` and `__originalMappings` are arrays that hold the// parsed mapping coordinates from the source map's "mappings" attribute. They// are lazily instantiated, accessed via the `_generatedMappings` and// `_originalMappings` getters respectively, and we only parse the mappings// and create these arrays once queried for a source location. We jump through// these hoops because there can be many thousands of mappings, and parsing// them is expensive, so we only want to do it if we must.//// Each object in the arrays is of the form:////     {//       generatedLine: The line number in the generated code,//       generatedColumn: The column number in the generated code,//       source: The path to the original source file that generated this//               chunk of code,//       originalLine: The line number in the original source that//                     corresponds to this chunk of generated code,//       originalColumn: The column number in the original source that//                       corresponds to this chunk of generated code,//       name: The name of the original symbol which generated this chunk of//             code.//     }//// All properties except for `generatedLine` and `generatedColumn` can be// `null`.//// `_generatedMappings` is ordered by the generated positions.//// `_originalMappings` is ordered by the original positions.SourceMapConsumer.prototype.__generatedMappings = null;Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {  configurable: true,  enumerable: true,  get: function () {    if (!this.__generatedMappings) {      this._parseMappings(this._mappings, this.sourceRoot);    }    return this.__generatedMappings;  }});SourceMapConsumer.prototype.__originalMappings = null;Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {  configurable: true,  enumerable: true,  get: function () {    if (!this.__originalMappings) {      this._parseMappings(this._mappings, this.sourceRoot);    }    return this.__originalMappings;  }});SourceMapConsumer.prototype._charIsMappingSeparator =  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {    var c = aStr.charAt(index);    return c === ";" || c === ",";  };/** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */SourceMapConsumer.prototype._parseMappings =  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {    throw new Error("Subclasses must implement _parseMappings");  };SourceMapConsumer.GENERATED_ORDER = 1;SourceMapConsumer.ORIGINAL_ORDER = 2;SourceMapConsumer.GREATEST_LOWER_BOUND = 1;SourceMapConsumer.LEAST_UPPER_BOUND = 2;/** * Iterate over each mapping between an original source/line/column and a * generated line/column in this source map. * * @param Function aCallback *        The function that is called with each mapping. * @param Object aContext *        Optional. If specified, this object will be the value of `this` every *        time that `aCallback` is called. * @param aOrder *        Either `SourceMapConsumer.GENERATED_ORDER` or *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to *        iterate over the mappings sorted by the generated file's line/column *        order or the original's source/line/column order, respectively. Defaults to *        `SourceMapConsumer.GENERATED_ORDER`. */SourceMapConsumer.prototype.eachMapping =  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {    var context = aContext || null;    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;    var mappings;    switch (order) {    case SourceMapConsumer.GENERATED_ORDER:      mappings = this._generatedMappings;      break;    case SourceMapConsumer.ORIGINAL_ORDER:      mappings = this._originalMappings;      break;    default:      throw new Error("Unknown order of iteration.");    }    var sourceRoot = this.sourceRoot;    mappings.map(function (mapping) {      var source = mapping.source === null ? null : this._sources.at(mapping.source);      source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);      return {        source: source,        generatedLine: mapping.generatedLine,        generatedColumn: mapping.generatedColumn,        originalLine: mapping.originalLine,        originalColumn: mapping.originalColumn,        name: mapping.name === null ? null : this._names.at(mapping.name)      };    }, this).forEach(aCallback, context);  };/** * Returns all generated line and column information for the original source, * line, and column provided. If no column is provided, returns all mappings * corresponding to a either the line we are searching for or the next * closest line that has any mappings. Otherwise, returns all mappings * corresponding to the given line and either the column we are searching for * or the next closest column that has any offsets. * * The only argument is an object with the following properties: * *   - source: The filename of the original source. *   - line: The line number in the original source.  The line number is 1-based. *   - column: Optional. the column number in the original source. *    The column number is 0-based. * * and an array of objects is returned, each with the following properties: * *   - line: The line number in the generated source, or null.  The *    line number is 1-based. *   - column: The column number in the generated source, or null. *    The column number is 0-based. */SourceMapConsumer.prototype.allGeneratedPositionsFor =  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {    var line = util.getArg(aArgs, 'line');    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping    // returns the index of the closest mapping less than the needle. By    // setting needle.originalColumn to 0, we thus find the last mapping for    // the given line, provided such a mapping exists.    var needle = {      source: util.getArg(aArgs, 'source'),      originalLine: line,      originalColumn: util.getArg(aArgs, 'column', 0)    };    needle.source = this._findSourceIndex(needle.source);    if (needle.source < 0) {      return [];    }    var mappings = [];    var index = this._findMapping(needle,                                  this._originalMappings,                                  "originalLine",                                  "originalColumn",                                  util.compareByOriginalPositions,                                  binarySearch.LEAST_UPPER_BOUND);    if (index >= 0) {      var mapping = this._originalMappings[index];      if (aArgs.column === undefined) {        var originalLine = mapping.originalLine;        // Iterate until either we run out of mappings, or we run into        // a mapping for a different line than the one we found. Since        // mappings are sorted, this is guaranteed to find all mappings for        // the line we found.        while (mapping && mapping.originalLine === originalLine) {          mappings.push({            line: util.getArg(mapping, 'generatedLine', null),            column: util.getArg(mapping, 'generatedColumn', null),            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)          });          mapping = this._originalMappings[++index];        }      } else {        var originalColumn = mapping.originalColumn;        // Iterate until either we run out of mappings, or we run into        // a mapping for a different line than the one we were searching for.        // Since mappings are sorted, this is guaranteed to find all mappings for        // the line we are searching for.        while (mapping &&               mapping.originalLine === line &&               mapping.originalColumn == originalColumn) {          mappings.push({            line: util.getArg(mapping, 'generatedLine', null),            column: util.getArg(mapping, 'generatedColumn', null),            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)          });          mapping = this._originalMappings[++index];        }      }    }    return mappings;  };var SourceMapConsumer_1 = SourceMapConsumer;/** * A BasicSourceMapConsumer instance represents a parsed source map which we can * query for information about the original file positions by giving it a file * position in the generated source. * * The first parameter is the raw source map (either as a JSON string, or * already parsed to an object). According to the spec, source maps have the * following attributes: * *   - version: Which version of the source map spec this map is following. *   - sources: An array of URLs to the original source files. *   - names: An array of identifiers which can be referrenced by individual mappings. *   - sourceRoot: Optional. The URL root from which all sources are relative. *   - sourcesContent: Optional. An array of contents of the original source files. *   - mappings: A string of base64 VLQs which contain the actual mappings. *   - file: Optional. The generated file this source map is associated with. * * Here is an example source map, taken from the source map spec[0]: * *     { *       version : 3, *       file: "out.js", *       sourceRoot : "", *       sources: ["foo.js", "bar.js"], *       names: ["src", "maps", "are", "fun"], *       mappings: "AA,AB;;ABCDE;" *     } * * The second parameter, if given, is a string whose value is the URL * at which the source map was found.  This URL is used to compute the * sources array. * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# */function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {  var sourceMap = aSourceMap;  if (typeof aSourceMap === 'string') {    sourceMap = util.parseSourceMapInput(aSourceMap);  }  var version = util.getArg(sourceMap, 'version');  var sources = util.getArg(sourceMap, 'sources');  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which  // requires the array) to play nice here.  var names = util.getArg(sourceMap, 'names', []);  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);  var mappings = util.getArg(sourceMap, 'mappings');  var file = util.getArg(sourceMap, 'file', null);  // Once again, Sass deviates from the spec and supplies the version as a  // string rather than a number, so we use loose equality checking here.  if (version != this._version) {    throw new Error('Unsupported version: ' + version);  }  if (sourceRoot) {    sourceRoot = util.normalize(sourceRoot);  }  sources = sources    .map(String)    // Some source maps produce relative source paths like "./foo.js" instead of    // "foo.js".  Normalize these first so that future comparisons will succeed.    // See bugzil.la/1090768.    .map(util.normalize)    // Always ensure that absolute sources are internally stored relative to    // the source root, if the source root is absolute. Not doing this would    // be particularly problematic when the source root is a prefix of the    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.    .map(function (source) {      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)        ? util.relative(sourceRoot, source)        : source;    });  // Pass `true` below to allow duplicate names and sources. While source maps  // are intended to be compressed and deduplicated, the TypeScript compiler  // sometimes generates source maps with duplicates in them. See Github issue  // #72 and bugzil.la/889492.  this._names = ArraySet$2.fromArray(names.map(String), true);  this._sources = ArraySet$2.fromArray(sources, true);  this._absoluteSources = this._sources.toArray().map(function (s) {    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);  });  this.sourceRoot = sourceRoot;  this.sourcesContent = sourcesContent;  this._mappings = mappings;  this._sourceMapURL = aSourceMapURL;  this.file = file;}BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;/** * Utility function to find the index of a source.  Returns -1 if not * found. */BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {  var relativeSource = aSource;  if (this.sourceRoot != null) {    relativeSource = util.relative(this.sourceRoot, relativeSource);  }  if (this._sources.has(relativeSource)) {    return this._sources.indexOf(relativeSource);  }  // Maybe aSource is an absolute URL as returned by |sources|.  In  // this case we can't simply undo the transform.  var i;  for (i = 0; i < this._absoluteSources.length; ++i) {    if (this._absoluteSources[i] == aSource) {      return i;    }  }  return -1;};/** * Create a BasicSourceMapConsumer from a SourceMapGenerator. * * @param SourceMapGenerator aSourceMap *        The source map that will be consumed. * @param String aSourceMapURL *        The URL at which the source map can be found (optional) * @returns BasicSourceMapConsumer */BasicSourceMapConsumer.fromSourceMap =  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {    var smc = Object.create(BasicSourceMapConsumer.prototype);    var names = smc._names = ArraySet$2.fromArray(aSourceMap._names.toArray(), true);    var sources = smc._sources = ArraySet$2.fromArray(aSourceMap._sources.toArray(), true);    smc.sourceRoot = aSourceMap._sourceRoot;    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),                                                            smc.sourceRoot);    smc.file = aSourceMap._file;    smc._sourceMapURL = aSourceMapURL;    smc._absoluteSources = smc._sources.toArray().map(function (s) {      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);    });    // Because we are modifying the entries (by converting string sources and    // names to indices into the sources and names ArraySets), we have to make    // a copy of the entry or else bad things happen. Shared mutable state    // strikes again! See github issue #191.    var generatedMappings = aSourceMap._mappings.toArray().slice();    var destGeneratedMappings = smc.__generatedMappings = [];    var destOriginalMappings = smc.__originalMappings = [];    for (var i = 0, length = generatedMappings.length; i < length; i++) {      var srcMapping = generatedMappings[i];      var destMapping = new Mapping;      destMapping.generatedLine = srcMapping.generatedLine;      destMapping.generatedColumn = srcMapping.generatedColumn;      if (srcMapping.source) {        destMapping.source = sources.indexOf(srcMapping.source);        destMapping.originalLine = srcMapping.originalLine;        destMapping.originalColumn = srcMapping.originalColumn;        if (srcMapping.name) {          destMapping.name = names.indexOf(srcMapping.name);        }        destOriginalMappings.push(destMapping);      }      destGeneratedMappings.push(destMapping);    }    quickSort$1(smc.__originalMappings, util.compareByOriginalPositions);    return smc;  };/** * The version of the source mapping spec that we are consuming. */BasicSourceMapConsumer.prototype._version = 3;/** * The list of original sources. */Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {  get: function () {    return this._absoluteSources.slice();  }});/** * Provide the JIT with a nice shape / hidden class. */function Mapping() {  this.generatedLine = 0;  this.generatedColumn = 0;  this.source = null;  this.originalLine = null;  this.originalColumn = null;  this.name = null;}/** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */BasicSourceMapConsumer.prototype._parseMappings =  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {    var generatedLine = 1;    var previousGeneratedColumn = 0;    var previousOriginalLine = 0;    var previousOriginalColumn = 0;    var previousSource = 0;    var previousName = 0;    var length = aStr.length;    var index = 0;    var cachedSegments = {};    var temp = {};    var originalMappings = [];    var generatedMappings = [];    var mapping, str, segment, end, value;    while (index < length) {      if (aStr.charAt(index) === ';') {        generatedLine++;        index++;        previousGeneratedColumn = 0;      }      else if (aStr.charAt(index) === ',') {        index++;      }      else {        mapping = new Mapping();        mapping.generatedLine = generatedLine;        // Because each offset is encoded relative to the previous one,        // many segments often have the same encoding. We can exploit this        // fact by caching the parsed variable length fields of each segment,        // allowing us to avoid a second parse if we encounter the same        // segment again.        for (end = index; end < length; end++) {          if (this._charIsMappingSeparator(aStr, end)) {            break;          }        }        str = aStr.slice(index, end);        segment = cachedSegments[str];        if (segment) {          index += str.length;        } else {          segment = [];          while (index < end) {            base64Vlq.decode(aStr, index, temp);            value = temp.value;            index = temp.rest;            segment.push(value);          }          if (segment.length === 2) {            throw new Error('Found a source, but no line and column');          }          if (segment.length === 3) {            throw new Error('Found a source and line, but no column');          }          cachedSegments[str] = segment;        }        // Generated column.        mapping.generatedColumn = previousGeneratedColumn + segment[0];        previousGeneratedColumn = mapping.generatedColumn;        if (segment.length > 1) {          // Original source.          mapping.source = previousSource + segment[1];          previousSource += segment[1];          // Original line.          mapping.originalLine = previousOriginalLine + segment[2];          previousOriginalLine = mapping.originalLine;          // Lines are stored 0-based          mapping.originalLine += 1;          // Original column.          mapping.originalColumn = previousOriginalColumn + segment[3];          previousOriginalColumn = mapping.originalColumn;          if (segment.length > 4) {            // Original name.            mapping.name = previousName + segment[4];            previousName += segment[4];          }        }        generatedMappings.push(mapping);        if (typeof mapping.originalLine === 'number') {          originalMappings.push(mapping);        }      }    }    quickSort$1(generatedMappings, util.compareByGeneratedPositionsDeflated);    this.__generatedMappings = generatedMappings;    quickSort$1(originalMappings, util.compareByOriginalPositions);    this.__originalMappings = originalMappings;  };/** * Find the mapping that best matches the hypothetical "needle" mapping that * we are searching for in the given "haystack" of mappings. */BasicSourceMapConsumer.prototype._findMapping =  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,                                         aColumnName, aComparator, aBias) {    // To return the position we are searching for, we must first find the    // mapping for the given position and then return the opposite position it    // points to. Because the mappings are sorted, we can use binary search to    // find the best mapping.    if (aNeedle[aLineName] <= 0) {      throw new TypeError('Line must be greater than or equal to 1, got '                          + aNeedle[aLineName]);    }    if (aNeedle[aColumnName] < 0) {      throw new TypeError('Column must be greater than or equal to 0, got '                          + aNeedle[aColumnName]);    }    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);  };/** * Compute the last column for each generated mapping. The last column is * inclusive. */BasicSourceMapConsumer.prototype.computeColumnSpans =  function SourceMapConsumer_computeColumnSpans() {    for (var index = 0; index < this._generatedMappings.length; ++index) {      var mapping = this._generatedMappings[index];      // Mappings do not contain a field for the last generated columnt. We      // can come up with an optimistic estimate, however, by assuming that      // mappings are contiguous (i.e. given two consecutive mappings, the      // first mapping ends where the second one starts).      if (index + 1 < this._generatedMappings.length) {        var nextMapping = this._generatedMappings[index + 1];        if (mapping.generatedLine === nextMapping.generatedLine) {          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;          continue;        }      }      // The last mapping for each line spans the entire line.      mapping.lastGeneratedColumn = Infinity;    }  };/** * Returns the original source, line, and column information for the generated * source's line and column positions provided. The only argument is an object * with the following properties: * *   - line: The line number in the generated source.  The line number *     is 1-based. *   - column: The column number in the generated source.  The column *     number is 0-based. *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * *   - source: The original source file, or null. *   - line: The line number in the original source, or null.  The *     line number is 1-based. *   - column: The column number in the original source, or null.  The *     column number is 0-based. *   - name: The original identifier, or null. */BasicSourceMapConsumer.prototype.originalPositionFor =  function SourceMapConsumer_originalPositionFor(aArgs) {    var needle = {      generatedLine: util.getArg(aArgs, 'line'),      generatedColumn: util.getArg(aArgs, 'column')    };    var index = this._findMapping(      needle,      this._generatedMappings,      "generatedLine",      "generatedColumn",      util.compareByGeneratedPositionsDeflated,      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)    );    if (index >= 0) {      var mapping = this._generatedMappings[index];      if (mapping.generatedLine === needle.generatedLine) {        var source = util.getArg(mapping, 'source', null);        if (source !== null) {          source = this._sources.at(source);          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);        }        var name = util.getArg(mapping, 'name', null);        if (name !== null) {          name = this._names.at(name);        }        return {          source: source,          line: util.getArg(mapping, 'originalLine', null),          column: util.getArg(mapping, 'originalColumn', null),          name: name        };      }    }    return {      source: null,      line: null,      column: null,      name: null    };  };/** * Return true if we have the source content for every source in the source * map, false otherwise. */BasicSourceMapConsumer.prototype.hasContentsOfAllSources =  function BasicSourceMapConsumer_hasContentsOfAllSources() {    if (!this.sourcesContent) {      return false;    }    return this.sourcesContent.length >= this._sources.size() &&      !this.sourcesContent.some(function (sc) { return sc == null; });  };/** * Returns the original source content. The only argument is the url of the * original source file. Returns null if no original source content is * available. */BasicSourceMapConsumer.prototype.sourceContentFor =  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {    if (!this.sourcesContent) {      return null;    }    var index = this._findSourceIndex(aSource);    if (index >= 0) {      return this.sourcesContent[index];    }    var relativeSource = aSource;    if (this.sourceRoot != null) {      relativeSource = util.relative(this.sourceRoot, relativeSource);    }    var url;    if (this.sourceRoot != null        && (url = util.urlParse(this.sourceRoot))) {      // XXX: file:// URIs and absolute paths lead to unexpected behavior for      // many users. We can help them out when they expect file:// URIs to      // behave like it would if they were running a local HTTP server. See      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.      var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");      if (url.scheme == "file"          && this._sources.has(fileUriAbsPath)) {        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]      }      if ((!url.path || url.path == "/")          && this._sources.has("/" + relativeSource)) {        return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];      }    }    // This function is used recursively from    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we    // don't want to throw if we can't find the source - we just want to    // return null, so we provide a flag to exit gracefully.    if (nullOnMissing) {      return null;    }    else {      throw new Error('"' + relativeSource + '" is not in the SourceMap.');    }  };/** * Returns the generated line and column information for the original source, * line, and column positions provided. The only argument is an object with * the following properties: * *   - source: The filename of the original source. *   - line: The line number in the original source.  The line number *     is 1-based. *   - column: The column number in the original source.  The column *     number is 0-based. *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * *   - line: The line number in the generated source, or null.  The *     line number is 1-based. *   - column: The column number in the generated source, or null. *     The column number is 0-based. */BasicSourceMapConsumer.prototype.generatedPositionFor =  function SourceMapConsumer_generatedPositionFor(aArgs) {    var source = util.getArg(aArgs, 'source');    source = this._findSourceIndex(source);    if (source < 0) {      return {        line: null,        column: null,        lastColumn: null      };    }    var needle = {      source: source,      originalLine: util.getArg(aArgs, 'line'),      originalColumn: util.getArg(aArgs, 'column')    };    var index = this._findMapping(      needle,      this._originalMappings,      "originalLine",      "originalColumn",      util.compareByOriginalPositions,      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)    );    if (index >= 0) {      var mapping = this._originalMappings[index];      if (mapping.source === needle.source) {        return {          line: util.getArg(mapping, 'generatedLine', null),          column: util.getArg(mapping, 'generatedColumn', null),          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)        };      }    }    return {      line: null,      column: null,      lastColumn: null    };  };var BasicSourceMapConsumer_1 = BasicSourceMapConsumer;/** * An IndexedSourceMapConsumer instance represents a parsed source map which * we can query for information. It differs from BasicSourceMapConsumer in * that it takes "indexed" source maps (i.e. ones with a "sections" field) as * input. * * The first parameter is a raw source map (either as a JSON string, or already * parsed to an object). According to the spec for indexed source maps, they * have the following attributes: * *   - version: Which version of the source map spec this map is following. *   - file: Optional. The generated file this source map is associated with. *   - sections: A list of section definitions. * * Each value under the "sections" field has two fields: *   - offset: The offset into the original specified at which this section *       begins to apply, defined as an object with a "line" and "column" *       field. *   - map: A source map definition. This source map could also be indexed, *       but doesn't have to be. * * Instead of the "map" field, it's also possible to have a "url" field * specifying a URL to retrieve a source map from, but that's currently * unsupported. * * Here's an example source map, taken from the source map spec[0], but * modified to omit a section which uses the "url" field. * *  { *    version : 3, *    file: "app.js", *    sections: [{ *      offset: {line:100, column:10}, *      map: { *        version : 3, *        file: "section.js", *        sources: ["foo.js", "bar.js"], *        names: ["src", "maps", "are", "fun"], *        mappings: "AAAA,E;;ABCDE;" *      } *    }], *  } * * The second parameter, if given, is a string whose value is the URL * at which the source map was found.  This URL is used to compute the * sources array. * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt */function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {  var sourceMap = aSourceMap;  if (typeof aSourceMap === 'string') {    sourceMap = util.parseSourceMapInput(aSourceMap);  }  var version = util.getArg(sourceMap, 'version');  var sections = util.getArg(sourceMap, 'sections');  if (version != this._version) {    throw new Error('Unsupported version: ' + version);  }  this._sources = new ArraySet$2();  this._names = new ArraySet$2();  var lastOffset = {    line: -1,    column: 0  };  this._sections = sections.map(function (s) {    if (s.url) {      // The url field will require support for asynchronicity.      // See https://github.com/mozilla/source-map/issues/16      throw new Error('Support for url field in sections not implemented.');    }    var offset = util.getArg(s, 'offset');    var offsetLine = util.getArg(offset, 'line');    var offsetColumn = util.getArg(offset, 'column');    if (offsetLine < lastOffset.line ||        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {      throw new Error('Section offsets must be ordered and non-overlapping.');    }    lastOffset = offset;    return {      generatedOffset: {        // The offset fields are 0-based, but we use 1-based indices when        // encoding/decoding from VLQ.        generatedLine: offsetLine + 1,        generatedColumn: offsetColumn + 1      },      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)    }  });}IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;/** * The version of the source mapping spec that we are consuming. */IndexedSourceMapConsumer.prototype._version = 3;/** * The list of original sources. */Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {  get: function () {    var sources = [];    for (var i = 0; i < this._sections.length; i++) {      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {        sources.push(this._sections[i].consumer.sources[j]);      }    }    return sources;  }});/** * Returns the original source, line, and column information for the generated * source's line and column positions provided. The only argument is an object * with the following properties: * *   - line: The line number in the generated source.  The line number *     is 1-based. *   - column: The column number in the generated source.  The column *     number is 0-based. * * and an object is returned with the following properties: * *   - source: The original source file, or null. *   - line: The line number in the original source, or null.  The *     line number is 1-based. *   - column: The column number in the original source, or null.  The *     column number is 0-based. *   - name: The original identifier, or null. */IndexedSourceMapConsumer.prototype.originalPositionFor =  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {    var needle = {      generatedLine: util.getArg(aArgs, 'line'),      generatedColumn: util.getArg(aArgs, 'column')    };    // Find the section containing the generated position we're trying to map    // to an original position.    var sectionIndex = binarySearch.search(needle, this._sections,      function(needle, section) {        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;        if (cmp) {          return cmp;        }        return (needle.generatedColumn -                section.generatedOffset.generatedColumn);      });    var section = this._sections[sectionIndex];    if (!section) {      return {        source: null,        line: null,        column: null,        name: null      };    }    return section.consumer.originalPositionFor({      line: needle.generatedLine -        (section.generatedOffset.generatedLine - 1),      column: needle.generatedColumn -        (section.generatedOffset.generatedLine === needle.generatedLine         ? section.generatedOffset.generatedColumn - 1         : 0),      bias: aArgs.bias    });  };/** * Return true if we have the source content for every source in the source * map, false otherwise. */IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =  function IndexedSourceMapConsumer_hasContentsOfAllSources() {    return this._sections.every(function (s) {      return s.consumer.hasContentsOfAllSources();    });  };/** * Returns the original source content. The only argument is the url of the * original source file. Returns null if no original source content is * available. */IndexedSourceMapConsumer.prototype.sourceContentFor =  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {    for (var i = 0; i < this._sections.length; i++) {      var section = this._sections[i];      var content = section.consumer.sourceContentFor(aSource, true);      if (content) {        return content;      }    }    if (nullOnMissing) {      return null;    }    else {      throw new Error('"' + aSource + '" is not in the SourceMap.');    }  };/** * Returns the generated line and column information for the original source, * line, and column positions provided. The only argument is an object with * the following properties: * *   - source: The filename of the original source. *   - line: The line number in the original source.  The line number *     is 1-based. *   - column: The column number in the original source.  The column *     number is 0-based. * * and an object is returned with the following properties: * *   - line: The line number in the generated source, or null.  The *     line number is 1-based.  *   - column: The column number in the generated source, or null. *     The column number is 0-based. */IndexedSourceMapConsumer.prototype.generatedPositionFor =  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {    for (var i = 0; i < this._sections.length; i++) {      var section = this._sections[i];      // Only consider this section if the requested source is in the list of      // sources of the consumer.      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {        continue;      }      var generatedPosition = section.consumer.generatedPositionFor(aArgs);      if (generatedPosition) {        var ret = {          line: generatedPosition.line +            (section.generatedOffset.generatedLine - 1),          column: generatedPosition.column +            (section.generatedOffset.generatedLine === generatedPosition.line             ? section.generatedOffset.generatedColumn - 1             : 0)        };        return ret;      }    }    return {      line: null,      column: null    };  };/** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */IndexedSourceMapConsumer.prototype._parseMappings =  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {    this.__generatedMappings = [];    this.__originalMappings = [];    for (var i = 0; i < this._sections.length; i++) {      var section = this._sections[i];      var sectionMappings = section.consumer._generatedMappings;      for (var j = 0; j < sectionMappings.length; j++) {        var mapping = sectionMappings[j];        var source = section.consumer._sources.at(mapping.source);        source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);        this._sources.add(source);        source = this._sources.indexOf(source);        var name = null;        if (mapping.name) {          name = section.consumer._names.at(mapping.name);          this._names.add(name);          name = this._names.indexOf(name);        }        // The mappings coming from the consumer for the section have        // generated positions relative to the start of the section, so we        // need to offset them to be relative to the start of the concatenated        // generated file.        var adjustedMapping = {          source: source,          generatedLine: mapping.generatedLine +            (section.generatedOffset.generatedLine - 1),          generatedColumn: mapping.generatedColumn +            (section.generatedOffset.generatedLine === mapping.generatedLine            ? section.generatedOffset.generatedColumn - 1            : 0),          originalLine: mapping.originalLine,          originalColumn: mapping.originalColumn,          name: name        };        this.__generatedMappings.push(adjustedMapping);        if (typeof adjustedMapping.originalLine === 'number') {          this.__originalMappings.push(adjustedMapping);        }      }    }    quickSort$1(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);    quickSort$1(this.__originalMappings, util.compareByOriginalPositions);  };var IndexedSourceMapConsumer_1 = IndexedSourceMapConsumer;var sourceMapConsumer = {	SourceMapConsumer: SourceMapConsumer_1,	BasicSourceMapConsumer: BasicSourceMapConsumer_1,	IndexedSourceMapConsumer: IndexedSourceMapConsumer_1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var SourceMapGenerator$1 = sourceMapGenerator.SourceMapGenerator;// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other// operating systems these days (capturing the result).var REGEX_NEWLINE = /(\r?\n)/;// Newline character code for charCodeAt() comparisonsvar NEWLINE_CODE = 10;// Private symbol for identifying `SourceNode`s when multiple versions of// the source-map library are loaded. This MUST NOT CHANGE across// versions!var isSourceNode = "$$$isSourceNode$$$";/** * SourceNodes provide a way to abstract over interpolating/concatenating * snippets of generated JavaScript source code while maintaining the line and * column information associated with the original source code. * * @param aLine The original line number. * @param aColumn The original column number. * @param aSource The original source's filename. * @param aChunks Optional. An array of strings which are snippets of *        generated JS, or other SourceNodes. * @param aName The original identifier. */function SourceNode(aLine, aColumn, aSource, aChunks, aName) {  this.children = [];  this.sourceContents = {};  this.line = aLine == null ? null : aLine;  this.column = aColumn == null ? null : aColumn;  this.source = aSource == null ? null : aSource;  this.name = aName == null ? null : aName;  this[isSourceNode] = true;  if (aChunks != null) this.add(aChunks);}/** * Creates a SourceNode from generated code and a SourceMapConsumer. * * @param aGeneratedCode The generated code * @param aSourceMapConsumer The SourceMap for the generated code * @param aRelativePath Optional. The path that relative sources in the *        SourceMapConsumer should be relative to. */SourceNode.fromStringWithSourceMap =  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {    // The SourceNode we want to fill with the generated code    // and the SourceMap    var node = new SourceNode();    // All even indices of this array are one line of the generated code,    // while all odd indices are the newlines between two adjacent lines    // (since `REGEX_NEWLINE` captures its match).    // Processed fragments are accessed by calling `shiftNextLine`.    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);    var remainingLinesIndex = 0;    var shiftNextLine = function() {      var lineContents = getNextLine();      // The last line of a file might not have a newline.      var newLine = getNextLine() || "";      return lineContents + newLine;      function getNextLine() {        return remainingLinesIndex < remainingLines.length ?            remainingLines[remainingLinesIndex++] : undefined;      }    };    // We need to remember the position of "remainingLines"    var lastGeneratedLine = 1, lastGeneratedColumn = 0;    // The generate SourceNodes we need a code range.    // To extract it current and last mapping is used.    // Here we store the last mapping.    var lastMapping = null;    aSourceMapConsumer.eachMapping(function (mapping) {      if (lastMapping !== null) {        // We add the code from "lastMapping" to "mapping":        // First check if there is a new line in between.        if (lastGeneratedLine < mapping.generatedLine) {          // Associate first line with "lastMapping"          addMappingWithCode(lastMapping, shiftNextLine());          lastGeneratedLine++;          lastGeneratedColumn = 0;          // The remaining code is added without mapping        } else {          // There is no new line in between.          // Associate the code between "lastGeneratedColumn" and          // "mapping.generatedColumn" with "lastMapping"          var nextLine = remainingLines[remainingLinesIndex] || '';          var code = nextLine.substr(0, mapping.generatedColumn -                                        lastGeneratedColumn);          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -                                              lastGeneratedColumn);          lastGeneratedColumn = mapping.generatedColumn;          addMappingWithCode(lastMapping, code);          // No more remaining code, continue          lastMapping = mapping;          return;        }      }      // We add the generated code until the first mapping      // to the SourceNode without any mapping.      // Each line is added as separate string.      while (lastGeneratedLine < mapping.generatedLine) {        node.add(shiftNextLine());        lastGeneratedLine++;      }      if (lastGeneratedColumn < mapping.generatedColumn) {        var nextLine = remainingLines[remainingLinesIndex] || '';        node.add(nextLine.substr(0, mapping.generatedColumn));        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);        lastGeneratedColumn = mapping.generatedColumn;      }      lastMapping = mapping;    }, this);    // We have processed all mappings.    if (remainingLinesIndex < remainingLines.length) {      if (lastMapping) {        // Associate the remaining code in the current line with "lastMapping"        addMappingWithCode(lastMapping, shiftNextLine());      }      // and add the remaining lines without any mapping      node.add(remainingLines.splice(remainingLinesIndex).join(""));    }    // Copy sourcesContent into SourceNode    aSourceMapConsumer.sources.forEach(function (sourceFile) {      var content = aSourceMapConsumer.sourceContentFor(sourceFile);      if (content != null) {        if (aRelativePath != null) {          sourceFile = util.join(aRelativePath, sourceFile);        }        node.setSourceContent(sourceFile, content);      }    });    return node;    function addMappingWithCode(mapping, code) {      if (mapping === null || mapping.source === undefined) {        node.add(code);      } else {        var source = aRelativePath          ? util.join(aRelativePath, mapping.source)          : mapping.source;        node.add(new SourceNode(mapping.originalLine,                                mapping.originalColumn,                                source,                                code,                                mapping.name));      }    }  };/** * Add a chunk of generated JS to this source node. * * @param aChunk A string snippet of generated JS code, another instance of *        SourceNode, or an array where each member is one of those things. */SourceNode.prototype.add = function SourceNode_add(aChunk) {  if (Array.isArray(aChunk)) {    aChunk.forEach(function (chunk) {      this.add(chunk);    }, this);  }  else if (aChunk[isSourceNode] || typeof aChunk === "string") {    if (aChunk) {      this.children.push(aChunk);    }  }  else {    throw new TypeError(      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk    );  }  return this;};/** * Add a chunk of generated JS to the beginning of this source node. * * @param aChunk A string snippet of generated JS code, another instance of *        SourceNode, or an array where each member is one of those things. */SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {  if (Array.isArray(aChunk)) {    for (var i = aChunk.length-1; i >= 0; i--) {      this.prepend(aChunk[i]);    }  }  else if (aChunk[isSourceNode] || typeof aChunk === "string") {    this.children.unshift(aChunk);  }  else {    throw new TypeError(      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk    );  }  return this;};/** * Walk over the tree of JS snippets in this node and its children. The * walking function is called once for each snippet of JS and is passed that * snippet and the its original associated source's line/column location. * * @param aFn The traversal function. */SourceNode.prototype.walk = function SourceNode_walk(aFn) {  var chunk;  for (var i = 0, len = this.children.length; i < len; i++) {    chunk = this.children[i];    if (chunk[isSourceNode]) {      chunk.walk(aFn);    }    else {      if (chunk !== '') {        aFn(chunk, { source: this.source,                     line: this.line,                     column: this.column,                     name: this.name });      }    }  }};/** * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between * each of `this.children`. * * @param aSep The separator. */SourceNode.prototype.join = function SourceNode_join(aSep) {  var newChildren;  var i;  var len = this.children.length;  if (len > 0) {    newChildren = [];    for (i = 0; i < len-1; i++) {      newChildren.push(this.children[i]);      newChildren.push(aSep);    }    newChildren.push(this.children[i]);    this.children = newChildren;  }  return this;};/** * Call String.prototype.replace on the very right-most source snippet. Useful * for trimming whitespace from the end of a source node, etc. * * @param aPattern The pattern to replace. * @param aReplacement The thing to replace the pattern with. */SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {  var lastChild = this.children[this.children.length - 1];  if (lastChild[isSourceNode]) {    lastChild.replaceRight(aPattern, aReplacement);  }  else if (typeof lastChild === 'string') {    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);  }  else {    this.children.push(''.replace(aPattern, aReplacement));  }  return this;};/** * Set the source content for a source file. This will be added to the SourceMapGenerator * in the sourcesContent field. * * @param aSourceFile The filename of the source file * @param aSourceContent The content of the source file */SourceNode.prototype.setSourceContent =  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;  };/** * Walk over the tree of SourceNodes. The walking function is called for each * source file content and is passed the filename and source content. * * @param aFn The traversal function. */SourceNode.prototype.walkSourceContents =  function SourceNode_walkSourceContents(aFn) {    for (var i = 0, len = this.children.length; i < len; i++) {      if (this.children[i][isSourceNode]) {        this.children[i].walkSourceContents(aFn);      }    }    var sources = Object.keys(this.sourceContents);    for (var i = 0, len = sources.length; i < len; i++) {      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);    }  };/** * Return the string representation of this source node. Walks over the tree * and concatenates all the various snippets together to one string. */SourceNode.prototype.toString = function SourceNode_toString() {  var str = "";  this.walk(function (chunk) {    str += chunk;  });  return str;};/** * Returns the string representation of this source node along with a source * map. */SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {  var generated = {    code: "",    line: 1,    column: 0  };  var map = new SourceMapGenerator$1(aArgs);  var sourceMappingActive = false;  var lastOriginalSource = null;  var lastOriginalLine = null;  var lastOriginalColumn = null;  var lastOriginalName = null;  this.walk(function (chunk, original) {    generated.code += chunk;    if (original.source !== null        && original.line !== null        && original.column !== null) {      if(lastOriginalSource !== original.source         || lastOriginalLine !== original.line         || lastOriginalColumn !== original.column         || lastOriginalName !== original.name) {        map.addMapping({          source: original.source,          original: {            line: original.line,            column: original.column          },          generated: {            line: generated.line,            column: generated.column          },          name: original.name        });      }      lastOriginalSource = original.source;      lastOriginalLine = original.line;      lastOriginalColumn = original.column;      lastOriginalName = original.name;      sourceMappingActive = true;    } else if (sourceMappingActive) {      map.addMapping({        generated: {          line: generated.line,          column: generated.column        }      });      lastOriginalSource = null;      sourceMappingActive = false;    }    for (var idx = 0, length = chunk.length; idx < length; idx++) {      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {        generated.line++;        generated.column = 0;        // Mappings end at eol        if (idx + 1 === length) {          lastOriginalSource = null;          sourceMappingActive = false;        } else if (sourceMappingActive) {          map.addMapping({            source: original.source,            original: {              line: original.line,              column: original.column            },            generated: {              line: generated.line,              column: generated.column            },            name: original.name          });        }      } else {        generated.column++;      }    }  });  this.walkSourceContents(function (sourceFile, sourceContent) {    map.setSourceContent(sourceFile, sourceContent);  });  return { code: generated.code, map: map };};var SourceNode_1 = SourceNode;var sourceNode = {	SourceNode: SourceNode_1};/* * Copyright 2009-2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE.txt or: * http://opensource.org/licenses/BSD-3-Clause */var SourceMapGenerator$2 = sourceMapGenerator.SourceMapGenerator;var SourceMapConsumer$1 = sourceMapConsumer.SourceMapConsumer;var SourceNode$1 = sourceNode.SourceNode;var sourceMap = {	SourceMapGenerator: SourceMapGenerator$2,	SourceMapConsumer: SourceMapConsumer$1,	SourceNode: SourceNode$1};const PURE_ANNOTATION = `/*#__PURE__*/`;const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;function createCodegenContext(ast, { mode = 'function', prefixIdentifiers = mode === 'module', sourceMap = false, filename = `template.vue.html`, scopeId = null, optimizeImports = false, runtimeGlobalName = `Vue`, runtimeModuleName = `vue`, ssrRuntimeModuleName = 'vue/server-renderer', ssr = false, isTS = false, inSSR = false }) {    const context = {        mode,        prefixIdentifiers,        sourceMap,        filename,        scopeId,        optimizeImports,        runtimeGlobalName,        runtimeModuleName,        ssrRuntimeModuleName,        ssr,        isTS,        inSSR,        source: ast.loc.source,        code: ``,        column: 1,        line: 1,        offset: 0,        indentLevel: 0,        pure: false,        map: undefined,        helper(key) {            return `_${helperNameMap[key]}`;        },        push(code, node) {            context.code += code;            if (context.map) {                if (node) {                    let name;                    if (node.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ && !node.isStatic) {                        const content = node.content.replace(/^_ctx\./, '');                        if (content !== node.content && isSimpleIdentifier(content)) {                            name = content;                        }                    }                    addMapping(node.loc.start, name);                }                advancePositionWithMutation(context, code);                if (node && node.loc !== locStub) {                    addMapping(node.loc.end);                }            }        },        indent() {            newline(++context.indentLevel);        },        deindent(withoutNewLine = false) {            if (withoutNewLine) {                --context.indentLevel;            }            else {                newline(--context.indentLevel);            }        },        newline() {            newline(context.indentLevel);        }    };    function newline(n) {        context.push('\n' + `  `.repeat(n));    }    function addMapping(loc, name) {        context.map.addMapping({            name,            source: context.filename,            original: {                line: loc.line,                column: loc.column - 1 // source-map column is 0 based            },            generated: {                line: context.line,                column: context.column - 1            }        });    }    if (sourceMap) {        // lazy require source-map implementation, only in non-browser builds        context.map = new SourceMapGenerator$2();        context.map.setSourceContent(filename, context.source);    }    return context;}function generate(ast, options = {}) {    const context = createCodegenContext(ast, options);    if (options.onContextCreated)        options.onContextCreated(context);    const { mode, push, prefixIdentifiers, indent, deindent, newline, scopeId, ssr } = context;    const hasHelpers = ast.helpers.length > 0;    const useWithBlock = !prefixIdentifiers && mode !== 'module';    const genScopeId = scopeId != null && mode === 'module';    const isSetupInlined = !!options.inline;    // preambles    // in setup() inline mode, the preamble is generated in a sub context    // and returned separately.    const preambleContext = isSetupInlined        ? createCodegenContext(ast, options)        : context;    if (mode === 'module') {        genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined);    }    else {        genFunctionPreamble(ast, preambleContext);    }    // enter render function    const functionName = ssr ? `ssrRender` : `render`;    const args = ssr ? ['_ctx', '_push', '_parent', '_attrs'] : ['_ctx', '_cache'];    if (options.bindingMetadata && !options.inline) {        // binding optimization args        args.push('$props', '$setup', '$data', '$options');    }    const signature = options.isTS        ? args.map(arg => `${arg}: any`).join(',')        : args.join(', ');    if (isSetupInlined) {        push(`(${signature}) => {`);    }    else {        push(`function ${functionName}(${signature}) {`);    }    indent();    if (useWithBlock) {        push(`with (_ctx) {`);        indent();        // function mode const declarations should be inside with block        // also they should be renamed to avoid collision with user properties        if (hasHelpers) {            push(`const { ${ast.helpers.map(aliasHelper).join(', ')} } = _Vue`);            push(`\n`);            newline();        }    }    // generate asset resolution statements    if (ast.components.length) {        genAssets(ast.components, 'component', context);        if (ast.directives.length || ast.temps > 0) {            newline();        }    }    if (ast.directives.length) {        genAssets(ast.directives, 'directive', context);        if (ast.temps > 0) {            newline();        }    }    if (ast.temps > 0) {        push(`let `);        for (let i = 0; i < ast.temps; i++) {            push(`${i > 0 ? `, ` : ``}_temp${i}`);        }    }    if (ast.components.length || ast.directives.length || ast.temps) {        push(`\n`);        newline();    }    // generate the VNode tree expression    if (!ssr) {        push(`return `);    }    if (ast.codegenNode) {        genNode(ast.codegenNode, context);    }    else {        push(`null`);    }    if (useWithBlock) {        deindent();        push(`}`);    }    deindent();    push(`}`);    return {        ast,        code: context.code,        preamble: isSetupInlined ? preambleContext.code : ``,        // SourceMapGenerator does have toJSON() method but it's not in the types        map: context.map ? context.map.toJSON() : undefined    };}function genFunctionPreamble(ast, context) {    const { ssr, prefixIdentifiers, push, newline, runtimeModuleName, runtimeGlobalName, ssrRuntimeModuleName } = context;    const VueBinding = ssr        ? `require(${JSON.stringify(runtimeModuleName)})`        : runtimeGlobalName;    // Generate const declaration for helpers    // In prefix mode, we place the const declaration at top so it's done    // only once; But if we not prefixing, we place the declaration inside the    // with block so it doesn't incur the `in` check cost for every helper access.    if (ast.helpers.length > 0) {        if (prefixIdentifiers) {            push(`const { ${ast.helpers.map(aliasHelper).join(', ')} } = ${VueBinding}\n`);        }        else {            // "with" mode.            // save Vue in a separate variable to avoid collision            push(`const _Vue = ${VueBinding}\n`);            // in "with" mode, helpers are declared inside the with block to avoid            // has check cost, but hoists are lifted out of the function - we need            // to provide the helper here.            if (ast.hoists.length) {                const staticHelpers = [                    CREATE_VNODE,                    CREATE_ELEMENT_VNODE,                    CREATE_COMMENT,                    CREATE_TEXT,                    CREATE_STATIC                ]                    .filter(helper => ast.helpers.includes(helper))                    .map(aliasHelper)                    .join(', ');                push(`const { ${staticHelpers} } = _Vue\n`);            }        }    }    // generate variables for ssr helpers    if (ast.ssrHelpers && ast.ssrHelpers.length) {        // ssr guarantees prefixIdentifier: true        push(`const { ${ast.ssrHelpers            .map(aliasHelper)            .join(', ')} } = require("${ssrRuntimeModuleName}")\n`);    }    genHoists(ast.hoists, context);    newline();    push(`return `);}function genModulePreamble(ast, context, genScopeId, inline) {    const { push, newline, optimizeImports, runtimeModuleName, ssrRuntimeModuleName } = context;    if (genScopeId && ast.hoists.length) {        ast.helpers.push(PUSH_SCOPE_ID, POP_SCOPE_ID);    }    // generate import statements for helpers    if (ast.helpers.length) {        if (optimizeImports) {            // when bundled with webpack with code-split, calling an import binding            // as a function leads to it being wrapped with `Object(a.b)` or `(0,a.b)`,            // incurring both payload size increase and potential perf overhead.            // therefore we assign the imports to variables (which is a constant ~50b            // cost per-component instead of scaling with template size)            push(`import { ${ast.helpers                .map(s => helperNameMap[s])                .join(', ')} } from ${JSON.stringify(runtimeModuleName)}\n`);            push(`\n// Binding optimization for webpack code-split\nconst ${ast.helpers                .map(s => `_${helperNameMap[s]} = ${helperNameMap[s]}`)                .join(', ')}\n`);        }        else {            push(`import { ${ast.helpers                .map(s => `${helperNameMap[s]} as _${helperNameMap[s]}`)                .join(', ')} } from ${JSON.stringify(runtimeModuleName)}\n`);        }    }    if (ast.ssrHelpers && ast.ssrHelpers.length) {        push(`import { ${ast.ssrHelpers            .map(s => `${helperNameMap[s]} as _${helperNameMap[s]}`)            .join(', ')} } from "${ssrRuntimeModuleName}"\n`);    }    if (ast.imports.length) {        genImports(ast.imports, context);        newline();    }    genHoists(ast.hoists, context);    newline();    if (!inline) {        push(`export `);    }}function genAssets(assets, type, { helper, push, newline, isTS }) {    const resolver = helper(type === 'component'            ? RESOLVE_COMPONENT            : RESOLVE_DIRECTIVE);    for (let i = 0; i < assets.length; i++) {        let id = assets[i];        // potential component implicit self-reference inferred from SFC filename        const maybeSelfReference = id.endsWith('__self');        if (maybeSelfReference) {            id = id.slice(0, -6);        }        push(`const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`);        if (i < assets.length - 1) {            newline();        }    }}function genHoists(hoists, context) {    if (!hoists.length) {        return;    }    context.pure = true;    const { push, newline, helper, scopeId, mode } = context;    const genScopeId = scopeId != null && mode !== 'function';    newline();    // generate inlined withScopeId helper    if (genScopeId) {        push(`const _withScopeId = n => (${helper(PUSH_SCOPE_ID)}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)`);        newline();    }    for (let i = 0; i < hoists.length; i++) {        const exp = hoists[i];        if (exp) {            const needScopeIdWrapper = genScopeId && exp.type === 13 /* NodeTypes.VNODE_CALL */;            push(`const _hoisted_${i + 1} = ${needScopeIdWrapper ? `${PURE_ANNOTATION} _withScopeId(() => ` : ``}`);            genNode(exp, context);            if (needScopeIdWrapper) {                push(`)`);            }            newline();        }    }    context.pure = false;}function genImports(importsOptions, context) {    if (!importsOptions.length) {        return;    }    importsOptions.forEach(imports => {        context.push(`import `);        genNode(imports.exp, context);        context.push(` from '${imports.path}'`);        context.newline();    });}function isText$1(n) {    return (isString(n) ||        n.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ ||        n.type === 2 /* NodeTypes.TEXT */ ||        n.type === 5 /* NodeTypes.INTERPOLATION */ ||        n.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */);}function genNodeListAsArray(nodes, context) {    const multilines = nodes.length > 3 ||        (nodes.some(n => isArray(n) || !isText$1(n)));    context.push(`[`);    multilines && context.indent();    genNodeList(nodes, context, multilines);    multilines && context.deindent();    context.push(`]`);}function genNodeList(nodes, context, multilines = false, comma = true) {    const { push, newline } = context;    for (let i = 0; i < nodes.length; i++) {        const node = nodes[i];        if (isString(node)) {            push(node);        }        else if (isArray(node)) {            genNodeListAsArray(node, context);        }        else {            genNode(node, context);        }        if (i < nodes.length - 1) {            if (multilines) {                comma && push(',');                newline();            }            else {                comma && push(', ');            }        }    }}function genNode(node, context) {    if (isString(node)) {        context.push(node);        return;    }    if (isSymbol(node)) {        context.push(context.helper(node));        return;    }    switch (node.type) {        case 1 /* NodeTypes.ELEMENT */:        case 9 /* NodeTypes.IF */:        case 11 /* NodeTypes.FOR */:            assert$1(node.codegenNode != null, `Codegen node is missing for element/if/for node. ` +                    `Apply appropriate transforms first.`);            genNode(node.codegenNode, context);            break;        case 2 /* NodeTypes.TEXT */:            genText(node, context);            break;        case 4 /* NodeTypes.SIMPLE_EXPRESSION */:            genExpression(node, context);            break;        case 5 /* NodeTypes.INTERPOLATION */:            genInterpolation(node, context);            break;        case 12 /* NodeTypes.TEXT_CALL */:            genNode(node.codegenNode, context);            break;        case 8 /* NodeTypes.COMPOUND_EXPRESSION */:            genCompoundExpression(node, context);            break;        case 3 /* NodeTypes.COMMENT */:            genComment(node, context);            break;        case 13 /* NodeTypes.VNODE_CALL */:            genVNodeCall(node, context);            break;        case 14 /* NodeTypes.JS_CALL_EXPRESSION */:            genCallExpression(node, context);            break;        case 15 /* NodeTypes.JS_OBJECT_EXPRESSION */:            genObjectExpression(node, context);            break;        case 17 /* NodeTypes.JS_ARRAY_EXPRESSION */:            genArrayExpression(node, context);            break;        case 18 /* NodeTypes.JS_FUNCTION_EXPRESSION */:            genFunctionExpression(node, context);            break;        case 19 /* NodeTypes.JS_CONDITIONAL_EXPRESSION */:            genConditionalExpression(node, context);            break;        case 20 /* NodeTypes.JS_CACHE_EXPRESSION */:            genCacheExpression(node, context);            break;        case 21 /* NodeTypes.JS_BLOCK_STATEMENT */:            genNodeList(node.body, context, true, false);            break;        // SSR only types        case 22 /* NodeTypes.JS_TEMPLATE_LITERAL */:            genTemplateLiteral(node, context);            break;        case 23 /* NodeTypes.JS_IF_STATEMENT */:            genIfStatement(node, context);            break;        case 24 /* NodeTypes.JS_ASSIGNMENT_EXPRESSION */:            genAssignmentExpression(node, context);            break;        case 25 /* NodeTypes.JS_SEQUENCE_EXPRESSION */:            genSequenceExpression(node, context);            break;        case 26 /* NodeTypes.JS_RETURN_STATEMENT */:            genReturnStatement(node, context);            break;        /* istanbul ignore next */        case 10 /* NodeTypes.IF_BRANCH */:            // noop            break;        default:            {                assert$1(false, `unhandled codegen node type: ${node.type}`);                // make sure we exhaust all possible types                const exhaustiveCheck = node;                return exhaustiveCheck;            }    }}function genText(node, context) {    context.push(JSON.stringify(node.content), node);}function genExpression(node, context) {    const { content, isStatic } = node;    context.push(isStatic ? JSON.stringify(content) : content, node);}function genInterpolation(node, context) {    const { push, helper, pure } = context;    if (pure)        push(PURE_ANNOTATION);    push(`${helper(TO_DISPLAY_STRING)}(`);    genNode(node.content, context);    push(`)`);}function genCompoundExpression(node, context) {    for (let i = 0; i < node.children.length; i++) {        const child = node.children[i];        if (isString(child)) {            context.push(child);        }        else {            genNode(child, context);        }    }}function genExpressionAsPropertyKey(node, context) {    const { push } = context;    if (node.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */) {        push(`[`);        genCompoundExpression(node, context);        push(`]`);    }    else if (node.isStatic) {        // only quote keys if necessary        const text = isSimpleIdentifier(node.content)            ? node.content            : JSON.stringify(node.content);        push(text, node);    }    else {        push(`[${node.content}]`, node);    }}function genComment(node, context) {    const { push, helper, pure } = context;    if (pure) {        push(PURE_ANNOTATION);    }    push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);}function genVNodeCall(node, context) {    const { push, helper, pure } = context;    const { tag, props, children, patchFlag, dynamicProps, directives, isBlock, disableTracking, isComponent } = node;    if (directives) {        push(helper(WITH_DIRECTIVES) + `(`);    }    if (isBlock) {        push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);    }    if (pure) {        push(PURE_ANNOTATION);    }    const callHelper = isBlock        ? getVNodeBlockHelper(context.inSSR, isComponent)        : getVNodeHelper(context.inSSR, isComponent);    push(helper(callHelper) + `(`, node);    genNodeList(genNullableArgs([tag, props, children, patchFlag, dynamicProps]), context);    push(`)`);    if (isBlock) {        push(`)`);    }    if (directives) {        push(`, `);        genNode(directives, context);        push(`)`);    }}function genNullableArgs(args) {    let i = args.length;    while (i--) {        if (args[i] != null)            break;    }    return args.slice(0, i + 1).map(arg => arg || `null`);}// JavaScriptfunction genCallExpression(node, context) {    const { push, helper, pure } = context;    const callee = isString(node.callee) ? node.callee : helper(node.callee);    if (pure) {        push(PURE_ANNOTATION);    }    push(callee + `(`, node);    genNodeList(node.arguments, context);    push(`)`);}function genObjectExpression(node, context) {    const { push, indent, deindent, newline } = context;    const { properties } = node;    if (!properties.length) {        push(`{}`, node);        return;    }    const multilines = properties.length > 1 ||        (properties.some(p => p.value.type !== 4 /* NodeTypes.SIMPLE_EXPRESSION */));    push(multilines ? `{` : `{ `);    multilines && indent();    for (let i = 0; i < properties.length; i++) {        const { key, value } = properties[i];        // key        genExpressionAsPropertyKey(key, context);        push(`: `);        // value        genNode(value, context);        if (i < properties.length - 1) {            // will only reach this if it's multilines            push(`,`);            newline();        }    }    multilines && deindent();    push(multilines ? `}` : ` }`);}function genArrayExpression(node, context) {    genNodeListAsArray(node.elements, context);}function genFunctionExpression(node, context) {    const { push, indent, deindent } = context;    const { params, returns, body, newline, isSlot } = node;    if (isSlot) {        // wrap slot functions with owner context        push(`_${helperNameMap[WITH_CTX]}(`);    }    push(`(`, node);    if (isArray(params)) {        genNodeList(params, context);    }    else if (params) {        genNode(params, context);    }    push(`) => `);    if (newline || body) {        push(`{`);        indent();    }    if (returns) {        if (newline) {            push(`return `);        }        if (isArray(returns)) {            genNodeListAsArray(returns, context);        }        else {            genNode(returns, context);        }    }    else if (body) {        genNode(body, context);    }    if (newline || body) {        deindent();        push(`}`);    }    if (isSlot) {        push(`)`);    }}function genConditionalExpression(node, context) {    const { test, consequent, alternate, newline: needNewline } = node;    const { push, indent, deindent, newline } = context;    if (test.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {        const needsParens = !isSimpleIdentifier(test.content);        needsParens && push(`(`);        genExpression(test, context);        needsParens && push(`)`);    }    else {        push(`(`);        genNode(test, context);        push(`)`);    }    needNewline && indent();    context.indentLevel++;    needNewline || push(` `);    push(`? `);    genNode(consequent, context);    context.indentLevel--;    needNewline && newline();    needNewline || push(` `);    push(`: `);    const isNested = alternate.type === 19 /* NodeTypes.JS_CONDITIONAL_EXPRESSION */;    if (!isNested) {        context.indentLevel++;    }    genNode(alternate, context);    if (!isNested) {        context.indentLevel--;    }    needNewline && deindent(true /* without newline */);}function genCacheExpression(node, context) {    const { push, helper, indent, deindent, newline } = context;    push(`_cache[${node.index}] || (`);    if (node.isVNode) {        indent();        push(`${helper(SET_BLOCK_TRACKING)}(-1),`);        newline();    }    push(`_cache[${node.index}] = `);    genNode(node.value, context);    if (node.isVNode) {        push(`,`);        newline();        push(`${helper(SET_BLOCK_TRACKING)}(1),`);        newline();        push(`_cache[${node.index}]`);        deindent();    }    push(`)`);}function genTemplateLiteral(node, context) {    const { push, indent, deindent } = context;    push('`');    const l = node.elements.length;    const multilines = l > 3;    for (let i = 0; i < l; i++) {        const e = node.elements[i];        if (isString(e)) {            push(e.replace(/(`|\$|\\)/g, '\\$1'));        }        else {            push('${');            if (multilines)                indent();            genNode(e, context);            if (multilines)                deindent();            push('}');        }    }    push('`');}function genIfStatement(node, context) {    const { push, indent, deindent } = context;    const { test, consequent, alternate } = node;    push(`if (`);    genNode(test, context);    push(`) {`);    indent();    genNode(consequent, context);    deindent();    push(`}`);    if (alternate) {        push(` else `);        if (alternate.type === 23 /* NodeTypes.JS_IF_STATEMENT */) {            genIfStatement(alternate, context);        }        else {            push(`{`);            indent();            genNode(alternate, context);            deindent();            push(`}`);        }    }}function genAssignmentExpression(node, context) {    genNode(node.left, context);    context.push(` = `);    genNode(node.right, context);}function genSequenceExpression(node, context) {    context.push(`(`);    genNodeList(node.expressions, context);    context.push(`)`);}function genReturnStatement({ returns }, context) {    context.push(`return `);    if (isArray(returns)) {        genNodeListAsArray(returns, context);    }    else {        genNode(returns, context);    }}// @ts-check/** @typedef { import('estree').BaseNode} BaseNode *//** @typedef {{	skip: () => void;	remove: () => void;	replace: (node: BaseNode) => void;}} WalkerContext */class WalkerBase {	constructor() {		/** @type {boolean} */		this.should_skip = false;		/** @type {boolean} */		this.should_remove = false;		/** @type {BaseNode | null} */		this.replacement = null;		/** @type {WalkerContext} */		this.context = {			skip: () => (this.should_skip = true),			remove: () => (this.should_remove = true),			replace: (node) => (this.replacement = node)		};	}	/**	 *	 * @param {any} parent	 * @param {string} prop	 * @param {number} index	 * @param {BaseNode} node	 */	replace(parent, prop, index, node) {		if (parent) {			if (index !== null) {				parent[prop][index] = node;			} else {				parent[prop] = node;			}		}	}	/**	 *	 * @param {any} parent	 * @param {string} prop	 * @param {number} index	 */	remove(parent, prop, index) {		if (parent) {			if (index !== null) {				parent[prop].splice(index, 1);			} else {				delete parent[prop];			}		}	}}// @ts-check/** @typedef { import('estree').BaseNode} BaseNode *//** @typedef { import('./walker.js').WalkerContext} WalkerContext *//** @typedef {( *    this: WalkerContext, *    node: BaseNode, *    parent: BaseNode, *    key: string, *    index: number * ) => void} SyncHandler */class SyncWalker extends WalkerBase {	/**	 *	 * @param {SyncHandler} enter	 * @param {SyncHandler} leave	 */	constructor(enter, leave) {		super();		/** @type {SyncHandler} */		this.enter = enter;		/** @type {SyncHandler} */		this.leave = leave;	}	/**	 *	 * @param {BaseNode} node	 * @param {BaseNode} parent	 * @param {string} [prop]	 * @param {number} [index]	 * @returns {BaseNode}	 */	visit(node, parent, prop, index) {		if (node) {			if (this.enter) {				const _should_skip = this.should_skip;				const _should_remove = this.should_remove;				const _replacement = this.replacement;				this.should_skip = false;				this.should_remove = false;				this.replacement = null;				this.enter.call(this.context, node, parent, prop, index);				if (this.replacement) {					node = this.replacement;					this.replace(parent, prop, index, node);				}				if (this.should_remove) {					this.remove(parent, prop, index);				}				const skipped = this.should_skip;				const removed = this.should_remove;				this.should_skip = _should_skip;				this.should_remove = _should_remove;				this.replacement = _replacement;				if (skipped) return node;				if (removed) return null;			}			for (const key in node) {				const value = node[key];				if (typeof value !== "object") {					continue;				} else if (Array.isArray(value)) {					for (let i = 0; i < value.length; i += 1) {						if (value[i] !== null && typeof value[i].type === 'string') {							if (!this.visit(value[i], node, key, i)) {								// removed								i--;							}						}					}				} else if (value !== null && typeof value.type === "string") {					this.visit(value, node, key, null);				}			}			if (this.leave) {				const _replacement = this.replacement;				const _should_remove = this.should_remove;				this.replacement = null;				this.should_remove = false;				this.leave.call(this.context, node, parent, prop, index);				if (this.replacement) {					node = this.replacement;					this.replace(parent, prop, index, node);				}				if (this.should_remove) {					this.remove(parent, prop, index);				}				const removed = this.should_remove;				this.replacement = _replacement;				this.should_remove = _should_remove;				if (removed) return null;			}		}		return node;	}}// @ts-check/** @typedef { import('estree').BaseNode} BaseNode *//** @typedef { import('./sync.js').SyncHandler} SyncHandler *//** @typedef { import('./async.js').AsyncHandler} AsyncHandler *//** * * @param {BaseNode} ast * @param {{ *   enter?: SyncHandler *   leave?: SyncHandler * }} walker * @returns {BaseNode} */function walk$1(ast, { enter, leave }) {	const instance = new SyncWalker(enter, leave);	return instance.visit(ast, null);}function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = Object.create(null)) {    const rootExp = root.type === 'Program' &&        root.body[0].type === 'ExpressionStatement' &&        root.body[0].expression;    walk$1(root, {        enter(node, parent) {            parent && parentStack.push(parent);            if (parent &&                parent.type.startsWith('TS') &&                parent.type !== 'TSAsExpression' &&                parent.type !== 'TSNonNullExpression' &&                parent.type !== 'TSTypeAssertion') {                return this.skip();            }            if (node.type === 'Identifier') {                const isLocal = !!knownIds[node.name];                const isRefed = isReferencedIdentifier(node, parent, parentStack);                if (includeAll || (isRefed && !isLocal)) {                    onIdentifier(node, parent, parentStack, isRefed, isLocal);                }            }            else if (node.type === 'ObjectProperty' &&                parent.type === 'ObjectPattern') {                node.inPattern = true;            }            else if (isFunctionType(node)) {                // walk function expressions and add its arguments to known identifiers                // so that we don't prefix them                walkFunctionParams(node, id => markScopeIdentifier(node, id, knownIds));            }            else if (node.type === 'BlockStatement') {                // #3445 record block-level local variables                walkBlockDeclarations(node, id => markScopeIdentifier(node, id, knownIds));            }        },        leave(node, parent) {            parent && parentStack.pop();            if (node !== rootExp && node.scopeIds) {                for (const id of node.scopeIds) {                    knownIds[id]--;                    if (knownIds[id] === 0) {                        delete knownIds[id];                    }                }            }        }    });}function isReferencedIdentifier(id, parent, parentStack) {    if (!parent) {        return true;    }    // is a special keyword but parsed as identifier    if (id.name === 'arguments') {        return false;    }    if (isReferenced(id, parent)) {        return true;    }    // babel's isReferenced check returns false for ids being assigned to, so we    // need to cover those cases here    switch (parent.type) {        case 'AssignmentExpression':        case 'AssignmentPattern':            return true;        case 'ObjectPattern':        case 'ArrayPattern':            return isInDestructureAssignment(parent, parentStack);    }    return false;}function isInDestructureAssignment(parent, parentStack) {    if (parent &&        (parent.type === 'ObjectProperty' || parent.type === 'ArrayPattern')) {        let i = parentStack.length;        while (i--) {            const p = parentStack[i];            if (p.type === 'AssignmentExpression') {                return true;            }            else if (p.type !== 'ObjectProperty' && !p.type.endsWith('Pattern')) {                break;            }        }    }    return false;}function walkFunctionParams(node, onIdent) {    for (const p of node.params) {        for (const id of extractIdentifiers(p)) {            onIdent(id);        }    }}function walkBlockDeclarations(block, onIdent) {    for (const stmt of block.body) {        if (stmt.type === 'VariableDeclaration') {            if (stmt.declare)                continue;            for (const decl of stmt.declarations) {                for (const id of extractIdentifiers(decl.id)) {                    onIdent(id);                }            }        }        else if (stmt.type === 'FunctionDeclaration' ||            stmt.type === 'ClassDeclaration') {            if (stmt.declare || !stmt.id)                continue;            onIdent(stmt.id);        }    }}function extractIdentifiers(param, nodes = []) {    switch (param.type) {        case 'Identifier':            nodes.push(param);            break;        case 'MemberExpression':            let object = param;            while (object.type === 'MemberExpression') {                object = object.object;            }            nodes.push(object);            break;        case 'ObjectPattern':            for (const prop of param.properties) {                if (prop.type === 'RestElement') {                    extractIdentifiers(prop.argument, nodes);                }                else {                    extractIdentifiers(prop.value, nodes);                }            }            break;        case 'ArrayPattern':            param.elements.forEach(element => {                if (element)                    extractIdentifiers(element, nodes);            });            break;        case 'RestElement':            extractIdentifiers(param.argument, nodes);            break;        case 'AssignmentPattern':            extractIdentifiers(param.left, nodes);            break;    }    return nodes;}function markScopeIdentifier(node, child, knownIds) {    const { name } = child;    if (node.scopeIds && node.scopeIds.has(name)) {        return;    }    if (name in knownIds) {        knownIds[name]++;    }    else {        knownIds[name] = 1;    }    (node.scopeIds || (node.scopeIds = new Set())).add(name);}const isFunctionType = (node) => {    return /Function(?:Expression|Declaration)$|Method$/.test(node.type);};const isStaticProperty = (node) => node &&    (node.type === 'ObjectProperty' || node.type === 'ObjectMethod') &&    !node.computed;const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;/** * Copied from https://github.com/babel/babel/blob/main/packages/babel-types/src/validators/isReferenced.ts * To avoid runtime dependency on @babel/types (which includes process references) * This file should not change very often in babel but we may need to keep it * up-to-date from time to time. * * https://github.com/babel/babel/blob/main/LICENSE * */function isReferenced(node, parent, grandparent) {    switch (parent.type) {        // yes: PARENT[NODE]        // yes: NODE.child        // no: parent.NODE        case 'MemberExpression':        case 'OptionalMemberExpression':            if (parent.property === node) {                return !!parent.computed;            }            return parent.object === node;        case 'JSXMemberExpression':            return parent.object === node;        // no: let NODE = init;        // yes: let id = NODE;        case 'VariableDeclarator':            return parent.init === node;        // yes: () => NODE        // no: (NODE) => {}        case 'ArrowFunctionExpression':            return parent.body === node;        // no: class { #NODE; }        // no: class { get #NODE() {} }        // no: class { #NODE() {} }        // no: class { fn() { return this.#NODE; } }        case 'PrivateName':            return false;        // no: class { NODE() {} }        // yes: class { [NODE]() {} }        // no: class { foo(NODE) {} }        case 'ClassMethod':        case 'ClassPrivateMethod':        case 'ObjectMethod':            if (parent.key === node) {                return !!parent.computed;            }            return false;        // yes: { [NODE]: "" }        // no: { NODE: "" }        // depends: { NODE }        // depends: { key: NODE }        case 'ObjectProperty':            if (parent.key === node) {                return !!parent.computed;            }            // parent.value === node            return !grandparent || grandparent.type !== 'ObjectPattern';        // no: class { NODE = value; }        // yes: class { [NODE] = value; }        // yes: class { key = NODE; }        case 'ClassProperty':            if (parent.key === node) {                return !!parent.computed;            }            return true;        case 'ClassPrivateProperty':            return parent.key !== node;        // no: class NODE {}        // yes: class Foo extends NODE {}        case 'ClassDeclaration':        case 'ClassExpression':            return parent.superClass === node;        // yes: left = NODE;        // no: NODE = right;        case 'AssignmentExpression':            return parent.right === node;        // no: [NODE = foo] = [];        // yes: [foo = NODE] = [];        case 'AssignmentPattern':            return parent.right === node;        // no: NODE: for (;;) {}        case 'LabeledStatement':            return false;        // no: try {} catch (NODE) {}        case 'CatchClause':            return false;        // no: function foo(...NODE) {}        case 'RestElement':            return false;        case 'BreakStatement':        case 'ContinueStatement':            return false;        // no: function NODE() {}        // no: function foo(NODE) {}        case 'FunctionDeclaration':        case 'FunctionExpression':            return false;        // no: export NODE from "foo";        // no: export * as NODE from "foo";        case 'ExportNamespaceSpecifier':        case 'ExportDefaultSpecifier':            return false;        // no: export { foo as NODE };        // yes: export { NODE as foo };        // no: export { NODE as foo } from "foo";        case 'ExportSpecifier':            // @ts-expect-error            if (grandparent === null || grandparent === void 0 ? void 0 : grandparent.source) {                return false;            }            return parent.local === node;        // no: import NODE from "foo";        // no: import * as NODE from "foo";        // no: import { NODE as foo } from "foo";        // no: import { foo as NODE } from "foo";        // no: import NODE from "bar";        case 'ImportDefaultSpecifier':        case 'ImportNamespaceSpecifier':        case 'ImportSpecifier':            return false;        // no: import "foo" assert { NODE: "json" }        case 'ImportAttribute':            return false;        // no: <div NODE="foo" />        case 'JSXAttribute':            return false;        // no: [NODE] = [];        // no: ({ NODE }) = [];        case 'ObjectPattern':        case 'ArrayPattern':            return false;        // no: new.NODE        // no: NODE.target        case 'MetaProperty':            return false;        // yes: type X = { someProperty: NODE }        // no: type X = { NODE: OtherType }        case 'ObjectTypeProperty':            return parent.key !== node;        // yes: enum X { Foo = NODE }        // no: enum X { NODE }        case 'TSEnumMember':            return parent.id !== node;        // yes: { [NODE]: value }        // no: { NODE: value }        case 'TSPropertySignature':            if (parent.key === node) {                return !!parent.computed;            }            return true;    }    return true;}const isLiteralWhitelisted = /*#__PURE__*/ makeMap('true,false,null,this');const transformExpression = (node, context) => {    if (node.type === 5 /* NodeTypes.INTERPOLATION */) {        node.content = processExpression(node.content, context);    }    else if (node.type === 1 /* NodeTypes.ELEMENT */) {        // handle directives on element        for (let i = 0; i < node.props.length; i++) {            const dir = node.props[i];            // do not process for v-on & v-for since they are special handled            if (dir.type === 7 /* NodeTypes.DIRECTIVE */ && dir.name !== 'for') {                const exp = dir.exp;                const arg = dir.arg;                // do not process exp if this is v-on:arg - we need special handling                // for wrapping inline statements.                if (exp &&                    exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&                    !(dir.name === 'on' && arg)) {                    dir.exp = processExpression(exp, context,                     // slot args must be processed as function params                    dir.name === 'slot');                }                if (arg && arg.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ && !arg.isStatic) {                    dir.arg = processExpression(arg, context);                }            }        }    }};// Important: since this function uses Node.js only dependencies, it should// always be used with a leading !false check so that it can be// tree-shaken from the browser build.function processExpression(node, context, // some expressions like v-slot props & v-for aliases should be parsed as// function paramsasParams = false, // v-on handler values may contain multiple statementsasRawStatements = false, localVars = Object.create(context.identifiers)) {    if (!context.prefixIdentifiers || !node.content.trim()) {        return node;    }    const { inline, bindingMetadata } = context;    const rewriteIdentifier = (raw, parent, id) => {        const type = hasOwn(bindingMetadata, raw) && bindingMetadata[raw];        if (inline) {            // x = y            const isAssignmentLVal = parent && parent.type === 'AssignmentExpression' && parent.left === id;            // x++            const isUpdateArg = parent && parent.type === 'UpdateExpression' && parent.argument === id;            // ({ x } = y)            const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack);            if (type === "setup-const" /* BindingTypes.SETUP_CONST */ ||                type === "setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */ ||                localVars[raw]) {                return raw;            }            else if (type === "setup-ref" /* BindingTypes.SETUP_REF */) {                return `${raw}.value`;            }            else if (type === "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */) {                // const binding that may or may not be ref                // if it's not a ref, then assignments don't make sense -                // so we ignore the non-ref assignment case and generate code                // that assumes the value to be a ref for more efficiency                return isAssignmentLVal || isUpdateArg || isDestructureAssignment                    ? `${raw}.value`                    : `${context.helperString(UNREF)}(${raw})`;            }            else if (type === "setup-let" /* BindingTypes.SETUP_LET */) {                if (isAssignmentLVal) {                    // let binding.                    // this is a bit more tricky as we need to cover the case where                    // let is a local non-ref value, and we need to replicate the                    // right hand side value.                    // x = y --> isRef(x) ? x.value = y : x = y                    const { right: rVal, operator } = parent;                    const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1);                    const rExpString = stringifyExpression(processExpression(createSimpleExpression(rExp, false), context, false, false, knownIds));                    return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore\n` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`;                }                else if (isUpdateArg) {                    // make id replace parent in the code range so the raw update operator                    // is removed                    id.start = parent.start;                    id.end = parent.end;                    const { prefix: isPrefix, operator } = parent;                    const prefix = isPrefix ? operator : ``;                    const postfix = isPrefix ? `` : operator;                    // let binding.                    // x++ --> isRef(a) ? a.value++ : a++                    return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore\n` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`;                }                else if (isDestructureAssignment) {                    // TODO                    // let binding in a destructure assignment - it's very tricky to                    // handle both possible cases here without altering the original                    // structure of the code, so we just assume it's not a ref here                    // for now                    return raw;                }                else {                    return `${context.helperString(UNREF)}(${raw})`;                }            }            else if (type === "props" /* BindingTypes.PROPS */) {                // use __props which is generated by compileScript so in ts mode                // it gets correct type                return genPropsAccessExp(raw);            }            else if (type === "props-aliased" /* BindingTypes.PROPS_ALIASED */) {                // prop with a different local alias (from defineProps() destructure)                return genPropsAccessExp(bindingMetadata.__propsAliases[raw]);            }        }        else {            if (type && type.startsWith('setup')) {                // setup bindings in non-inline mode                return `$setup.${raw}`;            }            else if (type === "props-aliased" /* BindingTypes.PROPS_ALIASED */) {                return `$props['${bindingMetadata.__propsAliases[raw]}']`;            }            else if (type) {                return `$${type}.${raw}`;            }        }        // fallback to ctx        return `_ctx.${raw}`;    };    // fast path if expression is a simple identifier.    const rawExp = node.content;    // bail constant on parens (function invocation) and dot (member access)    const bailConstant = rawExp.indexOf(`(`) > -1 || rawExp.indexOf('.') > 0;    if (isSimpleIdentifier(rawExp)) {        const isScopeVarReference = context.identifiers[rawExp];        const isAllowedGlobal = isGloballyWhitelisted(rawExp);        const isLiteral = isLiteralWhitelisted(rawExp);        if (!asParams && !isScopeVarReference && !isAllowedGlobal && !isLiteral) {            // const bindings exposed from setup can be skipped for patching but            // cannot be hoisted to module scope            if (bindingMetadata[node.content] === "setup-const" /* BindingTypes.SETUP_CONST */) {                node.constType = 1 /* ConstantTypes.CAN_SKIP_PATCH */;            }            node.content = rewriteIdentifier(rawExp);        }        else if (!isScopeVarReference) {            if (isLiteral) {                node.constType = 3 /* ConstantTypes.CAN_STRINGIFY */;            }            else {                node.constType = 2 /* ConstantTypes.CAN_HOIST */;            }        }        return node;    }    let ast;    // exp needs to be parsed differently:    // 1. Multiple inline statements (v-on, with presence of `;`): parse as raw    //    exp, but make sure to pad with spaces for consistent ranges    // 2. Expressions: wrap with parens (for e.g. object expressions)    // 3. Function arguments (v-for, v-slot): place in a function argument position    const source = asRawStatements        ? ` ${rawExp} `        : `(${rawExp})${asParams ? `=>{}` : ``}`;    try {        ast = parse_1(source, {            plugins: context.expressionPlugins        }).program;    }    catch (e) {        context.onError(createCompilerError(45 /* ErrorCodes.X_INVALID_EXPRESSION */, node.loc, undefined, e.message));        return node;    }    const ids = [];    const parentStack = [];    const knownIds = Object.create(context.identifiers);    walkIdentifiers(ast, (node, parent, _, isReferenced, isLocal) => {        if (isStaticPropertyKey(node, parent)) {            return;        }        const needPrefix = isReferenced && canPrefix(node);        if (needPrefix && !isLocal) {            if (isStaticProperty(parent) && parent.shorthand) {                node.prefix = `${node.name}: `;            }            node.name = rewriteIdentifier(node.name, parent, node);            ids.push(node);        }        else {            // The identifier is considered constant unless it's pointing to a            // local scope variable (a v-for alias, or a v-slot prop)            if (!(needPrefix && isLocal) && !bailConstant) {                node.isConstant = true;            }            // also generate sub-expressions for other identifiers for better            // source map support. (except for property keys which are static)            ids.push(node);        }    }, true, // invoke on ALL identifiers    parentStack, knownIds);    // We break up the compound expression into an array of strings and sub    // expressions (for identifiers that have been prefixed). In codegen, if    // an ExpressionNode has the `.children` property, it will be used instead of    // `.content`.    const children = [];    ids.sort((a, b) => a.start - b.start);    ids.forEach((id, i) => {        // range is offset by -1 due to the wrapping parens when parsed        const start = id.start - 1;        const end = id.end - 1;        const last = ids[i - 1];        const leadingText = rawExp.slice(last ? last.end - 1 : 0, start);        if (leadingText.length || id.prefix) {            children.push(leadingText + (id.prefix || ``));        }        const source = rawExp.slice(start, end);        children.push(createSimpleExpression(id.name, false, {            source,            start: advancePositionWithClone(node.loc.start, source, start),            end: advancePositionWithClone(node.loc.start, source, end)        }, id.isConstant ? 3 /* ConstantTypes.CAN_STRINGIFY */ : 0 /* ConstantTypes.NOT_CONSTANT */));        if (i === ids.length - 1 && end < rawExp.length) {            children.push(rawExp.slice(end));        }    });    let ret;    if (children.length) {        ret = createCompoundExpression(children, node.loc);    }    else {        ret = node;        ret.constType = bailConstant            ? 0 /* ConstantTypes.NOT_CONSTANT */            : 3 /* ConstantTypes.CAN_STRINGIFY */;    }    ret.identifiers = Object.keys(knownIds);    return ret;}function canPrefix(id) {    // skip whitelisted globals    if (isGloballyWhitelisted(id.name)) {        return false;    }    // special case for webpack compilation    if (id.name === 'require') {        return false;    }    return true;}function stringifyExpression(exp) {    if (isString(exp)) {        return exp;    }    else if (exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {        return exp.content;    }    else {        return exp.children            .map(stringifyExpression)            .join('');    }}const transformIf = createStructuralDirectiveTransform(/^(if|else|else-if)$/, (node, dir, context) => {    return processIf(node, dir, context, (ifNode, branch, isRoot) => {        // #1587: We need to dynamically increment the key based on the current        // node's sibling nodes, since chained v-if/else branches are        // rendered at the same depth        const siblings = context.parent.children;        let i = siblings.indexOf(ifNode);        let key = 0;        while (i-- >= 0) {            const sibling = siblings[i];            if (sibling && sibling.type === 9 /* NodeTypes.IF */) {                key += sibling.branches.length;            }        }        // Exit callback. Complete the codegenNode when all children have been        // transformed.        return () => {            if (isRoot) {                ifNode.codegenNode = createCodegenNodeForBranch(branch, key, context);            }            else {                // attach this branch's codegen node to the v-if root.                const parentCondition = getParentCondition(ifNode.codegenNode);                parentCondition.alternate = createCodegenNodeForBranch(branch, key + ifNode.branches.length - 1, context);            }        };    });});// target-agnostic transform used for both Client and SSRfunction processIf(node, dir, context, processCodegen) {    if (dir.name !== 'else' &&        (!dir.exp || !dir.exp.content.trim())) {        const loc = dir.exp ? dir.exp.loc : node.loc;        context.onError(createCompilerError(28 /* ErrorCodes.X_V_IF_NO_EXPRESSION */, dir.loc));        dir.exp = createSimpleExpression(`true`, false, loc);    }    if (context.prefixIdentifiers && dir.exp) {        // dir.exp can only be simple expression because vIf transform is applied        // before expression transform.        dir.exp = processExpression(dir.exp, context);    }    if (dir.name === 'if') {        const branch = createIfBranch(node, dir);        const ifNode = {            type: 9 /* NodeTypes.IF */,            loc: node.loc,            branches: [branch]        };        context.replaceNode(ifNode);        if (processCodegen) {            return processCodegen(ifNode, branch, true);        }    }    else {        // locate the adjacent v-if        const siblings = context.parent.children;        const comments = [];        let i = siblings.indexOf(node);        while (i-- >= -1) {            const sibling = siblings[i];            if (sibling && sibling.type === 3 /* NodeTypes.COMMENT */) {                context.removeNode(sibling);                comments.unshift(sibling);                continue;            }            if (sibling &&                sibling.type === 2 /* NodeTypes.TEXT */ &&                !sibling.content.trim().length) {                context.removeNode(sibling);                continue;            }            if (sibling && sibling.type === 9 /* NodeTypes.IF */) {                // Check if v-else was followed by v-else-if                if (dir.name === 'else-if' &&                    sibling.branches[sibling.branches.length - 1].condition === undefined) {                    context.onError(createCompilerError(30 /* ErrorCodes.X_V_ELSE_NO_ADJACENT_IF */, node.loc));                }                // move the node to the if node's branches                context.removeNode();                const branch = createIfBranch(node, dir);                if (comments.length &&                    // #3619 ignore comments if the v-if is direct child of <transition>                    !(context.parent &&                        context.parent.type === 1 /* NodeTypes.ELEMENT */ &&                        isBuiltInType(context.parent.tag, 'transition'))) {                    branch.children = [...comments, ...branch.children];                }                // check if user is forcing same key on different branches                {                    const key = branch.userKey;                    if (key) {                        sibling.branches.forEach(({ userKey }) => {                            if (isSameKey(userKey, key)) {                                context.onError(createCompilerError(29 /* ErrorCodes.X_V_IF_SAME_KEY */, branch.userKey.loc));                            }                        });                    }                }                sibling.branches.push(branch);                const onExit = processCodegen && processCodegen(sibling, branch, false);                // since the branch was removed, it will not be traversed.                // make sure to traverse here.                traverseNode(branch, context);                // call on exit                if (onExit)                    onExit();                // make sure to reset currentNode after traversal to indicate this                // node has been removed.                context.currentNode = null;            }            else {                context.onError(createCompilerError(30 /* ErrorCodes.X_V_ELSE_NO_ADJACENT_IF */, node.loc));            }            break;        }    }}function createIfBranch(node, dir) {    const isTemplateIf = node.tagType === 3 /* ElementTypes.TEMPLATE */;    return {        type: 10 /* NodeTypes.IF_BRANCH */,        loc: node.loc,        condition: dir.name === 'else' ? undefined : dir.exp,        children: isTemplateIf && !findDir(node, 'for') ? node.children : [node],        userKey: findProp(node, `key`),        isTemplateIf    };}function createCodegenNodeForBranch(branch, keyIndex, context) {    if (branch.condition) {        return createConditionalExpression(branch.condition, createChildrenCodegenNode(branch, keyIndex, context),         // make sure to pass in asBlock: true so that the comment node call        // closes the current block.        createCallExpression(context.helper(CREATE_COMMENT), [            '"v-if"' ,            'true'        ]));    }    else {        return createChildrenCodegenNode(branch, keyIndex, context);    }}function createChildrenCodegenNode(branch, keyIndex, context) {    const { helper } = context;    const keyProperty = createObjectProperty(`key`, createSimpleExpression(`${keyIndex}`, false, locStub, 2 /* ConstantTypes.CAN_HOIST */));    const { children } = branch;    const firstChild = children[0];    const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1 /* NodeTypes.ELEMENT */;    if (needFragmentWrapper) {        if (children.length === 1 && firstChild.type === 11 /* NodeTypes.FOR */) {            // optimize away nested fragments when child is a ForNode            const vnodeCall = firstChild.codegenNode;            injectProp(vnodeCall, keyProperty, context);            return vnodeCall;        }        else {            let patchFlag = 64 /* PatchFlags.STABLE_FRAGMENT */;            let patchFlagText = PatchFlagNames[64 /* PatchFlags.STABLE_FRAGMENT */];            // check if the fragment actually contains a single valid child with            // the rest being comments            if (!branch.isTemplateIf &&                children.filter(c => c.type !== 3 /* NodeTypes.COMMENT */).length === 1) {                patchFlag |= 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */;                patchFlagText += `, ${PatchFlagNames[2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]}`;            }            return createVNodeCall(context, helper(FRAGMENT), createObjectExpression([keyProperty]), children, patchFlag + (` /* ${patchFlagText} */` ), undefined, undefined, true, false, false /* isComponent */, branch.loc);        }    }    else {        const ret = firstChild.codegenNode;        const vnodeCall = getMemoedVNodeCall(ret);        // Change createVNode to createBlock.        if (vnodeCall.type === 13 /* NodeTypes.VNODE_CALL */) {            makeBlock(vnodeCall, context);        }        // inject branch key        injectProp(vnodeCall, keyProperty, context);        return ret;    }}function isSameKey(a, b) {    if (!a || a.type !== b.type) {        return false;    }    if (a.type === 6 /* NodeTypes.ATTRIBUTE */) {        if (a.value.content !== b.value.content) {            return false;        }    }    else {        // directive        const exp = a.exp;        const branchExp = b.exp;        if (exp.type !== branchExp.type) {            return false;        }        if (exp.type !== 4 /* NodeTypes.SIMPLE_EXPRESSION */ ||            exp.isStatic !== branchExp.isStatic ||            exp.content !== branchExp.content) {            return false;        }    }    return true;}function getParentCondition(node) {    while (true) {        if (node.type === 19 /* NodeTypes.JS_CONDITIONAL_EXPRESSION */) {            if (node.alternate.type === 19 /* NodeTypes.JS_CONDITIONAL_EXPRESSION */) {                node = node.alternate;            }            else {                return node;            }        }        else if (node.type === 20 /* NodeTypes.JS_CACHE_EXPRESSION */) {            node = node.value;        }    }}const transformFor = createStructuralDirectiveTransform('for', (node, dir, context) => {    const { helper, removeHelper } = context;    return processFor(node, dir, context, forNode => {        // create the loop render function expression now, and add the        // iterator on exit after all children have been traversed        const renderExp = createCallExpression(helper(RENDER_LIST), [            forNode.source        ]);        const isTemplate = isTemplateNode(node);        const memo = findDir(node, 'memo');        const keyProp = findProp(node, `key`);        const keyExp = keyProp &&            (keyProp.type === 6 /* NodeTypes.ATTRIBUTE */                ? createSimpleExpression(keyProp.value.content, true)                : keyProp.exp);        const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;        if (isTemplate) {            // #2085 / #5288 process :key and v-memo expressions need to be            // processed on `<template v-for>`. In this case the node is discarded            // and never traversed so its binding expressions won't be processed            // by the normal transforms.            if (memo) {                memo.exp = processExpression(memo.exp, context);            }            if (keyProperty && keyProp.type !== 6 /* NodeTypes.ATTRIBUTE */) {                keyProperty.value = processExpression(keyProperty.value, context);            }        }        const isStableFragment = forNode.source.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&            forNode.source.constType > 0 /* ConstantTypes.NOT_CONSTANT */;        const fragmentFlag = isStableFragment            ? 64 /* PatchFlags.STABLE_FRAGMENT */            : keyProp                ? 128 /* PatchFlags.KEYED_FRAGMENT */                : 256 /* PatchFlags.UNKEYED_FRAGMENT */;        forNode.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, renderExp, fragmentFlag +            (` /* ${PatchFlagNames[fragmentFlag]} */` ), undefined, undefined, true /* isBlock */, !isStableFragment /* disableTracking */, false /* isComponent */, node.loc);        return () => {            // finish the codegen now that all children have been traversed            let childBlock;            const { children } = forNode;            // check <template v-for> key placement            if (isTemplate) {                node.children.some(c => {                    if (c.type === 1 /* NodeTypes.ELEMENT */) {                        const key = findProp(c, 'key');                        if (key) {                            context.onError(createCompilerError(33 /* ErrorCodes.X_V_FOR_TEMPLATE_KEY_PLACEMENT */, key.loc));                            return true;                        }                    }                });            }            const needFragmentWrapper = children.length !== 1 || children[0].type !== 1 /* NodeTypes.ELEMENT */;            const slotOutlet = isSlotOutlet(node)                ? node                : isTemplate &&                    node.children.length === 1 &&                    isSlotOutlet(node.children[0])                    ? node.children[0] // api-extractor somehow fails to infer this                    : null;            if (slotOutlet) {                // <slot v-for="..."> or <template v-for="..."><slot/></template>                childBlock = slotOutlet.codegenNode;                if (isTemplate && keyProperty) {                    // <template v-for="..." :key="..."><slot/></template>                    // we need to inject the key to the renderSlot() call.                    // the props for renderSlot is passed as the 3rd argument.                    injectProp(childBlock, keyProperty, context);                }            }            else if (needFragmentWrapper) {                // <template v-for="..."> with text or multi-elements                // should generate a fragment block for each loop                childBlock = createVNodeCall(context, helper(FRAGMENT), keyProperty ? createObjectExpression([keyProperty]) : undefined, node.children, 64 /* PatchFlags.STABLE_FRAGMENT */ +                    (` /* ${PatchFlagNames[64 /* PatchFlags.STABLE_FRAGMENT */]} */`                        ), undefined, undefined, true, undefined, false /* isComponent */);            }            else {                // Normal element v-for. Directly use the child's codegenNode                // but mark it as a block.                childBlock = children[0]                    .codegenNode;                if (isTemplate && keyProperty) {                    injectProp(childBlock, keyProperty, context);                }                if (childBlock.isBlock !== !isStableFragment) {                    if (childBlock.isBlock) {                        // switch from block to vnode                        removeHelper(OPEN_BLOCK);                        removeHelper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));                    }                    else {                        // switch from vnode to block                        removeHelper(getVNodeHelper(context.inSSR, childBlock.isComponent));                    }                }                childBlock.isBlock = !isStableFragment;                if (childBlock.isBlock) {                    helper(OPEN_BLOCK);                    helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));                }                else {                    helper(getVNodeHelper(context.inSSR, childBlock.isComponent));                }            }            if (memo) {                const loop = createFunctionExpression(createForLoopParams(forNode.parseResult, [                    createSimpleExpression(`_cached`)                ]));                loop.body = createBlockStatement([                    createCompoundExpression([`const _memo = (`, memo.exp, `)`]),                    createCompoundExpression([                        `if (_cached`,                        ...(keyExp ? [` && _cached.key === `, keyExp] : []),                        ` && ${context.helperString(IS_MEMO_SAME)}(_cached, _memo)) return _cached`                    ]),                    createCompoundExpression([`const _item = `, childBlock]),                    createSimpleExpression(`_item.memo = _memo`),                    createSimpleExpression(`return _item`)                ]);                renderExp.arguments.push(loop, createSimpleExpression(`_cache`), createSimpleExpression(String(context.cached++)));            }            else {                renderExp.arguments.push(createFunctionExpression(createForLoopParams(forNode.parseResult), childBlock, true /* force newline */));            }        };    });});// target-agnostic transform used for both Client and SSRfunction processFor(node, dir, context, processCodegen) {    if (!dir.exp) {        context.onError(createCompilerError(31 /* ErrorCodes.X_V_FOR_NO_EXPRESSION */, dir.loc));        return;    }    const parseResult = parseForExpression(    // can only be simple expression because vFor transform is applied    // before expression transform.    dir.exp, context);    if (!parseResult) {        context.onError(createCompilerError(32 /* ErrorCodes.X_V_FOR_MALFORMED_EXPRESSION */, dir.loc));        return;    }    const { addIdentifiers, removeIdentifiers, scopes } = context;    const { source, value, key, index } = parseResult;    const forNode = {        type: 11 /* NodeTypes.FOR */,        loc: dir.loc,        source,        valueAlias: value,        keyAlias: key,        objectIndexAlias: index,        parseResult,        children: isTemplateNode(node) ? node.children : [node]    };    context.replaceNode(forNode);    // bookkeeping    scopes.vFor++;    if (context.prefixIdentifiers) {        // scope management        // inject identifiers to context        value && addIdentifiers(value);        key && addIdentifiers(key);        index && addIdentifiers(index);    }    const onExit = processCodegen && processCodegen(forNode);    return () => {        scopes.vFor--;        if (context.prefixIdentifiers) {            value && removeIdentifiers(value);            key && removeIdentifiers(key);            index && removeIdentifiers(index);        }        if (onExit)            onExit();    };}const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;// This regex doesn't cover the case if key or index aliases have destructuring,// but those do not make sense in the first place, so this works in practice.const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;const stripParensRE = /^\(|\)$/g;function parseForExpression(input, context) {    const loc = input.loc;    const exp = input.content;    const inMatch = exp.match(forAliasRE);    if (!inMatch)        return;    const [, LHS, RHS] = inMatch;    const result = {        source: createAliasExpression(loc, RHS.trim(), exp.indexOf(RHS, LHS.length)),        value: undefined,        key: undefined,        index: undefined    };    if (context.prefixIdentifiers) {        result.source = processExpression(result.source, context);    }    let valueContent = LHS.trim().replace(stripParensRE, '').trim();    const trimmedOffset = LHS.indexOf(valueContent);    const iteratorMatch = valueContent.match(forIteratorRE);    if (iteratorMatch) {        valueContent = valueContent.replace(forIteratorRE, '').trim();        const keyContent = iteratorMatch[1].trim();        let keyOffset;        if (keyContent) {            keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);            result.key = createAliasExpression(loc, keyContent, keyOffset);            if (context.prefixIdentifiers) {                result.key = processExpression(result.key, context, true);            }        }        if (iteratorMatch[2]) {            const indexContent = iteratorMatch[2].trim();            if (indexContent) {                result.index = createAliasExpression(loc, indexContent, exp.indexOf(indexContent, result.key                    ? keyOffset + keyContent.length                    : trimmedOffset + valueContent.length));                if (context.prefixIdentifiers) {                    result.index = processExpression(result.index, context, true);                }            }        }    }    if (valueContent) {        result.value = createAliasExpression(loc, valueContent, trimmedOffset);        if (context.prefixIdentifiers) {            result.value = processExpression(result.value, context, true);        }    }    return result;}function createAliasExpression(range, content, offset) {    return createSimpleExpression(content, false, getInnerRange(range, offset, content.length));}function createForLoopParams({ value, key, index }, memoArgs = []) {    return createParamsList([value, key, index, ...memoArgs]);}function createParamsList(args) {    let i = args.length;    while (i--) {        if (args[i])            break;    }    return args        .slice(0, i + 1)        .map((arg, i) => arg || createSimpleExpression(`_`.repeat(i + 1), false));}const defaultFallback = createSimpleExpression(`undefined`, false);// A NodeTransform that:// 1. Tracks scope identifiers for scoped slots so that they don't get prefixed//    by transformExpression. This is only applied in non-browser builds with//    { prefixIdentifiers: true }.// 2. Track v-slot depths so that we know a slot is inside another slot.//    Note the exit callback is executed before buildSlots() on the same node,//    so only nested slots see positive numbers.const trackSlotScopes = (node, context) => {    if (node.type === 1 /* NodeTypes.ELEMENT */ &&        (node.tagType === 1 /* ElementTypes.COMPONENT */ ||            node.tagType === 3 /* ElementTypes.TEMPLATE */)) {        // We are only checking non-empty v-slot here        // since we only care about slots that introduce scope variables.        const vSlot = findDir(node, 'slot');        if (vSlot) {            const slotProps = vSlot.exp;            if (context.prefixIdentifiers) {                slotProps && context.addIdentifiers(slotProps);            }            context.scopes.vSlot++;            return () => {                if (context.prefixIdentifiers) {                    slotProps && context.removeIdentifiers(slotProps);                }                context.scopes.vSlot--;            };        }    }};// A NodeTransform that tracks scope identifiers for scoped slots with v-for.// This transform is only applied in non-browser builds with { prefixIdentifiers: true }const trackVForSlotScopes = (node, context) => {    let vFor;    if (isTemplateNode(node) &&        node.props.some(isVSlot) &&        (vFor = findDir(node, 'for'))) {        const result = (vFor.parseResult = parseForExpression(vFor.exp, context));        if (result) {            const { value, key, index } = result;            const { addIdentifiers, removeIdentifiers } = context;            value && addIdentifiers(value);            key && addIdentifiers(key);            index && addIdentifiers(index);            return () => {                value && removeIdentifiers(value);                key && removeIdentifiers(key);                index && removeIdentifiers(index);            };        }    }};const buildClientSlotFn = (props, children, loc) => createFunctionExpression(props, children, false /* newline */, true /* isSlot */, children.length ? children[0].loc : loc);// Instead of being a DirectiveTransform, v-slot processing is called during// transformElement to build the slots object for a component.function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {    context.helper(WITH_CTX);    const { children, loc } = node;    const slotsProperties = [];    const dynamicSlots = [];    // If the slot is inside a v-for or another v-slot, force it to be dynamic    // since it likely uses a scope variable.    let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;    // with `prefixIdentifiers: true`, this can be further optimized to make    // it dynamic only when the slot actually uses the scope variables.    if (!context.ssr && context.prefixIdentifiers) {        hasDynamicSlots = hasScopeRef(node, context.identifiers);    }    // 1. Check for slot with slotProps on component itself.    //    <Comp v-slot="{ prop }"/>    const onComponentSlot = findDir(node, 'slot', true);    if (onComponentSlot) {        const { arg, exp } = onComponentSlot;        if (arg && !isStaticExp(arg)) {            hasDynamicSlots = true;        }        slotsProperties.push(createObjectProperty(arg || createSimpleExpression('default', true), buildSlotFn(exp, children, loc)));    }    // 2. Iterate through children and check for template slots    //    <template v-slot:foo="{ prop }">    let hasTemplateSlots = false;    let hasNamedDefaultSlot = false;    const implicitDefaultChildren = [];    const seenSlotNames = new Set();    let conditionalBranchIndex = 0;    for (let i = 0; i < children.length; i++) {        const slotElement = children[i];        let slotDir;        if (!isTemplateNode(slotElement) ||            !(slotDir = findDir(slotElement, 'slot', true))) {            // not a <template v-slot>, skip.            if (slotElement.type !== 3 /* NodeTypes.COMMENT */) {                implicitDefaultChildren.push(slotElement);            }            continue;        }        if (onComponentSlot) {            // already has on-component slot - this is incorrect usage.            context.onError(createCompilerError(37 /* ErrorCodes.X_V_SLOT_MIXED_SLOT_USAGE */, slotDir.loc));            break;        }        hasTemplateSlots = true;        const { children: slotChildren, loc: slotLoc } = slotElement;        const { arg: slotName = createSimpleExpression(`default`, true), exp: slotProps, loc: dirLoc } = slotDir;        // check if name is dynamic.        let staticSlotName;        if (isStaticExp(slotName)) {            staticSlotName = slotName ? slotName.content : `default`;        }        else {            hasDynamicSlots = true;        }        const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);        // check if this slot is conditional (v-if/v-for)        let vIf;        let vElse;        let vFor;        if ((vIf = findDir(slotElement, 'if'))) {            hasDynamicSlots = true;            dynamicSlots.push(createConditionalExpression(vIf.exp, buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), defaultFallback));        }        else if ((vElse = findDir(slotElement, /^else(-if)?$/, true /* allowEmpty */))) {            // find adjacent v-if            let j = i;            let prev;            while (j--) {                prev = children[j];                if (prev.type !== 3 /* NodeTypes.COMMENT */) {                    break;                }            }            if (prev && isTemplateNode(prev) && findDir(prev, 'if')) {                // remove node                children.splice(i, 1);                i--;                // attach this slot to previous conditional                let conditional = dynamicSlots[dynamicSlots.length - 1];                while (conditional.alternate.type === 19 /* NodeTypes.JS_CONDITIONAL_EXPRESSION */) {                    conditional = conditional.alternate;                }                conditional.alternate = vElse.exp                    ? createConditionalExpression(vElse.exp, buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), defaultFallback)                    : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);            }            else {                context.onError(createCompilerError(30 /* ErrorCodes.X_V_ELSE_NO_ADJACENT_IF */, vElse.loc));            }        }        else if ((vFor = findDir(slotElement, 'for'))) {            hasDynamicSlots = true;            const parseResult = vFor.parseResult ||                parseForExpression(vFor.exp, context);            if (parseResult) {                // Render the dynamic slots as an array and add it to the createSlot()                // args. The runtime knows how to handle it appropriately.                dynamicSlots.push(createCallExpression(context.helper(RENDER_LIST), [                    parseResult.source,                    createFunctionExpression(createForLoopParams(parseResult), buildDynamicSlot(slotName, slotFunction), true /* force newline */)                ]));            }            else {                context.onError(createCompilerError(32 /* ErrorCodes.X_V_FOR_MALFORMED_EXPRESSION */, vFor.loc));            }        }        else {            // check duplicate static names            if (staticSlotName) {                if (seenSlotNames.has(staticSlotName)) {                    context.onError(createCompilerError(38 /* ErrorCodes.X_V_SLOT_DUPLICATE_SLOT_NAMES */, dirLoc));                    continue;                }                seenSlotNames.add(staticSlotName);                if (staticSlotName === 'default') {                    hasNamedDefaultSlot = true;                }            }            slotsProperties.push(createObjectProperty(slotName, slotFunction));        }    }    if (!onComponentSlot) {        const buildDefaultSlotProperty = (props, children) => {            const fn = buildSlotFn(props, children, loc);            return createObjectProperty(`default`, fn);        };        if (!hasTemplateSlots) {            // implicit default slot (on component)            slotsProperties.push(buildDefaultSlotProperty(undefined, children));        }        else if (implicitDefaultChildren.length &&            // #3766            // with whitespace: 'preserve', whitespaces between slots will end up in            // implicitDefaultChildren. Ignore if all implicit children are whitespaces.            implicitDefaultChildren.some(node => isNonWhitespaceContent(node))) {            // implicit default slot (mixed with named slots)            if (hasNamedDefaultSlot) {                context.onError(createCompilerError(39 /* ErrorCodes.X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */, implicitDefaultChildren[0].loc));            }            else {                slotsProperties.push(buildDefaultSlotProperty(undefined, implicitDefaultChildren));            }        }    }    const slotFlag = hasDynamicSlots        ? 2 /* SlotFlags.DYNAMIC */        : hasForwardedSlots(node.children)            ? 3 /* SlotFlags.FORWARDED */            : 1 /* SlotFlags.STABLE */;    let slots = createObjectExpression(slotsProperties.concat(createObjectProperty(`_`,     // 2 = compiled but dynamic = can skip normalization, but must run diff    // 1 = compiled and static = can skip normalization AND diff as optimized    createSimpleExpression(slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ), false))), loc);    if (dynamicSlots.length) {        slots = createCallExpression(context.helper(CREATE_SLOTS), [            slots,            createArrayExpression(dynamicSlots)        ]);    }    return {        slots,        hasDynamicSlots    };}function buildDynamicSlot(name, fn, index) {    const props = [        createObjectProperty(`name`, name),        createObjectProperty(`fn`, fn)    ];    if (index != null) {        props.push(createObjectProperty(`key`, createSimpleExpression(String(index), true)));    }    return createObjectExpression(props);}function hasForwardedSlots(children) {    for (let i = 0; i < children.length; i++) {        const child = children[i];        switch (child.type) {            case 1 /* NodeTypes.ELEMENT */:                if (child.tagType === 2 /* ElementTypes.SLOT */ ||                    hasForwardedSlots(child.children)) {                    return true;                }                break;            case 9 /* NodeTypes.IF */:                if (hasForwardedSlots(child.branches))                    return true;                break;            case 10 /* NodeTypes.IF_BRANCH */:            case 11 /* NodeTypes.FOR */:                if (hasForwardedSlots(child.children))                    return true;                break;        }    }    return false;}function isNonWhitespaceContent(node) {    if (node.type !== 2 /* NodeTypes.TEXT */ && node.type !== 12 /* NodeTypes.TEXT_CALL */)        return true;    return node.type === 2 /* NodeTypes.TEXT */        ? !!node.content.trim()        : isNonWhitespaceContent(node.content);}// some directive transforms (e.g. v-model) may return a symbol for runtime// import, which should be used instead of a resolveDirective call.const directiveImportMap = new WeakMap();// generate a JavaScript AST for this element's codegenconst transformElement = (node, context) => {    // perform the work on exit, after all child expressions have been    // processed and merged.    return function postTransformElement() {        node = context.currentNode;        if (!(node.type === 1 /* NodeTypes.ELEMENT */ &&            (node.tagType === 0 /* ElementTypes.ELEMENT */ ||                node.tagType === 1 /* ElementTypes.COMPONENT */))) {            return;        }        const { tag, props } = node;        const isComponent = node.tagType === 1 /* ElementTypes.COMPONENT */;        // The goal of the transform is to create a codegenNode implementing the        // VNodeCall interface.        let vnodeTag = isComponent            ? resolveComponentType(node, context)            : `"${tag}"`;        const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;        let vnodeProps;        let vnodeChildren;        let vnodePatchFlag;        let patchFlag = 0;        let vnodeDynamicProps;        let dynamicPropNames;        let vnodeDirectives;        let shouldUseBlock =         // dynamic component may resolve to plain elements        isDynamicComponent ||            vnodeTag === TELEPORT ||            vnodeTag === SUSPENSE ||            (!isComponent &&                // <svg> and <foreignObject> must be forced into blocks so that block                // updates inside get proper isSVG flag at runtime. (#639, #643)                // This is technically web-specific, but splitting the logic out of core                // leads to too much unnecessary complexity.                (tag === 'svg' || tag === 'foreignObject'));        // props        if (props.length > 0) {            const propsBuildResult = buildProps(node, context, undefined, isComponent, isDynamicComponent);            vnodeProps = propsBuildResult.props;            patchFlag = propsBuildResult.patchFlag;            dynamicPropNames = propsBuildResult.dynamicPropNames;            const directives = propsBuildResult.directives;            vnodeDirectives =                directives && directives.length                    ? createArrayExpression(directives.map(dir => buildDirectiveArgs(dir, context)))                    : undefined;            if (propsBuildResult.shouldUseBlock) {                shouldUseBlock = true;            }        }        // children        if (node.children.length > 0) {            if (vnodeTag === KEEP_ALIVE) {                // Although a built-in component, we compile KeepAlive with raw children                // instead of slot functions so that it can be used inside Transition                // or other Transition-wrapping HOCs.                // To ensure correct updates with block optimizations, we need to:                // 1. Force keep-alive into a block. This avoids its children being                //    collected by a parent block.                shouldUseBlock = true;                // 2. Force keep-alive to always be updated, since it uses raw children.                patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;                if (node.children.length > 1) {                    context.onError(createCompilerError(46 /* ErrorCodes.X_KEEP_ALIVE_INVALID_CHILDREN */, {                        start: node.children[0].loc.start,                        end: node.children[node.children.length - 1].loc.end,                        source: ''                    }));                }            }            const shouldBuildAsSlots = isComponent &&                // Teleport is not a real component and has dedicated runtime handling                vnodeTag !== TELEPORT &&                // explained above.                vnodeTag !== KEEP_ALIVE;            if (shouldBuildAsSlots) {                const { slots, hasDynamicSlots } = buildSlots(node, context);                vnodeChildren = slots;                if (hasDynamicSlots) {                    patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;                }            }            else if (node.children.length === 1 && vnodeTag !== TELEPORT) {                const child = node.children[0];                const type = child.type;                // check for dynamic text children                const hasDynamicTextChild = type === 5 /* NodeTypes.INTERPOLATION */ ||                    type === 8 /* NodeTypes.COMPOUND_EXPRESSION */;                if (hasDynamicTextChild &&                    getConstantType(child, context) === 0 /* ConstantTypes.NOT_CONSTANT */) {                    patchFlag |= 1 /* PatchFlags.TEXT */;                }                // pass directly if the only child is a text node                // (plain / interpolation / expression)                if (hasDynamicTextChild || type === 2 /* NodeTypes.TEXT */) {                    vnodeChildren = child;                }                else {                    vnodeChildren = node.children;                }            }            else {                vnodeChildren = node.children;            }        }        // patchFlag & dynamicPropNames        if (patchFlag !== 0) {            {                if (patchFlag < 0) {                    // special flags (negative and mutually exclusive)                    vnodePatchFlag = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`;                }                else {                    // bitwise flags                    const flagNames = Object.keys(PatchFlagNames)                        .map(Number)                        .filter(n => n > 0 && patchFlag & n)                        .map(n => PatchFlagNames[n])                        .join(`, `);                    vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;                }            }            if (dynamicPropNames && dynamicPropNames.length) {                vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);            }        }        node.codegenNode = createVNodeCall(context, vnodeTag, vnodeProps, vnodeChildren, vnodePatchFlag, vnodeDynamicProps, vnodeDirectives, !!shouldUseBlock, false /* disableTracking */, isComponent, node.loc);    };};function resolveComponentType(node, context, ssr = false) {    let { tag } = node;    // 1. dynamic component    const isExplicitDynamic = isComponentTag(tag);    const isProp = findProp(node, 'is');    if (isProp) {        if (isExplicitDynamic ||            (false )) {            const exp = isProp.type === 6 /* NodeTypes.ATTRIBUTE */                ? isProp.value && createSimpleExpression(isProp.value.content, true)                : isProp.exp;            if (exp) {                return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [                    exp                ]);            }        }        else if (isProp.type === 6 /* NodeTypes.ATTRIBUTE */ &&            isProp.value.content.startsWith('vue:')) {            // <button is="vue:xxx">            // if not <component>, only is value that starts with "vue:" will be            // treated as component by the parse phase and reach here, unless it's            // compat mode where all is values are considered components            tag = isProp.value.content.slice(4);        }    }    // 1.5 v-is (TODO: Deprecate)    const isDir = !isExplicitDynamic && findDir(node, 'is');    if (isDir && isDir.exp) {        return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [            isDir.exp        ]);    }    // 2. built-in components (Teleport, Transition, KeepAlive, Suspense...)    const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);    if (builtIn) {        // built-ins are simply fallthroughs / have special handling during ssr        // so we don't need to import their runtime equivalents        if (!ssr)            context.helper(builtIn);        return builtIn;    }    // 3. user component (from setup bindings)    // this is skipped in browser build since browser builds do not perform    // binding analysis.    {        const fromSetup = resolveSetupReference(tag, context);        if (fromSetup) {            return fromSetup;        }        const dotIndex = tag.indexOf('.');        if (dotIndex > 0) {            const ns = resolveSetupReference(tag.slice(0, dotIndex), context);            if (ns) {                return ns + tag.slice(dotIndex);            }        }    }    // 4. Self referencing component (inferred from filename)    if (context.selfName &&        capitalize(camelize(tag)) === context.selfName) {        context.helper(RESOLVE_COMPONENT);        // codegen.ts has special check for __self postfix when generating        // component imports, which will pass additional `maybeSelfReference` flag        // to `resolveComponent`.        context.components.add(tag + `__self`);        return toValidAssetId(tag, `component`);    }    // 5. user component (resolve)    context.helper(RESOLVE_COMPONENT);    context.components.add(tag);    return toValidAssetId(tag, `component`);}function resolveSetupReference(name, context) {    const bindings = context.bindingMetadata;    if (!bindings || bindings.__isScriptSetup === false) {        return;    }    const camelName = camelize(name);    const PascalName = capitalize(camelName);    const checkType = (type) => {        if (bindings[name] === type) {            return name;        }        if (bindings[camelName] === type) {            return camelName;        }        if (bindings[PascalName] === type) {            return PascalName;        }    };    const fromConst = checkType("setup-const" /* BindingTypes.SETUP_CONST */) ||        checkType("setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */);    if (fromConst) {        return context.inline            ? // in inline mode, const setup bindings (e.g. imports) can be used as-is                fromConst            : `$setup[${JSON.stringify(fromConst)}]`;    }    const fromMaybeRef = checkType("setup-let" /* BindingTypes.SETUP_LET */) ||        checkType("setup-ref" /* BindingTypes.SETUP_REF */) ||        checkType("setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */);    if (fromMaybeRef) {        return context.inline            ? // setup scope bindings that may be refs need to be unrefed                `${context.helperString(UNREF)}(${fromMaybeRef})`            : `$setup[${JSON.stringify(fromMaybeRef)}]`;    }}function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {    const { tag, loc: elementLoc, children } = node;    let properties = [];    const mergeArgs = [];    const runtimeDirectives = [];    const hasChildren = children.length > 0;    let shouldUseBlock = false;    // patchFlag analysis    let patchFlag = 0;    let hasRef = false;    let hasClassBinding = false;    let hasStyleBinding = false;    let hasHydrationEventBinding = false;    let hasDynamicKeys = false;    let hasVnodeHook = false;    const dynamicPropNames = [];    const pushMergeArg = (arg) => {        if (properties.length) {            mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc));            properties = [];        }        if (arg)            mergeArgs.push(arg);    };    const analyzePatchFlag = ({ key, value }) => {        if (isStaticExp(key)) {            const name = key.content;            const isEventHandler = isOn(name);            if (isEventHandler &&                (!isComponent || isDynamicComponent) &&                // omit the flag for click handlers because hydration gives click                // dedicated fast path.                name.toLowerCase() !== 'onclick' &&                // omit v-model handlers                name !== 'onUpdate:modelValue' &&                // omit onVnodeXXX hooks                !isReservedProp(name)) {                hasHydrationEventBinding = true;            }            if (isEventHandler && isReservedProp(name)) {                hasVnodeHook = true;            }            if (value.type === 20 /* NodeTypes.JS_CACHE_EXPRESSION */ ||                ((value.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ ||                    value.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */) &&                    getConstantType(value, context) > 0)) {                // skip if the prop is a cached handler or has constant value                return;            }            if (name === 'ref') {                hasRef = true;            }            else if (name === 'class') {                hasClassBinding = true;            }            else if (name === 'style') {                hasStyleBinding = true;            }            else if (name !== 'key' && !dynamicPropNames.includes(name)) {                dynamicPropNames.push(name);            }            // treat the dynamic class and style binding of the component as dynamic props            if (isComponent &&                (name === 'class' || name === 'style') &&                !dynamicPropNames.includes(name)) {                dynamicPropNames.push(name);            }        }        else {            hasDynamicKeys = true;        }    };    for (let i = 0; i < props.length; i++) {        // static attribute        const prop = props[i];        if (prop.type === 6 /* NodeTypes.ATTRIBUTE */) {            const { loc, name, value } = prop;            let isStatic = true;            if (name === 'ref') {                hasRef = true;                if (context.scopes.vFor > 0) {                    properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true')));                }                // in inline mode there is no setupState object, so we can't use string                // keys to set the ref. Instead, we need to transform it to pass the                // actual ref instead.                if (value && context.inline) {                    const binding = context.bindingMetadata[value.content];                    if (binding === "setup-let" /* BindingTypes.SETUP_LET */ ||                        binding === "setup-ref" /* BindingTypes.SETUP_REF */ ||                        binding === "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */) {                        isStatic = false;                        properties.push(createObjectProperty(createSimpleExpression('ref_key', true), createSimpleExpression(value.content, true, value.loc)));                    }                }            }            // skip is on <component>, or is="vue:xxx"            if (name === 'is' &&                (isComponentTag(tag) ||                    (value && value.content.startsWith('vue:')) ||                    (false ))) {                continue;            }            properties.push(createObjectProperty(createSimpleExpression(name, true, getInnerRange(loc, 0, name.length)), createSimpleExpression(value ? value.content : '', isStatic, value ? value.loc : loc)));        }        else {            // directives            const { name, arg, exp, loc } = prop;            const isVBind = name === 'bind';            const isVOn = name === 'on';            // skip v-slot - it is handled by its dedicated transform.            if (name === 'slot') {                if (!isComponent) {                    context.onError(createCompilerError(40 /* ErrorCodes.X_V_SLOT_MISPLACED */, loc));                }                continue;            }            // skip v-once/v-memo - they are handled by dedicated transforms.            if (name === 'once' || name === 'memo') {                continue;            }            // skip v-is and :is on <component>            if (name === 'is' ||                (isVBind &&                    isStaticArgOf(arg, 'is') &&                    (isComponentTag(tag) ||                        (false )))) {                continue;            }            // skip v-on in SSR compilation            if (isVOn && ssr) {                continue;            }            if (            // #938: elements with dynamic keys should be forced into blocks            (isVBind && isStaticArgOf(arg, 'key')) ||                // inline before-update hooks need to force block so that it is invoked                // before children                (isVOn && hasChildren && isStaticArgOf(arg, 'vue:before-update'))) {                shouldUseBlock = true;            }            if (isVBind && isStaticArgOf(arg, 'ref') && context.scopes.vFor > 0) {                properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true')));            }            // special case for v-bind and v-on with no argument            if (!arg && (isVBind || isVOn)) {                hasDynamicKeys = true;                if (exp) {                    if (isVBind) {                        // have to merge early for compat build check                        pushMergeArg();                        mergeArgs.push(exp);                    }                    else {                        // v-on="obj" -> toHandlers(obj)                        pushMergeArg({                            type: 14 /* NodeTypes.JS_CALL_EXPRESSION */,                            loc,                            callee: context.helper(TO_HANDLERS),                            arguments: isComponent ? [exp] : [exp, `true`]                        });                    }                }                else {                    context.onError(createCompilerError(isVBind                        ? 34 /* ErrorCodes.X_V_BIND_NO_EXPRESSION */                        : 35 /* ErrorCodes.X_V_ON_NO_EXPRESSION */, loc));                }                continue;            }            const directiveTransform = context.directiveTransforms[name];            if (directiveTransform) {                // has built-in directive transform.                const { props, needRuntime } = directiveTransform(prop, node, context);                !ssr && props.forEach(analyzePatchFlag);                if (isVOn && arg && !isStaticExp(arg)) {                    pushMergeArg(createObjectExpression(props, elementLoc));                }                else {                    properties.push(...props);                }                if (needRuntime) {                    runtimeDirectives.push(prop);                    if (isSymbol(needRuntime)) {                        directiveImportMap.set(prop, needRuntime);                    }                }            }            else if (!isBuiltInDirective(name)) {                // no built-in transform, this is a user custom directive.                runtimeDirectives.push(prop);                // custom dirs may use beforeUpdate so they need to force blocks                // to ensure before-update gets called before children update                if (hasChildren) {                    shouldUseBlock = true;                }            }        }    }    let propsExpression = undefined;    // has v-bind="object" or v-on="object", wrap with mergeProps    if (mergeArgs.length) {        // close up any not-yet-merged props        pushMergeArg();        if (mergeArgs.length > 1) {            propsExpression = createCallExpression(context.helper(MERGE_PROPS), mergeArgs, elementLoc);        }        else {            // single v-bind with nothing else - no need for a mergeProps call            propsExpression = mergeArgs[0];        }    }    else if (properties.length) {        propsExpression = createObjectExpression(dedupeProperties(properties), elementLoc);    }    // patchFlag analysis    if (hasDynamicKeys) {        patchFlag |= 16 /* PatchFlags.FULL_PROPS */;    }    else {        if (hasClassBinding && !isComponent) {            patchFlag |= 2 /* PatchFlags.CLASS */;        }        if (hasStyleBinding && !isComponent) {            patchFlag |= 4 /* PatchFlags.STYLE */;        }        if (dynamicPropNames.length) {            patchFlag |= 8 /* PatchFlags.PROPS */;        }        if (hasHydrationEventBinding) {            patchFlag |= 32 /* PatchFlags.HYDRATE_EVENTS */;        }    }    if (!shouldUseBlock &&        (patchFlag === 0 || patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) &&        (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {        patchFlag |= 512 /* PatchFlags.NEED_PATCH */;    }    // pre-normalize props, SSR is skipped for now    if (!context.inSSR && propsExpression) {        switch (propsExpression.type) {            case 15 /* NodeTypes.JS_OBJECT_EXPRESSION */:                // means that there is no v-bind,                // but still need to deal with dynamic key binding                let classKeyIndex = -1;                let styleKeyIndex = -1;                let hasDynamicKey = false;                for (let i = 0; i < propsExpression.properties.length; i++) {                    const key = propsExpression.properties[i].key;                    if (isStaticExp(key)) {                        if (key.content === 'class') {                            classKeyIndex = i;                        }                        else if (key.content === 'style') {                            styleKeyIndex = i;                        }                    }                    else if (!key.isHandlerKey) {                        hasDynamicKey = true;                    }                }                const classProp = propsExpression.properties[classKeyIndex];                const styleProp = propsExpression.properties[styleKeyIndex];                // no dynamic key                if (!hasDynamicKey) {                    if (classProp && !isStaticExp(classProp.value)) {                        classProp.value = createCallExpression(context.helper(NORMALIZE_CLASS), [classProp.value]);                    }                    if (styleProp &&                        // the static style is compiled into an object,                        // so use `hasStyleBinding` to ensure that it is a dynamic style binding                        (hasStyleBinding ||                            (styleProp.value.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&                                styleProp.value.content.trim()[0] === `[`) ||                            // v-bind:style and style both exist,                            // v-bind:style with static literal object                            styleProp.value.type === 17 /* NodeTypes.JS_ARRAY_EXPRESSION */)) {                        styleProp.value = createCallExpression(context.helper(NORMALIZE_STYLE), [styleProp.value]);                    }                }                else {                    // dynamic key binding, wrap with `normalizeProps`                    propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [propsExpression]);                }                break;            case 14 /* NodeTypes.JS_CALL_EXPRESSION */:                // mergeProps call, do nothing                break;            default:                // single v-bind                propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [                    createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [                        propsExpression                    ])                ]);                break;        }    }    return {        props: propsExpression,        directives: runtimeDirectives,        patchFlag,        dynamicPropNames,        shouldUseBlock    };}// Dedupe props in an object literal.// Literal duplicated attributes would have been warned during the parse phase,// however, it's possible to encounter duplicated `onXXX` handlers with different// modifiers. We also need to merge static and dynamic class / style attributes.// - onXXX handlers / style: merge into array// - class: merge into single expression with concatenationfunction dedupeProperties(properties) {    const knownProps = new Map();    const deduped = [];    for (let i = 0; i < properties.length; i++) {        const prop = properties[i];        // dynamic keys are always allowed        if (prop.key.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */ || !prop.key.isStatic) {            deduped.push(prop);            continue;        }        const name = prop.key.content;        const existing = knownProps.get(name);        if (existing) {            if (name === 'style' || name === 'class' || isOn(name)) {                mergeAsArray(existing, prop);            }            // unexpected duplicate, should have emitted error during parse        }        else {            knownProps.set(name, prop);            deduped.push(prop);        }    }    return deduped;}function mergeAsArray(existing, incoming) {    if (existing.value.type === 17 /* NodeTypes.JS_ARRAY_EXPRESSION */) {        existing.value.elements.push(incoming.value);    }    else {        existing.value = createArrayExpression([existing.value, incoming.value], existing.loc);    }}function buildDirectiveArgs(dir, context) {    const dirArgs = [];    const runtime = directiveImportMap.get(dir);    if (runtime) {        // built-in directive with runtime        dirArgs.push(context.helperString(runtime));    }    else {        // user directive.        // see if we have directives exposed via <script setup>        const fromSetup = resolveSetupReference('v-' + dir.name, context);        if (fromSetup) {            dirArgs.push(fromSetup);        }        else {            // inject statement for resolving directive            context.helper(RESOLVE_DIRECTIVE);            context.directives.add(dir.name);            dirArgs.push(toValidAssetId(dir.name, `directive`));        }    }    const { loc } = dir;    if (dir.exp)        dirArgs.push(dir.exp);    if (dir.arg) {        if (!dir.exp) {            dirArgs.push(`void 0`);        }        dirArgs.push(dir.arg);    }    if (Object.keys(dir.modifiers).length) {        if (!dir.arg) {            if (!dir.exp) {                dirArgs.push(`void 0`);            }            dirArgs.push(`void 0`);        }        const trueExpression = createSimpleExpression(`true`, false, loc);        dirArgs.push(createObjectExpression(dir.modifiers.map(modifier => createObjectProperty(modifier, trueExpression)), loc));    }    return createArrayExpression(dirArgs, dir.loc);}function stringifyDynamicPropNames(props) {    let propsNamesString = `[`;    for (let i = 0, l = props.length; i < l; i++) {        propsNamesString += JSON.stringify(props[i]);        if (i < l - 1)            propsNamesString += ', ';    }    return propsNamesString + `]`;}function isComponentTag(tag) {    return tag === 'component' || tag === 'Component';}const transformSlotOutlet = (node, context) => {    if (isSlotOutlet(node)) {        const { children, loc } = node;        const { slotName, slotProps } = processSlotOutlet(node, context);        const slotArgs = [            context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,            slotName,            '{}',            'undefined',            'true'        ];        let expectedLen = 2;        if (slotProps) {            slotArgs[2] = slotProps;            expectedLen = 3;        }        if (children.length) {            slotArgs[3] = createFunctionExpression([], children, false, false, loc);            expectedLen = 4;        }        if (context.scopeId && !context.slotted) {            expectedLen = 5;        }        slotArgs.splice(expectedLen); // remove unused arguments        node.codegenNode = createCallExpression(context.helper(RENDER_SLOT), slotArgs, loc);    }};function processSlotOutlet(node, context) {    let slotName = `"default"`;    let slotProps = undefined;    const nonNameProps = [];    for (let i = 0; i < node.props.length; i++) {        const p = node.props[i];        if (p.type === 6 /* NodeTypes.ATTRIBUTE */) {            if (p.value) {                if (p.name === 'name') {                    slotName = JSON.stringify(p.value.content);                }                else {                    p.name = camelize(p.name);                    nonNameProps.push(p);                }            }        }        else {            if (p.name === 'bind' && isStaticArgOf(p.arg, 'name')) {                if (p.exp)                    slotName = p.exp;            }            else {                if (p.name === 'bind' && p.arg && isStaticExp(p.arg)) {                    p.arg.content = camelize(p.arg.content);                }                nonNameProps.push(p);            }        }    }    if (nonNameProps.length > 0) {        const { props, directives } = buildProps(node, context, nonNameProps, false, false);        slotProps = props;        if (directives.length) {            context.onError(createCompilerError(36 /* ErrorCodes.X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */, directives[0].loc));        }    }    return {        slotName,        slotProps    };}const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;const transformOn = (dir, node, context, augmentor) => {    const { loc, modifiers, arg } = dir;    if (!dir.exp && !modifiers.length) {        context.onError(createCompilerError(35 /* ErrorCodes.X_V_ON_NO_EXPRESSION */, loc));    }    let eventName;    if (arg.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {        if (arg.isStatic) {            let rawName = arg.content;            // TODO deprecate @vnodeXXX usage            if (rawName.startsWith('vue:')) {                rawName = `vnode-${rawName.slice(4)}`;            }            const eventString = node.tagType !== 0 /* ElementTypes.ELEMENT */ ||                rawName.startsWith('vnode') ||                !/[A-Z]/.test(rawName)                ? // for non-element and vnode lifecycle event listeners, auto convert                    // it to camelCase. See issue #2249                    toHandlerKey(camelize(rawName))                : // preserve case for plain element listeners that have uppercase                    // letters, as these may be custom elements' custom events                    `on:${rawName}`;            eventName = createSimpleExpression(eventString, true, arg.loc);        }        else {            // #2388            eventName = createCompoundExpression([                `${context.helperString(TO_HANDLER_KEY)}(`,                arg,                `)`            ]);        }    }    else {        // already a compound expression.        eventName = arg;        eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);        eventName.children.push(`)`);    }    // handler processing    let exp = dir.exp;    if (exp && !exp.content.trim()) {        exp = undefined;    }    let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;    if (exp) {        const isMemberExp = isMemberExpression(exp.content, context);        const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));        const hasMultipleStatements = exp.content.includes(`;`);        // process the expression since it's been skipped        if (context.prefixIdentifiers) {            isInlineStatement && context.addIdentifiers(`$event`);            exp = dir.exp = processExpression(exp, context, false, hasMultipleStatements);            isInlineStatement && context.removeIdentifiers(`$event`);            // with scope analysis, the function is hoistable if it has no reference            // to scope variables.            shouldCache =                context.cacheHandlers &&                    // unnecessary to cache inside v-once                    !context.inVOnce &&                    // runtime constants don't need to be cached                    // (this is analyzed by compileScript in SFC <script setup>)                    !(exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ && exp.constType > 0) &&                    // #1541 bail if this is a member exp handler passed to a component -                    // we need to use the original function to preserve arity,                    // e.g. <transition> relies on checking cb.length to determine                    // transition end handling. Inline function is ok since its arity                    // is preserved even when cached.                    !(isMemberExp && node.tagType === 1 /* ElementTypes.COMPONENT */) &&                    // bail if the function references closure variables (v-for, v-slot)                    // it must be passed fresh to avoid stale values.                    !hasScopeRef(exp, context.identifiers);            // If the expression is optimizable and is a member expression pointing            // to a function, turn it into invocation (and wrap in an arrow function            // below) so that it always accesses the latest value when called - thus            // avoiding the need to be patched.            if (shouldCache && isMemberExp) {                if (exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {                    exp.content = `${exp.content} && ${exp.content}(...args)`;                }                else {                    exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`];                }            }        }        if (isInlineStatement || (shouldCache && isMemberExp)) {            // wrap inline statement in a function expression            exp = createCompoundExpression([                `${isInlineStatement                    ? context.isTS                        ? `($event: any)`                        : `$event`                    : `${context.isTS ? `\n//@ts-ignore\n` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,                exp,                hasMultipleStatements ? `}` : `)`            ]);        }    }    let ret = {        props: [            createObjectProperty(eventName, exp || createSimpleExpression(`() => {}`, false, loc))        ]    };    // apply extended compiler augmentor    if (augmentor) {        ret = augmentor(ret);    }    if (shouldCache) {        // cache handlers so that it's always the same handler being passed down.        // this avoids unnecessary re-renders when users use inline handlers on        // components.        ret.props[0].value = context.cache(ret.props[0].value);    }    // mark the key as handler for props normalization check    ret.props.forEach(p => (p.key.isHandlerKey = true));    return ret;};// v-bind without arg is handled directly in ./transformElements.ts due to it affecting// codegen for the entire props object. This transform here is only for v-bind// *with* args.const transformBind = (dir, _node, context) => {    const { exp, modifiers, loc } = dir;    const arg = dir.arg;    if (arg.type !== 4 /* NodeTypes.SIMPLE_EXPRESSION */) {        arg.children.unshift(`(`);        arg.children.push(`) || ""`);    }    else if (!arg.isStatic) {        arg.content = `${arg.content} || ""`;    }    // .sync is replaced by v-model:arg    if (modifiers.includes('camel')) {        if (arg.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {            if (arg.isStatic) {                arg.content = camelize(arg.content);            }            else {                arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;            }        }        else {            arg.children.unshift(`${context.helperString(CAMELIZE)}(`);            arg.children.push(`)`);        }    }    if (!context.inSSR) {        if (modifiers.includes('prop')) {            injectPrefix(arg, '.');        }        if (modifiers.includes('attr')) {            injectPrefix(arg, '^');        }    }    if (!exp ||        (exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ && !exp.content.trim())) {        context.onError(createCompilerError(34 /* ErrorCodes.X_V_BIND_NO_EXPRESSION */, loc));        return {            props: [createObjectProperty(arg, createSimpleExpression('', true, loc))]        };    }    return {        props: [createObjectProperty(arg, exp)]    };};const injectPrefix = (arg, prefix) => {    if (arg.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {        if (arg.isStatic) {            arg.content = prefix + arg.content;        }        else {            arg.content = `\`${prefix}\${${arg.content}}\``;        }    }    else {        arg.children.unshift(`'${prefix}' + (`);        arg.children.push(`)`);    }};// Merge adjacent text nodes and expressions into a single expression// e.g. <div>abc {{ d }} {{ e }}</div> should have a single expression node as child.const transformText = (node, context) => {    if (node.type === 0 /* NodeTypes.ROOT */ ||        node.type === 1 /* NodeTypes.ELEMENT */ ||        node.type === 11 /* NodeTypes.FOR */ ||        node.type === 10 /* NodeTypes.IF_BRANCH */) {        // perform the transform on node exit so that all expressions have already        // been processed.        return () => {            const children = node.children;            let currentContainer = undefined;            let hasText = false;            for (let i = 0; i < children.length; i++) {                const child = children[i];                if (isText(child)) {                    hasText = true;                    for (let j = i + 1; j < children.length; j++) {                        const next = children[j];                        if (isText(next)) {                            if (!currentContainer) {                                currentContainer = children[i] = createCompoundExpression([child], child.loc);                            }                            // merge adjacent text node into current                            currentContainer.children.push(` + `, next);                            children.splice(j, 1);                            j--;                        }                        else {                            currentContainer = undefined;                            break;                        }                    }                }            }            if (!hasText ||                // if this is a plain element with a single text child, leave it                // as-is since the runtime has dedicated fast path for this by directly                // setting textContent of the element.                // for component root it's always normalized anyway.                (children.length === 1 &&                    (node.type === 0 /* NodeTypes.ROOT */ ||                        (node.type === 1 /* NodeTypes.ELEMENT */ &&                            node.tagType === 0 /* ElementTypes.ELEMENT */ &&                            // #3756                            // custom directives can potentially add DOM elements arbitrarily,                            // we need to avoid setting textContent of the element at runtime                            // to avoid accidentally overwriting the DOM elements added                            // by the user through custom directives.                            !node.props.find(p => p.type === 7 /* NodeTypes.DIRECTIVE */ &&                                !context.directiveTransforms[p.name]) &&                            // in compat mode, <template> tags with no special directives                            // will be rendered as a fragment so its children must be                            // converted into vnodes.                            !(false ))))) {                return;            }            // pre-convert text nodes into createTextVNode(text) calls to avoid            // runtime normalization.            for (let i = 0; i < children.length; i++) {                const child = children[i];                if (isText(child) || child.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */) {                    const callArgs = [];                    // createTextVNode defaults to single whitespace, so if it is a                    // single space the code could be an empty call to save bytes.                    if (child.type !== 2 /* NodeTypes.TEXT */ || child.content !== ' ') {                        callArgs.push(child);                    }                    // mark dynamic text with flag so it gets patched inside a block                    if (!context.ssr &&                        getConstantType(child, context) === 0 /* ConstantTypes.NOT_CONSTANT */) {                        callArgs.push(1 /* PatchFlags.TEXT */ +                            (` /* ${PatchFlagNames[1 /* PatchFlags.TEXT */]} */` ));                    }                    children[i] = {                        type: 12 /* NodeTypes.TEXT_CALL */,                        content: child,                        loc: child.loc,                        codegenNode: createCallExpression(context.helper(CREATE_TEXT), callArgs)                    };                }            }        };    }};const seen = new WeakSet();const transformOnce = (node, context) => {    if (node.type === 1 /* NodeTypes.ELEMENT */ && findDir(node, 'once', true)) {        if (seen.has(node) || context.inVOnce) {            return;        }        seen.add(node);        context.inVOnce = true;        context.helper(SET_BLOCK_TRACKING);        return () => {            context.inVOnce = false;            const cur = context.currentNode;            if (cur.codegenNode) {                cur.codegenNode = context.cache(cur.codegenNode, true /* isVNode */);            }        };    }};const transformModel = (dir, node, context) => {    const { exp, arg } = dir;    if (!exp) {        context.onError(createCompilerError(41 /* ErrorCodes.X_V_MODEL_NO_EXPRESSION */, dir.loc));        return createTransformProps();    }    const rawExp = exp.loc.source;    const expString = exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ ? exp.content : rawExp;    // im SFC <script setup> inline mode, the exp may have been transformed into    // _unref(exp)    const bindingType = context.bindingMetadata[rawExp];    // check props    if (bindingType === "props" /* BindingTypes.PROPS */ ||        bindingType === "props-aliased" /* BindingTypes.PROPS_ALIASED */) {        context.onError(createCompilerError(44 /* ErrorCodes.X_V_MODEL_ON_PROPS */, exp.loc));        return createTransformProps();    }    const maybeRef = context.inline &&        (bindingType === "setup-let" /* BindingTypes.SETUP_LET */ ||            bindingType === "setup-ref" /* BindingTypes.SETUP_REF */ ||            bindingType === "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */);    if (!expString.trim() ||        (!isMemberExpression(expString, context) && !maybeRef)) {        context.onError(createCompilerError(42 /* ErrorCodes.X_V_MODEL_MALFORMED_EXPRESSION */, exp.loc));        return createTransformProps();    }    if (context.prefixIdentifiers &&        isSimpleIdentifier(expString) &&        context.identifiers[expString]) {        context.onError(createCompilerError(43 /* ErrorCodes.X_V_MODEL_ON_SCOPE_VARIABLE */, exp.loc));        return createTransformProps();    }    const propName = arg ? arg : createSimpleExpression('modelValue', true);    const eventName = arg        ? isStaticExp(arg)            ? `onUpdate:${arg.content}`            : createCompoundExpression(['"onUpdate:" + ', arg])        : `onUpdate:modelValue`;    let assignmentExp;    const eventArg = context.isTS ? `($event: any)` : `$event`;    if (maybeRef) {        if (bindingType === "setup-ref" /* BindingTypes.SETUP_REF */) {            // v-model used on known ref.            assignmentExp = createCompoundExpression([                `${eventArg} => ((`,                createSimpleExpression(rawExp, false, exp.loc),                `).value = $event)`            ]);        }        else {            // v-model used on a potentially ref binding in <script setup> inline mode.            // the assignment needs to check whether the binding is actually a ref.            const altAssignment = bindingType === "setup-let" /* BindingTypes.SETUP_LET */ ? `${rawExp} = $event` : `null`;            assignmentExp = createCompoundExpression([                `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`,                createSimpleExpression(rawExp, false, exp.loc),                `).value = $event : ${altAssignment})`            ]);        }    }    else {        assignmentExp = createCompoundExpression([            `${eventArg} => ((`,            exp,            `) = $event)`        ]);    }    const props = [        // modelValue: foo        createObjectProperty(propName, dir.exp),        // "onUpdate:modelValue": $event => (foo = $event)        createObjectProperty(eventName, assignmentExp)    ];    // cache v-model handler if applicable (when it doesn't refer any scope vars)    if (context.prefixIdentifiers &&        !context.inVOnce &&        context.cacheHandlers &&        !hasScopeRef(exp, context.identifiers)) {        props[1].value = context.cache(props[1].value);    }    // modelModifiers: { foo: true, "bar-baz": true }    if (dir.modifiers.length && node.tagType === 1 /* ElementTypes.COMPONENT */) {        const modifiers = dir.modifiers            .map(m => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`)            .join(`, `);        const modifiersKey = arg            ? isStaticExp(arg)                ? `${arg.content}Modifiers`                : createCompoundExpression([arg, ' + "Modifiers"'])            : `modelModifiers`;        props.push(createObjectProperty(modifiersKey, createSimpleExpression(`{ ${modifiers} }`, false, dir.loc, 2 /* ConstantTypes.CAN_HOIST */)));    }    return createTransformProps(props);};function createTransformProps(props = []) {    return { props };}const seen$1 = new WeakSet();const transformMemo = (node, context) => {    if (node.type === 1 /* NodeTypes.ELEMENT */) {        const dir = findDir(node, 'memo');        if (!dir || seen$1.has(node)) {            return;        }        seen$1.add(node);        return () => {            const codegenNode = node.codegenNode ||                context.currentNode.codegenNode;            if (codegenNode && codegenNode.type === 13 /* NodeTypes.VNODE_CALL */) {                // non-component sub tree should be turned into a block                if (node.tagType !== 1 /* ElementTypes.COMPONENT */) {                    makeBlock(codegenNode, context);                }                node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [                    dir.exp,                    createFunctionExpression(undefined, codegenNode),                    `_cache`,                    String(context.cached++)                ]);            }        };    }};function getBaseTransformPreset(prefixIdentifiers) {    return [        [            transformOnce,            transformIf,            transformMemo,            transformFor,            ...([]),            ...(prefixIdentifiers                ? [                    // order is important                    trackVForSlotScopes,                    transformExpression                ]                : []),            transformSlotOutlet,            transformElement,            trackSlotScopes,            transformText        ],        {            on: transformOn,            bind: transformBind,            model: transformModel        }    ];}// we name it `baseCompile` so that higher order compilers like// @vue/compiler-dom can export `compile` while re-exporting everything else.function baseCompile(template, options = {}) {    const onError = options.onError || defaultOnError;    const isModuleMode = options.mode === 'module';    const prefixIdentifiers = (options.prefixIdentifiers === true || isModuleMode);    if (!prefixIdentifiers && options.cacheHandlers) {        onError(createCompilerError(49 /* ErrorCodes.X_CACHE_HANDLER_NOT_SUPPORTED */));    }    if (options.scopeId && !isModuleMode) {        onError(createCompilerError(50 /* ErrorCodes.X_SCOPE_ID_NOT_SUPPORTED */));    }    const ast = isString(template) ? baseParse(template, options) : template;    const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers);    if (options.isTS) {        const { expressionPlugins } = options;        if (!expressionPlugins || !expressionPlugins.includes('typescript')) {            options.expressionPlugins = [...(expressionPlugins || []), 'typescript'];        }    }    transform(ast, extend({}, options, {        prefixIdentifiers,        nodeTransforms: [            ...nodeTransforms,            ...(options.nodeTransforms || []) // user transforms        ],        directiveTransforms: extend({}, directiveTransforms, options.directiveTransforms || {} // user transforms        )    }));    return generate(ast, extend({}, options, {        prefixIdentifiers    }));}const noopDirectiveTransform = () => ({ props: [] });const V_MODEL_RADIO = Symbol(`vModelRadio` );const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` );const V_MODEL_TEXT = Symbol(`vModelText` );const V_MODEL_SELECT = Symbol(`vModelSelect` );const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` );const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` );const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` );const V_SHOW = Symbol(`vShow` );const TRANSITION = Symbol(`Transition` );const TRANSITION_GROUP = Symbol(`TransitionGroup` );registerRuntimeHelpers({    [V_MODEL_RADIO]: `vModelRadio`,    [V_MODEL_CHECKBOX]: `vModelCheckbox`,    [V_MODEL_TEXT]: `vModelText`,    [V_MODEL_SELECT]: `vModelSelect`,    [V_MODEL_DYNAMIC]: `vModelDynamic`,    [V_ON_WITH_MODIFIERS]: `withModifiers`,    [V_ON_WITH_KEYS]: `withKeys`,    [V_SHOW]: `vShow`,    [TRANSITION]: `Transition`,    [TRANSITION_GROUP]: `TransitionGroup`});var namedCharacterReferences = {	GT: ">",	gt: ">",	LT: "<",	lt: "<",	"ac;": "∾",	"af;": "",	AMP: "&",	amp: "&",	"ap;": "≈",	"DD;": "ⅅ",	"dd;": "ⅆ",	deg: "°",	"ee;": "ⅇ",	"eg;": "⪚",	"el;": "⪙",	ETH: "Ð",	eth: "ð",	"gE;": "≧",	"ge;": "≥",	"Gg;": "⋙",	"gg;": "≫",	"gl;": "≷",	"GT;": ">",	"Gt;": "≫",	"gt;": ">",	"ic;": "",	"ii;": "ⅈ",	"Im;": "ℑ",	"in;": "∈",	"it;": "",	"lE;": "≦",	"le;": "≤",	"lg;": "≶",	"Ll;": "⋘",	"ll;": "≪",	"LT;": "<",	"Lt;": "≪",	"lt;": "<",	"mp;": "∓",	"Mu;": "Μ",	"mu;": "μ",	"ne;": "≠",	"ni;": "∋",	not: "¬",	"Nu;": "Ν",	"nu;": "ν",	"Or;": "⩔",	"or;": "∨",	"oS;": "Ⓢ",	"Pi;": "Π",	"pi;": "π",	"pm;": "±",	"Pr;": "⪻",	"pr;": "≺",	"Re;": "ℜ",	REG: "®",	reg: "®",	"rx;": "℞",	"Sc;": "⪼",	"sc;": "≻",	shy: "",	uml: "¨",	"wp;": "℘",	"wr;": "≀",	"Xi;": "Ξ",	"xi;": "ξ",	yen: "¥",	"acd;": "∿",	"acE;": "∾̳",	"Acy;": "А",	"acy;": "а",	"Afr;": "𝔄",	"afr;": "𝔞",	"AMP;": "&",	"amp;": "&",	"And;": "⩓",	"and;": "∧",	"ang;": "∠",	"apE;": "⩰",	"ape;": "≊",	"ast;": "*",	Auml: "Ä",	auml: "ä",	"Bcy;": "Б",	"bcy;": "б",	"Bfr;": "𝔅",	"bfr;": "𝔟",	"bne;": "=⃥",	"bot;": "⊥",	"Cap;": "⋒",	"cap;": "∩",	cent: "¢",	"Cfr;": "ℭ",	"cfr;": "𝔠",	"Chi;": "Χ",	"chi;": "χ",	"cir;": "○",	COPY: "©",	copy: "©",	"Cup;": "⋓",	"cup;": "∪",	"Dcy;": "Д",	"dcy;": "д",	"deg;": "°",	"Del;": "∇",	"Dfr;": "𝔇",	"dfr;": "𝔡",	"die;": "¨",	"div;": "÷",	"Dot;": "¨",	"dot;": "˙",	"Ecy;": "Э",	"ecy;": "э",	"Efr;": "𝔈",	"efr;": "𝔢",	"egs;": "⪖",	"ell;": "ℓ",	"els;": "⪕",	"ENG;": "Ŋ",	"eng;": "ŋ",	"Eta;": "Η",	"eta;": "η",	"ETH;": "Ð",	"eth;": "ð",	Euml: "Ë",	euml: "ë",	"Fcy;": "Ф",	"fcy;": "ф",	"Ffr;": "𝔉",	"ffr;": "𝔣",	"gap;": "⪆",	"Gcy;": "Г",	"gcy;": "г",	"gEl;": "⪌",	"gel;": "⋛",	"geq;": "≥",	"ges;": "⩾",	"Gfr;": "𝔊",	"gfr;": "𝔤",	"ggg;": "⋙",	"gla;": "⪥",	"glE;": "⪒",	"glj;": "⪤",	"gnE;": "≩",	"gne;": "⪈",	"Hat;": "^",	"Hfr;": "ℌ",	"hfr;": "𝔥",	"Icy;": "И",	"icy;": "и",	"iff;": "⇔",	"Ifr;": "ℑ",	"ifr;": "𝔦",	"Int;": "∬",	"int;": "∫",	Iuml: "Ï",	iuml: "ï",	"Jcy;": "Й",	"jcy;": "й",	"Jfr;": "𝔍",	"jfr;": "𝔧",	"Kcy;": "К",	"kcy;": "к",	"Kfr;": "𝔎",	"kfr;": "𝔨",	"lap;": "⪅",	"lat;": "⪫",	"Lcy;": "Л",	"lcy;": "л",	"lEg;": "⪋",	"leg;": "⋚",	"leq;": "≤",	"les;": "⩽",	"Lfr;": "𝔏",	"lfr;": "𝔩",	"lgE;": "⪑",	"lnE;": "≨",	"lne;": "⪇",	"loz;": "◊",	"lrm;": "",	"Lsh;": "↰",	"lsh;": "↰",	macr: "¯",	"Map;": "⤅",	"map;": "↦",	"Mcy;": "М",	"mcy;": "м",	"Mfr;": "𝔐",	"mfr;": "𝔪",	"mho;": "℧",	"mid;": "∣",	"nap;": "≉",	nbsp: " ",	"Ncy;": "Н",	"ncy;": "н",	"Nfr;": "𝔑",	"nfr;": "𝔫",	"ngE;": "≧̸",	"nge;": "≱",	"nGg;": "⋙̸",	"nGt;": "≫⃒",	"ngt;": "≯",	"nis;": "⋼",	"niv;": "∋",	"nlE;": "≦̸",	"nle;": "≰",	"nLl;": "⋘̸",	"nLt;": "≪⃒",	"nlt;": "≮",	"Not;": "⫬",	"not;": "¬",	"npr;": "⊀",	"nsc;": "⊁",	"num;": "#",	"Ocy;": "О",	"ocy;": "о",	"Ofr;": "𝔒",	"ofr;": "𝔬",	"ogt;": "⧁",	"ohm;": "Ω",	"olt;": "⧀",	"ord;": "⩝",	ordf: "ª",	ordm: "º",	"orv;": "⩛",	Ouml: "Ö",	ouml: "ö",	"par;": "∥",	para: "¶",	"Pcy;": "П",	"pcy;": "п",	"Pfr;": "𝔓",	"pfr;": "𝔭",	"Phi;": "Φ",	"phi;": "φ",	"piv;": "ϖ",	"prE;": "⪳",	"pre;": "⪯",	"Psi;": "Ψ",	"psi;": "ψ",	"Qfr;": "𝔔",	"qfr;": "𝔮",	QUOT: "\"",	quot: "\"",	"Rcy;": "Р",	"rcy;": "р",	"REG;": "®",	"reg;": "®",	"Rfr;": "ℜ",	"rfr;": "𝔯",	"Rho;": "Ρ",	"rho;": "ρ",	"rlm;": "",	"Rsh;": "↱",	"rsh;": "↱",	"scE;": "⪴",	"sce;": "⪰",	"Scy;": "С",	"scy;": "с",	sect: "§",	"Sfr;": "𝔖",	"sfr;": "𝔰",	"shy;": "",	"sim;": "∼",	"smt;": "⪪",	"sol;": "/",	"squ;": "□",	"Sub;": "⋐",	"sub;": "⊂",	"Sum;": "∑",	"sum;": "∑",	"Sup;": "⋑",	"sup;": "⊃",	sup1: "¹",	sup2: "²",	sup3: "³",	"Tab;": "\t",	"Tau;": "Τ",	"tau;": "τ",	"Tcy;": "Т",	"tcy;": "т",	"Tfr;": "𝔗",	"tfr;": "𝔱",	"top;": "⊤",	"Ucy;": "У",	"ucy;": "у",	"Ufr;": "𝔘",	"ufr;": "𝔲",	"uml;": "¨",	Uuml: "Ü",	uuml: "ü",	"Vcy;": "В",	"vcy;": "в",	"Vee;": "⋁",	"vee;": "∨",	"Vfr;": "𝔙",	"vfr;": "𝔳",	"Wfr;": "𝔚",	"wfr;": "𝔴",	"Xfr;": "𝔛",	"xfr;": "𝔵",	"Ycy;": "Ы",	"ycy;": "ы",	"yen;": "¥",	"Yfr;": "𝔜",	"yfr;": "𝔶",	yuml: "ÿ",	"Zcy;": "З",	"zcy;": "з",	"Zfr;": "ℨ",	"zfr;": "𝔷",	"zwj;": "",	Acirc: "Â",	acirc: "â",	acute: "´",	AElig: "Æ",	aelig: "æ",	"andd;": "⩜",	"andv;": "⩚",	"ange;": "⦤",	"Aopf;": "𝔸",	"aopf;": "𝕒",	"apid;": "≋",	"apos;": "'",	Aring: "Å",	aring: "å",	"Ascr;": "𝒜",	"ascr;": "𝒶",	"Auml;": "Ä",	"auml;": "ä",	"Barv;": "⫧",	"bbrk;": "⎵",	"Beta;": "Β",	"beta;": "β",	"beth;": "ℶ",	"bNot;": "⫭",	"bnot;": "⌐",	"Bopf;": "𝔹",	"bopf;": "𝕓",	"boxH;": "═",	"boxh;": "─",	"boxV;": "║",	"boxv;": "│",	"Bscr;": "ℬ",	"bscr;": "𝒷",	"bsim;": "∽",	"bsol;": "\\",	"bull;": "•",	"bump;": "≎",	"caps;": "∩︀",	"Cdot;": "Ċ",	"cdot;": "ċ",	cedil: "¸",	"cent;": "¢",	"CHcy;": "Ч",	"chcy;": "ч",	"circ;": "ˆ",	"cirE;": "⧃",	"cire;": "≗",	"comp;": "∁",	"cong;": "≅",	"Copf;": "ℂ",	"copf;": "𝕔",	"COPY;": "©",	"copy;": "©",	"Cscr;": "𝒞",	"cscr;": "𝒸",	"csub;": "⫏",	"csup;": "⫐",	"cups;": "∪︀",	"Darr;": "↡",	"dArr;": "⇓",	"darr;": "↓",	"dash;": "‐",	"dHar;": "⥥",	"diam;": "⋄",	"DJcy;": "Ђ",	"djcy;": "ђ",	"Dopf;": "𝔻",	"dopf;": "𝕕",	"Dscr;": "𝒟",	"dscr;": "𝒹",	"DScy;": "Ѕ",	"dscy;": "ѕ",	"dsol;": "⧶",	"dtri;": "▿",	"DZcy;": "Џ",	"dzcy;": "џ",	"ecir;": "≖",	Ecirc: "Ê",	ecirc: "ê",	"Edot;": "Ė",	"eDot;": "≑",	"edot;": "ė",	"emsp;": " ",	"ensp;": " ",	"Eopf;": "𝔼",	"eopf;": "𝕖",	"epar;": "⋕",	"epsi;": "ε",	"Escr;": "ℰ",	"escr;": "ℯ",	"Esim;": "⩳",	"esim;": "≂",	"Euml;": "Ë",	"euml;": "ë",	"euro;": "€",	"excl;": "!",	"flat;": "♭",	"fnof;": "ƒ",	"Fopf;": "𝔽",	"fopf;": "𝕗",	"fork;": "⋔",	"Fscr;": "ℱ",	"fscr;": "𝒻",	"Gdot;": "Ġ",	"gdot;": "ġ",	"geqq;": "≧",	"gesl;": "⋛︀",	"GJcy;": "Ѓ",	"gjcy;": "ѓ",	"gnap;": "⪊",	"gneq;": "⪈",	"Gopf;": "𝔾",	"gopf;": "𝕘",	"Gscr;": "𝒢",	"gscr;": "ℊ",	"gsim;": "≳",	"gtcc;": "⪧",	"gvnE;": "≩︀",	"half;": "½",	"hArr;": "⇔",	"harr;": "↔",	"hbar;": "ℏ",	"Hopf;": "ℍ",	"hopf;": "𝕙",	"Hscr;": "ℋ",	"hscr;": "𝒽",	Icirc: "Î",	icirc: "î",	"Idot;": "İ",	"IEcy;": "Е",	"iecy;": "е",	iexcl: "¡",	"imof;": "⊷",	"IOcy;": "Ё",	"iocy;": "ё",	"Iopf;": "𝕀",	"iopf;": "𝕚",	"Iota;": "Ι",	"iota;": "ι",	"Iscr;": "ℐ",	"iscr;": "𝒾",	"isin;": "∈",	"Iuml;": "Ï",	"iuml;": "ï",	"Jopf;": "𝕁",	"jopf;": "𝕛",	"Jscr;": "𝒥",	"jscr;": "𝒿",	"KHcy;": "Х",	"khcy;": "х",	"KJcy;": "Ќ",	"kjcy;": "ќ",	"Kopf;": "𝕂",	"kopf;": "𝕜",	"Kscr;": "𝒦",	"kscr;": "𝓀",	"Lang;": "⟪",	"lang;": "⟨",	laquo: "«",	"Larr;": "↞",	"lArr;": "⇐",	"larr;": "←",	"late;": "⪭",	"lcub;": "{",	"ldca;": "⤶",	"ldsh;": "↲",	"leqq;": "≦",	"lesg;": "⋚︀",	"lHar;": "⥢",	"LJcy;": "Љ",	"ljcy;": "љ",	"lnap;": "⪉",	"lneq;": "⪇",	"Lopf;": "𝕃",	"lopf;": "𝕝",	"lozf;": "⧫",	"lpar;": "(",	"Lscr;": "ℒ",	"lscr;": "𝓁",	"lsim;": "≲",	"lsqb;": "[",	"ltcc;": "⪦",	"ltri;": "◃",	"lvnE;": "≨︀",	"macr;": "¯",	"male;": "♂",	"malt;": "✠",	micro: "µ",	"mlcp;": "⫛",	"mldr;": "…",	"Mopf;": "𝕄",	"mopf;": "𝕞",	"Mscr;": "ℳ",	"mscr;": "𝓂",	"nang;": "∠⃒",	"napE;": "⩰̸",	"nbsp;": " ",	"ncap;": "⩃",	"ncup;": "⩂",	"ngeq;": "≱",	"nges;": "⩾̸",	"ngtr;": "≯",	"nGtv;": "≫̸",	"nisd;": "⋺",	"NJcy;": "Њ",	"njcy;": "њ",	"nldr;": "‥",	"nleq;": "≰",	"nles;": "⩽̸",	"nLtv;": "≪̸",	"nmid;": "∤",	"Nopf;": "ℕ",	"nopf;": "𝕟",	"npar;": "∦",	"npre;": "⪯̸",	"nsce;": "⪰̸",	"Nscr;": "𝒩",	"nscr;": "𝓃",	"nsim;": "≁",	"nsub;": "⊄",	"nsup;": "⊅",	"ntgl;": "≹",	"ntlg;": "≸",	"nvap;": "≍⃒",	"nvge;": "≥⃒",	"nvgt;": ">⃒",	"nvle;": "≤⃒",	"nvlt;": "<⃒",	"oast;": "⊛",	"ocir;": "⊚",	Ocirc: "Ô",	ocirc: "ô",	"odiv;": "⨸",	"odot;": "⊙",	"ogon;": "˛",	"oint;": "∮",	"omid;": "⦶",	"Oopf;": "𝕆",	"oopf;": "𝕠",	"opar;": "⦷",	"ordf;": "ª",	"ordm;": "º",	"oror;": "⩖",	"Oscr;": "𝒪",	"oscr;": "ℴ",	"osol;": "⊘",	"Ouml;": "Ö",	"ouml;": "ö",	"para;": "¶",	"part;": "∂",	"perp;": "⊥",	"phiv;": "ϕ",	"plus;": "+",	"Popf;": "ℙ",	"popf;": "𝕡",	pound: "£",	"prap;": "⪷",	"prec;": "≺",	"prnE;": "⪵",	"prod;": "∏",	"prop;": "∝",	"Pscr;": "𝒫",	"pscr;": "𝓅",	"qint;": "⨌",	"Qopf;": "ℚ",	"qopf;": "𝕢",	"Qscr;": "𝒬",	"qscr;": "𝓆",	"QUOT;": "\"",	"quot;": "\"",	"race;": "∽̱",	"Rang;": "⟫",	"rang;": "⟩",	raquo: "»",	"Rarr;": "↠",	"rArr;": "⇒",	"rarr;": "→",	"rcub;": "}",	"rdca;": "⤷",	"rdsh;": "↳",	"real;": "ℜ",	"rect;": "▭",	"rHar;": "⥤",	"rhov;": "ϱ",	"ring;": "˚",	"Ropf;": "ℝ",	"ropf;": "𝕣",	"rpar;": ")",	"Rscr;": "ℛ",	"rscr;": "𝓇",	"rsqb;": "]",	"rtri;": "▹",	"scap;": "⪸",	"scnE;": "⪶",	"sdot;": "⋅",	"sect;": "§",	"semi;": ";",	"sext;": "✶",	"SHcy;": "Ш",	"shcy;": "ш",	"sime;": "≃",	"simg;": "⪞",	"siml;": "⪝",	"smid;": "∣",	"smte;": "⪬",	"solb;": "⧄",	"Sopf;": "𝕊",	"sopf;": "𝕤",	"spar;": "∥",	"Sqrt;": "√",	"squf;": "▪",	"Sscr;": "𝒮",	"sscr;": "𝓈",	"Star;": "⋆",	"star;": "☆",	"subE;": "⫅",	"sube;": "⊆",	"succ;": "≻",	"sung;": "♪",	"sup1;": "¹",	"sup2;": "²",	"sup3;": "³",	"supE;": "⫆",	"supe;": "⊇",	szlig: "ß",	"tbrk;": "⎴",	"tdot;": "⃛",	THORN: "Þ",	thorn: "þ",	times: "×",	"tint;": "∭",	"toea;": "⤨",	"Topf;": "𝕋",	"topf;": "𝕥",	"tosa;": "⤩",	"trie;": "≜",	"Tscr;": "𝒯",	"tscr;": "𝓉",	"TScy;": "Ц",	"tscy;": "ц",	"Uarr;": "↟",	"uArr;": "⇑",	"uarr;": "↑",	Ucirc: "Û",	ucirc: "û",	"uHar;": "⥣",	"Uopf;": "𝕌",	"uopf;": "𝕦",	"Upsi;": "ϒ",	"upsi;": "υ",	"Uscr;": "𝒰",	"uscr;": "𝓊",	"utri;": "▵",	"Uuml;": "Ü",	"uuml;": "ü",	"vArr;": "⇕",	"varr;": "↕",	"Vbar;": "⫫",	"vBar;": "⫨",	"Vert;": "‖",	"vert;": "|",	"Vopf;": "𝕍",	"vopf;": "𝕧",	"Vscr;": "𝒱",	"vscr;": "𝓋",	"Wopf;": "𝕎",	"wopf;": "𝕨",	"Wscr;": "𝒲",	"wscr;": "𝓌",	"xcap;": "⋂",	"xcup;": "⋃",	"xmap;": "⟼",	"xnis;": "⋻",	"Xopf;": "𝕏",	"xopf;": "𝕩",	"Xscr;": "𝒳",	"xscr;": "𝓍",	"xvee;": "⋁",	"YAcy;": "Я",	"yacy;": "я",	"YIcy;": "Ї",	"yicy;": "ї",	"Yopf;": "𝕐",	"yopf;": "𝕪",	"Yscr;": "𝒴",	"yscr;": "𝓎",	"YUcy;": "Ю",	"yucy;": "ю",	"Yuml;": "Ÿ",	"yuml;": "ÿ",	"Zdot;": "Ż",	"zdot;": "ż",	"Zeta;": "Ζ",	"zeta;": "ζ",	"ZHcy;": "Ж",	"zhcy;": "ж",	"Zopf;": "ℤ",	"zopf;": "𝕫",	"Zscr;": "𝒵",	"zscr;": "𝓏",	"zwnj;": "",	Aacute: "Á",	aacute: "á",	"Acirc;": "Â",	"acirc;": "â",	"acute;": "´",	"AElig;": "Æ",	"aelig;": "æ",	Agrave: "À",	agrave: "à",	"aleph;": "ℵ",	"Alpha;": "Α",	"alpha;": "α",	"Amacr;": "Ā",	"amacr;": "ā",	"amalg;": "⨿",	"angle;": "∠",	"angrt;": "∟",	"angst;": "Å",	"Aogon;": "Ą",	"aogon;": "ą",	"Aring;": "Å",	"aring;": "å",	"asymp;": "≈",	Atilde: "Ã",	atilde: "ã",	"awint;": "⨑",	"bcong;": "≌",	"bdquo;": "„",	"bepsi;": "϶",	"blank;": "␣",	"blk12;": "▒",	"blk14;": "░",	"blk34;": "▓",	"block;": "█",	"boxDL;": "╗",	"boxDl;": "╖",	"boxdL;": "╕",	"boxdl;": "┐",	"boxDR;": "╔",	"boxDr;": "╓",	"boxdR;": "╒",	"boxdr;": "┌",	"boxHD;": "╦",	"boxHd;": "╤",	"boxhD;": "╥",	"boxhd;": "┬",	"boxHU;": "╩",	"boxHu;": "╧",	"boxhU;": "╨",	"boxhu;": "┴",	"boxUL;": "╝",	"boxUl;": "╜",	"boxuL;": "╛",	"boxul;": "┘",	"boxUR;": "╚",	"boxUr;": "╙",	"boxuR;": "╘",	"boxur;": "└",	"boxVH;": "╬",	"boxVh;": "╫",	"boxvH;": "╪",	"boxvh;": "┼",	"boxVL;": "╣",	"boxVl;": "╢",	"boxvL;": "╡",	"boxvl;": "┤",	"boxVR;": "╠",	"boxVr;": "╟",	"boxvR;": "╞",	"boxvr;": "├",	"Breve;": "˘",	"breve;": "˘",	brvbar: "¦",	"bsemi;": "⁏",	"bsime;": "⋍",	"bsolb;": "⧅",	"bumpE;": "⪮",	"bumpe;": "≏",	"caret;": "⁁",	"caron;": "ˇ",	"ccaps;": "⩍",	Ccedil: "Ç",	ccedil: "ç",	"Ccirc;": "Ĉ",	"ccirc;": "ĉ",	"ccups;": "⩌",	"cedil;": "¸",	"check;": "✓",	"clubs;": "♣",	"Colon;": "∷",	"colon;": ":",	"comma;": ",",	"crarr;": "↵",	"Cross;": "⨯",	"cross;": "✗",	"csube;": "⫑",	"csupe;": "⫒",	"ctdot;": "⋯",	"cuepr;": "⋞",	"cuesc;": "⋟",	"cupor;": "⩅",	curren: "¤",	"cuvee;": "⋎",	"cuwed;": "⋏",	"cwint;": "∱",	"Dashv;": "⫤",	"dashv;": "⊣",	"dblac;": "˝",	"ddarr;": "⇊",	"Delta;": "Δ",	"delta;": "δ",	"dharl;": "⇃",	"dharr;": "⇂",	"diams;": "♦",	"disin;": "⋲",	divide: "÷",	"doteq;": "≐",	"dtdot;": "⋱",	"dtrif;": "▾",	"duarr;": "⇵",	"duhar;": "⥯",	Eacute: "É",	eacute: "é",	"Ecirc;": "Ê",	"ecirc;": "ê",	"eDDot;": "⩷",	"efDot;": "≒",	Egrave: "È",	egrave: "è",	"Emacr;": "Ē",	"emacr;": "ē",	"empty;": "∅",	"Eogon;": "Ę",	"eogon;": "ę",	"eplus;": "⩱",	"epsiv;": "ϵ",	"eqsim;": "≂",	"Equal;": "⩵",	"equiv;": "≡",	"erarr;": "⥱",	"erDot;": "≓",	"esdot;": "≐",	"exist;": "∃",	"fflig;": "ff",	"filig;": "fi",	"fjlig;": "fj",	"fllig;": "fl",	"fltns;": "▱",	"forkv;": "⫙",	frac12: "½",	frac14: "¼",	frac34: "¾",	"frasl;": "⁄",	"frown;": "⌢",	"Gamma;": "Γ",	"gamma;": "γ",	"Gcirc;": "Ĝ",	"gcirc;": "ĝ",	"gescc;": "⪩",	"gimel;": "ℷ",	"gneqq;": "≩",	"gnsim;": "⋧",	"grave;": "`",	"gsime;": "⪎",	"gsiml;": "⪐",	"gtcir;": "⩺",	"gtdot;": "⋗",	"Hacek;": "ˇ",	"harrw;": "↭",	"Hcirc;": "Ĥ",	"hcirc;": "ĥ",	"hoarr;": "⇿",	Iacute: "Í",	iacute: "í",	"Icirc;": "Î",	"icirc;": "î",	"iexcl;": "¡",	Igrave: "Ì",	igrave: "ì",	"iiint;": "∭",	"iiota;": "℩",	"IJlig;": "IJ",	"ijlig;": "ij",	"Imacr;": "Ī",	"imacr;": "ī",	"image;": "ℑ",	"imath;": "ı",	"imped;": "Ƶ",	"infin;": "∞",	"Iogon;": "Į",	"iogon;": "į",	"iprod;": "⨼",	iquest: "¿",	"isinE;": "⋹",	"isins;": "⋴",	"isinv;": "∈",	"Iukcy;": "І",	"iukcy;": "і",	"Jcirc;": "Ĵ",	"jcirc;": "ĵ",	"jmath;": "ȷ",	"Jukcy;": "Є",	"jukcy;": "є",	"Kappa;": "Κ",	"kappa;": "κ",	"lAarr;": "⇚",	"langd;": "⦑",	"laquo;": "«",	"larrb;": "⇤",	"lates;": "⪭︀",	"lBarr;": "⤎",	"lbarr;": "⤌",	"lbbrk;": "❲",	"lbrke;": "⦋",	"lceil;": "⌈",	"ldquo;": "“",	"lescc;": "⪨",	"lhard;": "↽",	"lharu;": "↼",	"lhblk;": "▄",	"llarr;": "⇇",	"lltri;": "◺",	"lneqq;": "≨",	"lnsim;": "⋦",	"loang;": "⟬",	"loarr;": "⇽",	"lobrk;": "⟦",	"lopar;": "⦅",	"lrarr;": "⇆",	"lrhar;": "⇋",	"lrtri;": "⊿",	"lsime;": "⪍",	"lsimg;": "⪏",	"lsquo;": "‘",	"ltcir;": "⩹",	"ltdot;": "⋖",	"ltrie;": "⊴",	"ltrif;": "◂",	"mdash;": "—",	"mDDot;": "∺",	"micro;": "µ",	middot: "·",	"minus;": "−",	"mumap;": "⊸",	"nabla;": "∇",	"napid;": "≋̸",	"napos;": "ʼn",	"natur;": "♮",	"nbump;": "≎̸",	"ncong;": "≇",	"ndash;": "–",	"neArr;": "⇗",	"nearr;": "↗",	"nedot;": "≐̸",	"nesim;": "≂̸",	"ngeqq;": "≧̸",	"ngsim;": "≵",	"nhArr;": "⇎",	"nharr;": "↮",	"nhpar;": "⫲",	"nlArr;": "⇍",	"nlarr;": "↚",	"nleqq;": "≦̸",	"nless;": "≮",	"nlsim;": "≴",	"nltri;": "⋪",	"notin;": "∉",	"notni;": "∌",	"npart;": "∂̸",	"nprec;": "⊀",	"nrArr;": "⇏",	"nrarr;": "↛",	"nrtri;": "⋫",	"nsime;": "≄",	"nsmid;": "∤",	"nspar;": "∦",	"nsubE;": "⫅̸",	"nsube;": "⊈",	"nsucc;": "⊁",	"nsupE;": "⫆̸",	"nsupe;": "⊉",	Ntilde: "Ñ",	ntilde: "ñ",	"numsp;": " ",	"nvsim;": "∼⃒",	"nwArr;": "⇖",	"nwarr;": "↖",	Oacute: "Ó",	oacute: "ó",	"Ocirc;": "Ô",	"ocirc;": "ô",	"odash;": "⊝",	"OElig;": "Œ",	"oelig;": "œ",	"ofcir;": "⦿",	Ograve: "Ò",	ograve: "ò",	"ohbar;": "⦵",	"olarr;": "↺",	"olcir;": "⦾",	"oline;": "‾",	"Omacr;": "Ō",	"omacr;": "ō",	"Omega;": "Ω",	"omega;": "ω",	"operp;": "⦹",	"oplus;": "⊕",	"orarr;": "↻",	"order;": "ℴ",	Oslash: "Ø",	oslash: "ø",	Otilde: "Õ",	otilde: "õ",	"ovbar;": "⌽",	"parsl;": "⫽",	"phone;": "☎",	"plusb;": "⊞",	"pluse;": "⩲",	plusmn: "±",	"pound;": "£",	"prcue;": "≼",	"Prime;": "″",	"prime;": "′",	"prnap;": "⪹",	"prsim;": "≾",	"quest;": "?",	"rAarr;": "⇛",	"radic;": "√",	"rangd;": "⦒",	"range;": "⦥",	"raquo;": "»",	"rarrb;": "⇥",	"rarrc;": "⤳",	"rarrw;": "↝",	"ratio;": "∶",	"RBarr;": "⤐",	"rBarr;": "⤏",	"rbarr;": "⤍",	"rbbrk;": "❳",	"rbrke;": "⦌",	"rceil;": "⌉",	"rdquo;": "”",	"reals;": "ℝ",	"rhard;": "⇁",	"rharu;": "⇀",	"rlarr;": "⇄",	"rlhar;": "⇌",	"rnmid;": "⫮",	"roang;": "⟭",	"roarr;": "⇾",	"robrk;": "⟧",	"ropar;": "⦆",	"rrarr;": "⇉",	"rsquo;": "’",	"rtrie;": "⊵",	"rtrif;": "▸",	"sbquo;": "‚",	"sccue;": "≽",	"Scirc;": "Ŝ",	"scirc;": "ŝ",	"scnap;": "⪺",	"scsim;": "≿",	"sdotb;": "⊡",	"sdote;": "⩦",	"seArr;": "⇘",	"searr;": "↘",	"setmn;": "∖",	"sharp;": "♯",	"Sigma;": "Σ",	"sigma;": "σ",	"simeq;": "≃",	"simgE;": "⪠",	"simlE;": "⪟",	"simne;": "≆",	"slarr;": "←",	"smile;": "⌣",	"smtes;": "⪬︀",	"sqcap;": "⊓",	"sqcup;": "⊔",	"sqsub;": "⊏",	"sqsup;": "⊐",	"srarr;": "→",	"starf;": "★",	"strns;": "¯",	"subnE;": "⫋",	"subne;": "⊊",	"supnE;": "⫌",	"supne;": "⊋",	"swArr;": "⇙",	"swarr;": "↙",	"szlig;": "ß",	"Theta;": "Θ",	"theta;": "θ",	"thkap;": "≈",	"THORN;": "Þ",	"thorn;": "þ",	"Tilde;": "∼",	"tilde;": "˜",	"times;": "×",	"TRADE;": "™",	"trade;": "™",	"trisb;": "⧍",	"TSHcy;": "Ћ",	"tshcy;": "ћ",	"twixt;": "≬",	Uacute: "Ú",	uacute: "ú",	"Ubrcy;": "Ў",	"ubrcy;": "ў",	"Ucirc;": "Û",	"ucirc;": "û",	"udarr;": "⇅",	"udhar;": "⥮",	Ugrave: "Ù",	ugrave: "ù",	"uharl;": "↿",	"uharr;": "↾",	"uhblk;": "▀",	"ultri;": "◸",	"Umacr;": "Ū",	"umacr;": "ū",	"Union;": "⋃",	"Uogon;": "Ų",	"uogon;": "ų",	"uplus;": "⊎",	"upsih;": "ϒ",	"UpTee;": "⊥",	"Uring;": "Ů",	"uring;": "ů",	"urtri;": "◹",	"utdot;": "⋰",	"utrif;": "▴",	"uuarr;": "⇈",	"varpi;": "ϖ",	"vBarv;": "⫩",	"VDash;": "⊫",	"Vdash;": "⊩",	"vDash;": "⊨",	"vdash;": "⊢",	"veeeq;": "≚",	"vltri;": "⊲",	"vnsub;": "⊂⃒",	"vnsup;": "⊃⃒",	"vprop;": "∝",	"vrtri;": "⊳",	"Wcirc;": "Ŵ",	"wcirc;": "ŵ",	"Wedge;": "⋀",	"wedge;": "∧",	"xcirc;": "◯",	"xdtri;": "▽",	"xhArr;": "⟺",	"xharr;": "⟷",	"xlArr;": "⟸",	"xlarr;": "⟵",	"xodot;": "⨀",	"xrArr;": "⟹",	"xrarr;": "⟶",	"xutri;": "△",	Yacute: "Ý",	yacute: "ý",	"Ycirc;": "Ŷ",	"ycirc;": "ŷ",	"Aacute;": "Á",	"aacute;": "á",	"Abreve;": "Ă",	"abreve;": "ă",	"Agrave;": "À",	"agrave;": "à",	"andand;": "⩕",	"angmsd;": "∡",	"angsph;": "∢",	"apacir;": "⩯",	"approx;": "≈",	"Assign;": "≔",	"Atilde;": "Ã",	"atilde;": "ã",	"barvee;": "⊽",	"Barwed;": "⌆",	"barwed;": "⌅",	"becaus;": "∵",	"bernou;": "ℬ",	"bigcap;": "⋂",	"bigcup;": "⋃",	"bigvee;": "⋁",	"bkarow;": "⤍",	"bottom;": "⊥",	"bowtie;": "⋈",	"boxbox;": "⧉",	"bprime;": "‵",	"brvbar;": "¦",	"bullet;": "•",	"Bumpeq;": "≎",	"bumpeq;": "≏",	"Cacute;": "Ć",	"cacute;": "ć",	"capand;": "⩄",	"capcap;": "⩋",	"capcup;": "⩇",	"capdot;": "⩀",	"Ccaron;": "Č",	"ccaron;": "č",	"Ccedil;": "Ç",	"ccedil;": "ç",	"circeq;": "≗",	"cirmid;": "⫯",	"Colone;": "⩴",	"colone;": "≔",	"commat;": "@",	"compfn;": "∘",	"Conint;": "∯",	"conint;": "∮",	"coprod;": "∐",	"copysr;": "℗",	"cularr;": "↶",	"CupCap;": "≍",	"cupcap;": "⩆",	"cupcup;": "⩊",	"cupdot;": "⊍",	"curarr;": "↷",	"curren;": "¤",	"cylcty;": "⌭",	"Dagger;": "‡",	"dagger;": "†",	"daleth;": "ℸ",	"Dcaron;": "Ď",	"dcaron;": "ď",	"dfisht;": "⥿",	"divide;": "÷",	"divonx;": "⋇",	"dlcorn;": "⌞",	"dlcrop;": "⌍",	"dollar;": "$",	"DotDot;": "⃜",	"drcorn;": "⌟",	"drcrop;": "⌌",	"Dstrok;": "Đ",	"dstrok;": "đ",	"Eacute;": "É",	"eacute;": "é",	"easter;": "⩮",	"Ecaron;": "Ě",	"ecaron;": "ě",	"ecolon;": "≕",	"Egrave;": "È",	"egrave;": "è",	"egsdot;": "⪘",	"elsdot;": "⪗",	"emptyv;": "∅",	"emsp13;": " ",	"emsp14;": " ",	"eparsl;": "⧣",	"eqcirc;": "≖",	"equals;": "=",	"equest;": "≟",	"Exists;": "∃",	"female;": "♀",	"ffilig;": "ffi",	"ffllig;": "ffl",	"ForAll;": "∀",	"forall;": "∀",	"frac12;": "½",	"frac13;": "⅓",	"frac14;": "¼",	"frac15;": "⅕",	"frac16;": "⅙",	"frac18;": "⅛",	"frac23;": "⅔",	"frac25;": "⅖",	"frac34;": "¾",	"frac35;": "⅗",	"frac38;": "⅜",	"frac45;": "⅘",	"frac56;": "⅚",	"frac58;": "⅝",	"frac78;": "⅞",	"gacute;": "ǵ",	"Gammad;": "Ϝ",	"gammad;": "ϝ",	"Gbreve;": "Ğ",	"gbreve;": "ğ",	"Gcedil;": "Ģ",	"gesdot;": "⪀",	"gesles;": "⪔",	"gtlPar;": "⦕",	"gtrarr;": "⥸",	"gtrdot;": "⋗",	"gtrsim;": "≳",	"hairsp;": " ",	"hamilt;": "ℋ",	"HARDcy;": "Ъ",	"hardcy;": "ъ",	"hearts;": "♥",	"hellip;": "…",	"hercon;": "⊹",	"homtht;": "∻",	"horbar;": "―",	"hslash;": "ℏ",	"Hstrok;": "Ħ",	"hstrok;": "ħ",	"hybull;": "⁃",	"hyphen;": "‐",	"Iacute;": "Í",	"iacute;": "í",	"Igrave;": "Ì",	"igrave;": "ì",	"iiiint;": "⨌",	"iinfin;": "⧜",	"incare;": "℅",	"inodot;": "ı",	"intcal;": "⊺",	"iquest;": "¿",	"isinsv;": "⋳",	"Itilde;": "Ĩ",	"itilde;": "ĩ",	"Jsercy;": "Ј",	"jsercy;": "ј",	"kappav;": "ϰ",	"Kcedil;": "Ķ",	"kcedil;": "ķ",	"kgreen;": "ĸ",	"Lacute;": "Ĺ",	"lacute;": "ĺ",	"lagran;": "ℒ",	"Lambda;": "Λ",	"lambda;": "λ",	"langle;": "⟨",	"larrfs;": "⤝",	"larrhk;": "↩",	"larrlp;": "↫",	"larrpl;": "⤹",	"larrtl;": "↢",	"lAtail;": "⤛",	"latail;": "⤙",	"lbrace;": "{",	"lbrack;": "[",	"Lcaron;": "Ľ",	"lcaron;": "ľ",	"Lcedil;": "Ļ",	"lcedil;": "ļ",	"ldquor;": "„",	"lesdot;": "⩿",	"lesges;": "⪓",	"lfisht;": "⥼",	"lfloor;": "⌊",	"lharul;": "⥪",	"llhard;": "⥫",	"Lmidot;": "Ŀ",	"lmidot;": "ŀ",	"lmoust;": "⎰",	"loplus;": "⨭",	"lowast;": "∗",	"lowbar;": "_",	"lparlt;": "⦓",	"lrhard;": "⥭",	"lsaquo;": "‹",	"lsquor;": "‚",	"Lstrok;": "Ł",	"lstrok;": "ł",	"lthree;": "⋋",	"ltimes;": "⋉",	"ltlarr;": "⥶",	"ltrPar;": "⦖",	"mapsto;": "↦",	"marker;": "▮",	"mcomma;": "⨩",	"midast;": "*",	"midcir;": "⫰",	"middot;": "·",	"minusb;": "⊟",	"minusd;": "∸",	"mnplus;": "∓",	"models;": "⊧",	"mstpos;": "∾",	"Nacute;": "Ń",	"nacute;": "ń",	"nbumpe;": "≏̸",	"Ncaron;": "Ň",	"ncaron;": "ň",	"Ncedil;": "Ņ",	"ncedil;": "ņ",	"nearhk;": "⤤",	"nequiv;": "≢",	"nesear;": "⤨",	"nexist;": "∄",	"nltrie;": "⋬",	"notinE;": "⋹̸",	"nparsl;": "⫽⃥",	"nprcue;": "⋠",	"nrarrc;": "⤳̸",	"nrarrw;": "↝̸",	"nrtrie;": "⋭",	"nsccue;": "⋡",	"nsimeq;": "≄",	"Ntilde;": "Ñ",	"ntilde;": "ñ",	"numero;": "№",	"nVDash;": "⊯",	"nVdash;": "⊮",	"nvDash;": "⊭",	"nvdash;": "⊬",	"nvHarr;": "⤄",	"nvlArr;": "⤂",	"nvrArr;": "⤃",	"nwarhk;": "⤣",	"nwnear;": "⤧",	"Oacute;": "Ó",	"oacute;": "ó",	"Odblac;": "Ő",	"odblac;": "ő",	"odsold;": "⦼",	"Ograve;": "Ò",	"ograve;": "ò",	"ominus;": "⊖",	"origof;": "⊶",	"Oslash;": "Ø",	"oslash;": "ø",	"Otilde;": "Õ",	"otilde;": "õ",	"Otimes;": "⨷",	"otimes;": "⊗",	"parsim;": "⫳",	"percnt;": "%",	"period;": ".",	"permil;": "‰",	"phmmat;": "ℳ",	"planck;": "ℏ",	"plankv;": "ℏ",	"plusdo;": "∔",	"plusdu;": "⨥",	"plusmn;": "±",	"preceq;": "⪯",	"primes;": "ℙ",	"prnsim;": "⋨",	"propto;": "∝",	"prurel;": "⊰",	"puncsp;": " ",	"qprime;": "⁗",	"Racute;": "Ŕ",	"racute;": "ŕ",	"rangle;": "⟩",	"rarrap;": "⥵",	"rarrfs;": "⤞",	"rarrhk;": "↪",	"rarrlp;": "↬",	"rarrpl;": "⥅",	"Rarrtl;": "⤖",	"rarrtl;": "↣",	"rAtail;": "⤜",	"ratail;": "⤚",	"rbrace;": "}",	"rbrack;": "]",	"Rcaron;": "Ř",	"rcaron;": "ř",	"Rcedil;": "Ŗ",	"rcedil;": "ŗ",	"rdquor;": "”",	"rfisht;": "⥽",	"rfloor;": "⌋",	"rharul;": "⥬",	"rmoust;": "⎱",	"roplus;": "⨮",	"rpargt;": "⦔",	"rsaquo;": "›",	"rsquor;": "’",	"rthree;": "⋌",	"rtimes;": "⋊",	"Sacute;": "Ś",	"sacute;": "ś",	"Scaron;": "Š",	"scaron;": "š",	"Scedil;": "Ş",	"scedil;": "ş",	"scnsim;": "⋩",	"searhk;": "⤥",	"seswar;": "⤩",	"sfrown;": "⌢",	"SHCHcy;": "Щ",	"shchcy;": "щ",	"sigmaf;": "ς",	"sigmav;": "ς",	"simdot;": "⩪",	"smashp;": "⨳",	"SOFTcy;": "Ь",	"softcy;": "ь",	"solbar;": "⌿",	"spades;": "♠",	"sqcaps;": "⊓︀",	"sqcups;": "⊔︀",	"sqsube;": "⊑",	"sqsupe;": "⊒",	"Square;": "□",	"square;": "□",	"squarf;": "▪",	"ssetmn;": "∖",	"ssmile;": "⌣",	"sstarf;": "⋆",	"subdot;": "⪽",	"Subset;": "⋐",	"subset;": "⊂",	"subsim;": "⫇",	"subsub;": "⫕",	"subsup;": "⫓",	"succeq;": "⪰",	"supdot;": "⪾",	"Supset;": "⋑",	"supset;": "⊃",	"supsim;": "⫈",	"supsub;": "⫔",	"supsup;": "⫖",	"swarhk;": "⤦",	"swnwar;": "⤪",	"target;": "⌖",	"Tcaron;": "Ť",	"tcaron;": "ť",	"Tcedil;": "Ţ",	"tcedil;": "ţ",	"telrec;": "⌕",	"there4;": "∴",	"thetav;": "ϑ",	"thinsp;": " ",	"thksim;": "∼",	"timesb;": "⊠",	"timesd;": "⨰",	"topbot;": "⌶",	"topcir;": "⫱",	"tprime;": "‴",	"tridot;": "◬",	"Tstrok;": "Ŧ",	"tstrok;": "ŧ",	"Uacute;": "Ú",	"uacute;": "ú",	"Ubreve;": "Ŭ",	"ubreve;": "ŭ",	"Udblac;": "Ű",	"udblac;": "ű",	"ufisht;": "⥾",	"Ugrave;": "Ù",	"ugrave;": "ù",	"ulcorn;": "⌜",	"ulcrop;": "⌏",	"urcorn;": "⌝",	"urcrop;": "⌎",	"Utilde;": "Ũ",	"utilde;": "ũ",	"vangrt;": "⦜",	"varphi;": "ϕ",	"varrho;": "ϱ",	"Vdashl;": "⫦",	"veebar;": "⊻",	"vellip;": "⋮",	"Verbar;": "‖",	"verbar;": "|",	"vsubnE;": "⫋︀",	"vsubne;": "⊊︀",	"vsupnE;": "⫌︀",	"vsupne;": "⊋︀",	"Vvdash;": "⊪",	"wedbar;": "⩟",	"wedgeq;": "≙",	"weierp;": "℘",	"wreath;": "≀",	"xoplus;": "⨁",	"xotime;": "⨂",	"xsqcup;": "⨆",	"xuplus;": "⨄",	"xwedge;": "⋀",	"Yacute;": "Ý",	"yacute;": "ý",	"Zacute;": "Ź",	"zacute;": "ź",	"Zcaron;": "Ž",	"zcaron;": "ž",	"zeetrf;": "ℨ",	"alefsym;": "ℵ",	"angrtvb;": "⊾",	"angzarr;": "⍼",	"asympeq;": "≍",	"backsim;": "∽",	"Because;": "∵",	"because;": "∵",	"bemptyv;": "⦰",	"between;": "≬",	"bigcirc;": "◯",	"bigodot;": "⨀",	"bigstar;": "★",	"bnequiv;": "≡⃥",	"boxplus;": "⊞",	"Cayleys;": "ℭ",	"Cconint;": "∰",	"ccupssm;": "⩐",	"Cedilla;": "¸",	"cemptyv;": "⦲",	"cirscir;": "⧂",	"coloneq;": "≔",	"congdot;": "⩭",	"cudarrl;": "⤸",	"cudarrr;": "⤵",	"cularrp;": "⤽",	"curarrm;": "⤼",	"dbkarow;": "⤏",	"ddagger;": "‡",	"ddotseq;": "⩷",	"demptyv;": "⦱",	"Diamond;": "⋄",	"diamond;": "⋄",	"digamma;": "ϝ",	"dotplus;": "∔",	"DownTee;": "⊤",	"dwangle;": "⦦",	"Element;": "∈",	"Epsilon;": "Ε",	"epsilon;": "ε",	"eqcolon;": "≕",	"equivDD;": "⩸",	"gesdoto;": "⪂",	"gtquest;": "⩼",	"gtrless;": "≷",	"harrcir;": "⥈",	"Implies;": "⇒",	"intprod;": "⨼",	"isindot;": "⋵",	"larrbfs;": "⤟",	"larrsim;": "⥳",	"lbrksld;": "⦏",	"lbrkslu;": "⦍",	"ldrdhar;": "⥧",	"LeftTee;": "⊣",	"lesdoto;": "⪁",	"lessdot;": "⋖",	"lessgtr;": "≶",	"lesssim;": "≲",	"lotimes;": "⨴",	"lozenge;": "◊",	"ltquest;": "⩻",	"luruhar;": "⥦",	"maltese;": "✠",	"minusdu;": "⨪",	"napprox;": "≉",	"natural;": "♮",	"nearrow;": "↗",	"NewLine;": "\n",	"nexists;": "∄",	"NoBreak;": "",	"notinva;": "∉",	"notinvb;": "⋷",	"notinvc;": "⋶",	"NotLess;": "≮",	"notniva;": "∌",	"notnivb;": "⋾",	"notnivc;": "⋽",	"npolint;": "⨔",	"npreceq;": "⪯̸",	"nsqsube;": "⋢",	"nsqsupe;": "⋣",	"nsubset;": "⊂⃒",	"nsucceq;": "⪰̸",	"nsupset;": "⊃⃒",	"nvinfin;": "⧞",	"nvltrie;": "⊴⃒",	"nvrtrie;": "⊵⃒",	"nwarrow;": "↖",	"olcross;": "⦻",	"Omicron;": "Ο",	"omicron;": "ο",	"orderof;": "ℴ",	"orslope;": "⩗",	"OverBar;": "‾",	"pertenk;": "‱",	"planckh;": "ℎ",	"pluscir;": "⨢",	"plussim;": "⨦",	"plustwo;": "⨧",	"precsim;": "≾",	"Product;": "∏",	"quatint;": "⨖",	"questeq;": "≟",	"rarrbfs;": "⤠",	"rarrsim;": "⥴",	"rbrksld;": "⦎",	"rbrkslu;": "⦐",	"rdldhar;": "⥩",	"realine;": "ℛ",	"rotimes;": "⨵",	"ruluhar;": "⥨",	"searrow;": "↘",	"simplus;": "⨤",	"simrarr;": "⥲",	"subedot;": "⫃",	"submult;": "⫁",	"subplus;": "⪿",	"subrarr;": "⥹",	"succsim;": "≿",	"supdsub;": "⫘",	"supedot;": "⫄",	"suphsol;": "⟉",	"suphsub;": "⫗",	"suplarr;": "⥻",	"supmult;": "⫂",	"supplus;": "⫀",	"swarrow;": "↙",	"topfork;": "⫚",	"triplus;": "⨹",	"tritime;": "⨻",	"UpArrow;": "↑",	"Uparrow;": "⇑",	"uparrow;": "↑",	"Upsilon;": "Υ",	"upsilon;": "υ",	"uwangle;": "⦧",	"vzigzag;": "⦚",	"zigrarr;": "⇝",	"andslope;": "⩘",	"angmsdaa;": "⦨",	"angmsdab;": "⦩",	"angmsdac;": "⦪",	"angmsdad;": "⦫",	"angmsdae;": "⦬",	"angmsdaf;": "⦭",	"angmsdag;": "⦮",	"angmsdah;": "⦯",	"angrtvbd;": "⦝",	"approxeq;": "≊",	"awconint;": "∳",	"backcong;": "≌",	"barwedge;": "⌅",	"bbrktbrk;": "⎶",	"bigoplus;": "⨁",	"bigsqcup;": "⨆",	"biguplus;": "⨄",	"bigwedge;": "⋀",	"boxminus;": "⊟",	"boxtimes;": "⊠",	"bsolhsub;": "⟈",	"capbrcup;": "⩉",	"circledR;": "®",	"circledS;": "Ⓢ",	"cirfnint;": "⨐",	"clubsuit;": "♣",	"cupbrcap;": "⩈",	"curlyvee;": "⋎",	"cwconint;": "∲",	"DDotrahd;": "⤑",	"doteqdot;": "≑",	"DotEqual;": "≐",	"dotminus;": "∸",	"drbkarow;": "⤐",	"dzigrarr;": "⟿",	"elinters;": "⏧",	"emptyset;": "∅",	"eqvparsl;": "⧥",	"fpartint;": "⨍",	"geqslant;": "⩾",	"gesdotol;": "⪄",	"gnapprox;": "⪊",	"hksearow;": "⤥",	"hkswarow;": "⤦",	"imagline;": "ℐ",	"imagpart;": "ℑ",	"infintie;": "⧝",	"integers;": "ℤ",	"Integral;": "∫",	"intercal;": "⊺",	"intlarhk;": "⨗",	"laemptyv;": "⦴",	"ldrushar;": "⥋",	"leqslant;": "⩽",	"lesdotor;": "⪃",	"LessLess;": "⪡",	"llcorner;": "⌞",	"lnapprox;": "⪉",	"lrcorner;": "⌟",	"lurdshar;": "⥊",	"mapstoup;": "↥",	"multimap;": "⊸",	"naturals;": "ℕ",	"ncongdot;": "⩭̸",	"NotEqual;": "≠",	"notindot;": "⋵̸",	"NotTilde;": "≁",	"otimesas;": "⨶",	"parallel;": "∥",	"PartialD;": "∂",	"plusacir;": "⨣",	"pointint;": "⨕",	"Precedes;": "≺",	"precneqq;": "⪵",	"precnsim;": "⋨",	"profalar;": "⌮",	"profline;": "⌒",	"profsurf;": "⌓",	"raemptyv;": "⦳",	"realpart;": "ℜ",	"RightTee;": "⊢",	"rppolint;": "⨒",	"rtriltri;": "⧎",	"scpolint;": "⨓",	"setminus;": "∖",	"shortmid;": "∣",	"smeparsl;": "⧤",	"sqsubset;": "⊏",	"sqsupset;": "⊐",	"subseteq;": "⊆",	"Succeeds;": "≻",	"succneqq;": "⪶",	"succnsim;": "⋩",	"SuchThat;": "∋",	"Superset;": "⊃",	"supseteq;": "⊇",	"thetasym;": "ϑ",	"thicksim;": "∼",	"timesbar;": "⨱",	"triangle;": "▵",	"triminus;": "⨺",	"trpezium;": "⏢",	"Uarrocir;": "⥉",	"ulcorner;": "⌜",	"UnderBar;": "_",	"urcorner;": "⌝",	"varkappa;": "ϰ",	"varsigma;": "ς",	"vartheta;": "ϑ",	"backprime;": "‵",	"backsimeq;": "⋍",	"Backslash;": "∖",	"bigotimes;": "⨂",	"CenterDot;": "·",	"centerdot;": "·",	"checkmark;": "✓",	"CircleDot;": "⊙",	"complexes;": "ℂ",	"Congruent;": "≡",	"Coproduct;": "∐",	"dotsquare;": "⊡",	"DoubleDot;": "¨",	"DownArrow;": "↓",	"Downarrow;": "⇓",	"downarrow;": "↓",	"DownBreve;": "̑",	"gtrapprox;": "⪆",	"gtreqless;": "⋛",	"gvertneqq;": "≩︀",	"heartsuit;": "♥",	"HumpEqual;": "≏",	"LeftArrow;": "←",	"Leftarrow;": "⇐",	"leftarrow;": "←",	"LeftFloor;": "⌊",	"lesseqgtr;": "⋚",	"LessTilde;": "≲",	"lvertneqq;": "≨︀",	"Mellintrf;": "ℳ",	"MinusPlus;": "∓",	"ngeqslant;": "⩾̸",	"nleqslant;": "⩽̸",	"NotCupCap;": "≭",	"NotExists;": "∄",	"NotSubset;": "⊂⃒",	"nparallel;": "∦",	"nshortmid;": "∤",	"nsubseteq;": "⊈",	"nsupseteq;": "⊉",	"OverBrace;": "⏞",	"pitchfork;": "⋔",	"PlusMinus;": "±",	"rationals;": "ℚ",	"spadesuit;": "♠",	"subseteqq;": "⫅",	"subsetneq;": "⊊",	"supseteqq;": "⫆",	"supsetneq;": "⊋",	"Therefore;": "∴",	"therefore;": "∴",	"ThinSpace;": " ",	"triangleq;": "≜",	"TripleDot;": "⃛",	"UnionPlus;": "⊎",	"varpropto;": "∝",	"Bernoullis;": "ℬ",	"circledast;": "⊛",	"CirclePlus;": "⊕",	"complement;": "∁",	"curlywedge;": "⋏",	"eqslantgtr;": "⪖",	"EqualTilde;": "≂",	"Fouriertrf;": "ℱ",	"gtreqqless;": "⪌",	"ImaginaryI;": "ⅈ",	"Laplacetrf;": "ℒ",	"LeftVector;": "↼",	"lessapprox;": "⪅",	"lesseqqgtr;": "⪋",	"Lleftarrow;": "⇚",	"lmoustache;": "⎰",	"longmapsto;": "⟼",	"mapstodown;": "↧",	"mapstoleft;": "↤",	"nLeftarrow;": "⇍",	"nleftarrow;": "↚",	"NotElement;": "∉",	"NotGreater;": "≯",	"nsubseteqq;": "⫅̸",	"nsupseteqq;": "⫆̸",	"precapprox;": "⪷",	"Proportion;": "∷",	"RightArrow;": "→",	"Rightarrow;": "⇒",	"rightarrow;": "→",	"RightFloor;": "⌋",	"rmoustache;": "⎱",	"sqsubseteq;": "⊑",	"sqsupseteq;": "⊒",	"subsetneqq;": "⫋",	"succapprox;": "⪸",	"supsetneqq;": "⫌",	"ThickSpace;": "  ",	"TildeEqual;": "≃",	"TildeTilde;": "≈",	"UnderBrace;": "⏟",	"UpArrowBar;": "⤒",	"UpTeeArrow;": "↥",	"upuparrows;": "⇈",	"varepsilon;": "ϵ",	"varnothing;": "∅",	"backepsilon;": "϶",	"blacksquare;": "▪",	"circledcirc;": "⊚",	"circleddash;": "⊝",	"CircleMinus;": "⊖",	"CircleTimes;": "⊗",	"curlyeqprec;": "⋞",	"curlyeqsucc;": "⋟",	"diamondsuit;": "♦",	"eqslantless;": "⪕",	"Equilibrium;": "⇌",	"expectation;": "ℰ",	"GreaterLess;": "≷",	"LeftCeiling;": "⌈",	"LessGreater;": "≶",	"MediumSpace;": " ",	"NotLessLess;": "≪̸",	"NotPrecedes;": "⊀",	"NotSucceeds;": "⊁",	"NotSuperset;": "⊃⃒",	"nRightarrow;": "⇏",	"nrightarrow;": "↛",	"OverBracket;": "⎴",	"preccurlyeq;": "≼",	"precnapprox;": "⪹",	"quaternions;": "ℍ",	"RightVector;": "⇀",	"Rrightarrow;": "⇛",	"RuleDelayed;": "⧴",	"SmallCircle;": "∘",	"SquareUnion;": "⊔",	"straightphi;": "ϕ",	"SubsetEqual;": "⊆",	"succcurlyeq;": "≽",	"succnapprox;": "⪺",	"thickapprox;": "≈",	"UpDownArrow;": "↕",	"Updownarrow;": "⇕",	"updownarrow;": "↕",	"VerticalBar;": "∣",	"blacklozenge;": "⧫",	"DownArrowBar;": "⤓",	"DownTeeArrow;": "↧",	"ExponentialE;": "ⅇ",	"exponentiale;": "ⅇ",	"GreaterEqual;": "≥",	"GreaterTilde;": "≳",	"HilbertSpace;": "ℋ",	"HumpDownHump;": "≎",	"Intersection;": "⋂",	"LeftArrowBar;": "⇤",	"LeftTeeArrow;": "↤",	"LeftTriangle;": "⊲",	"LeftUpVector;": "↿",	"NotCongruent;": "≢",	"NotHumpEqual;": "≏̸",	"NotLessEqual;": "≰",	"NotLessTilde;": "≴",	"Proportional;": "∝",	"RightCeiling;": "⌉",	"risingdotseq;": "≓",	"RoundImplies;": "⥰",	"ShortUpArrow;": "↑",	"SquareSubset;": "⊏",	"triangledown;": "▿",	"triangleleft;": "◃",	"UnderBracket;": "⎵",	"varsubsetneq;": "⊊︀",	"varsupsetneq;": "⊋︀",	"VerticalLine;": "|",	"ApplyFunction;": "",	"bigtriangleup;": "△",	"blacktriangle;": "▴",	"DifferentialD;": "ⅆ",	"divideontimes;": "⋇",	"DoubleLeftTee;": "⫤",	"DoubleUpArrow;": "⇑",	"fallingdotseq;": "≒",	"hookleftarrow;": "↩",	"leftarrowtail;": "↢",	"leftharpoonup;": "↼",	"LeftTeeVector;": "⥚",	"LeftVectorBar;": "⥒",	"LessFullEqual;": "≦",	"LongLeftArrow;": "⟵",	"Longleftarrow;": "⟸",	"longleftarrow;": "⟵",	"looparrowleft;": "↫",	"measuredangle;": "∡",	"NotEqualTilde;": "≂̸",	"NotTildeEqual;": "≄",	"NotTildeTilde;": "≉",	"ntriangleleft;": "⋪",	"Poincareplane;": "ℌ",	"PrecedesEqual;": "⪯",	"PrecedesTilde;": "≾",	"RightArrowBar;": "⇥",	"RightTeeArrow;": "↦",	"RightTriangle;": "⊳",	"RightUpVector;": "↾",	"shortparallel;": "∥",	"smallsetminus;": "∖",	"SucceedsEqual;": "⪰",	"SucceedsTilde;": "≿",	"SupersetEqual;": "⊇",	"triangleright;": "▹",	"UpEquilibrium;": "⥮",	"upharpoonleft;": "↿",	"varsubsetneqq;": "⫋︀",	"varsupsetneqq;": "⫌︀",	"VerticalTilde;": "≀",	"VeryThinSpace;": " ",	"curvearrowleft;": "↶",	"DiacriticalDot;": "˙",	"doublebarwedge;": "⌆",	"DoubleRightTee;": "⊨",	"downdownarrows;": "⇊",	"DownLeftVector;": "↽",	"GreaterGreater;": "⪢",	"hookrightarrow;": "↪",	"HorizontalLine;": "─",	"InvisibleComma;": "",	"InvisibleTimes;": "",	"LeftDownVector;": "⇃",	"leftleftarrows;": "⇇",	"LeftRightArrow;": "↔",	"Leftrightarrow;": "⇔",	"leftrightarrow;": "↔",	"leftthreetimes;": "⋋",	"LessSlantEqual;": "⩽",	"LongRightArrow;": "⟶",	"Longrightarrow;": "⟹",	"longrightarrow;": "⟶",	"looparrowright;": "↬",	"LowerLeftArrow;": "↙",	"NestedLessLess;": "≪",	"NotGreaterLess;": "≹",	"NotLessGreater;": "≸",	"NotSubsetEqual;": "⊈",	"NotVerticalBar;": "∤",	"nshortparallel;": "∦",	"ntriangleright;": "⋫",	"OpenCurlyQuote;": "‘",	"ReverseElement;": "∋",	"rightarrowtail;": "↣",	"rightharpoonup;": "⇀",	"RightTeeVector;": "⥛",	"RightVectorBar;": "⥓",	"ShortDownArrow;": "↓",	"ShortLeftArrow;": "←",	"SquareSuperset;": "⊐",	"TildeFullEqual;": "≅",	"trianglelefteq;": "⊴",	"upharpoonright;": "↾",	"UpperLeftArrow;": "↖",	"ZeroWidthSpace;": "",	"bigtriangledown;": "▽",	"circlearrowleft;": "↺",	"CloseCurlyQuote;": "’",	"ContourIntegral;": "∮",	"curvearrowright;": "↷",	"DoubleDownArrow;": "⇓",	"DoubleLeftArrow;": "⇐",	"downharpoonleft;": "⇃",	"DownRightVector;": "⇁",	"leftharpoondown;": "↽",	"leftrightarrows;": "⇆",	"LeftRightVector;": "⥎",	"LeftTriangleBar;": "⧏",	"LeftUpTeeVector;": "⥠",	"LeftUpVectorBar;": "⥘",	"LowerRightArrow;": "↘",	"nLeftrightarrow;": "⇎",	"nleftrightarrow;": "↮",	"NotGreaterEqual;": "≱",	"NotGreaterTilde;": "≵",	"NotHumpDownHump;": "≎̸",	"NotLeftTriangle;": "⋪",	"NotSquareSubset;": "⊏̸",	"ntrianglelefteq;": "⋬",	"OverParenthesis;": "⏜",	"RightDownVector;": "⇂",	"rightleftarrows;": "⇄",	"rightsquigarrow;": "↝",	"rightthreetimes;": "⋌",	"ShortRightArrow;": "→",	"straightepsilon;": "ϵ",	"trianglerighteq;": "⊵",	"UpperRightArrow;": "↗",	"vartriangleleft;": "⊲",	"circlearrowright;": "↻",	"DiacriticalAcute;": "´",	"DiacriticalGrave;": "`",	"DiacriticalTilde;": "˜",	"DoubleRightArrow;": "⇒",	"DownArrowUpArrow;": "⇵",	"downharpoonright;": "⇂",	"EmptySmallSquare;": "◻",	"GreaterEqualLess;": "⋛",	"GreaterFullEqual;": "≧",	"LeftAngleBracket;": "⟨",	"LeftUpDownVector;": "⥑",	"LessEqualGreater;": "⋚",	"NonBreakingSpace;": " ",	"NotPrecedesEqual;": "⪯̸",	"NotRightTriangle;": "⋫",	"NotSucceedsEqual;": "⪰̸",	"NotSucceedsTilde;": "≿̸",	"NotSupersetEqual;": "⊉",	"ntrianglerighteq;": "⋭",	"rightharpoondown;": "⇁",	"rightrightarrows;": "⇉",	"RightTriangleBar;": "⧐",	"RightUpTeeVector;": "⥜",	"RightUpVectorBar;": "⥔",	"twoheadleftarrow;": "↞",	"UnderParenthesis;": "⏝",	"UpArrowDownArrow;": "⇅",	"vartriangleright;": "⊳",	"blacktriangledown;": "▾",	"blacktriangleleft;": "◂",	"DoubleUpDownArrow;": "⇕",	"DoubleVerticalBar;": "∥",	"DownLeftTeeVector;": "⥞",	"DownLeftVectorBar;": "⥖",	"FilledSmallSquare;": "◼",	"GreaterSlantEqual;": "⩾",	"LeftDoubleBracket;": "⟦",	"LeftDownTeeVector;": "⥡",	"LeftDownVectorBar;": "⥙",	"leftrightharpoons;": "⇋",	"LeftTriangleEqual;": "⊴",	"NegativeThinSpace;": "",	"NotGreaterGreater;": "≫̸",	"NotLessSlantEqual;": "⩽̸",	"NotNestedLessLess;": "⪡̸",	"NotReverseElement;": "∌",	"NotSquareSuperset;": "⊐̸",	"NotTildeFullEqual;": "≇",	"RightAngleBracket;": "⟩",	"rightleftharpoons;": "⇌",	"RightUpDownVector;": "⥏",	"SquareSubsetEqual;": "⊑",	"twoheadrightarrow;": "↠",	"VerticalSeparator;": "❘",	"blacktriangleright;": "▸",	"DownRightTeeVector;": "⥟",	"DownRightVectorBar;": "⥗",	"LongLeftRightArrow;": "⟷",	"Longleftrightarrow;": "⟺",	"longleftrightarrow;": "⟷",	"NegativeThickSpace;": "",	"NotLeftTriangleBar;": "⧏̸",	"PrecedesSlantEqual;": "≼",	"ReverseEquilibrium;": "⇋",	"RightDoubleBracket;": "⟧",	"RightDownTeeVector;": "⥝",	"RightDownVectorBar;": "⥕",	"RightTriangleEqual;": "⊵",	"SquareIntersection;": "⊓",	"SucceedsSlantEqual;": "≽",	"DoubleLongLeftArrow;": "⟸",	"DownLeftRightVector;": "⥐",	"LeftArrowRightArrow;": "⇆",	"leftrightsquigarrow;": "↭",	"NegativeMediumSpace;": "",	"NotGreaterFullEqual;": "≧̸",	"NotRightTriangleBar;": "⧐̸",	"RightArrowLeftArrow;": "⇄",	"SquareSupersetEqual;": "⊒",	"CapitalDifferentialD;": "ⅅ",	"DoubleLeftRightArrow;": "⇔",	"DoubleLongRightArrow;": "⟹",	"EmptyVerySmallSquare;": "▫",	"NestedGreaterGreater;": "≫",	"NotDoubleVerticalBar;": "∦",	"NotGreaterSlantEqual;": "⩾̸",	"NotLeftTriangleEqual;": "⋬",	"NotSquareSubsetEqual;": "⋢",	"OpenCurlyDoubleQuote;": "“",	"ReverseUpEquilibrium;": "⥯",	"CloseCurlyDoubleQuote;": "”",	"DoubleContourIntegral;": "∯",	"FilledVerySmallSquare;": "▪",	"NegativeVeryThinSpace;": "",	"NotPrecedesSlantEqual;": "⋠",	"NotRightTriangleEqual;": "⋭",	"NotSucceedsSlantEqual;": "⋡",	"DiacriticalDoubleAcute;": "˝",	"NotSquareSupersetEqual;": "⋣",	"NotNestedGreaterGreater;": "⪢̸",	"ClockwiseContourIntegral;": "∲",	"DoubleLongLeftRightArrow;": "⟺",	"CounterClockwiseContourIntegral;": "∳"};// lazy compute this to make this file tree-shakable for browserlet maxCRNameLength;const decodeHtml = (rawText, asAttr) => {    let offset = 0;    const end = rawText.length;    let decodedText = '';    function advance(length) {        offset += length;        rawText = rawText.slice(length);    }    while (offset < end) {        const head = /&(?:#x?)?/i.exec(rawText);        if (!head || offset + head.index >= end) {            const remaining = end - offset;            decodedText += rawText.slice(0, remaining);            advance(remaining);            break;        }        // Advance to the "&".        decodedText += rawText.slice(0, head.index);        advance(head.index);        if (head[0] === '&') {            // Named character reference.            let name = '';            let value = undefined;            if (/[0-9a-z]/i.test(rawText[1])) {                if (!maxCRNameLength) {                    maxCRNameLength = Object.keys(namedCharacterReferences).reduce((max, name) => Math.max(max, name.length), 0);                }                for (let length = maxCRNameLength; !value && length > 0; --length) {                    name = rawText.slice(1, 1 + length);                    value = namedCharacterReferences[name];                }                if (value) {                    const semi = name.endsWith(';');                    if (asAttr &&                        !semi &&                        /[=a-z0-9]/i.test(rawText[name.length + 1] || '')) {                        decodedText += '&' + name;                        advance(1 + name.length);                    }                    else {                        decodedText += value;                        advance(1 + name.length);                    }                }                else {                    decodedText += '&' + name;                    advance(1 + name.length);                }            }            else {                decodedText += '&';                advance(1);            }        }        else {            // Numeric character reference.            const hex = head[0] === '&#x';            const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/;            const body = pattern.exec(rawText);            if (!body) {                decodedText += head[0];                advance(head[0].length);            }            else {                // https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state                let cp = Number.parseInt(body[1], hex ? 16 : 10);                if (cp === 0) {                    cp = 0xfffd;                }                else if (cp > 0x10ffff) {                    cp = 0xfffd;                }                else if (cp >= 0xd800 && cp <= 0xdfff) {                    cp = 0xfffd;                }                else if ((cp >= 0xfdd0 && cp <= 0xfdef) || (cp & 0xfffe) === 0xfffe) ;                else if ((cp >= 0x01 && cp <= 0x08) ||                    cp === 0x0b ||                    (cp >= 0x0d && cp <= 0x1f) ||                    (cp >= 0x7f && cp <= 0x9f)) {                    cp = CCR_REPLACEMENTS[cp] || cp;                }                decodedText += String.fromCodePoint(cp);                advance(body[0].length);            }        }    }    return decodedText;};// https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-stateconst CCR_REPLACEMENTS = {    0x80: 0x20ac,    0x82: 0x201a,    0x83: 0x0192,    0x84: 0x201e,    0x85: 0x2026,    0x86: 0x2020,    0x87: 0x2021,    0x88: 0x02c6,    0x89: 0x2030,    0x8a: 0x0160,    0x8b: 0x2039,    0x8c: 0x0152,    0x8e: 0x017d,    0x91: 0x2018,    0x92: 0x2019,    0x93: 0x201c,    0x94: 0x201d,    0x95: 0x2022,    0x96: 0x2013,    0x97: 0x2014,    0x98: 0x02dc,    0x99: 0x2122,    0x9a: 0x0161,    0x9b: 0x203a,    0x9c: 0x0153,    0x9e: 0x017e,    0x9f: 0x0178};const isRawTextContainer = /*#__PURE__*/ makeMap('style,iframe,script,noscript', true);const parserOptions = {    isVoidTag,    isNativeTag: tag => isHTMLTag(tag) || isSVGTag(tag),    isPreTag: tag => tag === 'pre',    decodeEntities: decodeHtml,    isBuiltInComponent: (tag) => {        if (isBuiltInType(tag, `Transition`)) {            return TRANSITION;        }        else if (isBuiltInType(tag, `TransitionGroup`)) {            return TRANSITION_GROUP;        }    },    // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher    getNamespace(tag, parent) {        let ns = parent ? parent.ns : 0 /* DOMNamespaces.HTML */;        if (parent && ns === 2 /* DOMNamespaces.MATH_ML */) {            if (parent.tag === 'annotation-xml') {                if (tag === 'svg') {                    return 1 /* DOMNamespaces.SVG */;                }                if (parent.props.some(a => a.type === 6 /* NodeTypes.ATTRIBUTE */ &&                    a.name === 'encoding' &&                    a.value != null &&                    (a.value.content === 'text/html' ||                        a.value.content === 'application/xhtml+xml'))) {                    ns = 0 /* DOMNamespaces.HTML */;                }            }            else if (/^m(?:[ions]|text)$/.test(parent.tag) &&                tag !== 'mglyph' &&                tag !== 'malignmark') {                ns = 0 /* DOMNamespaces.HTML */;            }        }        else if (parent && ns === 1 /* DOMNamespaces.SVG */) {            if (parent.tag === 'foreignObject' ||                parent.tag === 'desc' ||                parent.tag === 'title') {                ns = 0 /* DOMNamespaces.HTML */;            }        }        if (ns === 0 /* DOMNamespaces.HTML */) {            if (tag === 'svg') {                return 1 /* DOMNamespaces.SVG */;            }            if (tag === 'math') {                return 2 /* DOMNamespaces.MATH_ML */;            }        }        return ns;    },    // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments    getTextMode({ tag, ns }) {        if (ns === 0 /* DOMNamespaces.HTML */) {            if (tag === 'textarea' || tag === 'title') {                return 1 /* TextModes.RCDATA */;            }            if (isRawTextContainer(tag)) {                return 2 /* TextModes.RAWTEXT */;            }        }        return 0 /* TextModes.DATA */;    }};// Parse inline CSS strings for static style attributes into an object.// This is a NodeTransform since it works on the static `style` attribute and// converts it into a dynamic equivalent:// style="color: red" -> :style='{ "color": "red" }'// It is then processed by `transformElement` and included in the generated// props.const transformStyle = node => {    if (node.type === 1 /* NodeTypes.ELEMENT */) {        node.props.forEach((p, i) => {            if (p.type === 6 /* NodeTypes.ATTRIBUTE */ && p.name === 'style' && p.value) {                // replace p with an expression node                node.props[i] = {                    type: 7 /* NodeTypes.DIRECTIVE */,                    name: `bind`,                    arg: createSimpleExpression(`style`, true, p.loc),                    exp: parseInlineCSS(p.value.content, p.loc),                    modifiers: [],                    loc: p.loc                };            }        });    }};const parseInlineCSS = (cssText, loc) => {    const normalized = parseStringStyle(cssText);    return createSimpleExpression(JSON.stringify(normalized), false, loc, 3 /* ConstantTypes.CAN_STRINGIFY */);};function createDOMCompilerError(code, loc) {    return createCompilerError(code, loc, DOMErrorMessages );}const DOMErrorMessages = {    [51 /* DOMErrorCodes.X_V_HTML_NO_EXPRESSION */]: `v-html is missing expression.`,    [52 /* DOMErrorCodes.X_V_HTML_WITH_CHILDREN */]: `v-html will override element children.`,    [53 /* DOMErrorCodes.X_V_TEXT_NO_EXPRESSION */]: `v-text is missing expression.`,    [54 /* DOMErrorCodes.X_V_TEXT_WITH_CHILDREN */]: `v-text will override element children.`,    [55 /* DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT */]: `v-model can only be used on <input>, <textarea> and <select> elements.`,    [56 /* DOMErrorCodes.X_V_MODEL_ARG_ON_ELEMENT */]: `v-model argument is not supported on plain elements.`,    [57 /* DOMErrorCodes.X_V_MODEL_ON_FILE_INPUT_ELEMENT */]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,    [58 /* DOMErrorCodes.X_V_MODEL_UNNECESSARY_VALUE */]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,    [59 /* DOMErrorCodes.X_V_SHOW_NO_EXPRESSION */]: `v-show is missing expression.`,    [60 /* DOMErrorCodes.X_TRANSITION_INVALID_CHILDREN */]: `<Transition> expects exactly one child element or component.`,    [61 /* DOMErrorCodes.X_IGNORED_SIDE_EFFECT_TAG */]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`};const transformVHtml = (dir, node, context) => {    const { exp, loc } = dir;    if (!exp) {        context.onError(createDOMCompilerError(51 /* DOMErrorCodes.X_V_HTML_NO_EXPRESSION */, loc));    }    if (node.children.length) {        context.onError(createDOMCompilerError(52 /* DOMErrorCodes.X_V_HTML_WITH_CHILDREN */, loc));        node.children.length = 0;    }    return {        props: [            createObjectProperty(createSimpleExpression(`innerHTML`, true, loc), exp || createSimpleExpression('', true))        ]    };};const transformVText = (dir, node, context) => {    const { exp, loc } = dir;    if (!exp) {        context.onError(createDOMCompilerError(53 /* DOMErrorCodes.X_V_TEXT_NO_EXPRESSION */, loc));    }    if (node.children.length) {        context.onError(createDOMCompilerError(54 /* DOMErrorCodes.X_V_TEXT_WITH_CHILDREN */, loc));        node.children.length = 0;    }    return {        props: [            createObjectProperty(createSimpleExpression(`textContent`, true), exp                ? getConstantType(exp, context) > 0                    ? exp                    : createCallExpression(context.helperString(TO_DISPLAY_STRING), [exp], loc)                : createSimpleExpression('', true))        ]    };};const transformModel$1 = (dir, node, context) => {    const baseResult = transformModel(dir, node, context);    // base transform has errors OR component v-model (only need props)    if (!baseResult.props.length || node.tagType === 1 /* ElementTypes.COMPONENT */) {        return baseResult;    }    if (dir.arg) {        context.onError(createDOMCompilerError(56 /* DOMErrorCodes.X_V_MODEL_ARG_ON_ELEMENT */, dir.arg.loc));    }    function checkDuplicatedValue() {        const value = findProp(node, 'value');        if (value) {            context.onError(createDOMCompilerError(58 /* DOMErrorCodes.X_V_MODEL_UNNECESSARY_VALUE */, value.loc));        }    }    const { tag } = node;    const isCustomElement = context.isCustomElement(tag);    if (tag === 'input' ||        tag === 'textarea' ||        tag === 'select' ||        isCustomElement) {        let directiveToUse = V_MODEL_TEXT;        let isInvalidType = false;        if (tag === 'input' || isCustomElement) {            const type = findProp(node, `type`);            if (type) {                if (type.type === 7 /* NodeTypes.DIRECTIVE */) {                    // :type="foo"                    directiveToUse = V_MODEL_DYNAMIC;                }                else if (type.value) {                    switch (type.value.content) {                        case 'radio':                            directiveToUse = V_MODEL_RADIO;                            break;                        case 'checkbox':                            directiveToUse = V_MODEL_CHECKBOX;                            break;                        case 'file':                            isInvalidType = true;                            context.onError(createDOMCompilerError(57 /* DOMErrorCodes.X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc));                            break;                        default:                            // text type                            checkDuplicatedValue();                            break;                    }                }            }            else if (hasDynamicKeyVBind(node)) {                // element has bindings with dynamic keys, which can possibly contain                // "type".                directiveToUse = V_MODEL_DYNAMIC;            }            else {                // text type                checkDuplicatedValue();            }        }        else if (tag === 'select') {            directiveToUse = V_MODEL_SELECT;        }        else {            // textarea            checkDuplicatedValue();        }        // inject runtime directive        // by returning the helper symbol via needRuntime        // the import will replaced a resolveDirective call.        if (!isInvalidType) {            baseResult.needRuntime = context.helper(directiveToUse);        }    }    else {        context.onError(createDOMCompilerError(55 /* DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc));    }    // native vmodel doesn't need the `modelValue` props since they are also    // passed to the runtime as `binding.value`. removing it reduces code size.    baseResult.props = baseResult.props.filter(p => !(p.key.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&        p.key.content === 'modelValue'));    return baseResult;};const isEventOptionModifier = /*#__PURE__*/ makeMap(`passive,once,capture`);const isNonKeyModifier = /*#__PURE__*/ makeMap(// event propagation management`stop,prevent,self,` +    // system modifiers + exact    `ctrl,shift,alt,meta,exact,` +    // mouse    `middle`);// left & right could be mouse or key modifiers based on event typeconst maybeKeyModifier = /*#__PURE__*/ makeMap('left,right');const isKeyboardEvent = /*#__PURE__*/ makeMap(`onkeyup,onkeydown,onkeypress`, true);const resolveModifiers = (key, modifiers, context, loc) => {    const keyModifiers = [];    const nonKeyModifiers = [];    const eventOptionModifiers = [];    for (let i = 0; i < modifiers.length; i++) {        const modifier = modifiers[i];        if (isEventOptionModifier(modifier)) {            // eventOptionModifiers: modifiers for addEventListener() options,            // e.g. .passive & .capture            eventOptionModifiers.push(modifier);        }        else {            // runtimeModifiers: modifiers that needs runtime guards            if (maybeKeyModifier(modifier)) {                if (isStaticExp(key)) {                    if (isKeyboardEvent(key.content)) {                        keyModifiers.push(modifier);                    }                    else {                        nonKeyModifiers.push(modifier);                    }                }                else {                    keyModifiers.push(modifier);                    nonKeyModifiers.push(modifier);                }            }            else {                if (isNonKeyModifier(modifier)) {                    nonKeyModifiers.push(modifier);                }                else {                    keyModifiers.push(modifier);                }            }        }    }    return {        keyModifiers,        nonKeyModifiers,        eventOptionModifiers    };};const transformClick = (key, event) => {    const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === 'onclick';    return isStaticClick        ? createSimpleExpression(event, true)        : key.type !== 4 /* NodeTypes.SIMPLE_EXPRESSION */            ? createCompoundExpression([                `(`,                key,                `) === "onClick" ? "${event}" : (`,                key,                `)`            ])            : key;};const transformOn$1 = (dir, node, context) => {    return transformOn(dir, node, context, baseResult => {        const { modifiers } = dir;        if (!modifiers.length)            return baseResult;        let { key, value: handlerExp } = baseResult.props[0];        const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);        // normalize click.right and click.middle since they don't actually fire        if (nonKeyModifiers.includes('right')) {            key = transformClick(key, `onContextmenu`);        }        if (nonKeyModifiers.includes('middle')) {            key = transformClick(key, `onMouseup`);        }        if (nonKeyModifiers.length) {            handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [                handlerExp,                JSON.stringify(nonKeyModifiers)            ]);        }        if (keyModifiers.length &&            // if event name is dynamic, always wrap with keys guard            (!isStaticExp(key) || isKeyboardEvent(key.content))) {            handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [                handlerExp,                JSON.stringify(keyModifiers)            ]);        }        if (eventOptionModifiers.length) {            const modifierPostfix = eventOptionModifiers.map(capitalize).join('');            key = isStaticExp(key)                ? createSimpleExpression(`${key.content}${modifierPostfix}`, true)                : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);        }        return {            props: [createObjectProperty(key, handlerExp)]        };    });};const transformShow = (dir, node, context) => {    const { exp, loc } = dir;    if (!exp) {        context.onError(createDOMCompilerError(59 /* DOMErrorCodes.X_V_SHOW_NO_EXPRESSION */, loc));    }    return {        props: [],        needRuntime: context.helper(V_SHOW)    };};const transformTransition = (node, context) => {    if (node.type === 1 /* NodeTypes.ELEMENT */ &&        node.tagType === 1 /* ElementTypes.COMPONENT */) {        const component = context.isBuiltInComponent(node.tag);        if (component === TRANSITION) {            return () => {                if (!node.children.length) {                    return;                }                // warn multiple transition children                if (hasMultipleChildren(node)) {                    context.onError(createDOMCompilerError(60 /* DOMErrorCodes.X_TRANSITION_INVALID_CHILDREN */, {                        start: node.children[0].loc.start,                        end: node.children[node.children.length - 1].loc.end,                        source: ''                    }));                }                // check if it's s single child w/ v-show                // if yes, inject "persisted: true" to the transition props                const child = node.children[0];                if (child.type === 1 /* NodeTypes.ELEMENT */) {                    for (const p of child.props) {                        if (p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'show') {                            node.props.push({                                type: 6 /* NodeTypes.ATTRIBUTE */,                                name: 'persisted',                                value: undefined,                                loc: node.loc                            });                        }                    }                }            };        }    }};function hasMultipleChildren(node) {    // #1352 filter out potential comment nodes.    const children = (node.children = node.children.filter(c => c.type !== 3 /* NodeTypes.COMMENT */ &&        !(c.type === 2 /* NodeTypes.TEXT */ && !c.content.trim())));    const child = children[0];    return (children.length !== 1 ||        child.type === 11 /* NodeTypes.FOR */ ||        (child.type === 9 /* NodeTypes.IF */ && child.branches.some(hasMultipleChildren)));}/** * This module is Node-only. *//** * Regex for replacing placeholders for embedded constant variables * (e.g. import URL string constants generated by compiler-sfc) */const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g;/** * Turn eligible hoisted static trees into stringified static nodes, e.g. * * ```js * const _hoisted_1 = createStaticVNode(`<div class="foo">bar</div>`) * ``` * * A single static vnode can contain stringified content for **multiple** * consecutive nodes (element and plain text), called a "chunk". * `@vue/runtime-dom` will create the content via innerHTML in a hidden * container element and insert all the nodes in place. The call must also * provide the number of nodes contained in the chunk so that during hydration * we can know how many nodes the static vnode should adopt. * * The optimization scans a children list that contains hoisted nodes, and * tries to find the largest chunk of consecutive hoisted nodes before running * into a non-hoisted node or the end of the list. A chunk is then converted * into a single static vnode and replaces the hoisted expression of the first * node in the chunk. Other nodes in the chunk are considered "merged" and * therefore removed from both the hoist list and the children array. * * This optimization is only performed in Node.js. */const stringifyStatic = (children, context, parent) => {    // bail stringification for slot content    if (context.scopes.vSlot > 0) {        return;    }    let nc = 0; // current node count    let ec = 0; // current element with binding count    const currentChunk = [];    const stringifyCurrentChunk = (currentIndex) => {        if (nc >= 20 /* StringifyThresholds.NODE_COUNT */ ||            ec >= 5 /* StringifyThresholds.ELEMENT_WITH_BINDING_COUNT */) {            // combine all currently eligible nodes into a single static vnode call            const staticCall = createCallExpression(context.helper(CREATE_STATIC), [                JSON.stringify(currentChunk.map(node => stringifyNode(node, context)).join('')).replace(expReplaceRE, `" + $1 + "`),                // the 2nd argument indicates the number of DOM nodes this static vnode                // will insert / hydrate                String(currentChunk.length)            ]);            // replace the first node's hoisted expression with the static vnode call            replaceHoist(currentChunk[0], staticCall, context);            if (currentChunk.length > 1) {                for (let i = 1; i < currentChunk.length; i++) {                    // for the merged nodes, set their hoisted expression to null                    replaceHoist(currentChunk[i], null, context);                }                // also remove merged nodes from children                const deleteCount = currentChunk.length - 1;                children.splice(currentIndex - currentChunk.length + 1, deleteCount);                return deleteCount;            }        }        return 0;    };    let i = 0;    for (; i < children.length; i++) {        const child = children[i];        const hoisted = getHoistedNode(child);        if (hoisted) {            // presence of hoisted means child must be a stringifiable node            const node = child;            const result = analyzeNode(node);            if (result) {                // node is stringifiable, record state                nc += result[0];                ec += result[1];                currentChunk.push(node);                continue;            }        }        // we only reach here if we ran into a node that is not stringifiable        // check if currently analyzed nodes meet criteria for stringification.        // adjust iteration index        i -= stringifyCurrentChunk(i);        // reset state        nc = 0;        ec = 0;        currentChunk.length = 0;    }    // in case the last node was also stringifiable    stringifyCurrentChunk(i);};const getHoistedNode = (node) => ((node.type === 1 /* NodeTypes.ELEMENT */ && node.tagType === 0 /* ElementTypes.ELEMENT */) ||    node.type == 12 /* NodeTypes.TEXT_CALL */) &&    node.codegenNode &&    node.codegenNode.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&    node.codegenNode.hoisted;const dataAriaRE = /^(data|aria)-/;const isStringifiableAttr = (name, ns) => {    return ((ns === 0 /* DOMNamespaces.HTML */        ? isKnownHtmlAttr(name)        : ns === 1 /* DOMNamespaces.SVG */            ? isKnownSvgAttr(name)            : false) || dataAriaRE.test(name));};const replaceHoist = (node, replacement, context) => {    const hoistToReplace = node.codegenNode.hoisted;    context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement;};const isNonStringifiable = /*#__PURE__*/ makeMap(`caption,thead,tr,th,tbody,td,tfoot,colgroup,col`);/** * for a hoisted node, analyze it and return: * - false: bailed (contains non-stringifiable props or runtime constant) * - [nc, ec] where *   - nc is the number of nodes inside *   - ec is the number of element with bindings inside */function analyzeNode(node) {    if (node.type === 1 /* NodeTypes.ELEMENT */ && isNonStringifiable(node.tag)) {        return false;    }    if (node.type === 12 /* NodeTypes.TEXT_CALL */) {        return [1, 0];    }    let nc = 1; // node count    let ec = node.props.length > 0 ? 1 : 0; // element w/ binding count    let bailed = false;    const bail = () => {        bailed = true;        return false;    };    // TODO: check for cases where using innerHTML will result in different    // output compared to imperative node insertions.    // probably only need to check for most common case    // i.e. non-phrasing-content tags inside `<p>`    function walk(node) {        for (let i = 0; i < node.props.length; i++) {            const p = node.props[i];            // bail on non-attr bindings            if (p.type === 6 /* NodeTypes.ATTRIBUTE */ &&                !isStringifiableAttr(p.name, node.ns)) {                return bail();            }            if (p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'bind') {                // bail on non-attr bindings                if (p.arg &&                    (p.arg.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */ ||                        (p.arg.isStatic && !isStringifiableAttr(p.arg.content, node.ns)))) {                    return bail();                }                if (p.exp &&                    (p.exp.type === 8 /* NodeTypes.COMPOUND_EXPRESSION */ ||                        p.exp.constType < 3 /* ConstantTypes.CAN_STRINGIFY */)) {                    return bail();                }            }        }        for (let i = 0; i < node.children.length; i++) {            nc++;            const child = node.children[i];            if (child.type === 1 /* NodeTypes.ELEMENT */) {                if (child.props.length > 0) {                    ec++;                }                walk(child);                if (bailed) {                    return false;                }            }        }        return true;    }    return walk(node) ? [nc, ec] : false;}function stringifyNode(node, context) {    if (isString(node)) {        return node;    }    if (isSymbol(node)) {        return ``;    }    switch (node.type) {        case 1 /* NodeTypes.ELEMENT */:            return stringifyElement(node, context);        case 2 /* NodeTypes.TEXT */:            return escapeHtml(node.content);        case 3 /* NodeTypes.COMMENT */:            return `<!--${escapeHtml(node.content)}-->`;        case 5 /* NodeTypes.INTERPOLATION */:            return escapeHtml(toDisplayString(evaluateConstant(node.content)));        case 8 /* NodeTypes.COMPOUND_EXPRESSION */:            return escapeHtml(evaluateConstant(node));        case 12 /* NodeTypes.TEXT_CALL */:            return stringifyNode(node.content, context);        default:            // static trees will not contain if/for nodes            return '';    }}function stringifyElement(node, context) {    let res = `<${node.tag}`;    let innerHTML = '';    for (let i = 0; i < node.props.length; i++) {        const p = node.props[i];        if (p.type === 6 /* NodeTypes.ATTRIBUTE */) {            res += ` ${p.name}`;            if (p.value) {                res += `="${escapeHtml(p.value.content)}"`;            }        }        else if (p.type === 7 /* NodeTypes.DIRECTIVE */) {            if (p.name === 'bind') {                const exp = p.exp;                if (exp.content[0] === '_') {                    // internally generated string constant references                    // e.g. imported URL strings via compiler-sfc transformAssetUrl plugin                    res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`;                    continue;                }                // #6568                if (isBooleanAttr(p.arg.content) &&                    exp.content === 'false') {                    continue;                }                // constant v-bind, e.g. :foo="1"                let evaluated = evaluateConstant(exp);                if (evaluated != null) {                    const arg = p.arg && p.arg.content;                    if (arg === 'class') {                        evaluated = normalizeClass(evaluated);                    }                    else if (arg === 'style') {                        evaluated = stringifyStyle(normalizeStyle(evaluated));                    }                    res += ` ${p.arg.content}="${escapeHtml(evaluated)}"`;                }            }            else if (p.name === 'html') {                // #5439 v-html with constant value                // not sure why would anyone do this but it can happen                innerHTML = evaluateConstant(p.exp);            }            else if (p.name === 'text') {                innerHTML = escapeHtml(toDisplayString(evaluateConstant(p.exp)));            }        }    }    if (context.scopeId) {        res += ` ${context.scopeId}`;    }    res += `>`;    if (innerHTML) {        res += innerHTML;    }    else {        for (let i = 0; i < node.children.length; i++) {            res += stringifyNode(node.children[i], context);        }    }    if (!isVoidTag(node.tag)) {        res += `</${node.tag}>`;    }    return res;}// __UNSAFE__// Reason: eval.// It's technically safe to eval because only constant expressions are possible// here, e.g. `{{ 1 }}` or `{{ 'foo' }}`// in addition, constant exps bail on presence of parens so you can't even// run JSFuck in here. But we mark it unsafe for security review purposes.// (see compiler-core/src/transforms/transformExpression)function evaluateConstant(exp) {    if (exp.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {        return new Function(`return ${exp.content}`)();    }    else {        // compound        let res = ``;        exp.children.forEach(c => {            if (isString(c) || isSymbol(c)) {                return;            }            if (c.type === 2 /* NodeTypes.TEXT */) {                res += c.content;            }            else if (c.type === 5 /* NodeTypes.INTERPOLATION */) {                res += toDisplayString(evaluateConstant(c.content));            }            else {                res += evaluateConstant(c);            }        });        return res;    }}const ignoreSideEffectTags = (node, context) => {    if (node.type === 1 /* NodeTypes.ELEMENT */ &&        node.tagType === 0 /* ElementTypes.ELEMENT */ &&        (node.tag === 'script' || node.tag === 'style')) {        context.onError(createDOMCompilerError(61 /* DOMErrorCodes.X_IGNORED_SIDE_EFFECT_TAG */, node.loc));        context.removeNode();    }};const DOMNodeTransforms = [    transformStyle,    ...([transformTransition] )];const DOMDirectiveTransforms = {    cloak: noopDirectiveTransform,    html: transformVHtml,    text: transformVText,    model: transformModel$1,    on: transformOn$1,    show: transformShow};function compile(template, options = {}) {    return baseCompile(template, extend({}, parserOptions, options, {        nodeTransforms: [            // ignore <script> and <tag>            // this is not put inside DOMNodeTransforms because that list is used            // by compiler-ssr to generate vnode fallback branches            ignoreSideEffectTags,            ...DOMNodeTransforms,            ...(options.nodeTransforms || [])        ],        directiveTransforms: extend({}, DOMDirectiveTransforms, options.directiveTransforms || {}),        transformHoist: stringifyStatic    }));}function parse$1(template, options = {}) {    return baseParse(template, extend({}, parserOptions, options));}var CompilerDOM = /*#__PURE__*/Object.freeze({  __proto__: null,  parserOptions: parserOptions,  DOMNodeTransforms: DOMNodeTransforms,  DOMDirectiveTransforms: DOMDirectiveTransforms,  compile: compile,  parse: parse$1,  transformStyle: transformStyle,  createDOMCompilerError: createDOMCompilerError,  V_MODEL_RADIO: V_MODEL_RADIO,  V_MODEL_CHECKBOX: V_MODEL_CHECKBOX,  V_MODEL_TEXT: V_MODEL_TEXT,  V_MODEL_SELECT: V_MODEL_SELECT,  V_MODEL_DYNAMIC: V_MODEL_DYNAMIC,  V_ON_WITH_MODIFIERS: V_ON_WITH_MODIFIERS,  V_ON_WITH_KEYS: V_ON_WITH_KEYS,  V_SHOW: V_SHOW,  TRANSITION: TRANSITION,  TRANSITION_GROUP: TRANSITION_GROUP,  baseCompile: baseCompile,  baseParse: baseParse,  transform: transform,  createTransformContext: createTransformContext,  traverseNode: traverseNode,  createStructuralDirectiveTransform: createStructuralDirectiveTransform,  generate: generate,  createCompilerError: createCompilerError,  getBaseTransformPreset: getBaseTransformPreset,  transformModel: transformModel,  transformOn: transformOn,  transformBind: transformBind,  noopDirectiveTransform: noopDirectiveTransform,  processIf: processIf,  processFor: processFor,  createForLoopParams: createForLoopParams,  transformExpression: transformExpression,  processExpression: processExpression,  stringifyExpression: stringifyExpression,  buildSlots: buildSlots,  trackVForSlotScopes: trackVForSlotScopes,  trackSlotScopes: trackSlotScopes,  transformElement: transformElement,  resolveComponentType: resolveComponentType,  buildProps: buildProps,  buildDirectiveArgs: buildDirectiveArgs,  processSlotOutlet: processSlotOutlet,  getConstantType: getConstantType,  generateCodeFrame: generateCodeFrame,  checkCompatEnabled: checkCompatEnabled,  warnDeprecation: warnDeprecation,  locStub: locStub,  createRoot: createRoot,  createVNodeCall: createVNodeCall,  createArrayExpression: createArrayExpression,  createObjectExpression: createObjectExpression,  createObjectProperty: createObjectProperty,  createSimpleExpression: createSimpleExpression,  createInterpolation: createInterpolation,  createCompoundExpression: createCompoundExpression,  createCallExpression: createCallExpression,  createFunctionExpression: createFunctionExpression,  createConditionalExpression: createConditionalExpression,  createCacheExpression: createCacheExpression,  createBlockStatement: createBlockStatement,  createTemplateLiteral: createTemplateLiteral,  createIfStatement: createIfStatement,  createAssignmentExpression: createAssignmentExpression,  createSequenceExpression: createSequenceExpression,  createReturnStatement: createReturnStatement,  isStaticExp: isStaticExp,  isBuiltInType: isBuiltInType,  isCoreComponent: isCoreComponent,  isSimpleIdentifier: isSimpleIdentifier,  isMemberExpressionBrowser: isMemberExpressionBrowser,  isMemberExpressionNode: isMemberExpressionNode,  isMemberExpression: isMemberExpression,  getInnerRange: getInnerRange,  advancePositionWithClone: advancePositionWithClone,  advancePositionWithMutation: advancePositionWithMutation,  assert: assert$1,  findDir: findDir,  findProp: findProp,  isStaticArgOf: isStaticArgOf,  hasDynamicKeyVBind: hasDynamicKeyVBind,  isText: isText,  isVSlot: isVSlot,  isTemplateNode: isTemplateNode,  isSlotOutlet: isSlotOutlet,  getVNodeHelper: getVNodeHelper,  getVNodeBlockHelper: getVNodeBlockHelper,  injectProp: injectProp,  toValidAssetId: toValidAssetId,  hasScopeRef: hasScopeRef,  getMemoedVNodeCall: getMemoedVNodeCall,  makeBlock: makeBlock,  walkIdentifiers: walkIdentifiers,  isReferencedIdentifier: isReferencedIdentifier,  isInDestructureAssignment: isInDestructureAssignment,  walkFunctionParams: walkFunctionParams,  walkBlockDeclarations: walkBlockDeclarations,  extractIdentifiers: extractIdentifiers,  isFunctionType: isFunctionType,  isStaticProperty: isStaticProperty,  isStaticPropertyKey: isStaticPropertyKey,  FRAGMENT: FRAGMENT,  TELEPORT: TELEPORT,  SUSPENSE: SUSPENSE,  KEEP_ALIVE: KEEP_ALIVE,  BASE_TRANSITION: BASE_TRANSITION,  OPEN_BLOCK: OPEN_BLOCK,  CREATE_BLOCK: CREATE_BLOCK,  CREATE_ELEMENT_BLOCK: CREATE_ELEMENT_BLOCK,  CREATE_VNODE: CREATE_VNODE,  CREATE_ELEMENT_VNODE: CREATE_ELEMENT_VNODE,  CREATE_COMMENT: CREATE_COMMENT,  CREATE_TEXT: CREATE_TEXT,  CREATE_STATIC: CREATE_STATIC,  RESOLVE_COMPONENT: RESOLVE_COMPONENT,  RESOLVE_DYNAMIC_COMPONENT: RESOLVE_DYNAMIC_COMPONENT,  RESOLVE_DIRECTIVE: RESOLVE_DIRECTIVE,  RESOLVE_FILTER: RESOLVE_FILTER,  WITH_DIRECTIVES: WITH_DIRECTIVES,  RENDER_LIST: RENDER_LIST,  RENDER_SLOT: RENDER_SLOT,  CREATE_SLOTS: CREATE_SLOTS,  TO_DISPLAY_STRING: TO_DISPLAY_STRING,  MERGE_PROPS: MERGE_PROPS,  NORMALIZE_CLASS: NORMALIZE_CLASS,  NORMALIZE_STYLE: NORMALIZE_STYLE,  NORMALIZE_PROPS: NORMALIZE_PROPS,  GUARD_REACTIVE_PROPS: GUARD_REACTIVE_PROPS,  TO_HANDLERS: TO_HANDLERS,  CAMELIZE: CAMELIZE,  CAPITALIZE: CAPITALIZE,  TO_HANDLER_KEY: TO_HANDLER_KEY,  SET_BLOCK_TRACKING: SET_BLOCK_TRACKING,  PUSH_SCOPE_ID: PUSH_SCOPE_ID,  POP_SCOPE_ID: POP_SCOPE_ID,  WITH_CTX: WITH_CTX,  UNREF: UNREF,  IS_REF: IS_REF,  WITH_MEMO: WITH_MEMO,  IS_MEMO_SAME: IS_MEMO_SAME,  helperNameMap: helperNameMap,  registerRuntimeHelpers: registerRuntimeHelpers});function pad (hash, len) {  while (hash.length < len) {    hash = '0' + hash;  }  return hash;}function fold (hash, text) {  var i;  var chr;  var len;  if (text.length === 0) {    return hash;  }  for (i = 0, len = text.length; i < len; i++) {    chr = text.charCodeAt(i);    hash = ((hash << 5) - hash) + chr;    hash |= 0;  }  return hash < 0 ? hash * -2 : hash;}function foldObject (hash, o, seen) {  return Object.keys(o).sort().reduce(foldKey, hash);  function foldKey (hash, key) {    return foldValue(hash, o[key], key, seen);  }}function foldValue (input, value, key, seen) {  var hash = fold(fold(fold(input, key), toString(value)), typeof value);  if (value === null) {    return fold(hash, 'null');  }  if (value === undefined) {    return fold(hash, 'undefined');  }  if (typeof value === 'object' || typeof value === 'function') {    if (seen.indexOf(value) !== -1) {      return fold(hash, '[Circular]' + key);    }    seen.push(value);    var objHash = foldObject(hash, value, seen);    if (!('valueOf' in value) || typeof value.valueOf !== 'function') {      return objHash;    }    try {      return fold(objHash, String(value.valueOf()))    } catch (err) {      return fold(objHash, '[valueOf exception]' + (err.stack || err.message))    }  }  return fold(hash, value.toString());}function toString (o) {  return Object.prototype.toString.call(o);}function sum (o) {  return pad(foldValue(0, o, '', []).toString(16), 8);}var hashSum = sum;const CSS_VARS_HELPER = `useCssVars`;function genCssVarsFromList(vars, id, isProd, isSSR = false) {    return `{\n  ${vars        .map(key => `"${isSSR ? `--` : ``}${genVarName(id, key, isProd)}": (${key})`)        .join(',\n  ')}\n}`;}function genVarName(id, raw, isProd) {    if (isProd) {        return hashSum(id + raw);    }    else {        // escape ASCII Punctuation & Symbols        return `${id}-${raw.replace(/[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g, s => `\\${s}`)}`;    }}function normalizeExpression(exp) {    exp = exp.trim();    if ((exp[0] === `'` && exp[exp.length - 1] === `'`) ||        (exp[0] === `"` && exp[exp.length - 1] === `"`)) {        return exp.slice(1, -1);    }    return exp;}const vBindRE = /v-bind\s*\(/g;function parseCssVars(sfc) {    const vars = [];    sfc.styles.forEach(style => {        let match;        // ignore v-bind() in comments /* ... */        const content = style.content.replace(/\/\*([\s\S]*?)\*\//g, '');        while ((match = vBindRE.exec(content))) {            const start = match.index + match[0].length;            const end = lexBinding(content, start);            if (end !== null) {                const variable = normalizeExpression(content.slice(start, end));                if (!vars.includes(variable)) {                    vars.push(variable);                }            }        }    });    return vars;}function lexBinding(content, start) {    let state = 0 /* LexerState.inParens */;    let parenDepth = 0;    for (let i = start; i < content.length; i++) {        const char = content.charAt(i);        switch (state) {            case 0 /* LexerState.inParens */:                if (char === `'`) {                    state = 1 /* LexerState.inSingleQuoteString */;                }                else if (char === `"`) {                    state = 2 /* LexerState.inDoubleQuoteString */;                }                else if (char === `(`) {                    parenDepth++;                }                else if (char === `)`) {                    if (parenDepth > 0) {                        parenDepth--;                    }                    else {                        return i;                    }                }                break;            case 1 /* LexerState.inSingleQuoteString */:                if (char === `'`) {                    state = 0 /* LexerState.inParens */;                }                break;            case 2 /* LexerState.inDoubleQuoteString */:                if (char === `"`) {                    state = 0 /* LexerState.inParens */;                }                break;        }    }    return null;}const cssVarsPlugin = opts => {    const { id, isProd } = opts;    return {        postcssPlugin: 'vue-sfc-vars',        Declaration(decl) {            // rewrite CSS variables            const value = decl.value;            if (vBindRE.test(value)) {                vBindRE.lastIndex = 0;                let transformed = '';                let lastIndex = 0;                let match;                while ((match = vBindRE.exec(value))) {                    const start = match.index + match[0].length;                    const end = lexBinding(value, start);                    if (end !== null) {                        const variable = normalizeExpression(value.slice(start, end));                        transformed +=                            value.slice(lastIndex, match.index) +                                `var(--${genVarName(id, variable, isProd)})`;                        lastIndex = end + 1;                    }                }                decl.value = transformed + value.slice(lastIndex);            }        }    };};cssVarsPlugin.postcss = true;function genCssVarsCode(vars, bindings, id, isProd) {    const varsExp = genCssVarsFromList(vars, id, isProd);    const exp = createSimpleExpression(varsExp, false);    const context = createTransformContext(createRoot([]), {        prefixIdentifiers: true,        inline: true,        bindingMetadata: bindings.__isScriptSetup === false ? undefined : bindings    });    const transformed = processExpression(exp, context);    const transformedString = transformed.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */        ? transformed.content        : transformed.children            .map(c => {            return typeof c === 'string'                ? c                : c.content;        })            .join('');    return `_${CSS_VARS_HELPER}(_ctx => (${transformedString}))`;}// <script setup> already gets the calls injected as part of the transform// this is only for single normal <script>function genNormalScriptCssVarsCode(cssVars, bindings, id, isProd) {    return (`\nimport { ${CSS_VARS_HELPER} as _${CSS_VARS_HELPER} } from 'vue'\n` +        `const __injectCSSVars__ = () => {\n${genCssVarsCode(cssVars, bindings, id, isProd)}}\n` +        `const __setup__ = __default__.setup\n` +        `__default__.setup = __setup__\n` +        `  ? (props, ctx) => { __injectCSSVars__();return __setup__(props, ctx) }\n` +        `  : __injectCSSVars__\n`);}function createCache(size = 500) {    return new Map()        ;}var global = (typeof global !== "undefined" ? global :  typeof self !== "undefined" ? self :  typeof window !== "undefined" ? window : {});var lookup = [];var revLookup = [];var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;var inited = false;function init () {  inited = true;  var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';  for (var i = 0, len = code.length; i < len; ++i) {    lookup[i] = code[i];    revLookup[code.charCodeAt(i)] = i;  }  revLookup['-'.charCodeAt(0)] = 62;  revLookup['_'.charCodeAt(0)] = 63;}function toByteArray (b64) {  if (!inited) {    init();  }  var i, j, l, tmp, placeHolders, arr;  var len = b64.length;  if (len % 4 > 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();  }  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$1 = {}.toString;var isArray$1 = Array.isArray || function (arr) {  return toString$1.call(arr) == '[object Array]';};/*! * The buffer module from node.js, for the browser. * * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org> * @license  MIT */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.TYPED_ARRAY_SUPPORT !== undefined  ? global.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(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;}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 (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$1 (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$1(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$1(this, i, i + 3);    swap$1(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$1(this, i, i + 7);    swap$1(this, i + 1, i + 6);    swap$1(this, i + 2, i + 5);    swap$1(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 ' + str + '>'};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 lastIndexOffunction 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 (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(arr, i) === read(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(arr, i + j) !== read(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 (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 safetyvar 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);  }  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);  }  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 eventuallyfunction 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 chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';function encode$2(decoded) {    var sourceFileIndex = 0; // second field    var sourceCodeLine = 0; // third field    var sourceCodeColumn = 0; // fourth field    var nameIndex = 0; // fifth field    var mappings = '';    for (var i = 0; i < decoded.length; i++) {        var line = decoded[i];        if (i > 0)            mappings += ';';        if (line.length === 0)            continue;        var generatedCodeColumn = 0; // first field        var lineMappings = [];        for (var _i = 0, line_1 = line; _i < line_1.length; _i++) {            var segment = line_1[_i];            var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);            generatedCodeColumn = segment[0];            if (segment.length > 1) {                segmentMappings +=                    encodeInteger(segment[1] - sourceFileIndex) +                        encodeInteger(segment[2] - sourceCodeLine) +                        encodeInteger(segment[3] - sourceCodeColumn);                sourceFileIndex = segment[1];                sourceCodeLine = segment[2];                sourceCodeColumn = segment[3];            }            if (segment.length === 5) {                segmentMappings += encodeInteger(segment[4] - nameIndex);                nameIndex = segment[4];            }            lineMappings.push(segmentMappings);        }        mappings += lineMappings.join(',');    }    return mappings;}function encodeInteger(num) {    var result = '';    num = num < 0 ? (-num << 1) | 1 : num << 1;    do {        var clamped = num & 31;        num >>>= 5;        if (num > 0) {            clamped |= 32;        }        result += chars[clamped];    } while (num > 0);    return result;}var BitSet = function BitSet(arg) {	this.bits = arg instanceof BitSet ? arg.bits.slice() : [];};BitSet.prototype.add = function add (n) {	this.bits[n >> 5] |= 1 << (n & 31);};BitSet.prototype.has = function has (n) {	return !!(this.bits[n >> 5] & (1 << (n & 31)));};var Chunk = function Chunk(start, end, content) {	this.start = start;	this.end = end;	this.original = content;	this.intro = '';	this.outro = '';	this.content = content;	this.storeName = false;	this.edited = false;	// we make these non-enumerable, for sanity while debugging	Object.defineProperties(this, {		previous: { writable: true, value: null },		next:     { writable: true, value: null }	});};Chunk.prototype.appendLeft = function appendLeft (content) {	this.outro += content;};Chunk.prototype.appendRight = function appendRight (content) {	this.intro = this.intro + content;};Chunk.prototype.clone = function clone () {	var chunk = new Chunk(this.start, this.end, this.original);	chunk.intro = this.intro;	chunk.outro = this.outro;	chunk.content = this.content;	chunk.storeName = this.storeName;	chunk.edited = this.edited;	return chunk;};Chunk.prototype.contains = function contains (index) {	return this.start < index && index < this.end;};Chunk.prototype.eachNext = function eachNext (fn) {	var chunk = this;	while (chunk) {		fn(chunk);		chunk = chunk.next;	}};Chunk.prototype.eachPrevious = function eachPrevious (fn) {	var chunk = this;	while (chunk) {		fn(chunk);		chunk = chunk.previous;	}};Chunk.prototype.edit = function edit (content, storeName, contentOnly) {	this.content = content;	if (!contentOnly) {		this.intro = '';		this.outro = '';	}	this.storeName = storeName;	this.edited = true;	return this;};Chunk.prototype.prependLeft = function prependLeft (content) {	this.outro = content + this.outro;};Chunk.prototype.prependRight = function prependRight (content) {	this.intro = content + this.intro;};Chunk.prototype.split = function split (index) {	var sliceIndex = index - this.start;	var originalBefore = this.original.slice(0, sliceIndex);	var originalAfter = this.original.slice(sliceIndex);	this.original = originalBefore;	var newChunk = new Chunk(index, this.end, originalAfter);	newChunk.outro = this.outro;	this.outro = '';	this.end = index;	if (this.edited) {		// TODO is this block necessary?...		newChunk.edit('', false);		this.content = '';	} else {		this.content = originalBefore;	}	newChunk.next = this.next;	if (newChunk.next) { newChunk.next.previous = newChunk; }	newChunk.previous = this;	this.next = newChunk;	return newChunk;};Chunk.prototype.toString = function toString () {	return this.intro + this.content + this.outro;};Chunk.prototype.trimEnd = function trimEnd (rx) {	this.outro = this.outro.replace(rx, '');	if (this.outro.length) { return true; }	var trimmed = this.content.replace(rx, '');	if (trimmed.length) {		if (trimmed !== this.content) {			this.split(this.start + trimmed.length).edit('', undefined, true);		}		return true;	} else {		this.edit('', undefined, true);		this.intro = this.intro.replace(rx, '');		if (this.intro.length) { return true; }	}};Chunk.prototype.trimStart = function trimStart (rx) {	this.intro = this.intro.replace(rx, '');	if (this.intro.length) { return true; }	var trimmed = this.content.replace(rx, '');	if (trimmed.length) {		if (trimmed !== this.content) {			this.split(this.end - trimmed.length);			this.edit('', undefined, true);		}		return true;	} else {		this.edit('', undefined, true);		this.outro = this.outro.replace(rx, '');		if (this.outro.length) { return true; }	}};var btoa = function () {	throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');};if (typeof window !== 'undefined' && typeof window.btoa === 'function') {	btoa = function (str) { return window.btoa(unescape(encodeURIComponent(str))); };} else if (typeof Buffer === 'function') {	btoa = function (str) { return Buffer.from(str, 'utf-8').toString('base64'); };}var SourceMap = function SourceMap(properties) {	this.version = 3;	this.file = properties.file;	this.sources = properties.sources;	this.sourcesContent = properties.sourcesContent;	this.names = properties.names;	this.mappings = encode$2(properties.mappings);};SourceMap.prototype.toString = function toString () {	return JSON.stringify(this);};SourceMap.prototype.toUrl = function toUrl () {	return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());};function guessIndent(code) {	var lines = code.split('\n');	var tabbed = lines.filter(function (line) { return /^\t+/.test(line); });	var spaced = lines.filter(function (line) { return /^ {2,}/.test(line); });	if (tabbed.length === 0 && spaced.length === 0) {		return null;	}	// More lines tabbed than spaced? Assume tabs, and	// default to tabs in the case of a tie (or nothing	// to go on)	if (tabbed.length >= spaced.length) {		return '\t';	}	// Otherwise, we need to guess the multiple	var min = spaced.reduce(function (previous, current) {		var numSpaces = /^ +/.exec(current)[0].length;		return Math.min(numSpaces, previous);	}, Infinity);	return new Array(min + 1).join(' ');}function getRelativePath(from, to) {	var fromParts = from.split(/[/\\]/);	var toParts = to.split(/[/\\]/);	fromParts.pop(); // get dirname	while (fromParts[0] === toParts[0]) {		fromParts.shift();		toParts.shift();	}	if (fromParts.length) {		var i = fromParts.length;		while (i--) { fromParts[i] = '..'; }	}	return fromParts.concat(toParts).join('/');}var toString$2 = Object.prototype.toString;function isObject$1(thing) {	return toString$2.call(thing) === '[object Object]';}function getLocator(source) {	var originalLines = source.split('\n');	var lineOffsets = [];	for (var i = 0, pos = 0; i < originalLines.length; i++) {		lineOffsets.push(pos);		pos += originalLines[i].length + 1;	}	return function locate(index) {		var i = 0;		var j = lineOffsets.length;		while (i < j) {			var m = (i + j) >> 1;			if (index < lineOffsets[m]) {				j = m;			} else {				i = m + 1;			}		}		var line = i - 1;		var column = index - lineOffsets[line];		return { line: line, column: column };	};}var Mappings = function Mappings(hires) {	this.hires = hires;	this.generatedCodeLine = 0;	this.generatedCodeColumn = 0;	this.raw = [];	this.rawSegments = this.raw[this.generatedCodeLine] = [];	this.pending = null;};Mappings.prototype.addEdit = function addEdit (sourceIndex, content, loc, nameIndex) {	if (content.length) {		var segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];		if (nameIndex >= 0) {			segment.push(nameIndex);		}		this.rawSegments.push(segment);	} else if (this.pending) {		this.rawSegments.push(this.pending);	}	this.advance(content);	this.pending = null;};Mappings.prototype.addUneditedChunk = function addUneditedChunk (sourceIndex, chunk, original, loc, sourcemapLocations) {	var originalCharIndex = chunk.start;	var first = true;	while (originalCharIndex < chunk.end) {		if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {			this.rawSegments.push([this.generatedCodeColumn, sourceIndex, loc.line, loc.column]);		}		if (original[originalCharIndex] === '\n') {			loc.line += 1;			loc.column = 0;			this.generatedCodeLine += 1;			this.raw[this.generatedCodeLine] = this.rawSegments = [];			this.generatedCodeColumn = 0;			first = true;		} else {			loc.column += 1;			this.generatedCodeColumn += 1;			first = false;		}		originalCharIndex += 1;	}	this.pending = null;};Mappings.prototype.advance = function advance (str) {	if (!str) { return; }	var lines = str.split('\n');	if (lines.length > 1) {		for (var i = 0; i < lines.length - 1; i++) {			this.generatedCodeLine++;			this.raw[this.generatedCodeLine] = this.rawSegments = [];		}		this.generatedCodeColumn = 0;	}	this.generatedCodeColumn += lines[lines.length - 1].length;};var n = '\n';var warned = {	insertLeft: false,	insertRight: false,	storeName: false};var MagicString = function MagicString(string, options) {	if ( options === void 0 ) options = {};	var chunk = new Chunk(0, string.length, string);	Object.defineProperties(this, {		original:              { writable: true, value: string },		outro:                 { writable: true, value: '' },		intro:                 { writable: true, value: '' },		firstChunk:            { writable: true, value: chunk },		lastChunk:             { writable: true, value: chunk },		lastSearchedChunk:     { writable: true, value: chunk },		byStart:               { writable: true, value: {} },		byEnd:                 { writable: true, value: {} },		filename:              { writable: true, value: options.filename },		indentExclusionRanges: { writable: true, value: options.indentExclusionRanges },		sourcemapLocations:    { writable: true, value: new BitSet() },		storedNames:           { writable: true, value: {} },		indentStr:             { writable: true, value: guessIndent(string) }	});	this.byStart[0] = chunk;	this.byEnd[string.length] = chunk;};MagicString.prototype.addSourcemapLocation = function addSourcemapLocation (char) {	this.sourcemapLocations.add(char);};MagicString.prototype.append = function append (content) {	if (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }	this.outro += content;	return this;};MagicString.prototype.appendLeft = function appendLeft (index, content) {	if (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }	this._split(index);	var chunk = this.byEnd[index];	if (chunk) {		chunk.appendLeft(content);	} else {		this.intro += content;	}	return this;};MagicString.prototype.appendRight = function appendRight (index, content) {	if (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }	this._split(index);	var chunk = this.byStart[index];	if (chunk) {		chunk.appendRight(content);	} else {		this.outro += content;	}	return this;};MagicString.prototype.clone = function clone () {	var cloned = new MagicString(this.original, { filename: this.filename });	var originalChunk = this.firstChunk;	var clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());	while (originalChunk) {		cloned.byStart[clonedChunk.start] = clonedChunk;		cloned.byEnd[clonedChunk.end] = clonedChunk;		var nextOriginalChunk = originalChunk.next;		var nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();		if (nextClonedChunk) {			clonedChunk.next = nextClonedChunk;			nextClonedChunk.previous = clonedChunk;			clonedChunk = nextClonedChunk;		}		originalChunk = nextOriginalChunk;	}	cloned.lastChunk = clonedChunk;	if (this.indentExclusionRanges) {		cloned.indentExclusionRanges = this.indentExclusionRanges.slice();	}	cloned.sourcemapLocations = new BitSet(this.sourcemapLocations);	cloned.intro = this.intro;	cloned.outro = this.outro;	return cloned;};MagicString.prototype.generateDecodedMap = function generateDecodedMap (options) {		var this$1 = this;	options = options || {};	var sourceIndex = 0;	var names = Object.keys(this.storedNames);	var mappings = new Mappings(options.hires);	var locate = getLocator(this.original);	if (this.intro) {		mappings.advance(this.intro);	}	this.firstChunk.eachNext(function (chunk) {		var loc = locate(chunk.start);		if (chunk.intro.length) { mappings.advance(chunk.intro); }		if (chunk.edited) {			mappings.addEdit(				sourceIndex,				chunk.content,				loc,				chunk.storeName ? names.indexOf(chunk.original) : -1			);		} else {			mappings.addUneditedChunk(sourceIndex, chunk, this$1.original, loc, this$1.sourcemapLocations);		}		if (chunk.outro.length) { mappings.advance(chunk.outro); }	});	return {		file: options.file ? options.file.split(/[/\\]/).pop() : null,		sources: [options.source ? getRelativePath(options.file || '', options.source) : null],		sourcesContent: options.includeContent ? [this.original] : [null],		names: names,		mappings: mappings.raw	};};MagicString.prototype.generateMap = function generateMap (options) {	return new SourceMap(this.generateDecodedMap(options));};MagicString.prototype.getIndentString = function getIndentString () {	return this.indentStr === null ? '\t' : this.indentStr;};MagicString.prototype.indent = function indent (indentStr, options) {	var pattern = /^[^\r\n]/gm;	if (isObject$1(indentStr)) {		options = indentStr;		indentStr = undefined;	}	indentStr = indentStr !== undefined ? indentStr : this.indentStr || '\t';	if (indentStr === '') { return this; } // noop	options = options || {};	// Process exclusion ranges	var isExcluded = {};	if (options.exclude) {		var exclusions =			typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;		exclusions.forEach(function (exclusion) {			for (var i = exclusion[0]; i < exclusion[1]; i += 1) {				isExcluded[i] = true;			}		});	}	var shouldIndentNextCharacter = options.indentStart !== false;	var replacer = function (match) {		if (shouldIndentNextCharacter) { return ("" + indentStr + match); }		shouldIndentNextCharacter = true;		return match;	};	this.intro = this.intro.replace(pattern, replacer);	var charIndex = 0;	var chunk = this.firstChunk;	while (chunk) {		var end = chunk.end;		if (chunk.edited) {			if (!isExcluded[charIndex]) {				chunk.content = chunk.content.replace(pattern, replacer);				if (chunk.content.length) {					shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\n';				}			}		} else {			charIndex = chunk.start;			while (charIndex < end) {				if (!isExcluded[charIndex]) {					var char = this.original[charIndex];					if (char === '\n') {						shouldIndentNextCharacter = true;					} else if (char !== '\r' && shouldIndentNextCharacter) {						shouldIndentNextCharacter = false;						if (charIndex === chunk.start) {							chunk.prependRight(indentStr);						} else {							this._splitChunk(chunk, charIndex);							chunk = chunk.next;							chunk.prependRight(indentStr);						}					}				}				charIndex += 1;			}		}		charIndex = chunk.end;		chunk = chunk.next;	}	this.outro = this.outro.replace(pattern, replacer);	return this;};MagicString.prototype.insert = function insert () {	throw new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)');};MagicString.prototype.insertLeft = function insertLeft (index, content) {	if (!warned.insertLeft) {		console.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'); // eslint-disable-line no-console		warned.insertLeft = true;	}	return this.appendLeft(index, content);};MagicString.prototype.insertRight = function insertRight (index, content) {	if (!warned.insertRight) {		console.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'); // eslint-disable-line no-console		warned.insertRight = true;	}	return this.prependRight(index, content);};MagicString.prototype.move = function move (start, end, index) {	if (index >= start && index <= end) { throw new Error('Cannot move a selection inside itself'); }	this._split(start);	this._split(end);	this._split(index);	var first = this.byStart[start];	var last = this.byEnd[end];	var oldLeft = first.previous;	var oldRight = last.next;	var newRight = this.byStart[index];	if (!newRight && last === this.lastChunk) { return this; }	var newLeft = newRight ? newRight.previous : this.lastChunk;	if (oldLeft) { oldLeft.next = oldRight; }	if (oldRight) { oldRight.previous = oldLeft; }	if (newLeft) { newLeft.next = first; }	if (newRight) { newRight.previous = last; }	if (!first.previous) { this.firstChunk = last.next; }	if (!last.next) {		this.lastChunk = first.previous;		this.lastChunk.next = null;	}	first.previous = newLeft;	last.next = newRight || null;	if (!newLeft) { this.firstChunk = first; }	if (!newRight) { this.lastChunk = last; }	return this;};MagicString.prototype.overwrite = function overwrite (start, end, content, options) {	if (typeof content !== 'string') { throw new TypeError('replacement content must be a string'); }	while (start < 0) { start += this.original.length; }	while (end < 0) { end += this.original.length; }	if (end > this.original.length) { throw new Error('end is out of bounds'); }	if (start === end)		{ throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead'); }	this._split(start);	this._split(end);	if (options === true) {		if (!warned.storeName) {			console.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'); // eslint-disable-line no-console			warned.storeName = true;		}		options = { storeName: true };	}	var storeName = options !== undefined ? options.storeName : false;	var contentOnly = options !== undefined ? options.contentOnly : false;	if (storeName) {		var original = this.original.slice(start, end);		this.storedNames[original] = true;	}	var first = this.byStart[start];	var last = this.byEnd[end];	if (first) {		if (end > first.end && first.next !== this.byStart[first.end]) {			throw new Error('Cannot overwrite across a split point');		}		first.edit(content, storeName, contentOnly);		if (first !== last) {			var chunk = first.next;			while (chunk !== last) {				chunk.edit('', false);				chunk = chunk.next;			}			chunk.edit('', false);		}	} else {		// must be inserting at the end		var newChunk = new Chunk(start, end, '').edit(content, storeName);		// TODO last chunk in the array may not be the last chunk, if it's moved...		last.next = newChunk;		newChunk.previous = last;	}	return this;};MagicString.prototype.prepend = function prepend (content) {	if (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }	this.intro = content + this.intro;	return this;};MagicString.prototype.prependLeft = function prependLeft (index, content) {	if (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }	this._split(index);	var chunk = this.byEnd[index];	if (chunk) {		chunk.prependLeft(content);	} else {		this.intro = content + this.intro;	}	return this;};MagicString.prototype.prependRight = function prependRight (index, content) {	if (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }	this._split(index);	var chunk = this.byStart[index];	if (chunk) {		chunk.prependRight(content);	} else {		this.outro = content + this.outro;	}	return this;};MagicString.prototype.remove = function remove (start, end) {	while (start < 0) { start += this.original.length; }	while (end < 0) { end += this.original.length; }	if (start === end) { return this; }	if (start < 0 || end > this.original.length) { throw new Error('Character is out of bounds'); }	if (start > end) { throw new Error('end must be greater than start'); }	this._split(start);	this._split(end);	var chunk = this.byStart[start];	while (chunk) {		chunk.intro = '';		chunk.outro = '';		chunk.edit('');		chunk = end > chunk.end ? this.byStart[chunk.end] : null;	}	return this;};MagicString.prototype.lastChar = function lastChar () {	if (this.outro.length)		{ return this.outro[this.outro.length - 1]; }	var chunk = this.lastChunk;	do {		if (chunk.outro.length)			{ return chunk.outro[chunk.outro.length - 1]; }		if (chunk.content.length)			{ return chunk.content[chunk.content.length - 1]; }		if (chunk.intro.length)			{ return chunk.intro[chunk.intro.length - 1]; }	} while (chunk = chunk.previous);	if (this.intro.length)		{ return this.intro[this.intro.length - 1]; }	return '';};MagicString.prototype.lastLine = function lastLine () {	var lineIndex = this.outro.lastIndexOf(n);	if (lineIndex !== -1)		{ return this.outro.substr(lineIndex + 1); }	var lineStr = this.outro;	var chunk = this.lastChunk;	do {		if (chunk.outro.length > 0) {			lineIndex = chunk.outro.lastIndexOf(n);			if (lineIndex !== -1)				{ return chunk.outro.substr(lineIndex + 1) + lineStr; }			lineStr = chunk.outro + lineStr;		}		if (chunk.content.length > 0) {			lineIndex = chunk.content.lastIndexOf(n);			if (lineIndex !== -1)				{ return chunk.content.substr(lineIndex + 1) + lineStr; }			lineStr = chunk.content + lineStr;		}		if (chunk.intro.length > 0) {			lineIndex = chunk.intro.lastIndexOf(n);			if (lineIndex !== -1)				{ return chunk.intro.substr(lineIndex + 1) + lineStr; }			lineStr = chunk.intro + lineStr;		}	} while (chunk = chunk.previous);	lineIndex = this.intro.lastIndexOf(n);	if (lineIndex !== -1)		{ return this.intro.substr(lineIndex + 1) + lineStr; }	return this.intro + lineStr;};MagicString.prototype.slice = function slice (start, end) {		if ( start === void 0 ) start = 0;		if ( end === void 0 ) end = this.original.length;	while (start < 0) { start += this.original.length; }	while (end < 0) { end += this.original.length; }	var result = '';	// find start chunk	var chunk = this.firstChunk;	while (chunk && (chunk.start > start || chunk.end <= start)) {		// found end chunk before start		if (chunk.start < end && chunk.end >= end) {			return result;		}		chunk = chunk.next;	}	if (chunk && chunk.edited && chunk.start !== start)		{ throw new Error(("Cannot use replaced character " + start + " as slice start anchor.")); }	var startChunk = chunk;	while (chunk) {		if (chunk.intro && (startChunk !== chunk || chunk.start === start)) {			result += chunk.intro;		}		var containsEnd = chunk.start < end && chunk.end >= end;		if (containsEnd && chunk.edited && chunk.end !== end)			{ throw new Error(("Cannot use replaced character " + end + " as slice end anchor.")); }		var sliceStart = startChunk === chunk ? start - chunk.start : 0;		var sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;		result += chunk.content.slice(sliceStart, sliceEnd);		if (chunk.outro && (!containsEnd || chunk.end === end)) {			result += chunk.outro;		}		if (containsEnd) {			break;		}		chunk = chunk.next;	}	return result;};// TODO deprecate this? not really very usefulMagicString.prototype.snip = function snip (start, end) {	var clone = this.clone();	clone.remove(0, start);	clone.remove(end, clone.original.length);	return clone;};MagicString.prototype._split = function _split (index) {	if (this.byStart[index] || this.byEnd[index]) { return; }	var chunk = this.lastSearchedChunk;	var searchForward = index > chunk.end;	while (chunk) {		if (chunk.contains(index)) { return this._splitChunk(chunk, index); }		chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];	}};MagicString.prototype._splitChunk = function _splitChunk (chunk, index) {	if (chunk.edited && chunk.content.length) {		// zero-length edited chunks are a special case (overlapping replacements)		var loc = getLocator(this.original)(index);		throw new Error(			("Cannot split a chunk that has already been edited (" + (loc.line) + ":" + (loc.column) + " – \"" + (chunk.original) + "\")")		);	}	var newChunk = chunk.split(index);	this.byEnd[index] = chunk;	this.byStart[index] = newChunk;	this.byEnd[newChunk.end] = newChunk;	if (chunk === this.lastChunk) { this.lastChunk = newChunk; }	this.lastSearchedChunk = chunk;	return true;};MagicString.prototype.toString = function toString () {	var str = this.intro;	var chunk = this.firstChunk;	while (chunk) {		str += chunk.toString();		chunk = chunk.next;	}	return str + this.outro;};MagicString.prototype.isEmpty = function isEmpty () {	var chunk = this.firstChunk;	do {		if (chunk.intro.length && chunk.intro.trim() ||				chunk.content.length && chunk.content.trim() ||				chunk.outro.length && chunk.outro.trim())			{ return false; }	} while (chunk = chunk.next);	return true;};MagicString.prototype.length = function length () {	var chunk = this.firstChunk;	var length = 0;	do {		length += chunk.intro.length + chunk.content.length + chunk.outro.length;	} while (chunk = chunk.next);	return length;};MagicString.prototype.trimLines = function trimLines () {	return this.trim('[\\r\\n]');};MagicString.prototype.trim = function trim (charType) {	return this.trimStart(charType).trimEnd(charType);};MagicString.prototype.trimEndAborted = function trimEndAborted (charType) {	var rx = new RegExp((charType || '\\s') + '+$');	this.outro = this.outro.replace(rx, '');	if (this.outro.length) { return true; }	var chunk = this.lastChunk;	do {		var end = chunk.end;		var aborted = chunk.trimEnd(rx);		// if chunk was trimmed, we have a new lastChunk		if (chunk.end !== end) {			if (this.lastChunk === chunk) {				this.lastChunk = chunk.next;			}			this.byEnd[chunk.end] = chunk;			this.byStart[chunk.next.start] = chunk.next;			this.byEnd[chunk.next.end] = chunk.next;		}		if (aborted) { return true; }		chunk = chunk.previous;	} while (chunk);	return false;};MagicString.prototype.trimEnd = function trimEnd (charType) {	this.trimEndAborted(charType);	return this;};MagicString.prototype.trimStartAborted = function trimStartAborted (charType) {	var rx = new RegExp('^' + (charType || '\\s') + '+');	this.intro = this.intro.replace(rx, '');	if (this.intro.length) { return true; }	var chunk = this.firstChunk;	do {		var end = chunk.end;		var aborted = chunk.trimStart(rx);		if (chunk.end !== end) {			// special case...			if (chunk === this.lastChunk) { this.lastChunk = chunk.next; }			this.byEnd[chunk.end] = chunk;			this.byStart[chunk.next.start] = chunk.next;			this.byEnd[chunk.next.end] = chunk.next;		}		if (aborted) { return true; }		chunk = chunk.next;	} while (chunk);	return false;};MagicString.prototype.trimStart = function trimStart (charType) {	this.trimStartAborted(charType);	return this;};// 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.// resolves . and .. elements in a path array with directory names there// must be no slashes, empty elements, or device names (c:\) in the array// (so also no leading and trailing slashes - it does not distinguish// relative and absolute paths)function normalizeArray(parts, allowAboveRoot) {  // if the path tries to go above the root, `up` ends up > 0  var up = 0;  for (var i = parts.length - 1; i >= 0; i--) {    var last = parts[i];    if (last === '.') {      parts.splice(i, 1);    } else if (last === '..') {      parts.splice(i, 1);      up++;    } else if (up) {      parts.splice(i, 1);      up--;    }  }  // if the path is allowed to go above the root, restore leading ..s  if (allowAboveRoot) {    for (; up--; up) {      parts.unshift('..');    }  }  return parts;}// Split a filename into [root, dir, basename, ext], unix version// 'root' is just a slash, or nothing.var splitPathRe =    /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath = function(filename) {  return splitPathRe.exec(filename).slice(1);};// path.resolve([from ...], to)// posix versionfunction resolve() {  var resolvedPath = '',      resolvedAbsolute = false;  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {    var path = (i >= 0) ? arguments[i] : '/';    // Skip empty and invalid entries    if (typeof path !== 'string') {      throw new TypeError('Arguments to path.resolve must be strings');    } else if (!path) {      continue;    }    resolvedPath = path + '/' + resolvedPath;    resolvedAbsolute = path.charAt(0) === '/';  }  // At this point the path should be resolved to a full absolute path, but  // handle relative paths to be safe (might happen when process.cwd() fails)  // Normalize the path  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {    return !!p;  }), !resolvedAbsolute).join('/');  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';}// path.normalize(path)// posix versionfunction normalize(path) {  var isPathAbsolute = isAbsolute(path),      trailingSlash = substr(path, -1) === '/';  // Normalize the path  path = normalizeArray(filter(path.split('/'), function(p) {    return !!p;  }), !isPathAbsolute).join('/');  if (!path && !isPathAbsolute) {    path = '.';  }  if (path && trailingSlash) {    path += '/';  }  return (isPathAbsolute ? '/' : '') + path;}// posix versionfunction isAbsolute(path) {  return path.charAt(0) === '/';}// posix versionfunction join() {  var paths = Array.prototype.slice.call(arguments, 0);  return normalize(filter(paths, function(p, index) {    if (typeof p !== 'string') {      throw new TypeError('Arguments to path.join must be strings');    }    return p;  }).join('/'));}// path.relative(from, to)// posix versionfunction relative(from, to) {  from = resolve(from).substr(1);  to = resolve(to).substr(1);  function trim(arr) {    var start = 0;    for (; start < arr.length; start++) {      if (arr[start] !== '') break;    }    var end = arr.length - 1;    for (; end >= 0; end--) {      if (arr[end] !== '') break;    }    if (start > end) return [];    return arr.slice(start, end - start + 1);  }  var fromParts = trim(from.split('/'));  var toParts = trim(to.split('/'));  var length = Math.min(fromParts.length, toParts.length);  var samePartsLength = length;  for (var i = 0; i < length; i++) {    if (fromParts[i] !== toParts[i]) {      samePartsLength = i;      break;    }  }  var outputParts = [];  for (var i = samePartsLength; i < fromParts.length; i++) {    outputParts.push('..');  }  outputParts = outputParts.concat(toParts.slice(samePartsLength));  return outputParts.join('/');}var sep = '/';var delimiter = ':';function dirname(path) {  var result = splitPath(path),      root = result[0],      dir = result[1];  if (!root && !dir) {    // No dirname whatsoever    return '.';  }  if (dir) {    // It has a dirname, strip trailing slash    dir = dir.substr(0, dir.length - 1);  }  return root + dir;}function basename(path, ext) {  var f = splitPath(path)[2];  // TODO: make this comparison case-insensitive on windows?  if (ext && f.substr(-1 * ext.length) === ext) {    f = f.substr(0, f.length - ext.length);  }  return f;}function extname(path) {  return splitPath(path)[3];}var path = {  extname: extname,  basename: basename,  dirname: dirname,  sep: sep,  delimiter: delimiter,  relative: relative,  join: join,  isAbsolute: isAbsolute,  normalize: normalize,  resolve: resolve};function filter (xs, f) {    if (xs.filter) return xs.filter(f);    var res = [];    for (var i = 0; i < xs.length; i++) {        if (f(xs[i], i, xs)) res.push(xs[i]);    }    return res;}// String.prototype.substr - negative index don't work in IE8var substr = 'ab'.substr(-1) === 'b' ?    function (str, start, len) { return str.substr(start, len) } :    function (str, start, len) {        if (start < 0) start = str.length + start;        return str.substr(start, len);    };var _polyfillNode_path = /*#__PURE__*/Object.freeze({  __proto__: null,  resolve: resolve,  normalize: normalize,  isAbsolute: isAbsolute,  join: join,  relative: relative,  sep: sep,  delimiter: delimiter,  dirname: dirname,  basename: basename,  extname: extname,  'default': path});/*! https://mths.be/punycode v1.4.1 by @mathias *//** Highest positive signed 32-bit float value */var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1/** Bootstring parameters */var base = 36;var tMin = 1;var tMax = 26;var skew = 38;var damp = 700;var initialBias = 72;var initialN = 128; // 0x80var delimiter$1 = '-'; // '\x2D'var regexNonASCII = /[^\x20-\x7E]/; // unprintable ASCII chars + non-ASCII charsvar regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators/** Error messages */var errors = {  'overflow': 'Overflow: input needs wider integers to process',  'not-basic': 'Illegal input >= 0x80 (not a basic code point)',  'invalid-input': 'Invalid input'};/** Convenience shortcuts */var baseMinusTMin = base - tMin;var floor = Math.floor;var stringFromCharCode = String.fromCharCode;/*--------------------------------------------------------------------------*//** * A generic error utility function. * @private * @param {String} type The error type. * @returns {Error} Throws a `RangeError` with the applicable error message. */function error(type) {  throw new RangeError(errors[type]);}/** * A generic `Array#map` utility function. * @private * @param {Array} array The array to iterate over. * @param {Function} callback The function that gets called for every array * item. * @returns {Array} A new array of values returned by the callback function. */function map(array, fn) {  var length = array.length;  var result = [];  while (length--) {    result[length] = fn(array[length]);  }  return result;}/** * A simple `Array#map`-like wrapper to work with domain name strings or email * addresses. * @private * @param {String} domain The domain name or email address. * @param {Function} callback The function that gets called for every * character. * @returns {Array} A new string of characters returned by the callback * function. */function mapDomain(string, fn) {  var parts = string.split('@');  var result = '';  if (parts.length > 1) {    // In email addresses, only the domain name should be punycoded. Leave    // the local part (i.e. everything up to `@`) intact.    result = parts[0] + '@';    string = parts[1];  }  // Avoid `split(regex)` for IE8 compatibility. See #17.  string = string.replace(regexSeparators, '\x2E');  var labels = string.split('.');  var encoded = map(labels, fn).join('.');  return result + encoded;}/** * Creates an array containing the numeric code points of each Unicode * character in the string. While JavaScript uses UCS-2 internally, * this function will convert a pair of surrogate halves (each of which * UCS-2 exposes as separate characters) into a single code point, * matching UTF-16. * @see `punycode.ucs2.encode` * @see <https://mathiasbynens.be/notes/javascript-encoding> * @memberOf punycode.ucs2 * @name decode * @param {String} string The Unicode input string (UCS-2). * @returns {Array} The new array of code points. */function ucs2decode(string) {  var output = [],    counter = 0,    length = string.length,    value,    extra;  while (counter < length) {    value = string.charCodeAt(counter++);    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {      // high surrogate, and there is a next character      extra = string.charCodeAt(counter++);      if ((extra & 0xFC00) == 0xDC00) { // low surrogate        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);      } else {        // unmatched surrogate; only append this code unit, in case the next        // code unit is the high surrogate of a surrogate pair        output.push(value);        counter--;      }    } else {      output.push(value);    }  }  return output;}/** * Converts a digit/integer into a basic code point. * @see `basicToDigit()` * @private * @param {Number} digit The numeric value of a basic code point. * @returns {Number} The basic code point whose value (when used for * representing integers) is `digit`, which needs to be in the range * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is * used; else, the lowercase form is used. The behavior is undefined * if `flag` is non-zero and `digit` has no uppercase form. */function digitToBasic(digit, flag) {  //  0..25 map to ASCII a..z or A..Z  // 26..35 map to ASCII 0..9  return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);}/** * Bias adaptation function as per section 3.4 of RFC 3492. * https://tools.ietf.org/html/rfc3492#section-3.4 * @private */function adapt(delta, numPoints, firstTime) {  var k = 0;  delta = firstTime ? floor(delta / damp) : delta >> 1;  delta += floor(delta / numPoints);  for ( /* no initialization */ ; delta > baseMinusTMin * tMax >> 1; k += base) {    delta = floor(delta / baseMinusTMin);  }  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));}/** * Converts a string of Unicode symbols (e.g. a domain name label) to a * Punycode string of ASCII-only symbols. * @memberOf punycode * @param {String} input The string of Unicode symbols. * @returns {String} The resulting Punycode string of ASCII-only symbols. */function encode$3(input) {  var n,    delta,    handledCPCount,    basicLength,    bias,    j,    m,    q,    k,    t,    currentValue,    output = [],    /** `inputLength` will hold the number of code points in `input`. */    inputLength,    /** Cached calculation results */    handledCPCountPlusOne,    baseMinusT,    qMinusT;  // Convert the input in UCS-2 to Unicode  input = ucs2decode(input);  // Cache the length  inputLength = input.length;  // Initialize the state  n = initialN;  delta = 0;  bias = initialBias;  // Handle the basic code points  for (j = 0; j < inputLength; ++j) {    currentValue = input[j];    if (currentValue < 0x80) {      output.push(stringFromCharCode(currentValue));    }  }  handledCPCount = basicLength = output.length;  // `handledCPCount` is the number of code points that have been handled;  // `basicLength` is the number of basic code points.  // Finish the basic string - if it is not empty - with a delimiter  if (basicLength) {    output.push(delimiter$1);  }  // Main encoding loop:  while (handledCPCount < inputLength) {    // All non-basic code points < n have been handled already. Find the next    // larger one:    for (m = maxInt, j = 0; j < inputLength; ++j) {      currentValue = input[j];      if (currentValue >= n && currentValue < m) {        m = currentValue;      }    }    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,    // but guard against overflow    handledCPCountPlusOne = handledCPCount + 1;    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {      error('overflow');    }    delta += (m - n) * handledCPCountPlusOne;    n = m;    for (j = 0; j < inputLength; ++j) {      currentValue = input[j];      if (currentValue < n && ++delta > maxInt) {        error('overflow');      }      if (currentValue == n) {        // Represent delta as a generalized variable-length integer        for (q = delta, k = base; /* no condition */ ; k += base) {          t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);          if (q < t) {            break;          }          qMinusT = q - t;          baseMinusT = base - t;          output.push(            stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))          );          q = floor(qMinusT / baseMinusT);        }        output.push(stringFromCharCode(digitToBasic(q, 0)));        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);        delta = 0;        ++handledCPCount;      }    }    ++delta;    ++n;  }  return output.join('');}/** * Converts a Unicode string representing a domain name or an email address to * Punycode. Only the non-ASCII parts of the domain name will be converted, * i.e. it doesn't matter if you call it with a domain that's already in * ASCII. * @memberOf punycode * @param {String} input The domain name or email address to convert, as a * Unicode string. * @returns {String} The Punycode representation of the given domain name or * email address. */function toASCII(input) {  return mapDomain(input, function(string) {    return regexNonASCII.test(string) ?      'xn--' + encode$3(string) :      string;  });}// shim for using process in browser// based off https://github.com/defunctzombie/node-process/blob/master/browser.jsfunction 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.setTimeout === 'function') {    cachedSetTimeout = setTimeout;}if (typeof global.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 objectsfunction 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 = ''; // empty string to avoid regexp issuesvar 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.jsvar performance = global.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_hrtimefunction 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 browser$1 = {  nextTick: nextTick,  title: title,  browser: browser,  env: env,  argv: argv,  version: version,  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 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;var formatRegExp = /%[sdj%]/g;function format(f) {  if (!isString$1(f)) {    var objects = [];    for (var i = 0; i < arguments.length; i++) {      objects.push(inspect(arguments[i]));    }    return objects.join(' ');  }  var i = 1;  var args = arguments;  var len = args.length;  var str = String(f).replace(formatRegExp, function(x) {    if (x === '%%') return '%';    if (i >= len) return x;    switch (x) {      case '%s': return String(args[i++]);      case '%d': return Number(args[i++]);      case '%j':        try {          return JSON.stringify(args[i++]);        } catch (_) {          return '[Circular]';        }      default:        return x;    }  });  for (var x = args[i]; i < len; x = args[++i]) {    if (isNull(x) || !isObject$2(x)) {      str += ' ' + x;    } else {      str += ' ' + inspect(x);    }  }  return str;}// 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.function deprecate(fn, msg) {  // Allow for deprecating things in the process of starting up.  if (isUndefined(global.process)) {    return function() {      return deprecate(fn, msg).apply(this, arguments);    };  }  if (browser$1.noDeprecation === true) {    return fn;  }  var warned = false;  function deprecated() {    if (!warned) {      if (browser$1.throwDeprecation) {        throw new Error(msg);      } else if (browser$1.traceDeprecation) {        console.trace(msg);      } else {        console.error(msg);      }      warned = true;    }    return fn.apply(this, arguments);  }  return deprecated;}var debugs = {};var debugEnviron;function debuglog(set) {  if (isUndefined(debugEnviron))    debugEnviron = browser$1.env.NODE_DEBUG || '';  set = set.toUpperCase();  if (!debugs[set]) {    if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {      var pid = 0;      debugs[set] = function() {        var msg = format.apply(null, arguments);        console.error('%s %d: %s', set, pid, msg);      };    } else {      debugs[set] = function() {};    }  }  return debugs[set];}/** * 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(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#graphicsinspect.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.exeinspect.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.styles[styleType];  if (style) {    return '\u001b[' + inspect.colors[style][0] + 'm' + str +           '\u001b[' + inspect.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$1(value.inspect) &&      // Filter out the util module, it's inspect function is special      value.inspect !== inspect &&      // Also filter out any prototype objects using the circular check.      !(value.constructor && value.constructor.prototype === value)) {    var ret = value.inspect(recurseTimes, ctx);    if (!isString$1(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$1(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$1(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$1(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 length = output.reduce(function(prev, cur) {    if (cur.indexOf('\n') >= 0) ;    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 isNullOrUndefined(arg) {  return arg == null;}function isNumber(arg) {  return typeof arg === 'number';}function isString$1(arg) {  return typeof arg === 'string';}function isSymbol$1(arg) {  return typeof arg === 'symbol';}function isUndefined(arg) {  return arg === void 0;}function isRegExp(re) {  return isObject$2(re) && objectToString$1(re) === '[object RegExp]';}function isObject$2(arg) {  return typeof arg === 'object' && arg !== null;}function isDate(d) {  return isObject$2(d) && objectToString$1(d) === '[object Date]';}function isError(e) {  return isObject$2(e) &&      (objectToString$1(e) === '[object Error]' || e instanceof Error);}function isFunction$1(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 isBuffer$1(maybeBuf) {  return Buffer.isBuffer(maybeBuf);}function objectToString$1(o) {  return Object.prototype.toString.call(o);}function pad$1(n) {  return n < 10 ? '0' + n.toString(10) : n.toString(10);}var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',              'Oct', 'Nov', 'Dec'];// 26 Feb 16:19:34function timestamp() {  var d = new Date();  var time = [pad$1(d.getHours()),              pad$1(d.getMinutes()),              pad$1(d.getSeconds())].join(':');  return [d.getDate(), months[d.getMonth()], time].join(' ');}// log is just a thin wrapper to console.log that prepends a timestampfunction log() {  console.log('%s - %s', timestamp(), format.apply(null, arguments));}function _extend(origin, add) {  // Don't do anything if add isn't an object  if (!add || !isObject$2(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);}var _polyfillNode_util = {  inherits: inherits$1,  _extend: _extend,  log: log,  isBuffer: isBuffer$1,  isPrimitive: isPrimitive,  isFunction: isFunction$1,  isError: isError,  isDate: isDate,  isObject: isObject$2,  isRegExp: isRegExp,  isUndefined: isUndefined,  isSymbol: isSymbol$1,  isString: isString$1,  isNumber: isNumber,  isNullOrUndefined: isNullOrUndefined,  isNull: isNull,  isBoolean: isBoolean,  isArray: isArray$2,  inspect: inspect,  deprecate: deprecate,  format: format,  debuglog: debuglog};var _polyfillNode_util$1 = /*#__PURE__*/Object.freeze({  __proto__: null,  format: format,  deprecate: deprecate,  debuglog: debuglog,  inspect: inspect,  isArray: isArray$2,  isBoolean: isBoolean,  isNull: isNull,  isNullOrUndefined: isNullOrUndefined,  isNumber: isNumber,  isString: isString$1,  isSymbol: isSymbol$1,  isUndefined: isUndefined,  isRegExp: isRegExp,  isObject: isObject$2,  isDate: isDate,  isError: isError,  isFunction: isFunction$1,  isPrimitive: isPrimitive,  isBuffer: isBuffer$1,  log: log,  inherits: inherits$1,  _extend: _extend,  'default': _polyfillNode_util});// 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.// If obj.hasOwnProperty has been overridden, then calling// obj.hasOwnProperty(prop) will break.// See: https://github.com/joyent/node/issues/1707function hasOwnProperty$2(obj, prop) {  return Object.prototype.hasOwnProperty.call(obj, prop);}var isArray$3 = Array.isArray || function (xs) {  return Object.prototype.toString.call(xs) === '[object Array]';};function stringifyPrimitive(v) {  switch (typeof v) {    case 'string':      return v;    case 'boolean':      return v ? 'true' : 'false';    case 'number':      return isFinite(v) ? v : '';    default:      return '';  }}function stringify (obj, sep, eq, name) {  sep = sep || '&';  eq = eq || '=';  if (obj === null) {    obj = undefined;  }  if (typeof obj === 'object') {    return map$1(objectKeys(obj), function(k) {      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;      if (isArray$3(obj[k])) {        return map$1(obj[k], function(v) {          return ks + encodeURIComponent(stringifyPrimitive(v));        }).join(sep);      } else {        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));      }    }).join(sep);  }  if (!name) return '';  return encodeURIComponent(stringifyPrimitive(name)) + eq +         encodeURIComponent(stringifyPrimitive(obj));}function map$1 (xs, f) {  if (xs.map) return xs.map(f);  var res = [];  for (var i = 0; i < xs.length; i++) {    res.push(f(xs[i], i));  }  return res;}var objectKeys = Object.keys || function (obj) {  var res = [];  for (var key in obj) {    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);  }  return res;};function parse$2(qs, sep, eq, options) {  sep = sep || '&';  eq = eq || '=';  var obj = {};  if (typeof qs !== 'string' || qs.length === 0) {    return obj;  }  var regexp = /\+/g;  qs = qs.split(sep);  var maxKeys = 1000;  if (options && typeof options.maxKeys === 'number') {    maxKeys = options.maxKeys;  }  var len = qs.length;  // maxKeys <= 0 means that we should not limit keys count  if (maxKeys > 0 && len > maxKeys) {    len = maxKeys;  }  for (var i = 0; i < len; ++i) {    var x = qs[i].replace(regexp, '%20'),        idx = x.indexOf(eq),        kstr, vstr, k, v;    if (idx >= 0) {      kstr = x.substr(0, idx);      vstr = x.substr(idx + 1);    } else {      kstr = x;      vstr = '';    }    k = decodeURIComponent(kstr);    v = decodeURIComponent(vstr);    if (!hasOwnProperty$2(obj, k)) {      obj[k] = v;    } else if (isArray$3(obj[k])) {      obj[k].push(v);    } else {      obj[k] = [obj[k], v];    }  }  return obj;}// Copyright Joyent, Inc. and other Node contributors.var _polyfillNode_url = {  parse: urlParse,  resolve: urlResolve,  resolveObject: urlResolveObject,  format: urlFormat,  Url: Url};function Url() {  this.protocol = null;  this.slashes = null;  this.auth = null;  this.host = null;  this.port = null;  this.hostname = null;  this.hash = null;  this.search = null;  this.query = null;  this.pathname = null;  this.path = null;  this.href = null;}// Reference: RFC 3986, RFC 1808, RFC 2396// define these here so at least they only have to be// compiled once on the first module load.var protocolPattern = /^([a-z0-9.+-]+:)/i,  portPattern = /:[0-9]*$/,  // Special case for a simple path URL  simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,  // RFC 2396: characters reserved for delimiting URLs.  // We actually just auto-escape these.  delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],  // RFC 2396: characters not allowed for various reasons.  unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.  autoEscape = ['\''].concat(unwise),  // Characters that are never ever allowed in a hostname.  // Note that any invalid chars are also handled, but these  // are the ones that are *expected* to be seen, so we fast-path  // them.  nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),  hostEndingChars = ['/', '?', '#'],  hostnameMaxLen = 255,  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,  // protocols that can allow "unsafe" and "unwise" chars.  unsafeProtocol = {    'javascript': true,    'javascript:': true  },  // protocols that never have a hostname.  hostlessProtocol = {    'javascript': true,    'javascript:': true  },  // protocols that always contain a // bit.  slashedProtocol = {    'http': true,    'https': true,    'ftp': true,    'gopher': true,    'file': true,    'http:': true,    'https:': true,    'ftp:': true,    'gopher:': true,    'file:': true  };function urlParse(url, parseQueryString, slashesDenoteHost) {  if (url && isObject$2(url) && url instanceof Url) return url;  var u = new Url;  u.parse(url, parseQueryString, slashesDenoteHost);  return u;}Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {  return parse$3(this, url, parseQueryString, slashesDenoteHost);};function parse$3(self, url, parseQueryString, slashesDenoteHost) {  if (!isString$1(url)) {    throw new TypeError('Parameter \'url\' must be a string, not ' + typeof url);  }  // Copy chrome, IE, opera backslash-handling behavior.  // Back slashes before the query string get converted to forward slashes  // See: https://code.google.com/p/chromium/issues/detail?id=25916  var queryIndex = url.indexOf('?'),    splitter =    (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',    uSplit = url.split(splitter),    slashRegex = /\\/g;  uSplit[0] = uSplit[0].replace(slashRegex, '/');  url = uSplit.join(splitter);  var rest = url;  // trim before proceeding.  // This is to support parse stuff like "  http://foo.com  \n"  rest = rest.trim();  if (!slashesDenoteHost && url.split('#').length === 1) {    // Try fast path regexp    var simplePath = simplePathPattern.exec(rest);    if (simplePath) {      self.path = rest;      self.href = rest;      self.pathname = simplePath[1];      if (simplePath[2]) {        self.search = simplePath[2];        if (parseQueryString) {          self.query = parse$2(self.search.substr(1));        } else {          self.query = self.search.substr(1);        }      } else if (parseQueryString) {        self.search = '';        self.query = {};      }      return self;    }  }  var proto = protocolPattern.exec(rest);  if (proto) {    proto = proto[0];    var lowerProto = proto.toLowerCase();    self.protocol = lowerProto;    rest = rest.substr(proto.length);  }  // figure out if it's got a host  // user@server is *always* interpreted as a hostname, and url  // resolution will treat //foo/bar as host=foo,path=bar because that's  // how the browser resolves relative URLs.  if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {    var slashes = rest.substr(0, 2) === '//';    if (slashes && !(proto && hostlessProtocol[proto])) {      rest = rest.substr(2);      self.slashes = true;    }  }  var i, hec, l, p;  if (!hostlessProtocol[proto] &&    (slashes || (proto && !slashedProtocol[proto]))) {    // there's a hostname.    // the first instance of /, ?, ;, or # ends the host.    //    // If there is an @ in the hostname, then non-host chars *are* allowed    // to the left of the last @ sign, unless some host-ending character    // comes *before* the @-sign.    // URLs are obnoxious.    //    // ex:    // http://a@b@c/ => user:a@b host:c    // http://a@b?@c => user:a host:c path:/?@c    // v0.12 TODO(isaacs): This is not quite how Chrome does things.    // Review our test case against browsers more comprehensively.    // find the first instance of any hostEndingChars    var hostEnd = -1;    for (i = 0; i < hostEndingChars.length; i++) {      hec = rest.indexOf(hostEndingChars[i]);      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))        hostEnd = hec;    }    // at this point, either we have an explicit point where the    // auth portion cannot go past, or the last @ char is the decider.    var auth, atSign;    if (hostEnd === -1) {      // atSign can be anywhere.      atSign = rest.lastIndexOf('@');    } else {      // atSign must be in auth portion.      // http://a@b/c@d => host:b auth:a path:/c@d      atSign = rest.lastIndexOf('@', hostEnd);    }    // Now we have a portion which is definitely the auth.    // Pull that off.    if (atSign !== -1) {      auth = rest.slice(0, atSign);      rest = rest.slice(atSign + 1);      self.auth = decodeURIComponent(auth);    }    // the host is the remaining to the left of the first non-host char    hostEnd = -1;    for (i = 0; i < nonHostChars.length; i++) {      hec = rest.indexOf(nonHostChars[i]);      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))        hostEnd = hec;    }    // if we still have not hit it, then the entire thing is a host.    if (hostEnd === -1)      hostEnd = rest.length;    self.host = rest.slice(0, hostEnd);    rest = rest.slice(hostEnd);    // pull out port.    parseHost(self);    // we've indicated that there is a hostname,    // so even if it's empty, it has to be present.    self.hostname = self.hostname || '';    // if hostname begins with [ and ends with ]    // assume that it's an IPv6 address.    var ipv6Hostname = self.hostname[0] === '[' &&      self.hostname[self.hostname.length - 1] === ']';    // validate a little.    if (!ipv6Hostname) {      var hostparts = self.hostname.split(/\./);      for (i = 0, l = hostparts.length; i < l; i++) {        var part = hostparts[i];        if (!part) continue;        if (!part.match(hostnamePartPattern)) {          var newpart = '';          for (var j = 0, k = part.length; j < k; j++) {            if (part.charCodeAt(j) > 127) {              // we replace non-ASCII char with a temporary placeholder              // we need this to make sure size of hostname is not              // broken by replacing non-ASCII by nothing              newpart += 'x';            } else {              newpart += part[j];            }          }          // we test again with ASCII char only          if (!newpart.match(hostnamePartPattern)) {            var validParts = hostparts.slice(0, i);            var notHost = hostparts.slice(i + 1);            var bit = part.match(hostnamePartStart);            if (bit) {              validParts.push(bit[1]);              notHost.unshift(bit[2]);            }            if (notHost.length) {              rest = '/' + notHost.join('.') + rest;            }            self.hostname = validParts.join('.');            break;          }        }      }    }    if (self.hostname.length > hostnameMaxLen) {      self.hostname = '';    } else {      // hostnames are always lower case.      self.hostname = self.hostname.toLowerCase();    }    if (!ipv6Hostname) {      // IDNA Support: Returns a punycoded representation of "domain".      // It only converts parts of the domain name that      // have non-ASCII characters, i.e. it doesn't matter if      // you call it with a domain that already is ASCII-only.      self.hostname = toASCII(self.hostname);    }    p = self.port ? ':' + self.port : '';    var h = self.hostname || '';    self.host = h + p;    self.href += self.host;    // strip [ and ] from the hostname    // the host field still retains them, though    if (ipv6Hostname) {      self.hostname = self.hostname.substr(1, self.hostname.length - 2);      if (rest[0] !== '/') {        rest = '/' + rest;      }    }  }  // now rest is set to the post-host stuff.  // chop off any delim chars.  if (!unsafeProtocol[lowerProto]) {    // First, make 100% sure that any "autoEscape" chars get    // escaped, even if encodeURIComponent doesn't think they    // need to be.    for (i = 0, l = autoEscape.length; i < l; i++) {      var ae = autoEscape[i];      if (rest.indexOf(ae) === -1)        continue;      var esc = encodeURIComponent(ae);      if (esc === ae) {        esc = escape(ae);      }      rest = rest.split(ae).join(esc);    }  }  // chop off from the tail first.  var hash = rest.indexOf('#');  if (hash !== -1) {    // got a fragment string.    self.hash = rest.substr(hash);    rest = rest.slice(0, hash);  }  var qm = rest.indexOf('?');  if (qm !== -1) {    self.search = rest.substr(qm);    self.query = rest.substr(qm + 1);    if (parseQueryString) {      self.query = parse$2(self.query);    }    rest = rest.slice(0, qm);  } else if (parseQueryString) {    // no query string, but parseQueryString still requested    self.search = '';    self.query = {};  }  if (rest) self.pathname = rest;  if (slashedProtocol[lowerProto] &&    self.hostname && !self.pathname) {    self.pathname = '/';  }  //to support http.request  if (self.pathname || self.search) {    p = self.pathname || '';    var s = self.search || '';    self.path = p + s;  }  // finally, reconstruct the href based on what has been validated.  self.href = format$1(self);  return self;}// format a parsed object into a url stringfunction urlFormat(obj) {  // ensure it's an object, and not a string url.  // If it's an obj, this is a no-op.  // this way, you can call url_format() on strings  // to clean up potentially wonky urls.  if (isString$1(obj)) obj = parse$3({}, obj);  return format$1(obj);}function format$1(self) {  var auth = self.auth || '';  if (auth) {    auth = encodeURIComponent(auth);    auth = auth.replace(/%3A/i, ':');    auth += '@';  }  var protocol = self.protocol || '',    pathname = self.pathname || '',    hash = self.hash || '',    host = false,    query = '';  if (self.host) {    host = auth + self.host;  } else if (self.hostname) {    host = auth + (self.hostname.indexOf(':') === -1 ?      self.hostname :      '[' + this.hostname + ']');    if (self.port) {      host += ':' + self.port;    }  }  if (self.query &&    isObject$2(self.query) &&    Object.keys(self.query).length) {    query = stringify(self.query);  }  var search = self.search || (query && ('?' + query)) || '';  if (protocol && protocol.substr(-1) !== ':') protocol += ':';  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.  // unless they had them to begin with.  if (self.slashes ||    (!protocol || slashedProtocol[protocol]) && host !== false) {    host = '//' + (host || '');    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;  } else if (!host) {    host = '';  }  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;  if (search && search.charAt(0) !== '?') search = '?' + search;  pathname = pathname.replace(/[?#]/g, function(match) {    return encodeURIComponent(match);  });  search = search.replace('#', '%23');  return protocol + host + pathname + search + hash;}Url.prototype.format = function() {  return format$1(this);};function urlResolve(source, relative) {  return urlParse(source, false, true).resolve(relative);}Url.prototype.resolve = function(relative) {  return this.resolveObject(urlParse(relative, false, true)).format();};function urlResolveObject(source, relative) {  if (!source) return relative;  return urlParse(source, false, true).resolveObject(relative);}Url.prototype.resolveObject = function(relative) {  if (isString$1(relative)) {    var rel = new Url();    rel.parse(relative, false, true);    relative = rel;  }  var result = new Url();  var tkeys = Object.keys(this);  for (var tk = 0; tk < tkeys.length; tk++) {    var tkey = tkeys[tk];    result[tkey] = this[tkey];  }  // hash is always overridden, no matter what.  // even href="" will remove it.  result.hash = relative.hash;  // if the relative url is empty, then there's nothing left to do here.  if (relative.href === '') {    result.href = result.format();    return result;  }  // hrefs like //foo/bar always cut to the protocol.  if (relative.slashes && !relative.protocol) {    // take everything except the protocol from relative    var rkeys = Object.keys(relative);    for (var rk = 0; rk < rkeys.length; rk++) {      var rkey = rkeys[rk];      if (rkey !== 'protocol')        result[rkey] = relative[rkey];    }    //urlParse appends trailing / to urls like http://www.example.com    if (slashedProtocol[result.protocol] &&      result.hostname && !result.pathname) {      result.path = result.pathname = '/';    }    result.href = result.format();    return result;  }  var relPath;  if (relative.protocol && relative.protocol !== result.protocol) {    // if it's a known url protocol, then changing    // the protocol does weird things    // first, if it's not file:, then we MUST have a host,    // and if there was a path    // to begin with, then we MUST have a path.    // if it is file:, then the host is dropped,    // because that's known to be hostless.    // anything else is assumed to be absolute.    if (!slashedProtocol[relative.protocol]) {      var keys = Object.keys(relative);      for (var v = 0; v < keys.length; v++) {        var k = keys[v];        result[k] = relative[k];      }      result.href = result.format();      return result;    }    result.protocol = relative.protocol;    if (!relative.host && !hostlessProtocol[relative.protocol]) {      relPath = (relative.pathname || '').split('/');      while (relPath.length && !(relative.host = relPath.shift()));      if (!relative.host) relative.host = '';      if (!relative.hostname) relative.hostname = '';      if (relPath[0] !== '') relPath.unshift('');      if (relPath.length < 2) relPath.unshift('');      result.pathname = relPath.join('/');    } else {      result.pathname = relative.pathname;    }    result.search = relative.search;    result.query = relative.query;    result.host = relative.host || '';    result.auth = relative.auth;    result.hostname = relative.hostname || relative.host;    result.port = relative.port;    // to support http.request    if (result.pathname || result.search) {      var p = result.pathname || '';      var s = result.search || '';      result.path = p + s;    }    result.slashes = result.slashes || relative.slashes;    result.href = result.format();    return result;  }  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),    isRelAbs = (      relative.host ||      relative.pathname && relative.pathname.charAt(0) === '/'    ),    mustEndAbs = (isRelAbs || isSourceAbs ||      (result.host && relative.pathname)),    removeAllDots = mustEndAbs,    srcPath = result.pathname && result.pathname.split('/') || [],    psychotic = result.protocol && !slashedProtocol[result.protocol];  relPath = relative.pathname && relative.pathname.split('/') || [];  // if the url is a non-slashed url, then relative  // links like ../.. should be able  // to crawl up to the hostname, as well.  This is strange.  // result.protocol has already been set by now.  // Later on, put the first path part into the host field.  if (psychotic) {    result.hostname = '';    result.port = null;    if (result.host) {      if (srcPath[0] === '') srcPath[0] = result.host;      else srcPath.unshift(result.host);    }    result.host = '';    if (relative.protocol) {      relative.hostname = null;      relative.port = null;      if (relative.host) {        if (relPath[0] === '') relPath[0] = relative.host;        else relPath.unshift(relative.host);      }      relative.host = null;    }    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');  }  var authInHost;  if (isRelAbs) {    // it's absolute.    result.host = (relative.host || relative.host === '') ?      relative.host : result.host;    result.hostname = (relative.hostname || relative.hostname === '') ?      relative.hostname : result.hostname;    result.search = relative.search;    result.query = relative.query;    srcPath = relPath;    // fall through to the dot-handling below.  } else if (relPath.length) {    // it's relative    // throw away the existing file, and take the new path instead.    if (!srcPath) srcPath = [];    srcPath.pop();    srcPath = srcPath.concat(relPath);    result.search = relative.search;    result.query = relative.query;  } else if (!isNullOrUndefined(relative.search)) {    // just pull out the search.    // like href='?foo'.    // Put this after the other two cases because it simplifies the booleans    if (psychotic) {      result.hostname = result.host = srcPath.shift();      //occationaly the auth can get stuck only in host      //this especially happens in cases like      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')      authInHost = result.host && result.host.indexOf('@') > 0 ?        result.host.split('@') : false;      if (authInHost) {        result.auth = authInHost.shift();        result.host = result.hostname = authInHost.shift();      }    }    result.search = relative.search;    result.query = relative.query;    //to support http.request    if (!isNull(result.pathname) || !isNull(result.search)) {      result.path = (result.pathname ? result.pathname : '') +        (result.search ? result.search : '');    }    result.href = result.format();    return result;  }  if (!srcPath.length) {    // no path at all.  easy.    // we've already handled the other stuff above.    result.pathname = null;    //to support http.request    if (result.search) {      result.path = '/' + result.search;    } else {      result.path = null;    }    result.href = result.format();    return result;  }  // if a url ENDs in . or .., then it must get a trailing slash.  // however, if it ends in anything else non-slashy,  // then it must NOT get a trailing slash.  var last = srcPath.slice(-1)[0];  var hasTrailingSlash = (    (result.host || relative.host || srcPath.length > 1) &&    (last === '.' || last === '..') || last === '');  // strip single dots, resolve double dots to parent dir  // if the path tries to go above the root, `up` ends up > 0  var up = 0;  for (var i = srcPath.length; i >= 0; i--) {    last = srcPath[i];    if (last === '.') {      srcPath.splice(i, 1);    } else if (last === '..') {      srcPath.splice(i, 1);      up++;    } else if (up) {      srcPath.splice(i, 1);      up--;    }  }  // if the path is allowed to go above the root, restore leading ..s  if (!mustEndAbs && !removeAllDots) {    for (; up--; up) {      srcPath.unshift('..');    }  }  if (mustEndAbs && srcPath[0] !== '' &&    (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {    srcPath.unshift('');  }  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {    srcPath.push('');  }  var isAbsolute = srcPath[0] === '' ||    (srcPath[0] && srcPath[0].charAt(0) === '/');  // put the host back  if (psychotic) {    result.hostname = result.host = isAbsolute ? '' :      srcPath.length ? srcPath.shift() : '';    //occationaly the auth can get stuck only in host    //this especially happens in cases like    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')    authInHost = result.host && result.host.indexOf('@') > 0 ?      result.host.split('@') : false;    if (authInHost) {      result.auth = authInHost.shift();      result.host = result.hostname = authInHost.shift();    }  }  mustEndAbs = mustEndAbs || (result.host && srcPath.length);  if (mustEndAbs && !isAbsolute) {    srcPath.unshift('');  }  if (!srcPath.length) {    result.pathname = null;    result.path = null;  } else {    result.pathname = srcPath.join('/');  }  //to support request.http  if (!isNull(result.pathname) || !isNull(result.search)) {    result.path = (result.pathname ? result.pathname : '') +      (result.search ? result.search : '');  }  result.auth = relative.auth || result.auth;  result.slashes = result.slashes || relative.slashes;  result.href = result.format();  return result;};Url.prototype.parseHost = function() {  return parseHost(this);};function parseHost(self) {  var host = self.host;  var port = portPattern.exec(host);  if (port) {    port = port[0];    if (port !== ':') {      self.port = port.substr(1);    }    host = host.substr(0, host.length - port.length);  }  if (host) self.hostname = host;}var _polyfillNode_url$1 = /*#__PURE__*/Object.freeze({  __proto__: null,  parse: urlParse,  resolve: urlResolve,  resolveObject: urlResolveObject,  format: urlFormat,  'default': _polyfillNode_url,  Url: Url});function isRelativeUrl(url) {    const firstChar = url.charAt(0);    return firstChar === '.' || firstChar === '~' || firstChar === '@';}const externalRE = /^(https?:)?\/\//;function isExternalUrl(url) {    return externalRE.test(url);}const dataUrlRE = /^\s*data:/i;function isDataUrl(url) {    return dataUrlRE.test(url);}/** * Parses string url into URL object. */function parseUrl(url) {    const firstChar = url.charAt(0);    if (firstChar === '~') {        const secondChar = url.charAt(1);        url = url.slice(secondChar === '/' ? 2 : 1);    }    return parseUriParts(url);}/** * vuejs/component-compiler-utils#22 Support uri fragment in transformed require * @param urlString an url as a string */function parseUriParts(urlString) {    // A TypeError is thrown if urlString is not a string    // @see https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost    return urlParse(isString(urlString) ? urlString : '', false, true);}const defaultAssetUrlOptions = {    base: null,    includeAbsolute: false,    tags: {        video: ['src', 'poster'],        source: ['src'],        img: ['src'],        image: ['xlink:href', 'href'],        use: ['xlink:href', 'href']    }};const normalizeOptions = (options) => {    if (Object.keys(options).some(key => isArray(options[key]))) {        // legacy option format which directly passes in tags config        return Object.assign(Object.assign({}, defaultAssetUrlOptions), { tags: options });    }    return Object.assign(Object.assign({}, defaultAssetUrlOptions), options);};const createAssetUrlTransformWithOptions = (options) => {    return (node, context) => transformAssetUrl(node, context, options);};/** * A `@vue/compiler-core` plugin that transforms relative asset urls into * either imports or absolute urls. * * ``` js * // Before * createVNode('img', { src: './logo.png' }) * * // After * import _imports_0 from './logo.png' * createVNode('img', { src: _imports_0 }) * ``` */const transformAssetUrl = (node, context, options = defaultAssetUrlOptions) => {    if (node.type === 1 /* NodeTypes.ELEMENT */) {        if (!node.props.length) {            return;        }        const tags = options.tags || defaultAssetUrlOptions.tags;        const attrs = tags[node.tag];        const wildCardAttrs = tags['*'];        if (!attrs && !wildCardAttrs) {            return;        }        const assetAttrs = (attrs || []).concat(wildCardAttrs || []);        node.props.forEach((attr, index) => {            if (attr.type !== 6 /* NodeTypes.ATTRIBUTE */ ||                !assetAttrs.includes(attr.name) ||                !attr.value ||                isExternalUrl(attr.value.content) ||                isDataUrl(attr.value.content) ||                attr.value.content[0] === '#' ||                (!options.includeAbsolute && !isRelativeUrl(attr.value.content))) {                return;            }            const url = parseUrl(attr.value.content);            if (options.base && attr.value.content[0] === '.') {                // explicit base - directly rewrite relative urls into absolute url                // to avoid generating extra imports                // Allow for full hostnames provided in options.base                const base = parseUrl(options.base);                const protocol = base.protocol || '';                const host = base.host ? protocol + '//' + base.host : '';                const basePath = base.path || '/';                // when packaged in the browser, path will be using the posix-                // only version provided by rollup-plugin-node-builtins.                attr.value.content =                    host +                        (path.posix || path).join(basePath, url.path + (url.hash || ''));                return;            }            // otherwise, transform the url into an import.            // this assumes a bundler will resolve the import into the correct            // absolute url (e.g. webpack file-loader)            const exp = getImportsExpressionExp(url.path, url.hash, attr.loc, context);            node.props[index] = {                type: 7 /* NodeTypes.DIRECTIVE */,                name: 'bind',                arg: createSimpleExpression(attr.name, true, attr.loc),                exp,                modifiers: [],                loc: attr.loc            };        });    }};function getImportsExpressionExp(path, hash, loc, context) {    if (path) {        let name;        let exp;        const existingIndex = context.imports.findIndex(i => i.path === path);        if (existingIndex > -1) {            name = `_imports_${existingIndex}`;            exp = context.imports[existingIndex].exp;        }        else {            name = `_imports_${context.imports.length}`;            exp = createSimpleExpression(name, false, loc, 3 /* ConstantTypes.CAN_STRINGIFY */);            context.imports.push({ exp, path });        }        if (!hash) {            return exp;        }        const hashExp = `${name} + '${hash}'`;        const finalExp = createSimpleExpression(hashExp, false, loc, 3 /* ConstantTypes.CAN_STRINGIFY */);        if (!context.hoistStatic) {            return finalExp;        }        const existingHoistIndex = context.hoists.findIndex(h => {            return (h &&                h.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&                !h.isStatic &&                h.content === hashExp);        });        if (existingHoistIndex > -1) {            return createSimpleExpression(`_hoisted_${existingHoistIndex + 1}`, false, loc, 3 /* ConstantTypes.CAN_STRINGIFY */);        }        return context.hoist(finalExp);    }    else {        return createSimpleExpression(`''`, false, loc, 3 /* ConstantTypes.CAN_STRINGIFY */);    }}const srcsetTags = ['img', 'source'];// http://w3c.github.io/html/semantics-embedded-content.html#ref-for-image-candidate-string-5const escapedSpaceCharacters = /( |\\t|\\n|\\f|\\r)+/g;const createSrcsetTransformWithOptions = (options) => {    return (node, context) => transformSrcset(node, context, options);};const transformSrcset = (node, context, options = defaultAssetUrlOptions) => {    if (node.type === 1 /* NodeTypes.ELEMENT */) {        if (srcsetTags.includes(node.tag) && node.props.length) {            node.props.forEach((attr, index) => {                if (attr.name === 'srcset' && attr.type === 6 /* NodeTypes.ATTRIBUTE */) {                    if (!attr.value)                        return;                    const value = attr.value.content;                    if (!value)                        return;                    const imageCandidates = value.split(',').map(s => {                        // The attribute value arrives here with all whitespace, except                        // normal spaces, represented by escape sequences                        const [url, descriptor] = s                            .replace(escapedSpaceCharacters, ' ')                            .trim()                            .split(' ', 2);                        return { url, descriptor };                    });                    // data urls contains comma after the encoding so we need to re-merge                    // them                    for (let i = 0; i < imageCandidates.length; i++) {                        const { url } = imageCandidates[i];                        if (isDataUrl(url)) {                            imageCandidates[i + 1].url =                                url + ',' + imageCandidates[i + 1].url;                            imageCandidates.splice(i, 1);                        }                    }                    const shouldProcessUrl = (url) => {                        return (!isExternalUrl(url) &&                            !isDataUrl(url) &&                            (options.includeAbsolute || isRelativeUrl(url)));                    };                    // When srcset does not contain any qualified URLs, skip transforming                    if (!imageCandidates.some(({ url }) => shouldProcessUrl(url))) {                        return;                    }                    if (options.base) {                        const base = options.base;                        const set = [];                        let needImportTransform = false;                        imageCandidates.forEach(candidate => {                            let { url, descriptor } = candidate;                            descriptor = descriptor ? ` ${descriptor}` : ``;                            if (url[0] === '.') {                                candidate.url = (path.posix || path).join(base, url);                                set.push(candidate.url + descriptor);                            }                            else if (shouldProcessUrl(url)) {                                needImportTransform = true;                            }                            else {                                set.push(url + descriptor);                            }                        });                        if (!needImportTransform) {                            attr.value.content = set.join(', ');                            return;                        }                    }                    const compoundExpression = createCompoundExpression([], attr.loc);                    imageCandidates.forEach(({ url, descriptor }, index) => {                        if (shouldProcessUrl(url)) {                            const { path } = parseUrl(url);                            let exp;                            if (path) {                                const existingImportsIndex = context.imports.findIndex(i => i.path === path);                                if (existingImportsIndex > -1) {                                    exp = createSimpleExpression(`_imports_${existingImportsIndex}`, false, attr.loc, 3 /* ConstantTypes.CAN_STRINGIFY */);                                }                                else {                                    exp = createSimpleExpression(`_imports_${context.imports.length}`, false, attr.loc, 3 /* ConstantTypes.CAN_STRINGIFY */);                                    context.imports.push({ exp, path });                                }                                compoundExpression.children.push(exp);                            }                        }                        else {                            const exp = createSimpleExpression(`"${url}"`, false, attr.loc, 3 /* ConstantTypes.CAN_STRINGIFY */);                            compoundExpression.children.push(exp);                        }                        const isNotLast = imageCandidates.length - 1 > index;                        if (descriptor && isNotLast) {                            compoundExpression.children.push(` + ' ${descriptor}, ' + `);                        }                        else if (descriptor) {                            compoundExpression.children.push(` + ' ${descriptor}'`);                        }                        else if (isNotLast) {                            compoundExpression.children.push(` + ', ' + `);                        }                    });                    let exp = compoundExpression;                    if (context.hoistStatic) {                        exp = context.hoist(compoundExpression);                        exp.constType = 3 /* ConstantTypes.CAN_STRINGIFY */;                    }                    node.props[index] = {                        type: 7 /* NodeTypes.DIRECTIVE */,                        name: 'bind',                        arg: createSimpleExpression('srcset', true, attr.loc),                        exp,                        modifiers: [],                        loc: attr.loc                    };                }            });        }    }};const SSR_INTERPOLATE = Symbol(`ssrInterpolate`);const SSR_RENDER_VNODE = Symbol(`ssrRenderVNode`);const SSR_RENDER_COMPONENT = Symbol(`ssrRenderComponent`);const SSR_RENDER_SLOT = Symbol(`ssrRenderSlot`);const SSR_RENDER_SLOT_INNER = Symbol(`ssrRenderSlotInner`);const SSR_RENDER_CLASS = Symbol(`ssrRenderClass`);const SSR_RENDER_STYLE = Symbol(`ssrRenderStyle`);const SSR_RENDER_ATTRS = Symbol(`ssrRenderAttrs`);const SSR_RENDER_ATTR = Symbol(`ssrRenderAttr`);const SSR_RENDER_DYNAMIC_ATTR = Symbol(`ssrRenderDynamicAttr`);const SSR_RENDER_LIST = Symbol(`ssrRenderList`);const SSR_INCLUDE_BOOLEAN_ATTR = Symbol(`ssrIncludeBooleanAttr`);const SSR_LOOSE_EQUAL = Symbol(`ssrLooseEqual`);const SSR_LOOSE_CONTAIN = Symbol(`ssrLooseContain`);const SSR_RENDER_DYNAMIC_MODEL = Symbol(`ssrRenderDynamicModel`);const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol(`ssrGetDynamicModelProps`);const SSR_RENDER_TELEPORT = Symbol(`ssrRenderTeleport`);const SSR_RENDER_SUSPENSE = Symbol(`ssrRenderSuspense`);const SSR_GET_DIRECTIVE_PROPS = Symbol(`ssrGetDirectiveProps`);const ssrHelpers = {    [SSR_INTERPOLATE]: `ssrInterpolate`,    [SSR_RENDER_VNODE]: `ssrRenderVNode`,    [SSR_RENDER_COMPONENT]: `ssrRenderComponent`,    [SSR_RENDER_SLOT]: `ssrRenderSlot`,    [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`,    [SSR_RENDER_CLASS]: `ssrRenderClass`,    [SSR_RENDER_STYLE]: `ssrRenderStyle`,    [SSR_RENDER_ATTRS]: `ssrRenderAttrs`,    [SSR_RENDER_ATTR]: `ssrRenderAttr`,    [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`,    [SSR_RENDER_LIST]: `ssrRenderList`,    [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`,    [SSR_LOOSE_EQUAL]: `ssrLooseEqual`,    [SSR_LOOSE_CONTAIN]: `ssrLooseContain`,    [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`,    [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`,    [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`,    [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`,    [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps`};// Note: these are helpers imported from @vue/server-renderer// make sure the names match!registerRuntimeHelpers(ssrHelpers);// Plugin for the first transform pass, which simply constructs the AST nodeconst ssrTransformIf = createStructuralDirectiveTransform(/^(if|else|else-if)$/, processIf);// This is called during the 2nd transform pass to construct the SSR-specific// codegen nodes.function ssrProcessIf(node, context, disableNestedFragments = false) {    const [rootBranch] = node.branches;    const ifStatement = createIfStatement(rootBranch.condition, processIfBranch(rootBranch, context, disableNestedFragments));    context.pushStatement(ifStatement);    let currentIf = ifStatement;    for (let i = 1; i < node.branches.length; i++) {        const branch = node.branches[i];        const branchBlockStatement = processIfBranch(branch, context, disableNestedFragments);        if (branch.condition) {            // else-if            currentIf = currentIf.alternate = createIfStatement(branch.condition, branchBlockStatement);        }        else {            // else            currentIf.alternate = branchBlockStatement;        }    }    if (!currentIf.alternate) {        currentIf.alternate = createBlockStatement([            createCallExpression(`_push`, ['`<!---->`'])        ]);    }}function processIfBranch(branch, context, disableNestedFragments = false) {    const { children } = branch;    const needFragmentWrapper = !disableNestedFragments &&        (children.length !== 1 || children[0].type !== 1 /* NodeTypes.ELEMENT */) &&        // optimize away nested fragments when the only child is a ForNode        !(children.length === 1 && children[0].type === 11 /* NodeTypes.FOR */);    return processChildrenAsStatement(branch, context, needFragmentWrapper);}// Plugin for the first transform pass, which simply constructs the AST nodeconst ssrTransformFor = createStructuralDirectiveTransform('for', processFor);// This is called during the 2nd transform pass to construct the SSR-specific// codegen nodes.function ssrProcessFor(node, context, disableNestedFragments = false) {    const needFragmentWrapper = !disableNestedFragments &&        (node.children.length !== 1 || node.children[0].type !== 1 /* NodeTypes.ELEMENT */);    const renderLoop = createFunctionExpression(createForLoopParams(node.parseResult));    renderLoop.body = processChildrenAsStatement(node, context, needFragmentWrapper);    // v-for always renders a fragment unless explicitly disabled    if (!disableNestedFragments) {        context.pushStringPart(`<!--[-->`);    }    context.pushStatement(createCallExpression(context.helper(SSR_RENDER_LIST), [        node.source,        renderLoop    ]));    if (!disableNestedFragments) {        context.pushStringPart(`<!--]-->`);    }}const ssrTransformSlotOutlet = (node, context) => {    if (isSlotOutlet(node)) {        const { slotName, slotProps } = processSlotOutlet(node, context);        const args = [            `_ctx.$slots`,            slotName,            slotProps || `{}`,            // fallback content placeholder. will be replaced in the process phase            `null`,            `_push`,            `_parent`        ];        // inject slot scope id if current template uses :slotted        if (context.scopeId && context.slotted !== false) {            args.push(`"${context.scopeId}-s"`);        }        let method = SSR_RENDER_SLOT;        // #3989        // check if this is a single slot inside a transition wrapper - since        // transition will unwrap the slot fragment into a single vnode at runtime,        // we need to avoid rendering the slot as a fragment.        const parent = context.parent;        if (parent &&            parent.type === 1 /* NodeTypes.ELEMENT */ &&            parent.tagType === 1 /* ElementTypes.COMPONENT */ &&            resolveComponentType(parent, context, true) === TRANSITION &&            parent.children.filter(c => c.type === 1 /* NodeTypes.ELEMENT */).length === 1) {            method = SSR_RENDER_SLOT_INNER;            if (!(context.scopeId && context.slotted !== false)) {                args.push('null');            }            args.push('true');        }        node.ssrCodegenNode = createCallExpression(context.helper(method), args);    }};function ssrProcessSlotOutlet(node, context) {    const renderCall = node.ssrCodegenNode;    // has fallback content    if (node.children.length) {        const fallbackRenderFn = createFunctionExpression([]);        fallbackRenderFn.body = processChildrenAsStatement(node, context);        // _renderSlot(slots, name, props, fallback, ...)        renderCall.arguments[3] = fallbackRenderFn;    }    // Forwarded <slot/>. Merge slot scope ids    if (context.withSlotScopeId) {        const slotScopeId = renderCall.arguments[6];        renderCall.arguments[6] = slotScopeId            ? `${slotScopeId} + _scopeId`            : `_scopeId`;    }    context.pushStatement(node.ssrCodegenNode);}function createSSRCompilerError(code, loc) {    return createCompilerError(code, loc, SSRErrorMessages);}const SSRErrorMessages = {    [62 /* SSRErrorCodes.X_SSR_UNSAFE_ATTR_NAME */]: `Unsafe attribute name for SSR.`,    [63 /* SSRErrorCodes.X_SSR_NO_TELEPORT_TARGET */]: `Missing the 'to' prop on teleport element.`,    [64 /* SSRErrorCodes.X_SSR_INVALID_AST_NODE */]: `Invalid AST node during SSR transform.`};// Note: this is a 2nd-pass codegen transform.function ssrProcessTeleport(node, context) {    const targetProp = findProp(node, 'to');    if (!targetProp) {        context.onError(createSSRCompilerError(63 /* SSRErrorCodes.X_SSR_NO_TELEPORT_TARGET */, node.loc));        return;    }    let target;    if (targetProp.type === 6 /* NodeTypes.ATTRIBUTE */) {        target =            targetProp.value && createSimpleExpression(targetProp.value.content, true);    }    else {        target = targetProp.exp;    }    if (!target) {        context.onError(createSSRCompilerError(63 /* SSRErrorCodes.X_SSR_NO_TELEPORT_TARGET */, targetProp.loc));        return;    }    const disabledProp = findProp(node, 'disabled', false, true /* allow empty */);    const disabled = disabledProp        ? disabledProp.type === 6 /* NodeTypes.ATTRIBUTE */            ? `true`            : disabledProp.exp || `false`        : `false`;    const contentRenderFn = createFunctionExpression([`_push`], undefined, // Body is added later    true, // newline    false, // isSlot    node.loc);    contentRenderFn.body = processChildrenAsStatement(node, context);    context.pushStatement(createCallExpression(context.helper(SSR_RENDER_TELEPORT), [        `_push`,        contentRenderFn,        target,        disabled,        `_parent`    ]));}const wipMap = new WeakMap();// phase 1function ssrTransformSuspense(node, context) {    return () => {        if (node.children.length) {            const wipEntry = {                slotsExp: null,                wipSlots: []            };            wipMap.set(node, wipEntry);            wipEntry.slotsExp = buildSlots(node, context, (_props, children, loc) => {                const fn = createFunctionExpression([], undefined, // no return, assign body later                true, // newline                false, // suspense slots are not treated as normal slots                loc);                wipEntry.wipSlots.push({                    fn,                    children                });                return fn;            }).slots;        }    };}// phase 2function ssrProcessSuspense(node, context) {    // complete wip slots with ssr code    const wipEntry = wipMap.get(node);    if (!wipEntry) {        return;    }    const { slotsExp, wipSlots } = wipEntry;    for (let i = 0; i < wipSlots.length; i++) {        const slot = wipSlots[i];        slot.fn.body = processChildrenAsStatement(slot, context);    }    // _push(ssrRenderSuspense(slots))    context.pushStatement(createCallExpression(context.helper(SSR_RENDER_SUSPENSE), [        `_push`,        slotsExp    ]));}// for directives with children overwrite (e.g. v-html & v-text), we need to// store the raw children so that they can be added in the 2nd pass.const rawChildrenMap = new WeakMap();const ssrTransformElement = (node, context) => {    if (node.type !== 1 /* NodeTypes.ELEMENT */ ||        node.tagType !== 0 /* ElementTypes.ELEMENT */) {        return;    }    return function ssrPostTransformElement() {        // element        // generate the template literal representing the open tag.        const openTag = [`<${node.tag}`];        // some tags need to be passed to runtime for special checks        const needTagForRuntime = node.tag === 'textarea' || node.tag.indexOf('-') > 0;        // v-bind="obj", v-bind:[key] and custom directives can potentially        // overwrite other static attrs and can affect final rendering result,        // so when they are present we need to bail out to full `renderAttrs`        const hasDynamicVBind = hasDynamicKeyVBind(node);        const hasCustomDir = node.props.some(p => p.type === 7 /* NodeTypes.DIRECTIVE */ && !isBuiltInDirective(p.name));        const needMergeProps = hasDynamicVBind || hasCustomDir;        if (needMergeProps) {            const { props, directives } = buildProps(node, context, node.props, false /* isComponent */, false /* isDynamicComponent */, true /* ssr */);            if (props || directives.length) {                const mergedProps = buildSSRProps(props, directives, context);                const propsExp = createCallExpression(context.helper(SSR_RENDER_ATTRS), [mergedProps]);                if (node.tag === 'textarea') {                    const existingText = node.children[0];                    // If interpolation, this is dynamic <textarea> content, potentially                    // injected by v-model and takes higher priority than v-bind value                    if (!existingText || existingText.type !== 5 /* NodeTypes.INTERPOLATION */) {                        // <textarea> with dynamic v-bind. We don't know if the final props                        // will contain .value, so we will have to do something special:                        // assign the merged props to a temp variable, and check whether                        // it contains value (if yes, render is as children).                        const tempId = `_temp${context.temps++}`;                        propsExp.arguments = [                            createAssignmentExpression(createSimpleExpression(tempId, false), mergedProps)                        ];                        rawChildrenMap.set(node, createCallExpression(context.helper(SSR_INTERPOLATE), [                            createConditionalExpression(createSimpleExpression(`"value" in ${tempId}`, false), createSimpleExpression(`${tempId}.value`, false), createSimpleExpression(existingText ? existingText.content : ``, true), false)                        ]));                    }                }                else if (node.tag === 'input') {                    // <input v-bind="obj" v-model>                    // we need to determine the props to render for the dynamic v-model                    // and merge it with the v-bind expression.                    const vModel = findVModel(node);                    if (vModel) {                        // 1. save the props (san v-model) in a temp variable                        const tempId = `_temp${context.temps++}`;                        const tempExp = createSimpleExpression(tempId, false);                        propsExp.arguments = [                            createSequenceExpression([                                createAssignmentExpression(tempExp, mergedProps),                                createCallExpression(context.helper(MERGE_PROPS), [                                    tempExp,                                    createCallExpression(context.helper(SSR_GET_DYNAMIC_MODEL_PROPS), [                                        tempExp,                                        vModel.exp // model                                    ])                                ])                            ])                        ];                    }                }                if (needTagForRuntime) {                    propsExp.arguments.push(`"${node.tag}"`);                }                openTag.push(propsExp);            }        }        // book keeping static/dynamic class merging.        let dynamicClassBinding = undefined;        let staticClassBinding = undefined;        // all style bindings are converted to dynamic by transformStyle.        // but we need to make sure to merge them.        let dynamicStyleBinding = undefined;        for (let i = 0; i < node.props.length; i++) {            const prop = node.props[i];            // ignore true-value/false-value on input            if (node.tag === 'input' && isTrueFalseValue(prop)) {                continue;            }            // special cases with children override            if (prop.type === 7 /* NodeTypes.DIRECTIVE */) {                if (prop.name === 'html' && prop.exp) {                    rawChildrenMap.set(node, prop.exp);                }                else if (prop.name === 'text' && prop.exp) {                    node.children = [createInterpolation(prop.exp, prop.loc)];                }                else if (prop.name === 'slot') {                    context.onError(createCompilerError(40 /* ErrorCodes.X_V_SLOT_MISPLACED */, prop.loc));                }                else if (isTextareaWithValue(node, prop) && prop.exp) {                    if (!needMergeProps) {                        node.children = [createInterpolation(prop.exp, prop.loc)];                    }                }                else if (!needMergeProps && prop.name !== 'on') {                    // Directive transforms.                    const directiveTransform = context.directiveTransforms[prop.name];                    if (directiveTransform) {                        const { props, ssrTagParts } = directiveTransform(prop, node, context);                        if (ssrTagParts) {                            openTag.push(...ssrTagParts);                        }                        for (let j = 0; j < props.length; j++) {                            const { key, value } = props[j];                            if (isStaticExp(key)) {                                let attrName = key.content;                                // static key attr                                if (attrName === 'key' || attrName === 'ref') {                                    continue;                                }                                if (attrName === 'class') {                                    openTag.push(` class="`, (dynamicClassBinding = createCallExpression(context.helper(SSR_RENDER_CLASS), [value])), `"`);                                }                                else if (attrName === 'style') {                                    if (dynamicStyleBinding) {                                        // already has style binding, merge into it.                                        mergeCall(dynamicStyleBinding, value);                                    }                                    else {                                        openTag.push(` style="`, (dynamicStyleBinding = createCallExpression(context.helper(SSR_RENDER_STYLE), [value])), `"`);                                    }                                }                                else {                                    attrName =                                        node.tag.indexOf('-') > 0                                            ? attrName // preserve raw name on custom elements                                            : propsToAttrMap[attrName] || attrName.toLowerCase();                                    if (isBooleanAttr(attrName)) {                                        openTag.push(createConditionalExpression(createCallExpression(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [value]), createSimpleExpression(' ' + attrName, true), createSimpleExpression('', true), false /* no newline */));                                    }                                    else if (isSSRSafeAttrName(attrName)) {                                        openTag.push(createCallExpression(context.helper(SSR_RENDER_ATTR), [                                            key,                                            value                                        ]));                                    }                                    else {                                        context.onError(createSSRCompilerError(62 /* SSRErrorCodes.X_SSR_UNSAFE_ATTR_NAME */, key.loc));                                    }                                }                            }                            else {                                // dynamic key attr                                // this branch is only encountered for custom directive                                // transforms that returns properties with dynamic keys                                const args = [key, value];                                if (needTagForRuntime) {                                    args.push(`"${node.tag}"`);                                }                                openTag.push(createCallExpression(context.helper(SSR_RENDER_DYNAMIC_ATTR), args));                            }                        }                    }                }            }            else {                // special case: value on <textarea>                if (node.tag === 'textarea' && prop.name === 'value' && prop.value) {                    rawChildrenMap.set(node, escapeHtml(prop.value.content));                }                else if (!needMergeProps) {                    if (prop.name === 'key' || prop.name === 'ref') {                        continue;                    }                    // static prop                    if (prop.name === 'class' && prop.value) {                        staticClassBinding = JSON.stringify(prop.value.content);                    }                    openTag.push(` ${prop.name}` +                        (prop.value ? `="${escapeHtml(prop.value.content)}"` : ``));                }            }        }        // handle co-existence of dynamic + static class bindings        if (dynamicClassBinding && staticClassBinding) {            mergeCall(dynamicClassBinding, staticClassBinding);            removeStaticBinding(openTag, 'class');        }        if (context.scopeId) {            openTag.push(` ${context.scopeId}`);        }        node.ssrCodegenNode = createTemplateLiteral(openTag);    };};function buildSSRProps(props, directives, context) {    let mergePropsArgs = [];    if (props) {        if (props.type === 14 /* NodeTypes.JS_CALL_EXPRESSION */) {            // already a mergeProps call            mergePropsArgs = props.arguments;        }        else {            mergePropsArgs.push(props);        }    }    if (directives.length) {        for (const dir of directives) {            mergePropsArgs.push(createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [                `_ctx`,                ...buildDirectiveArgs(dir, context).elements            ]));        }    }    return mergePropsArgs.length > 1        ? createCallExpression(context.helper(MERGE_PROPS), mergePropsArgs)        : mergePropsArgs[0];}function isTrueFalseValue(prop) {    if (prop.type === 7 /* NodeTypes.DIRECTIVE */) {        return (prop.name === 'bind' &&            prop.arg &&            isStaticExp(prop.arg) &&            (prop.arg.content === 'true-value' || prop.arg.content === 'false-value'));    }    else {        return prop.name === 'true-value' || prop.name === 'false-value';    }}function isTextareaWithValue(node, prop) {    return !!(node.tag === 'textarea' &&        prop.name === 'bind' &&        isStaticArgOf(prop.arg, 'value'));}function mergeCall(call, arg) {    const existing = call.arguments[0];    if (existing.type === 17 /* NodeTypes.JS_ARRAY_EXPRESSION */) {        existing.elements.push(arg);    }    else {        call.arguments[0] = createArrayExpression([existing, arg]);    }}function removeStaticBinding(tag, binding) {    const regExp = new RegExp(`^ ${binding}=".+"$`);    const i = tag.findIndex(e => typeof e === 'string' && regExp.test(e));    if (i > -1) {        tag.splice(i, 1);    }}function findVModel(node) {    return node.props.find(p => p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'model' && p.exp);}function ssrProcessElement(node, context) {    const isVoidTag = context.options.isVoidTag || NO;    const elementsToAdd = node.ssrCodegenNode.elements;    for (let j = 0; j < elementsToAdd.length; j++) {        context.pushStringPart(elementsToAdd[j]);    }    // Handle slot scopeId    if (context.withSlotScopeId) {        context.pushStringPart(createSimpleExpression(`_scopeId`, false));    }    // close open tag    context.pushStringPart(`>`);    const rawChildren = rawChildrenMap.get(node);    if (rawChildren) {        context.pushStringPart(rawChildren);    }    else if (node.children.length) {        processChildren(node, context);    }    if (!isVoidTag(node.tag)) {        // push closing tag        context.pushStringPart(`</${node.tag}>`);    }}const wipMap$1 = new WeakMap();// phase 1: build propsfunction ssrTransformTransitionGroup(node, context) {    return () => {        const tag = findProp(node, 'tag');        if (tag) {            const otherProps = node.props.filter(p => p !== tag);            const { props, directives } = buildProps(node, context, otherProps, true /* isComponent */, false /* isDynamicComponent */, true /* ssr (skip event listeners) */);            let propsExp = null;            if (props || directives.length) {                propsExp = createCallExpression(context.helper(SSR_RENDER_ATTRS), [                    buildSSRProps(props, directives, context)                ]);            }            wipMap$1.set(node, {                tag,                propsExp            });        }    };}// phase 2: process childrenfunction ssrProcessTransitionGroup(node, context) {    const entry = wipMap$1.get(node);    if (entry) {        const { tag, propsExp } = entry;        if (tag.type === 7 /* NodeTypes.DIRECTIVE */) {            // dynamic :tag            context.pushStringPart(`<`);            context.pushStringPart(tag.exp);            if (propsExp) {                context.pushStringPart(propsExp);            }            context.pushStringPart(`>`);            processChildren(node, context, false,             /**             * TransitionGroup has the special runtime behavior of flattening and             * concatenating all children into a single fragment (in order for them to             * be patched using the same key map) so we need to account for that here             * by disabling nested fragment wrappers from being generated.             */            true);            context.pushStringPart(`</`);            context.pushStringPart(tag.exp);            context.pushStringPart(`>`);        }        else {            // static tag            context.pushStringPart(`<${tag.value.content}`);            if (propsExp) {                context.pushStringPart(propsExp);            }            context.pushStringPart(`>`);            processChildren(node, context, false, true);            context.pushStringPart(`</${tag.value.content}>`);        }    }    else {        // fragment        processChildren(node, context, true, true);    }}// We need to construct the slot functions in the 1st pass to ensure proper// scope tracking, but the children of each slot cannot be processed until// the 2nd pass, so we store the WIP slot functions in a weakMap during the 1st// pass and complete them in the 2nd pass.const wipMap$2 = new WeakMap();const WIP_SLOT = Symbol();const componentTypeMap = new WeakMap();// ssr component transform is done in two phases:// In phase 1. we use `buildSlot` to analyze the children of the component into// WIP slot functions (it must be done in phase 1 because `buildSlot` relies on// the core transform context).// In phase 2. we convert the WIP slots from phase 1 into ssr-specific codegen// nodes.const ssrTransformComponent = (node, context) => {    if (node.type !== 1 /* NodeTypes.ELEMENT */ ||        node.tagType !== 1 /* ElementTypes.COMPONENT */) {        return;    }    const component = resolveComponentType(node, context, true /* ssr */);    const isDynamicComponent = isObject(component) && component.callee === RESOLVE_DYNAMIC_COMPONENT;    componentTypeMap.set(node, component);    if (isSymbol(component)) {        if (component === SUSPENSE) {            return ssrTransformSuspense(node, context);        }        if (component === TRANSITION_GROUP) {            return ssrTransformTransitionGroup(node, context);        }        return; // other built-in components: fallthrough    }    // Build the fallback vnode-based branch for the component's slots.    // We need to clone the node into a fresh copy and use the buildSlots' logic    // to get access to the children of each slot. We then compile them with    // a child transform pipeline using vnode-based transforms (instead of ssr-    // based ones), and save the result branch (a ReturnStatement) in an array.    // The branch is retrieved when processing slots again in ssr mode.    const vnodeBranches = [];    const clonedNode = clone(node);    return function ssrPostTransformComponent() {        // Using the cloned node, build the normal VNode-based branches (for        // fallback in case the child is render-fn based). Store them in an array        // for later use.        if (clonedNode.children.length) {            buildSlots(clonedNode, context, (props, children) => {                vnodeBranches.push(createVNodeSlotBranch(props, children, context));                return createFunctionExpression(undefined);            });        }        let propsExp = `null`;        if (node.props.length) {            // note we are not passing ssr: true here because for components, v-on            // handlers should still be passed            const { props, directives } = buildProps(node, context, undefined, true, isDynamicComponent);            if (props || directives.length) {                propsExp = buildSSRProps(props, directives, context);            }        }        const wipEntries = [];        wipMap$2.set(node, wipEntries);        const buildSSRSlotFn = (props, children, loc) => {            const param0 = (props && stringifyExpression(props)) || `_`;            const fn = createFunctionExpression([param0, `_push`, `_parent`, `_scopeId`], undefined, // no return, assign body later            true, // newline            true, // isSlot            loc);            wipEntries.push({                type: WIP_SLOT,                fn,                children,                // also collect the corresponding vnode branch built earlier                vnodeBranch: vnodeBranches[wipEntries.length]            });            return fn;        };        const slots = node.children.length            ? buildSlots(node, context, buildSSRSlotFn).slots            : `null`;        if (typeof component !== 'string') {            // dynamic component that resolved to a `resolveDynamicComponent` call            // expression - since the resolved result may be a plain element (string)            // or a VNode, handle it with `renderVNode`.            node.ssrCodegenNode = createCallExpression(context.helper(SSR_RENDER_VNODE), [                `_push`,                createCallExpression(context.helper(CREATE_VNODE), [                    component,                    propsExp,                    slots                ]),                `_parent`            ]);        }        else {            node.ssrCodegenNode = createCallExpression(context.helper(SSR_RENDER_COMPONENT), [component, propsExp, slots, `_parent`]);        }    };};function ssrProcessComponent(node, context, parent) {    const component = componentTypeMap.get(node);    if (!node.ssrCodegenNode) {        // this is a built-in component that fell-through.        if (component === TELEPORT) {            return ssrProcessTeleport(node, context);        }        else if (component === SUSPENSE) {            return ssrProcessSuspense(node, context);        }        else if (component === TRANSITION_GROUP) {            return ssrProcessTransitionGroup(node, context);        }        else {            // real fall-through: Transition / KeepAlive            // just render its children.            // #5352: if is at root level of a slot, push an empty string.            // this does not affect the final output, but avoids all-comment slot            // content of being treated as empty by ssrRenderSlot().            if (parent.type === WIP_SLOT) {                context.pushStringPart(``);            }            // #5351: filter out comment children inside transition            if (component === TRANSITION) {                node.children = node.children.filter(c => c.type !== 3 /* NodeTypes.COMMENT */);            }            processChildren(node, context);        }    }    else {        // finish up slot function expressions from the 1st pass.        const wipEntries = wipMap$2.get(node) || [];        for (let i = 0; i < wipEntries.length; i++) {            const { fn, vnodeBranch } = wipEntries[i];            // For each slot, we generate two branches: one SSR-optimized branch and            // one normal vnode-based branch. The branches are taken based on the            // presence of the 2nd `_push` argument (which is only present if the slot            // is called by `_ssrRenderSlot`.            fn.body = createIfStatement(createSimpleExpression(`_push`, false), processChildrenAsStatement(wipEntries[i], context, false, true /* withSlotScopeId */), vnodeBranch);        }        // component is inside a slot, inherit slot scope Id        if (context.withSlotScopeId) {            node.ssrCodegenNode.arguments.push(`_scopeId`);        }        if (typeof component === 'string') {            // static component            context.pushStatement(createCallExpression(`_push`, [node.ssrCodegenNode]));        }        else {            // dynamic component (`resolveDynamicComponent` call)            // the codegen node is a `renderVNode` call            context.pushStatement(node.ssrCodegenNode);        }    }}const rawOptionsMap = new WeakMap();const [baseNodeTransforms, baseDirectiveTransforms] = getBaseTransformPreset(true);const vnodeNodeTransforms = [...baseNodeTransforms, ...DOMNodeTransforms];const vnodeDirectiveTransforms = Object.assign(Object.assign({}, baseDirectiveTransforms), DOMDirectiveTransforms);function createVNodeSlotBranch(props, children, parentContext) {    // apply a sub-transform using vnode-based transforms.    const rawOptions = rawOptionsMap.get(parentContext.root);    const subOptions = Object.assign(Object.assign({}, rawOptions), {         // overwrite with vnode-based transforms        nodeTransforms: [            ...vnodeNodeTransforms,            ...(rawOptions.nodeTransforms || [])        ], directiveTransforms: Object.assign(Object.assign({}, vnodeDirectiveTransforms), (rawOptions.directiveTransforms || {})) });    // wrap the children with a wrapper template for proper children treatment.    const wrapperNode = {        type: 1 /* NodeTypes.ELEMENT */,        ns: 0 /* Namespaces.HTML */,        tag: 'template',        tagType: 3 /* ElementTypes.TEMPLATE */,        isSelfClosing: false,        // important: provide v-slot="props" on the wrapper for proper        // scope analysis        props: [            {                type: 7 /* NodeTypes.DIRECTIVE */,                name: 'slot',                exp: props,                arg: undefined,                modifiers: [],                loc: locStub            }        ],        children,        loc: locStub,        codegenNode: undefined    };    subTransform(wrapperNode, subOptions, parentContext);    return createReturnStatement(children);}function subTransform(node, options, parentContext) {    const childRoot = createRoot([node]);    const childContext = createTransformContext(childRoot, options);    // this sub transform is for vnode fallback branch so it should be handled    // like normal render functions    childContext.ssr = false;    // inherit parent scope analysis state    childContext.scopes = Object.assign({}, parentContext.scopes);    childContext.identifiers = Object.assign({}, parentContext.identifiers);    childContext.imports = parentContext.imports;    // traverse    traverseNode(childRoot, childContext);    ['helpers', 'components', 'directives'].forEach(key => {        childContext[key].forEach((value, helperKey) => {            if (key === 'helpers') {                const parentCount = parentContext.helpers.get(helperKey);                if (parentCount === undefined) {                    parentContext.helpers.set(helperKey, value);                }                else {                    parentContext.helpers.set(helperKey, value + parentCount);                }            }            else {                parentContext[key].add(value);            }        });    });    // imports/hoists are not merged because:    // - imports are only used for asset urls and should be consistent between    //   node/client branches    // - hoists are not enabled for the client branch here}function clone(v) {    if (isArray(v)) {        return v.map(clone);    }    else if (isObject(v)) {        const res = {};        for (const key in v) {            res[key] = clone(v[key]);        }        return res;    }    else {        return v;    }}// Because SSR codegen output is completely different from client-side output// (e.g. multiple elements can be concatenated into a single template literal// instead of each getting a corresponding call), we need to apply an extra// transform pass to convert the template AST into a fresh JS AST before// passing it to codegen.function ssrCodegenTransform(ast, options) {    const context = createSSRTransformContext(ast, options);    // inject SFC <style> CSS variables    // we do this instead of inlining the expression to ensure the vars are    // only resolved once per render    if (options.ssrCssVars) {        const cssContext = createTransformContext(createRoot([]), options);        const varsExp = processExpression(createSimpleExpression(options.ssrCssVars, false), cssContext);        context.body.push(createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`]));        Array.from(cssContext.helpers.keys()).forEach(helper => {            if (!ast.helpers.includes(helper))                ast.helpers.push(helper);        });    }    const isFragment = ast.children.length > 1 && ast.children.some(c => !isText(c));    processChildren(ast, context, isFragment);    ast.codegenNode = createBlockStatement(context.body);    // Finalize helpers.    // We need to separate helpers imported from 'vue' vs. '@vue/server-renderer'    ast.ssrHelpers = Array.from(new Set([...ast.helpers.filter(h => h in ssrHelpers), ...context.helpers]));    ast.helpers = ast.helpers.filter(h => !(h in ssrHelpers));}function createSSRTransformContext(root, options, helpers = new Set(), withSlotScopeId = false) {    const body = [];    let currentString = null;    return {        root,        options,        body,        helpers,        withSlotScopeId,        onError: options.onError ||            (e => {                throw e;            }),        helper(name) {            helpers.add(name);            return name;        },        pushStringPart(part) {            if (!currentString) {                const currentCall = createCallExpression(`_push`);                body.push(currentCall);                currentString = createTemplateLiteral([]);                currentCall.arguments.push(currentString);            }            const bufferedElements = currentString.elements;            const lastItem = bufferedElements[bufferedElements.length - 1];            if (isString(part) && isString(lastItem)) {                bufferedElements[bufferedElements.length - 1] += part;            }            else {                bufferedElements.push(part);            }        },        pushStatement(statement) {            // close current string            currentString = null;            body.push(statement);        }    };}function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) {    // ensure child inherits parent helpers    return createSSRTransformContext(parent.root, parent.options, parent.helpers, withSlotScopeId);}function processChildren(parent, context, asFragment = false, disableNestedFragments = false) {    if (asFragment) {        context.pushStringPart(`<!--[-->`);    }    const { children } = parent;    for (let i = 0; i < children.length; i++) {        const child = children[i];        switch (child.type) {            case 1 /* NodeTypes.ELEMENT */:                switch (child.tagType) {                    case 0 /* ElementTypes.ELEMENT */:                        ssrProcessElement(child, context);                        break;                    case 1 /* ElementTypes.COMPONENT */:                        ssrProcessComponent(child, context, parent);                        break;                    case 2 /* ElementTypes.SLOT */:                        ssrProcessSlotOutlet(child, context);                        break;                    case 3 /* ElementTypes.TEMPLATE */:                        // TODO                        break;                    default:                        context.onError(createSSRCompilerError(64 /* SSRErrorCodes.X_SSR_INVALID_AST_NODE */, child.loc));                        // make sure we exhaust all possible types                        const exhaustiveCheck = child;                        return exhaustiveCheck;                }                break;            case 2 /* NodeTypes.TEXT */:                context.pushStringPart(escapeHtml(child.content));                break;            case 3 /* NodeTypes.COMMENT */:                // no need to escape comment here because the AST can only                // contain valid comments.                context.pushStringPart(`<!--${child.content}-->`);                break;            case 5 /* NodeTypes.INTERPOLATION */:                context.pushStringPart(createCallExpression(context.helper(SSR_INTERPOLATE), [child.content]));                break;            case 9 /* NodeTypes.IF */:                ssrProcessIf(child, context, disableNestedFragments);                break;            case 11 /* NodeTypes.FOR */:                ssrProcessFor(child, context, disableNestedFragments);                break;            case 10 /* NodeTypes.IF_BRANCH */:                // no-op - handled by ssrProcessIf                break;            case 12 /* NodeTypes.TEXT_CALL */:            case 8 /* NodeTypes.COMPOUND_EXPRESSION */:                // no-op - these two types can never appear as template child node since                // `transformText` is not used during SSR compile.                break;            default:                context.onError(createSSRCompilerError(64 /* SSRErrorCodes.X_SSR_INVALID_AST_NODE */, child.loc));                // make sure we exhaust all possible types                const exhaustiveCheck = child;                return exhaustiveCheck;        }    }    if (asFragment) {        context.pushStringPart(`<!--]-->`);    }}function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) {    const childContext = createChildContext(parentContext, withSlotScopeId);    processChildren(parent, childContext, asFragment);    return createBlockStatement(childContext.body);}const ssrTransformModel = (dir, node, context) => {    const model = dir.exp;    function checkDuplicatedValue() {        const value = findProp(node, 'value');        if (value) {            context.onError(createDOMCompilerError(58 /* DOMErrorCodes.X_V_MODEL_UNNECESSARY_VALUE */, value.loc));        }    }    if (node.tagType === 0 /* ElementTypes.ELEMENT */) {        const res = { props: [] };        const defaultProps = [            // default value binding for text type inputs            createObjectProperty(`value`, model)        ];        if (node.tag === 'input') {            const type = findProp(node, 'type');            if (type) {                const value = findValueBinding(node);                if (type.type === 7 /* NodeTypes.DIRECTIVE */) {                    // dynamic type                    res.ssrTagParts = [                        createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [                            type.exp,                            model,                            value                        ])                    ];                }                else if (type.value) {                    // static type                    switch (type.value.content) {                        case 'radio':                            res.props = [                                createObjectProperty(`checked`, createCallExpression(context.helper(SSR_LOOSE_EQUAL), [                                    model,                                    value                                ]))                            ];                            break;                        case 'checkbox':                            const trueValueBinding = findProp(node, 'true-value');                            if (trueValueBinding) {                                const trueValue = trueValueBinding.type === 6 /* NodeTypes.ATTRIBUTE */                                    ? JSON.stringify(trueValueBinding.value.content)                                    : trueValueBinding.exp;                                res.props = [                                    createObjectProperty(`checked`, createCallExpression(context.helper(SSR_LOOSE_EQUAL), [                                        model,                                        trueValue                                    ]))                                ];                            }                            else {                                res.props = [                                    createObjectProperty(`checked`, createConditionalExpression(createCallExpression(`Array.isArray`, [model]), createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [                                        model,                                        value                                    ]), model))                                ];                            }                            break;                        case 'file':                            context.onError(createDOMCompilerError(57 /* DOMErrorCodes.X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc));                            break;                        default:                            checkDuplicatedValue();                            res.props = defaultProps;                            break;                    }                }            }            else if (hasDynamicKeyVBind(node)) ;            else {                // text type                checkDuplicatedValue();                res.props = defaultProps;            }        }        else if (node.tag === 'textarea') {            checkDuplicatedValue();            node.children = [createInterpolation(model, model.loc)];        }        else if (node.tag === 'select') ;        else {            context.onError(createDOMCompilerError(55 /* DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc));        }        return res;    }    else {        // component v-model        return transformModel(dir, node, context);    }};function findValueBinding(node) {    const valueBinding = findProp(node, 'value');    return valueBinding        ? valueBinding.type === 7 /* NodeTypes.DIRECTIVE */            ? valueBinding.exp            : createSimpleExpression(valueBinding.value.content, true)        : createSimpleExpression(`null`, false);}const ssrTransformShow = (dir, node, context) => {    if (!dir.exp) {        context.onError(createDOMCompilerError(59 /* DOMErrorCodes.X_V_SHOW_NO_EXPRESSION */));    }    return {        props: [            createObjectProperty(`style`, createConditionalExpression(dir.exp, createSimpleExpression(`null`, false), createObjectExpression([                createObjectProperty(`display`, createSimpleExpression(`none`, true))            ]), false /* no newline */))        ]    };};const filterChild = (node) => node.children.filter(n => n.type !== 3 /* NodeTypes.COMMENT */);const hasSingleChild = (node) => filterChild(node).length === 1;const ssrInjectFallthroughAttrs = (node, context) => {    // _attrs is provided as a function argument.    // mark it as a known identifier so that it doesn't get prefixed by    // transformExpression.    if (node.type === 0 /* NodeTypes.ROOT */) {        context.identifiers._attrs = 1;    }    if (node.type === 1 /* NodeTypes.ELEMENT */ &&        node.tagType === 1 /* ElementTypes.COMPONENT */ &&        (isBuiltInType(node.tag, 'Transition') ||            isBuiltInType(node.tag, 'KeepAlive'))) {        const rootChildren = filterChild(context.root);        if (rootChildren.length === 1 && rootChildren[0] === node) {            if (hasSingleChild(node)) {                injectFallthroughAttrs(node.children[0]);            }            return;        }    }    const parent = context.parent;    if (!parent || parent.type !== 0 /* NodeTypes.ROOT */) {        return;    }    if (node.type === 10 /* NodeTypes.IF_BRANCH */ && hasSingleChild(node)) {        // detect cases where the parent v-if is not the only root level node        let hasEncounteredIf = false;        for (const c of filterChild(parent)) {            if (c.type === 9 /* NodeTypes.IF */ ||                (c.type === 1 /* NodeTypes.ELEMENT */ && findDir(c, 'if'))) {                // multiple root v-if                if (hasEncounteredIf)                    return;                hasEncounteredIf = true;            }            else if (            // node before v-if            !hasEncounteredIf ||                // non else nodes                !(c.type === 1 /* NodeTypes.ELEMENT */ && findDir(c, /else/, true))) {                return;            }        }        injectFallthroughAttrs(node.children[0]);    }    else if (hasSingleChild(parent)) {        injectFallthroughAttrs(node);    }};function injectFallthroughAttrs(node) {    if (node.type === 1 /* NodeTypes.ELEMENT */ &&        (node.tagType === 0 /* ElementTypes.ELEMENT */ ||            node.tagType === 1 /* ElementTypes.COMPONENT */) &&        !findDir(node, 'for')) {        node.props.push({            type: 7 /* NodeTypes.DIRECTIVE */,            name: 'bind',            arg: undefined,            exp: createSimpleExpression(`_attrs`, false),            modifiers: [],            loc: locStub        });    }}const ssrInjectCssVars = (node, context) => {    if (!context.ssrCssVars) {        return;    }    // _cssVars is initialized once per render function    // the code is injected in ssrCodegenTransform when creating the    // ssr transform context    if (node.type === 0 /* NodeTypes.ROOT */) {        context.identifiers._cssVars = 1;    }    const parent = context.parent;    if (!parent || parent.type !== 0 /* NodeTypes.ROOT */) {        return;    }    if (node.type === 10 /* NodeTypes.IF_BRANCH */) {        for (const child of node.children) {            injectCssVars(child);        }    }    else {        injectCssVars(node);    }};function injectCssVars(node) {    if (node.type === 1 /* NodeTypes.ELEMENT */ &&        (node.tagType === 0 /* ElementTypes.ELEMENT */ ||            node.tagType === 1 /* ElementTypes.COMPONENT */) &&        !findDir(node, 'for')) {        if (isBuiltInType(node.tag, 'Suspense')) {            for (const child of node.children) {                if (child.type === 1 /* NodeTypes.ELEMENT */ &&                    child.tagType === 3 /* ElementTypes.TEMPLATE */) {                    // suspense slot                    child.children.forEach(injectCssVars);                }                else {                    injectCssVars(child);                }            }        }        else {            node.props.push({                type: 7 /* NodeTypes.DIRECTIVE */,                name: 'bind',                arg: undefined,                exp: createSimpleExpression(`_cssVars`, false),                modifiers: [],                loc: locStub            });        }    }}function compile$1(template, options = {}) {    options = Object.assign(Object.assign(Object.assign({}, options), parserOptions), { ssr: true, inSSR: true, scopeId: options.mode === 'function' ? null : options.scopeId,         // always prefix since compiler-ssr doesn't have size concern        prefixIdentifiers: true,         // disable optimizations that are unnecessary for ssr        cacheHandlers: false, hoistStatic: false });    const ast = baseParse(template, options);    // Save raw options for AST. This is needed when performing sub-transforms    // on slot vnode branches.    rawOptionsMap.set(ast, options);    transform(ast, Object.assign(Object.assign({}, options), { hoistStatic: false, nodeTransforms: [            ssrTransformIf,            ssrTransformFor,            trackVForSlotScopes,            transformExpression,            ssrTransformSlotOutlet,            ssrInjectFallthroughAttrs,            ssrInjectCssVars,            ssrTransformElement,            ssrTransformComponent,            trackSlotScopes,            transformStyle,            ...(options.nodeTransforms || []) // user transforms        ], directiveTransforms: Object.assign({             // reusing core v-bind            bind: transformBind, on: transformOn,             // model and show has dedicated SSR handling            model: ssrTransformModel, show: ssrTransformShow,             // the following are ignored during SSR            // on: noopDirectiveTransform,            cloak: noopDirectiveTransform, once: noopDirectiveTransform, memo: noopDirectiveTransform }, (options.directiveTransforms || {}) // user transforms        ) }));    // traverse the template AST and convert into SSR codegen AST    // by replacing ast.codegenNode.    ssrCodegenTransform(ast, options);    return generate(ast, options);}var CompilerSSR = /*#__PURE__*/Object.freeze({  __proto__: null,  compile: compile$1});var _polyfillNode_fs = {};var _polyfillNode_fs$1 = /*#__PURE__*/Object.freeze({  __proto__: null,  'default': _polyfillNode_fs});var _fs = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_fs$1);var _path = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_path);var require$$0 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_util$1);const hasWarned = {};function warnOnce(msg) {    const isNodeProd = typeof process !== 'undefined' && ({}).NODE_ENV === 'production';    if (!isNodeProd && !false && !hasWarned[msg]) {        hasWarned[msg] = true;        warn(msg);    }}function warn(msg) {    console.warn(`\x1b[1m\x1b[33m[@vue/compiler-sfc]\x1b[0m\x1b[33m ${msg}\x1b[0m\n`);}function preprocess({ source, filename, preprocessOptions }, preprocessor) {    // Consolidate exposes a callback based API, but the callback is in fact    // called synchronously for most templating engines. In our case, we have to    // expose a synchronous API so that it is usable in Jest transforms (which    // have to be sync because they are applied via Node.js require hooks)    let res = '';    let err = null;    preprocessor.render(source, Object.assign({ filename }, preprocessOptions), (_err, _res) => {        if (_err)            err = _err;        res = _res;    });    if (err)        throw err;    return res;}function compileTemplate(options) {    const { preprocessLang, preprocessCustomRequire } = options;    if (preprocessLang &&        !preprocessCustomRequire) {        throw new Error(`[@vue/compiler-sfc] Template preprocessing in the browser build must ` +            `provide the \`preprocessCustomRequire\` option to return the in-browser ` +            `version of the preprocessor in the shape of { render(): string }.`);    }    const preprocessor = preprocessLang        ? preprocessCustomRequire            ? preprocessCustomRequire(preprocessLang)            : undefined                        : false;    if (preprocessor) {        try {            return doCompileTemplate(Object.assign(Object.assign({}, options), { source: preprocess(options, preprocessor) }));        }        catch (e) {            return {                code: `export default function render() {}`,                source: options.source,                tips: [],                errors: [e]            };        }    }    else if (preprocessLang) {        return {            code: `export default function render() {}`,            source: options.source,            tips: [                `Component ${options.filename} uses lang ${preprocessLang} for template. Please install the language preprocessor.`            ],            errors: [                `Component ${options.filename} uses lang ${preprocessLang} for template, however it is not installed.`            ]        };    }    else {        return doCompileTemplate(options);    }}function doCompileTemplate({ filename, id, scoped, slotted, inMap, source, ssr = false, ssrCssVars, isProd = false, compiler = ssr ? CompilerSSR : CompilerDOM, compilerOptions = {}, transformAssetUrls }) {    const errors = [];    const warnings = [];    let nodeTransforms = [];    if (isObject(transformAssetUrls)) {        const assetOptions = normalizeOptions(transformAssetUrls);        nodeTransforms = [            createAssetUrlTransformWithOptions(assetOptions),            createSrcsetTransformWithOptions(assetOptions)        ];    }    else if (transformAssetUrls !== false) {        nodeTransforms = [transformAssetUrl, transformSrcset];    }    if (ssr && !ssrCssVars) {        warnOnce(`compileTemplate is called with \`ssr: true\` but no ` +            `corresponding \`cssVars\` option.\`.`);    }    if (!id) {        warnOnce(`compileTemplate now requires the \`id\` option.\`.`);        id = '';    }    const shortId = id.replace(/^data-v-/, '');    const longId = `data-v-${shortId}`;    let { code, ast, preamble, map } = compiler.compile(source, Object.assign(Object.assign({ mode: 'module', prefixIdentifiers: true, hoistStatic: true, cacheHandlers: true, ssrCssVars: ssr && ssrCssVars && ssrCssVars.length            ? genCssVarsFromList(ssrCssVars, shortId, isProd, true)            : '', scopeId: scoped ? longId : undefined, slotted, sourceMap: true }, compilerOptions), { nodeTransforms: nodeTransforms.concat(compilerOptions.nodeTransforms || []), filename, onError: e => errors.push(e), onWarn: w => warnings.push(w) }));    // inMap should be the map produced by ./parse.ts which is a simple line-only    // mapping. If it is present, we need to adjust the final map and errors to    // reflect the original line numbers.    if (inMap) {        if (map) {            map = mapLines(inMap, map);        }        if (errors.length) {            patchErrors(errors, source, inMap);        }    }    const tips = warnings.map(w => {        let msg = w.message;        if (w.loc) {            msg += `\n${generateCodeFrame(source, w.loc.start.offset, w.loc.end.offset)}`;        }        return msg;    });    return { code, ast, preamble, source, errors, tips, map };}function mapLines(oldMap, newMap) {    if (!oldMap)        return newMap;    if (!newMap)        return oldMap;    const oldMapConsumer = new SourceMapConsumer$1(oldMap);    const newMapConsumer = new SourceMapConsumer$1(newMap);    const mergedMapGenerator = new SourceMapGenerator$2();    newMapConsumer.eachMapping(m => {        if (m.originalLine == null) {            return;        }        const origPosInOldMap = oldMapConsumer.originalPositionFor({            line: m.originalLine,            column: m.originalColumn        });        if (origPosInOldMap.source == null) {            return;        }        mergedMapGenerator.addMapping({            generated: {                line: m.generatedLine,                column: m.generatedColumn            },            original: {                line: origPosInOldMap.line,                // use current column, since the oldMap produced by @vue/compiler-sfc                // does not                column: m.originalColumn            },            source: origPosInOldMap.source,            name: origPosInOldMap.name        });    });    // source-map's type definition is incomplete    const generator = mergedMapGenerator;    oldMapConsumer.sources.forEach((sourceFile) => {        generator._sources.add(sourceFile);        const sourceContent = oldMapConsumer.sourceContentFor(sourceFile);        if (sourceContent != null) {            mergedMapGenerator.setSourceContent(sourceFile, sourceContent);        }    });    generator._sourceRoot = oldMap.sourceRoot;    generator._file = oldMap.file;    return generator.toJSON();}function patchErrors(errors, source, inMap) {    const originalSource = inMap.sourcesContent[0];    const offset = originalSource.indexOf(source);    const lineOffset = originalSource.slice(0, offset).split(/\r?\n/).length - 1;    errors.forEach(err => {        if (err.loc) {            err.loc.start.line += lineOffset;            err.loc.start.offset += offset;            if (err.loc.end !== err.loc.start) {                err.loc.end.line += lineOffset;                err.loc.end.offset += offset;            }        }    });}const defaultExportRE = /((?:^|\n|;)\s*)export(\s*)default/;const namedDefaultExportRE = /((?:^|\n|;)\s*)export(.+)(?:as)?(\s*)default/s;const exportDefaultClassRE = /((?:^|\n|;)\s*)export\s+default\s+class\s+([\w$]+)/;/** * Utility for rewriting `export default` in a script block into a variable * declaration so that we can inject things into it */function rewriteDefault(input, as, parserPlugins) {    if (!hasDefaultExport(input)) {        return input + `\nconst ${as} = {}`;    }    let replaced;    const classMatch = input.match(exportDefaultClassRE);    if (classMatch) {        replaced =            input.replace(exportDefaultClassRE, '$1class $2') +                `\nconst ${as} = ${classMatch[2]}`;    }    else {        replaced = input.replace(defaultExportRE, `$1const ${as} =`);    }    if (!hasDefaultExport(replaced)) {        return replaced;    }    // if the script somehow still contains `default export`, it probably has    // multi-line comments or template strings. fallback to a full parse.    const s = new MagicString(input);    const ast = parse_1(input, {        sourceType: 'module',        plugins: parserPlugins    }).program.body;    ast.forEach(node => {        if (node.type === 'ExportDefaultDeclaration') {            if (node.declaration.type === 'ClassDeclaration') {                s.overwrite(node.start, node.declaration.id.start, `class `);                s.append(`\nconst ${as} = ${node.declaration.id.name}`);            }            else {                s.overwrite(node.start, node.declaration.start, `const ${as} = `);            }        }        if (node.type === 'ExportNamedDeclaration') {            for (const specifier of node.specifiers) {                if (specifier.type === 'ExportSpecifier' &&                    specifier.exported.type === 'Identifier' &&                    specifier.exported.name === 'default') {                    if (node.source) {                        if (specifier.local.name === 'default') {                            const end = specifierEnd(input, specifier.local.end, node.end);                            s.prepend(`import { default as __VUE_DEFAULT__ } from '${node.source.value}'\n`);                            s.overwrite(specifier.start, end, ``);                            s.append(`\nconst ${as} = __VUE_DEFAULT__`);                            continue;                        }                        else {                            const end = specifierEnd(input, specifier.exported.end, node.end);                            s.prepend(`import { ${input.slice(specifier.local.start, specifier.local.end)} } from '${node.source.value}'\n`);                            s.overwrite(specifier.start, end, ``);                            s.append(`\nconst ${as} = ${specifier.local.name}`);                            continue;                        }                    }                    const end = specifierEnd(input, specifier.end, node.end);                    s.overwrite(specifier.start, end, ``);                    s.append(`\nconst ${as} = ${specifier.local.name}`);                }            }        }    });    return s.toString();}function hasDefaultExport(input) {    return defaultExportRE.test(input) || namedDefaultExportRE.test(input);}function specifierEnd(input, end, nodeEnd) {    // export { default   , foo } ...    let hasCommas = false;    let oldEnd = end;    while (end < nodeEnd) {        if (/\s/.test(input.charAt(end))) {            end++;        }        else if (input.charAt(end) === ',') {            end++;            hasCommas = true;            break;        }        else if (input.charAt(end) === '}') {            break;        }    }    return hasCommas ? end : oldEnd;}const CONVERT_SYMBOL = '$';const ESCAPE_SYMBOL = '$$';const IMPORT_SOURCE = 'vue/macros';const shorthands = ['ref', 'computed', 'shallowRef', 'toRef', 'customRef'];const transformCheckRE = /[^\w]\$(?:\$|ref|computed|shallowRef)?\s*(\(|\<)/;function shouldTransform(src) {    return transformCheckRE.test(src);}function transform$1(src, { filename, sourceMap, parserPlugins, importHelpersFrom = 'vue' } = {}) {    const plugins = parserPlugins || [];    if (filename) {        if (/\.tsx?$/.test(filename)) {            plugins.push('typescript');        }        if (filename.endsWith('x')) {            plugins.push('jsx');        }    }    const ast = parse_1(src, {        sourceType: 'module',        plugins    });    const s = new MagicString(src);    const res = transformAST(ast.program, s, 0);    // inject helper imports    if (res.importedHelpers.length) {        s.prepend(`import { ${res.importedHelpers            .map(h => `${h} as _${h}`)            .join(', ')} } from '${importHelpersFrom}'\n`);    }    return Object.assign(Object.assign({}, res), { code: s.toString(), map: sourceMap            ? s.generateMap({                source: filename,                hires: true,                includeContent: true            })            : null });}function transformAST(ast, s, offset = 0, knownRefs, knownProps) {    // TODO remove when out of experimental    warnExperimental();    const userImports = Object.create(null);    for (const node of ast.body) {        if (node.type !== 'ImportDeclaration')            continue;        walkImportDeclaration(node);    }    // macro import handling    let convertSymbol;    let escapeSymbol;    for (const { local, imported, source, specifier } of Object.values(userImports)) {        if (source === IMPORT_SOURCE) {            if (imported === ESCAPE_SYMBOL) {                escapeSymbol = local;            }            else if (imported === CONVERT_SYMBOL) {                convertSymbol = local;            }            else if (imported !== local) {                error(`macro imports for ref-creating methods do not support aliasing.`, specifier);            }        }    }    // default symbol    if (!convertSymbol && !userImports[CONVERT_SYMBOL]) {        convertSymbol = CONVERT_SYMBOL;    }    if (!escapeSymbol && !userImports[ESCAPE_SYMBOL]) {        escapeSymbol = ESCAPE_SYMBOL;    }    const importedHelpers = new Set();    const rootScope = {};    const scopeStack = [rootScope];    let currentScope = rootScope;    let escapeScope; // inside $$()    const excludedIds = new WeakSet();    const parentStack = [];    const propsLocalToPublicMap = Object.create(null);    if (knownRefs) {        for (const key of knownRefs) {            rootScope[key] = true;        }    }    if (knownProps) {        for (const key in knownProps) {            const { local } = knownProps[key];            rootScope[local] = 'prop';            propsLocalToPublicMap[local] = key;        }    }    function walkImportDeclaration(node) {        const source = node.source.value;        if (source === IMPORT_SOURCE) {            s.remove(node.start + offset, node.end + offset);        }        for (const specifier of node.specifiers) {            const local = specifier.local.name;            const imported = (specifier.type === 'ImportSpecifier' &&                specifier.imported.type === 'Identifier' &&                specifier.imported.name) ||                'default';            userImports[local] = {                source,                local,                imported,                specifier            };        }    }    function isRefCreationCall(callee) {        if (!convertSymbol || currentScope[convertSymbol] !== undefined) {            return false;        }        if (callee === convertSymbol) {            return convertSymbol;        }        if (callee[0] === '$' && shorthands.includes(callee.slice(1))) {            return callee;        }        return false;    }    function error(msg, node) {        const e = new Error(msg);        e.node = node;        throw e;    }    function helper(msg) {        importedHelpers.add(msg);        return `_${msg}`;    }    function registerBinding(id, isRef = false) {        excludedIds.add(id);        if (currentScope) {            currentScope[id.name] = isRef;        }        else {            error('registerBinding called without active scope, something is wrong.', id);        }    }    const registerRefBinding = (id) => registerBinding(id, true);    let tempVarCount = 0;    function genTempVar() {        return `__$temp_${++tempVarCount}`;    }    function snip(node) {        return s.original.slice(node.start + offset, node.end + offset);    }    function walkScope(node, isRoot = false) {        for (const stmt of node.body) {            if (stmt.type === 'VariableDeclaration') {                walkVariableDeclaration(stmt, isRoot);            }            else if (stmt.type === 'FunctionDeclaration' ||                stmt.type === 'ClassDeclaration') {                if (stmt.declare || !stmt.id)                    continue;                registerBinding(stmt.id);            }            else if ((stmt.type === 'ForOfStatement' || stmt.type === 'ForInStatement') &&                stmt.left.type === 'VariableDeclaration') {                walkVariableDeclaration(stmt.left);            }            else if (stmt.type === 'ExportNamedDeclaration' &&                stmt.declaration &&                stmt.declaration.type === 'VariableDeclaration') {                walkVariableDeclaration(stmt.declaration, isRoot);            }            else if (stmt.type === 'LabeledStatement' &&                stmt.body.type === 'VariableDeclaration') {                walkVariableDeclaration(stmt.body, isRoot);            }        }    }    function walkVariableDeclaration(stmt, isRoot = false) {        if (stmt.declare) {            return;        }        for (const decl of stmt.declarations) {            let refCall;            const isCall = decl.init &&                decl.init.type === 'CallExpression' &&                decl.init.callee.type === 'Identifier';            if (isCall &&                (refCall = isRefCreationCall(decl.init.callee.name))) {                processRefDeclaration(refCall, decl.id, decl.init);            }            else {                const isProps = isRoot && isCall && decl.init.callee.name === 'defineProps';                for (const id of extractIdentifiers(decl.id)) {                    if (isProps) {                        // for defineProps destructure, only exclude them since they                        // are already passed in as knownProps                        excludedIds.add(id);                    }                    else {                        registerBinding(id);                    }                }            }        }    }    function processRefDeclaration(method, id, call) {        excludedIds.add(call.callee);        if (method === convertSymbol) {            // $            // remove macro            s.remove(call.callee.start + offset, call.callee.end + offset);            if (id.type === 'Identifier') {                // single variable                registerRefBinding(id);            }            else if (id.type === 'ObjectPattern') {                processRefObjectPattern(id, call);            }            else if (id.type === 'ArrayPattern') {                processRefArrayPattern(id, call);            }        }        else {            // shorthands            if (id.type === 'Identifier') {                registerRefBinding(id);                // replace call                s.overwrite(call.start + offset, call.start + method.length + offset, helper(method.slice(1)));            }            else {                error(`${method}() cannot be used with destructure patterns.`, call);            }        }    }    function processRefObjectPattern(pattern, call, tempVar, path = []) {        if (!tempVar) {            tempVar = genTempVar();            // const { x } = $(useFoo()) --> const __$temp_1 = useFoo()            s.overwrite(pattern.start + offset, pattern.end + offset, tempVar);        }        let nameId;        for (const p of pattern.properties) {            let key;            let defaultValue;            if (p.type === 'ObjectProperty') {                if (p.key.start === p.value.start) {                    // shorthand { foo }                    nameId = p.key;                    if (p.value.type === 'Identifier') {                        // avoid shorthand value identifier from being processed                        excludedIds.add(p.value);                    }                    else if (p.value.type === 'AssignmentPattern' &&                        p.value.left.type === 'Identifier') {                        // { foo = 1 }                        excludedIds.add(p.value.left);                        defaultValue = p.value.right;                    }                }                else {                    key = p.computed ? p.key : p.key.name;                    if (p.value.type === 'Identifier') {                        // { foo: bar }                        nameId = p.value;                    }                    else if (p.value.type === 'ObjectPattern') {                        processRefObjectPattern(p.value, call, tempVar, [...path, key]);                    }                    else if (p.value.type === 'ArrayPattern') {                        processRefArrayPattern(p.value, call, tempVar, [...path, key]);                    }                    else if (p.value.type === 'AssignmentPattern') {                        if (p.value.left.type === 'Identifier') {                            // { foo: bar = 1 }                            nameId = p.value.left;                            defaultValue = p.value.right;                        }                        else if (p.value.left.type === 'ObjectPattern') {                            processRefObjectPattern(p.value.left, call, tempVar, [                                ...path,                                [key, p.value.right]                            ]);                        }                        else if (p.value.left.type === 'ArrayPattern') {                            processRefArrayPattern(p.value.left, call, tempVar, [                                ...path,                                [key, p.value.right]                            ]);                        }                        else ;                    }                }            }            else {                // rest element { ...foo }                error(`reactivity destructure does not support rest elements.`, p);            }            if (nameId) {                registerRefBinding(nameId);                // inject toRef() after original replaced pattern                const source = pathToString(tempVar, path);                const keyStr = isString(key)                    ? `'${key}'`                    : key                        ? snip(key)                        : `'${nameId.name}'`;                const defaultStr = defaultValue ? `, ${snip(defaultValue)}` : ``;                s.appendLeft(call.end + offset, `,\n  ${nameId.name} = ${helper('toRef')}(${source}, ${keyStr}${defaultStr})`);            }        }        if (nameId) {            s.appendLeft(call.end + offset, ';');        }    }    function processRefArrayPattern(pattern, call, tempVar, path = []) {        if (!tempVar) {            // const [x] = $(useFoo()) --> const __$temp_1 = useFoo()            tempVar = genTempVar();            s.overwrite(pattern.start + offset, pattern.end + offset, tempVar);        }        let nameId;        for (let i = 0; i < pattern.elements.length; i++) {            const e = pattern.elements[i];            if (!e)                continue;            let defaultValue;            if (e.type === 'Identifier') {                // [a] --> [__a]                nameId = e;            }            else if (e.type === 'AssignmentPattern') {                // [a = 1]                nameId = e.left;                defaultValue = e.right;            }            else if (e.type === 'RestElement') {                // [...a]                error(`reactivity destructure does not support rest elements.`, e);            }            else if (e.type === 'ObjectPattern') {                processRefObjectPattern(e, call, tempVar, [...path, i]);            }            else if (e.type === 'ArrayPattern') {                processRefArrayPattern(e, call, tempVar, [...path, i]);            }            if (nameId) {                registerRefBinding(nameId);                // inject toRef() after original replaced pattern                const source = pathToString(tempVar, path);                const defaultStr = defaultValue ? `, ${snip(defaultValue)}` : ``;                s.appendLeft(call.end + offset, `,\n  ${nameId.name} = ${helper('toRef')}(${source}, ${i}${defaultStr})`);            }        }        if (nameId) {            s.appendLeft(call.end + offset, ';');        }    }    function pathToString(source, path) {        if (path.length) {            for (const seg of path) {                if (isArray(seg)) {                    source = `(${source}${segToString(seg[0])} || ${snip(seg[1])})`;                }                else {                    source += segToString(seg);                }            }        }        return source;    }    function segToString(seg) {        if (typeof seg === 'number') {            return `[${seg}]`;        }        else if (typeof seg === 'string') {            return `.${seg}`;        }        else {            return snip(seg);        }    }    function rewriteId(scope, id, parent, parentStack) {        if (hasOwn(scope, id.name)) {            const bindingType = scope[id.name];            if (bindingType) {                const isProp = bindingType === 'prop';                if (isStaticProperty(parent) && parent.shorthand) {                    // let binding used in a property shorthand                    // skip for destructure patterns                    if (!parent.inPattern ||                        isInDestructureAssignment(parent, parentStack)) {                        if (isProp) {                            if (escapeScope) {                                // prop binding in $$()                                // { prop } -> { prop: __props_prop }                                registerEscapedPropBinding(id);                                s.appendLeft(id.end + offset, `: __props_${propsLocalToPublicMap[id.name]}`);                            }                            else {                                // { prop } -> { prop: __props.prop }                                s.appendLeft(id.end + offset, `: ${genPropsAccessExp(propsLocalToPublicMap[id.name])}`);                            }                        }                        else {                            // { foo } -> { foo: foo.value }                            s.appendLeft(id.end + offset, `: ${id.name}.value`);                        }                    }                }                else {                    if (isProp) {                        if (escapeScope) {                            // x --> __props_x                            registerEscapedPropBinding(id);                            s.overwrite(id.start + offset, id.end + offset, `__props_${propsLocalToPublicMap[id.name]}`);                        }                        else {                            // x --> __props.x                            s.overwrite(id.start + offset, id.end + offset, genPropsAccessExp(propsLocalToPublicMap[id.name]));                        }                    }                    else {                        // x --> x.value                        s.appendLeft(id.end + offset, '.value');                    }                }            }            return true;        }        return false;    }    const propBindingRefs = {};    function registerEscapedPropBinding(id) {        if (!propBindingRefs.hasOwnProperty(id.name)) {            propBindingRefs[id.name] = true;            const publicKey = propsLocalToPublicMap[id.name];            s.prependRight(offset, `const __props_${publicKey} = ${helper(`toRef`)}(__props, '${publicKey}');\n`);        }    }    // check root scope first    walkScope(ast, true);    walk$1(ast, {        enter(node, parent) {            parent && parentStack.push(parent);            // function scopes            if (isFunctionType(node)) {                scopeStack.push((currentScope = {}));                walkFunctionParams(node, registerBinding);                if (node.body.type === 'BlockStatement') {                    walkScope(node.body);                }                return;            }            // catch param            if (node.type === 'CatchClause') {                scopeStack.push((currentScope = {}));                if (node.param && node.param.type === 'Identifier') {                    registerBinding(node.param);                }                walkScope(node.body);                return;            }            // non-function block scopes            if (node.type === 'BlockStatement' && !isFunctionType(parent)) {                scopeStack.push((currentScope = {}));                walkScope(node);                return;            }            // skip type nodes            if (parent &&                parent.type.startsWith('TS') &&                parent.type !== 'TSAsExpression' &&                parent.type !== 'TSNonNullExpression' &&                parent.type !== 'TSTypeAssertion') {                return this.skip();            }            if (node.type === 'Identifier' &&                // if inside $$(), skip unless this is a destructured prop binding                !(escapeScope && rootScope[node.name] !== 'prop') &&                isReferencedIdentifier(node, parent, parentStack) &&                !excludedIds.has(node)) {                // walk up the scope chain to check if id should be appended .value                let i = scopeStack.length;                while (i--) {                    if (rewriteId(scopeStack[i], node, parent, parentStack)) {                        return;                    }                }            }            if (node.type === 'CallExpression' && node.callee.type === 'Identifier') {                const callee = node.callee.name;                const refCall = isRefCreationCall(callee);                if (refCall && (!parent || parent.type !== 'VariableDeclarator')) {                    return error(`${refCall} can only be used as the initializer of ` +                        `a variable declaration.`, node);                }                if (escapeSymbol &&                    currentScope[escapeSymbol] === undefined &&                    callee === escapeSymbol) {                    s.remove(node.callee.start + offset, node.callee.end + offset);                    escapeScope = node;                }                // TODO remove when out of experimental                if (callee === '$raw') {                    error(`$raw() has been replaced by $$(). ` +                        `See ${RFC_LINK} for latest updates.`, node);                }                if (callee === '$fromRef') {                    error(`$fromRef() has been replaced by $(). ` +                        `See ${RFC_LINK} for latest updates.`, node);                }            }        },        leave(node, parent) {            parent && parentStack.pop();            if ((node.type === 'BlockStatement' && !isFunctionType(parent)) ||                isFunctionType(node)) {                scopeStack.pop();                currentScope = scopeStack[scopeStack.length - 1] || null;            }            if (node === escapeScope) {                escapeScope = undefined;            }        }    });    return {        rootRefs: Object.keys(rootScope).filter(key => rootScope[key] === true),        importedHelpers: [...importedHelpers]    };}const RFC_LINK = `https://github.com/vuejs/rfcs/discussions/369`;const hasWarned$1 = {};function warnExperimental() {    // eslint-disable-next-line    if (typeof window !== 'undefined') {        return;    }    warnOnce$1(`Reactivity transform is an experimental feature.\n` +        `Experimental features may change behavior between patch versions.\n` +        `It is recommended to pin your vue dependencies to exact versions to avoid breakage.\n` +        `You can follow the proposal's status at ${RFC_LINK}.`);}function warnOnce$1(msg) {    const isNodeProd = typeof process !== 'undefined' && ({}).NODE_ENV === 'production';    if (!isNodeProd && !false && !hasWarned$1[msg]) {        hasWarned$1[msg] = true;        warn$1(msg);    }}function warn$1(msg) {    console.warn(`\x1b[1m\x1b[33m[@vue/reactivity-transform]\x1b[0m\x1b[33m ${msg}\x1b[0m\n`);}// Special compiler macrosconst DEFINE_PROPS = 'defineProps';const DEFINE_EMITS = 'defineEmits';const DEFINE_EXPOSE = 'defineExpose';const WITH_DEFAULTS = 'withDefaults';// constantsconst DEFAULT_VAR = `__default__`;const isBuiltInDir = makeMap(`once,memo,if,for,else,else-if,slot,text,html,on,bind,model,show,cloak,is`);/** * Compile `<script setup>` * It requires the whole SFC descriptor because we need to handle and merge * normal `<script>` + `<script setup>` if both are present. */function compileScript(sfc, options) {    var _a;    let { script, scriptSetup, source, filename } = sfc;    // feature flags    // TODO remove support for deprecated options when out of experimental    const enableReactivityTransform = !!options.reactivityTransform ||        !!options.refSugar ||        !!options.refTransform;    const enablePropsTransform = !!options.reactivityTransform || !!options.propsDestructureTransform;    const isProd = !!options.isProd;    const genSourceMap = options.sourceMap !== false;    let refBindings;    if (!options.id) {        warnOnce(`compileScript now requires passing the \`id\` option.\n` +            `Upgrade your vite or vue-loader version for compatibility with ` +            `the latest experimental proposals.`);    }    const scopeId = options.id ? options.id.replace(/^data-v-/, '') : '';    const cssVars = sfc.cssVars;    const scriptLang = script && script.lang;    const scriptSetupLang = scriptSetup && scriptSetup.lang;    const isTS = scriptLang === 'ts' ||        scriptLang === 'tsx' ||        scriptSetupLang === 'ts' ||        scriptSetupLang === 'tsx';    // resolve parser plugins    const plugins = [];    if (!isTS || scriptLang === 'tsx' || scriptSetupLang === 'tsx') {        plugins.push('jsx');    }    else {        // If don't match the case of adding jsx, should remove the jsx from the babelParserPlugins        if (options.babelParserPlugins)            options.babelParserPlugins = options.babelParserPlugins.filter(n => n !== 'jsx');    }    if (options.babelParserPlugins)        plugins.push(...options.babelParserPlugins);    if (isTS) {        plugins.push('typescript');        if (!plugins.includes('decorators')) {            plugins.push('decorators-legacy');        }    }    if (!scriptSetup) {        if (!script) {            throw new Error(`[@vue/compiler-sfc] SFC contains no <script> tags.`);        }        if (scriptLang && !isTS && scriptLang !== 'jsx') {            // do not process non js/ts script blocks            return script;        }        try {            let content = script.content;            let map = script.map;            const scriptAst = parse_1(content, {                plugins,                sourceType: 'module'            }).program;            const bindings = analyzeScriptBindings(scriptAst.body);            if (enableReactivityTransform && shouldTransform(content)) {                const s = new MagicString(source);                const startOffset = script.loc.start.offset;                const endOffset = script.loc.end.offset;                const { importedHelpers } = transformAST(scriptAst, s, startOffset);                if (importedHelpers.length) {                    s.prepend(`import { ${importedHelpers                        .map(h => `${h} as _${h}`)                        .join(', ')} } from 'vue'\n`);                }                s.remove(0, startOffset);                s.remove(endOffset, source.length);                content = s.toString();                if (genSourceMap) {                    map = s.generateMap({                        source: filename,                        hires: true,                        includeContent: true                    });                }            }            if (cssVars.length) {                content = rewriteDefault(content, DEFAULT_VAR, plugins);                content += genNormalScriptCssVarsCode(cssVars, bindings, scopeId, isProd);                content += `\nexport default ${DEFAULT_VAR}`;            }            return Object.assign(Object.assign({}, script), { content,                map,                bindings, scriptAst: scriptAst.body });        }        catch (e) {            // silently fallback if parse fails since user may be using custom            // babel syntax            return script;        }    }    if (script && scriptLang !== scriptSetupLang) {        throw new Error(`[@vue/compiler-sfc] <script> and <script setup> must have the same ` +            `language type.`);    }    if (scriptSetupLang && !isTS && scriptSetupLang !== 'jsx') {        // do not process non js/ts script blocks        return scriptSetup;    }    // metadata that needs to be returned    const bindingMetadata = {};    const helperImports = new Set();    const userImports = Object.create(null);    const scriptBindings = Object.create(null);    const setupBindings = Object.create(null);    let defaultExport;    let hasDefinePropsCall = false;    let hasDefineEmitCall = false;    let hasDefineExposeCall = false;    let hasDefaultExportName = false;    let hasDefaultExportRender = false;    let propsRuntimeDecl;    let propsRuntimeDefaults;    let propsDestructureDecl;    let propsDestructureRestId;    let propsTypeDecl;    let propsTypeDeclRaw;    let propsIdentifier;    let emitsRuntimeDecl;    let emitsTypeDecl;    let emitsTypeDeclRaw;    let emitIdentifier;    let hasAwait = false;    let hasInlinedSsrRenderFn = false;    // props/emits declared via types    const typeDeclaredProps = {};    const typeDeclaredEmits = new Set();    // record declared types for runtime props type generation    const declaredTypes = {};    // props destructure data    const propsDestructuredBindings = Object.create(null);    // magic-string state    const s = new MagicString(source);    const startOffset = scriptSetup.loc.start.offset;    const endOffset = scriptSetup.loc.end.offset;    const scriptStartOffset = script && script.loc.start.offset;    const scriptEndOffset = script && script.loc.end.offset;    function helper(key) {        helperImports.add(key);        return `_${key}`;    }    function parse(input, options, offset) {        try {            return parse_1(input, options).program;        }        catch (e) {            e.message = `[@vue/compiler-sfc] ${e.message}\n\n${sfc.filename}\n${generateCodeFrame(source, e.pos + offset, e.pos + offset + 1)}`;            throw e;        }    }    function error(msg, node, end = node.end + startOffset) {        throw new Error(`[@vue/compiler-sfc] ${msg}\n\n${sfc.filename}\n${generateCodeFrame(source, node.start + startOffset, end)}`);    }    function hoistNode(node) {        const start = node.start + startOffset;        let end = node.end + startOffset;        // locate comment        if (node.trailingComments && node.trailingComments.length > 0) {            const lastCommentNode = node.trailingComments[node.trailingComments.length - 1];            end = lastCommentNode.end + startOffset;        }        // locate the end of whitespace between this statement and the next        while (end <= source.length) {            if (!/\s/.test(source.charAt(end))) {                break;            }            end++;        }        s.move(start, end, 0);    }    function registerUserImport(source, local, imported, isType, isFromSetup, needTemplateUsageCheck) {        // template usage check is only needed in non-inline mode, so we can skip        // the work if inlineTemplate is true.        let isUsedInTemplate = needTemplateUsageCheck;        if (needTemplateUsageCheck &&            isTS &&            sfc.template &&            !sfc.template.src &&            !sfc.template.lang) {            isUsedInTemplate = isImportUsed(local, sfc);        }        userImports[local] = {            isType,            imported: imported || 'default',            local,            source,            isFromSetup,            isUsedInTemplate        };    }    function processDefineProps(node, declId) {        if (!isCallOf(node, DEFINE_PROPS)) {            return false;        }        if (hasDefinePropsCall) {            error(`duplicate ${DEFINE_PROPS}() call`, node);        }        hasDefinePropsCall = true;        propsRuntimeDecl = node.arguments[0];        // call has type parameters - infer runtime types from it        if (node.typeParameters) {            if (propsRuntimeDecl) {                error(`${DEFINE_PROPS}() cannot accept both type and non-type arguments ` +                    `at the same time. Use one or the other.`, node);            }            propsTypeDeclRaw = node.typeParameters.params[0];            propsTypeDecl = resolveQualifiedType(propsTypeDeclRaw, node => node.type === 'TSTypeLiteral');            if (!propsTypeDecl) {                error(`type argument passed to ${DEFINE_PROPS}() must be a literal type, ` +                    `or a reference to an interface or literal type.`, propsTypeDeclRaw);            }        }        if (declId) {            if (enablePropsTransform && declId.type === 'ObjectPattern') {                propsDestructureDecl = declId;                // props destructure - handle compilation sugar                for (const prop of declId.properties) {                    if (prop.type === 'ObjectProperty') {                        const propKey = resolveObjectKey(prop.key, prop.computed);                        if (!propKey) {                            error(`${DEFINE_PROPS}() destructure cannot use computed key.`, prop.key);                        }                        if (prop.value.type === 'AssignmentPattern') {                            // default value { foo = 123 }                            const { left, right } = prop.value;                            if (left.type !== 'Identifier') {                                error(`${DEFINE_PROPS}() destructure does not support nested patterns.`, left);                            }                            // store default value                            propsDestructuredBindings[propKey] = {                                local: left.name,                                default: right                            };                        }                        else if (prop.value.type === 'Identifier') {                            // simple destructure                            propsDestructuredBindings[propKey] = {                                local: prop.value.name                            };                        }                        else {                            error(`${DEFINE_PROPS}() destructure does not support nested patterns.`, prop.value);                        }                    }                    else {                        // rest spread                        propsDestructureRestId = prop.argument.name;                    }                }            }            else {                propsIdentifier = scriptSetup.content.slice(declId.start, declId.end);            }        }        return true;    }    function processWithDefaults(node, declId) {        if (!isCallOf(node, WITH_DEFAULTS)) {            return false;        }        if (processDefineProps(node.arguments[0], declId)) {            if (propsRuntimeDecl) {                error(`${WITH_DEFAULTS} can only be used with type-based ` +                    `${DEFINE_PROPS} declaration.`, node);            }            if (propsDestructureDecl) {                error(`${WITH_DEFAULTS}() is unnecessary when using destructure with ${DEFINE_PROPS}().\n` +                    `Prefer using destructure default values, e.g. const { foo = 1 } = defineProps(...).`, node.callee);            }            propsRuntimeDefaults = node.arguments[1];            if (!propsRuntimeDefaults ||                propsRuntimeDefaults.type !== 'ObjectExpression') {                error(`The 2nd argument of ${WITH_DEFAULTS} must be an object literal.`, propsRuntimeDefaults || node);            }        }        else {            error(`${WITH_DEFAULTS}' first argument must be a ${DEFINE_PROPS} call.`, node.arguments[0] || node);        }        return true;    }    function processDefineEmits(node, declId) {        if (!isCallOf(node, DEFINE_EMITS)) {            return false;        }        if (hasDefineEmitCall) {            error(`duplicate ${DEFINE_EMITS}() call`, node);        }        hasDefineEmitCall = true;        emitsRuntimeDecl = node.arguments[0];        if (node.typeParameters) {            if (emitsRuntimeDecl) {                error(`${DEFINE_EMITS}() cannot accept both type and non-type arguments ` +                    `at the same time. Use one or the other.`, node);            }            emitsTypeDeclRaw = node.typeParameters.params[0];            emitsTypeDecl = resolveQualifiedType(emitsTypeDeclRaw, node => node.type === 'TSFunctionType' || node.type === 'TSTypeLiteral');            if (!emitsTypeDecl) {                error(`type argument passed to ${DEFINE_EMITS}() must be a function type, ` +                    `a literal type with call signatures, or a reference to the above types.`, emitsTypeDeclRaw);            }        }        if (declId) {            emitIdentifier =                declId.type === 'Identifier'                    ? declId.name                    : scriptSetup.content.slice(declId.start, declId.end);        }        return true;    }    function getAstBody() {        return scriptAst            ? [...scriptSetupAst.body, ...scriptAst.body]            : scriptSetupAst.body;    }    function resolveExtendsType(node, qualifier, cache = []) {        if (node.type === 'TSInterfaceDeclaration' && node.extends) {            node.extends.forEach(extend => {                if (extend.type === 'TSExpressionWithTypeArguments' &&                    extend.expression.type === 'Identifier') {                    const body = getAstBody();                    for (const node of body) {                        const qualified = isQualifiedType(node, qualifier, extend.expression.name);                        if (qualified) {                            cache.push(qualified);                            resolveExtendsType(node, qualifier, cache);                            return cache;                        }                    }                }            });        }        return cache;    }    function isQualifiedType(node, qualifier, refName) {        if (node.type === 'TSInterfaceDeclaration' && node.id.name === refName) {            return node.body;        }        else if (node.type === 'TSTypeAliasDeclaration' &&            node.id.name === refName &&            qualifier(node.typeAnnotation)) {            return node.typeAnnotation;        }        else if (node.type === 'ExportNamedDeclaration' && node.declaration) {            return isQualifiedType(node.declaration, qualifier, refName);        }    }    // filter all extends types to keep the override declaration    function filterExtendsType(extendsTypes, bodies) {        extendsTypes.forEach(extend => {            const body = extend.body;            body.forEach(newBody => {                if (newBody.type === 'TSPropertySignature' &&                    newBody.key.type === 'Identifier') {                    const name = newBody.key.name;                    const hasOverride = bodies.some(seenBody => seenBody.type === 'TSPropertySignature' &&                        seenBody.key.type === 'Identifier' &&                        seenBody.key.name === name);                    if (!hasOverride)                        bodies.push(newBody);                }            });        });    }    function resolveQualifiedType(node, qualifier) {        if (qualifier(node)) {            return node;        }        if (node.type === 'TSTypeReference' &&            node.typeName.type === 'Identifier') {            const refName = node.typeName.name;            const body = getAstBody();            for (const node of body) {                let qualified = isQualifiedType(node, qualifier, refName);                if (qualified) {                    const extendsTypes = resolveExtendsType(node, qualifier);                    if (extendsTypes.length) {                        const bodies = [...qualified.body];                        filterExtendsType(extendsTypes, bodies);                        qualified.body = bodies;                    }                    return qualified;                }            }        }    }    function processDefineExpose(node) {        if (isCallOf(node, DEFINE_EXPOSE)) {            if (hasDefineExposeCall) {                error(`duplicate ${DEFINE_EXPOSE}() call`, node);            }            hasDefineExposeCall = true;            return true;        }        return false;    }    function checkInvalidScopeReference(node, method) {        if (!node)            return;        walkIdentifiers(node, id => {            if (setupBindings[id.name]) {                error(`\`${method}()\` in <script setup> cannot reference locally ` +                    `declared variables because it will be hoisted outside of the ` +                    `setup() function. If your component options require initialization ` +                    `in the module scope, use a separate normal <script> to export ` +                    `the options instead.`, id);            }        });    }    /**     * await foo()     * -->     * ;(     *   ([__temp,__restore] = withAsyncContext(() => foo())),     *   await __temp,     *   __restore()     * )     *     * const a = await foo()     * -->     * const a = (     *   ([__temp, __restore] = withAsyncContext(() => foo())),     *   __temp = await __temp,     *   __restore(),     *   __temp     * )     */    function processAwait(node, needSemi, isStatement) {        const argumentStart = node.argument.extra && node.argument.extra.parenthesized            ? node.argument.extra.parenStart            : node.argument.start;        const argumentStr = source.slice(argumentStart + startOffset, node.argument.end + startOffset);        const containsNestedAwait = /\bawait\b/.test(argumentStr);        s.overwrite(node.start + startOffset, argumentStart + startOffset, `${needSemi ? `;` : ``}(\n  ([__temp,__restore] = ${helper(`withAsyncContext`)}(${containsNestedAwait ? `async ` : ``}() => `);        s.appendLeft(node.end + startOffset, `)),\n  ${isStatement ? `` : `__temp = `}await __temp,\n  __restore()${isStatement ? `` : `,\n  __temp`}\n)`);    }    /**     * check defaults. If the default object is an object literal with only     * static properties, we can directly generate more optimized default     * declarations. Otherwise we will have to fallback to runtime merging.     */    function hasStaticWithDefaults() {        return (propsRuntimeDefaults &&            propsRuntimeDefaults.type === 'ObjectExpression' &&            propsRuntimeDefaults.properties.every(node => (node.type === 'ObjectProperty' &&                (!node.computed || node.key.type.endsWith('Literal'))) ||                node.type === 'ObjectMethod'));    }    function genRuntimeProps(props) {        const keys = Object.keys(props);        if (!keys.length) {            return ``;        }        const hasStaticDefaults = hasStaticWithDefaults();        const scriptSetupSource = scriptSetup.content;        let propsDecls = `{    ${keys            .map(key => {            let defaultString;            const destructured = genDestructuredDefaultValue(key);            if (destructured) {                defaultString = `default: ${destructured}`;            }            else if (hasStaticDefaults) {                const prop = propsRuntimeDefaults.properties.find(node => {                    if (node.type === 'SpreadElement')                        return false;                    return resolveObjectKey(node.key, node.computed) === key;                });                if (prop) {                    if (prop.type === 'ObjectProperty') {                        // prop has corresponding static default value                        defaultString = `default: ${scriptSetupSource.slice(prop.value.start, prop.value.end)}`;                    }                    else {                        defaultString = `${prop.async ? 'async ' : ''}${prop.kind !== 'method' ? `${prop.kind} ` : ''}default() ${scriptSetupSource.slice(prop.body.start, prop.body.end)}`;                    }                }            }            const { type, required } = props[key];            if (!isProd) {                return `${key}: { type: ${toRuntimeTypeString(type)}, required: ${required}${defaultString ? `, ${defaultString}` : ``} }`;            }            else if (type.some(el => el === 'Boolean' || (defaultString && el === 'Function'))) {                // #4783 production: if boolean or defaultString and function exists, should keep the type.                return `${key}: { type: ${toRuntimeTypeString(type)}${defaultString ? `, ${defaultString}` : ``} }`;            }            else {                // production: checks are useless                return `${key}: ${defaultString ? `{ ${defaultString} }` : 'null'}`;            }        })            .join(',\n    ')}\n  }`;        if (propsRuntimeDefaults && !hasStaticDefaults) {            propsDecls = `${helper('mergeDefaults')}(${propsDecls}, ${source.slice(propsRuntimeDefaults.start + startOffset, propsRuntimeDefaults.end + startOffset)})`;        }        return `\n  props: ${propsDecls},`;    }    function genDestructuredDefaultValue(key) {        const destructured = propsDestructuredBindings[key];        if (destructured && destructured.default) {            const value = scriptSetup.content.slice(destructured.default.start, destructured.default.end);            const isLiteral = destructured.default.type.endsWith('Literal');            return isLiteral ? value : `() => (${value})`;        }    }    function genSetupPropsType(node) {        const scriptSetupSource = scriptSetup.content;        if (hasStaticWithDefaults()) {            // if withDefaults() is used, we need to remove the optional flags            // on props that have default values            let res = `{ `;            const members = node.type === 'TSTypeLiteral' ? node.members : node.body;            for (const m of members) {                if ((m.type === 'TSPropertySignature' ||                    m.type === 'TSMethodSignature') &&                    m.typeAnnotation &&                    m.key.type === 'Identifier') {                    if (propsRuntimeDefaults.properties.some(p => {                        if (p.type === 'SpreadElement')                            return false;                        return (resolveObjectKey(p.key, p.computed) ===                            m.key.name);                    })) {                        res +=                            m.key.name +                                (m.type === 'TSMethodSignature' ? '()' : '') +                                scriptSetupSource.slice(m.typeAnnotation.start, m.typeAnnotation.end) +                                ', ';                    }                    else {                        res +=                            scriptSetupSource.slice(m.start, m.typeAnnotation.end) + `, `;                    }                }            }            return (res.length ? res.slice(0, -2) : res) + ` }`;        }        else {            return scriptSetupSource.slice(node.start, node.end);        }    }    // 0. parse both <script> and <script setup> blocks    const scriptAst = script &&        parse(script.content, {            plugins,            sourceType: 'module'        }, scriptStartOffset);    const scriptSetupAst = parse(scriptSetup.content, {        plugins: [            ...plugins,            // allow top level await but only inside <script setup>            'topLevelAwait'        ],        sourceType: 'module'    }, startOffset);    // 1.1 walk import delcarations of <script>    if (scriptAst) {        for (const node of scriptAst.body) {            if (node.type === 'ImportDeclaration') {                // record imports for dedupe                for (const specifier of node.specifiers) {                    const imported = specifier.type === 'ImportSpecifier' &&                        specifier.imported.type === 'Identifier' &&                        specifier.imported.name;                    registerUserImport(node.source.value, specifier.local.name, imported, node.importKind === 'type' ||                        (specifier.type === 'ImportSpecifier' &&                            specifier.importKind === 'type'), false, !options.inlineTemplate);                }            }        }    }    // 1.2 walk import declarations of <script setup>    for (const node of scriptSetupAst.body) {        if (node.type === 'ImportDeclaration') {            // import declarations are moved to top            hoistNode(node);            // dedupe imports            let removed = 0;            const removeSpecifier = (i) => {                const removeLeft = i > removed;                removed++;                const current = node.specifiers[i];                const next = node.specifiers[i + 1];                s.remove(removeLeft                    ? node.specifiers[i - 1].end + startOffset                    : current.start + startOffset, next && !removeLeft                    ? next.start + startOffset                    : current.end + startOffset);            };            for (let i = 0; i < node.specifiers.length; i++) {                const specifier = node.specifiers[i];                const local = specifier.local.name;                let imported = specifier.type === 'ImportSpecifier' &&                    specifier.imported.type === 'Identifier' &&                    specifier.imported.name;                if (specifier.type === 'ImportNamespaceSpecifier') {                    imported = '*';                }                const source = node.source.value;                const existing = userImports[local];                if (source === 'vue' &&                    (imported === DEFINE_PROPS ||                        imported === DEFINE_EMITS ||                        imported === DEFINE_EXPOSE)) {                    warnOnce(`\`${imported}\` is a compiler macro and no longer needs to be imported.`);                    removeSpecifier(i);                }                else if (existing) {                    if (existing.source === source && existing.imported === imported) {                        // already imported in <script setup>, dedupe                        removeSpecifier(i);                    }                    else {                        error(`different imports aliased to same local name.`, specifier);                    }                }                else {                    registerUserImport(source, local, imported, node.importKind === 'type' ||                        (specifier.type === 'ImportSpecifier' &&                            specifier.importKind === 'type'), true, !options.inlineTemplate);                }            }            if (node.specifiers.length && removed === node.specifiers.length) {                s.remove(node.start + startOffset, node.end + startOffset);            }        }    }    // 1.3 resolve possible user import alias of `ref` and `reactive`    const vueImportAliases = {};    for (const key in userImports) {        const { source, imported, local } = userImports[key];        if (source === 'vue')            vueImportAliases[imported] = local;    }    // 2.1 process normal <script> body    if (script && scriptAst) {        for (const node of scriptAst.body) {            if (node.type === 'ExportDefaultDeclaration') {                // export default                defaultExport = node;                // check if user has manually specified `name` or 'render` option in                // export default                // if has name, skip name inference                // if has render and no template, generate return object instead of                // empty render function (#4980)                let optionProperties;                if (defaultExport.declaration.type === 'ObjectExpression') {                    optionProperties = defaultExport.declaration.properties;                }                else if (defaultExport.declaration.type === 'CallExpression' &&                    defaultExport.declaration.arguments[0].type === 'ObjectExpression') {                    optionProperties = defaultExport.declaration.arguments[0].properties;                }                if (optionProperties) {                    for (const s of optionProperties) {                        if (s.type === 'ObjectProperty' &&                            s.key.type === 'Identifier' &&                            s.key.name === 'name') {                            hasDefaultExportName = true;                        }                        if ((s.type === 'ObjectMethod' || s.type === 'ObjectProperty') &&                            s.key.type === 'Identifier' &&                            s.key.name === 'render') {                            // TODO warn when we provide a better way to do it?                            hasDefaultExportRender = true;                        }                    }                }                // export default { ... } --> const __default__ = { ... }                const start = node.start + scriptStartOffset;                const end = node.declaration.start + scriptStartOffset;                s.overwrite(start, end, `const ${DEFAULT_VAR} = `);            }            else if (node.type === 'ExportNamedDeclaration') {                const defaultSpecifier = node.specifiers.find(s => s.exported.type === 'Identifier' && s.exported.name === 'default');                if (defaultSpecifier) {                    defaultExport = node;                    // 1. remove specifier                    if (node.specifiers.length > 1) {                        s.remove(defaultSpecifier.start + scriptStartOffset, defaultSpecifier.end + scriptStartOffset);                    }                    else {                        s.remove(node.start + scriptStartOffset, node.end + scriptStartOffset);                    }                    if (node.source) {                        // export { x as default } from './x'                        // rewrite to `import { x as __default__ } from './x'` and                        // add to top                        s.prepend(`import { ${defaultSpecifier.local.name} as ${DEFAULT_VAR} } from '${node.source.value}'\n`);                    }                    else {                        // export { x as default }                        // rewrite to `const __default__ = x` and move to end                        s.appendLeft(scriptEndOffset, `\nconst ${DEFAULT_VAR} = ${defaultSpecifier.local.name}\n`);                    }                }                if (node.declaration) {                    walkDeclaration(node.declaration, scriptBindings, vueImportAliases);                }            }            else if ((node.type === 'VariableDeclaration' ||                node.type === 'FunctionDeclaration' ||                node.type === 'ClassDeclaration' ||                node.type === 'TSEnumDeclaration') &&                !node.declare) {                walkDeclaration(node, scriptBindings, vueImportAliases);            }        }        // apply reactivity transform        if (enableReactivityTransform && shouldTransform(script.content)) {            const { rootRefs, importedHelpers } = transformAST(scriptAst, s, scriptStartOffset);            refBindings = rootRefs;            for (const h of importedHelpers) {                helperImports.add(h);            }        }        // <script> after <script setup>        // we need to move the block up so that `const __default__` is        // declared before being used in the actual component definition        if (scriptStartOffset > startOffset) {            // if content doesn't end with newline, add one            if (!/\n$/.test(script.content.trim())) {                s.appendLeft(scriptEndOffset, `\n`);            }            s.move(scriptStartOffset, scriptEndOffset, 0);        }    }    // 2.2 process <script setup> body    for (const node of scriptSetupAst.body) {        // (Dropped) `ref: x` bindings        // TODO remove when out of experimental        if (node.type === 'LabeledStatement' &&            node.label.name === 'ref' &&            node.body.type === 'ExpressionStatement') {            error(`ref sugar using the label syntax was an experimental proposal and ` +                `has been dropped based on community feedback. Please check out ` +                `the new proposal at https://github.com/vuejs/rfcs/discussions/369`, node);        }        if (node.type === 'ExpressionStatement') {            // process `defineProps` and `defineEmit(s)` calls            if (processDefineProps(node.expression) ||                processDefineEmits(node.expression) ||                processWithDefaults(node.expression)) {                s.remove(node.start + startOffset, node.end + startOffset);            }            else if (processDefineExpose(node.expression)) {                // defineExpose({}) -> expose({})                const callee = node.expression.callee;                s.overwrite(callee.start + startOffset, callee.end + startOffset, 'expose');            }        }        if (node.type === 'VariableDeclaration' && !node.declare) {            const total = node.declarations.length;            let left = total;            for (let i = 0; i < total; i++) {                const decl = node.declarations[i];                if (decl.init) {                    // defineProps / defineEmits                    const isDefineProps = processDefineProps(decl.init, decl.id) ||                        processWithDefaults(decl.init, decl.id);                    const isDefineEmits = processDefineEmits(decl.init, decl.id);                    if (isDefineProps || isDefineEmits) {                        if (left === 1) {                            s.remove(node.start + startOffset, node.end + startOffset);                        }                        else {                            let start = decl.start + startOffset;                            let end = decl.end + startOffset;                            if (i === 0) {                                // first one, locate the start of the next                                end = node.declarations[i + 1].start + startOffset;                            }                            else {                                // not first one, locate the end of the prev                                start = node.declarations[i - 1].end + startOffset;                            }                            s.remove(start, end);                            left--;                        }                    }                }            }        }        // walk declarations to record declared bindings        if ((node.type === 'VariableDeclaration' ||            node.type === 'FunctionDeclaration' ||            node.type === 'ClassDeclaration') &&            !node.declare) {            walkDeclaration(node, setupBindings, vueImportAliases);        }        // walk statements & named exports / variable declarations for top level        // await        if ((node.type === 'VariableDeclaration' && !node.declare) ||            node.type.endsWith('Statement')) {            const scope = [scriptSetupAst.body];            walk$1(node, {                enter(child, parent) {                    if (isFunctionType(child)) {                        this.skip();                    }                    if (child.type === 'BlockStatement') {                        scope.push(child.body);                    }                    if (child.type === 'AwaitExpression') {                        hasAwait = true;                        // if the await expression is an expression statement and                        // - is in the root scope                        // - or is not the first statement in a nested block scope                        // then it needs a semicolon before the generated code.                        const currentScope = scope[scope.length - 1];                        const needsSemi = currentScope.some((n, i) => {                            return ((scope.length === 1 || i > 0) &&                                n.type === 'ExpressionStatement' &&                                n.start === child.start);                        });                        processAwait(child, needsSemi, parent.type === 'ExpressionStatement');                    }                },                exit(node) {                    if (node.type === 'BlockStatement')                        scope.pop();                }            });        }        if ((node.type === 'ExportNamedDeclaration' && node.exportKind !== 'type') ||            node.type === 'ExportAllDeclaration' ||            node.type === 'ExportDefaultDeclaration') {            error(`<script setup> cannot contain ES module exports. ` +                `If you are using a previous version of <script setup>, please ` +                `consult the updated RFC at https://github.com/vuejs/rfcs/pull/227.`, node);        }        if (isTS) {            // runtime enum            if (node.type === 'TSEnumDeclaration') {                registerBinding(setupBindings, node.id, "setup-const" /* BindingTypes.SETUP_CONST */);            }            // move all Type declarations to outer scope            if (node.type.startsWith('TS') ||                (node.type === 'ExportNamedDeclaration' &&                    node.exportKind === 'type') ||                (node.type === 'VariableDeclaration' && node.declare)) {                recordType(node, declaredTypes);                hoistNode(node);            }        }    }    // 3. Apply reactivity transform    if ((enableReactivityTransform &&        // normal <script> had ref bindings that maybe used in <script setup>        (refBindings || shouldTransform(scriptSetup.content))) ||        propsDestructureDecl) {        const { rootRefs, importedHelpers } = transformAST(scriptSetupAst, s, startOffset, refBindings, propsDestructuredBindings);        refBindings = refBindings ? [...refBindings, ...rootRefs] : rootRefs;        for (const h of importedHelpers) {            helperImports.add(h);        }    }    // 4. extract runtime props/emits code from setup context type    if (propsTypeDecl) {        extractRuntimeProps(propsTypeDecl, typeDeclaredProps, declaredTypes);    }    if (emitsTypeDecl) {        extractRuntimeEmits(emitsTypeDecl, typeDeclaredEmits);    }    // 5. check useOptions args to make sure it doesn't reference setup scope    // variables    checkInvalidScopeReference(propsRuntimeDecl, DEFINE_PROPS);    checkInvalidScopeReference(propsRuntimeDefaults, DEFINE_PROPS);    checkInvalidScopeReference(propsDestructureDecl, DEFINE_PROPS);    checkInvalidScopeReference(emitsRuntimeDecl, DEFINE_EMITS);    // 6. remove non-script content    if (script) {        if (startOffset < scriptStartOffset) {            // <script setup> before <script>            s.remove(0, startOffset);            s.remove(endOffset, scriptStartOffset);            s.remove(scriptEndOffset, source.length);        }        else {            // <script> before <script setup>            s.remove(0, scriptStartOffset);            s.remove(scriptEndOffset, startOffset);            s.remove(endOffset, source.length);        }    }    else {        // only <script setup>        s.remove(0, startOffset);        s.remove(endOffset, source.length);    }    // 7. analyze binding metadata    if (scriptAst) {        Object.assign(bindingMetadata, analyzeScriptBindings(scriptAst.body));    }    if (propsRuntimeDecl) {        for (const key of getObjectOrArrayExpressionKeys(propsRuntimeDecl)) {            bindingMetadata[key] = "props" /* BindingTypes.PROPS */;        }    }    for (const key in typeDeclaredProps) {        bindingMetadata[key] = "props" /* BindingTypes.PROPS */;    }    // props aliases    if (propsDestructureDecl) {        if (propsDestructureRestId) {            bindingMetadata[propsDestructureRestId] =                "setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */;        }        for (const key in propsDestructuredBindings) {            const { local } = propsDestructuredBindings[key];            if (local !== key) {                bindingMetadata[local] = "props-aliased" /* BindingTypes.PROPS_ALIASED */;                (bindingMetadata.__propsAliases ||                    (bindingMetadata.__propsAliases = {}))[local] = key;            }        }    }    for (const [key, { isType, imported, source }] of Object.entries(userImports)) {        if (isType)            continue;        bindingMetadata[key] =            imported === '*' ||                (imported === 'default' && source.endsWith('.vue')) ||                source === 'vue'                ? "setup-const" /* BindingTypes.SETUP_CONST */                : "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */;    }    for (const key in scriptBindings) {        bindingMetadata[key] = scriptBindings[key];    }    for (const key in setupBindings) {        bindingMetadata[key] = setupBindings[key];    }    // known ref bindings    if (refBindings) {        for (const key of refBindings) {            bindingMetadata[key] = "setup-ref" /* BindingTypes.SETUP_REF */;        }    }    // 8. inject `useCssVars` calls    if (cssVars.length &&        // no need to do this when targeting SSR        !(options.inlineTemplate && ((_a = options.templateOptions) === null || _a === void 0 ? void 0 : _a.ssr))) {        helperImports.add(CSS_VARS_HELPER);        helperImports.add('unref');        s.prependRight(startOffset, `\n${genCssVarsCode(cssVars, bindingMetadata, scopeId, isProd)}\n`);    }    // 9. finalize setup() argument signature    let args = `__props`;    if (propsTypeDecl) {        // mark as any and only cast on assignment        // since the user defined complex types may be incompatible with the        // inferred type from generated runtime declarations        args += `: any`;    }    // inject user assignment of props    // we use a default __props so that template expressions referencing props    // can use it directly    if (propsIdentifier) {        s.prependLeft(startOffset, `\nconst ${propsIdentifier} = __props${propsTypeDecl ? ` as ${genSetupPropsType(propsTypeDecl)}` : ``};\n`);    }    if (propsDestructureRestId) {        s.prependLeft(startOffset, `\nconst ${propsDestructureRestId} = ${helper(`createPropsRestProxy`)}(__props, ${JSON.stringify(Object.keys(propsDestructuredBindings))});\n`);    }    // inject temp variables for async context preservation    if (hasAwait) {        const any = isTS ? `: any` : ``;        s.prependLeft(startOffset, `\nlet __temp${any}, __restore${any}\n`);    }    const destructureElements = hasDefineExposeCall || !options.inlineTemplate ? [`expose`] : [];    if (emitIdentifier) {        destructureElements.push(emitIdentifier === `emit` ? `emit` : `emit: ${emitIdentifier}`);    }    if (destructureElements.length) {        args += `, { ${destructureElements.join(', ')} }`;        if (emitsTypeDecl) {            args += `: { emit: (${scriptSetup.content.slice(emitsTypeDecl.start, emitsTypeDecl.end)}), expose: any, slots: any, attrs: any }`;        }    }    // 10. generate return statement    let returned;    if (!options.inlineTemplate || (!sfc.template && hasDefaultExportRender)) {        // non-inline mode, or has manual render in normal <script>        // return bindings from script and script setup        const allBindings = Object.assign(Object.assign({}, scriptBindings), setupBindings);        for (const key in userImports) {            if (!userImports[key].isType && userImports[key].isUsedInTemplate) {                allBindings[key] = true;            }        }        returned = `{ `;        for (const key in allBindings) {            if (allBindings[key] === true &&                userImports[key].source !== 'vue' &&                !userImports[key].source.endsWith('.vue')) {                // generate getter for import bindings                // skip vue imports since we know they will never change                returned += `get ${key}() { return ${key} }, `;            }            else if (bindingMetadata[key] === "setup-let" /* BindingTypes.SETUP_LET */) {                // local let binding, also add setter                const setArg = key === 'v' ? `_v` : `v`;                returned +=                    `get ${key}() { return ${key} }, ` +                        `set ${key}(${setArg}) { ${key} = ${setArg} }, `;            }            else {                returned += `${key}, `;            }        }        returned = returned.replace(/, $/, '') + ` }`;    }    else {        // inline mode        if (sfc.template && !sfc.template.src) {            if (options.templateOptions && options.templateOptions.ssr) {                hasInlinedSsrRenderFn = true;            }            // inline render function mode - we are going to compile the template and            // inline it right here            const { code, ast, preamble, tips, errors } = compileTemplate(Object.assign(Object.assign({ filename, source: sfc.template.content, inMap: sfc.template.map }, options.templateOptions), { id: scopeId, scoped: sfc.styles.some(s => s.scoped), isProd: options.isProd, ssrCssVars: sfc.cssVars, compilerOptions: Object.assign(Object.assign({}, (options.templateOptions &&                    options.templateOptions.compilerOptions)), { inline: true, isTS,                    bindingMetadata }) }));            if (tips.length) {                tips.forEach(warnOnce);            }            const err = errors[0];            if (typeof err === 'string') {                throw new Error(err);            }            else if (err) {                if (err.loc) {                    err.message +=                        `\n\n` +                            sfc.filename +                            '\n' +                            generateCodeFrame(source, err.loc.start.offset, err.loc.end.offset) +                            `\n`;                }                throw err;            }            if (preamble) {                s.prepend(preamble);            }            // avoid duplicated unref import            // as this may get injected by the render function preamble OR the            // css vars codegen            if (ast && ast.helpers.includes(UNREF)) {                helperImports.delete('unref');            }            returned = code;        }        else {            returned = `() => {}`;        }    }    if (!options.inlineTemplate && !false) {        // in non-inline mode, the `__isScriptSetup: true` flag is used by        // componentPublicInstance proxy to allow properties that start with $ or _        s.appendRight(endOffset, `\nconst __returned__ = ${returned}\n` +            `Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })\n` +            `return __returned__` +            `\n}\n\n`);    }    else {        s.appendRight(endOffset, `\nreturn ${returned}\n}\n\n`);    }    // 11. finalize default export    let runtimeOptions = ``;    if (!hasDefaultExportName && filename && filename !== DEFAULT_FILENAME) {        const match = filename.match(/([^/\\]+)\.\w+$/);        if (match) {            runtimeOptions += `\n  __name: '${match[1]}',`;        }    }    if (hasInlinedSsrRenderFn) {        runtimeOptions += `\n  __ssrInlineRender: true,`;    }    if (propsRuntimeDecl) {        let declCode = scriptSetup.content            .slice(propsRuntimeDecl.start, propsRuntimeDecl.end)            .trim();        if (propsDestructureDecl) {            const defaults = [];            for (const key in propsDestructuredBindings) {                const d = genDestructuredDefaultValue(key);                if (d)                    defaults.push(`${key}: ${d}`);            }            if (defaults.length) {                declCode = `${helper(`mergeDefaults`)}(${declCode}, {\n  ${defaults.join(',\n  ')}\n})`;            }        }        runtimeOptions += `\n  props: ${declCode},`;    }    else if (propsTypeDecl) {        runtimeOptions += genRuntimeProps(typeDeclaredProps);    }    if (emitsRuntimeDecl) {        runtimeOptions += `\n  emits: ${scriptSetup.content            .slice(emitsRuntimeDecl.start, emitsRuntimeDecl.end)            .trim()},`;    }    else if (emitsTypeDecl) {        runtimeOptions += genRuntimeEmits(typeDeclaredEmits);    }    // <script setup> components are closed by default. If the user did not    // explicitly call `defineExpose`, call expose() with no args.    const exposeCall = hasDefineExposeCall || options.inlineTemplate ? `` : `  expose();\n`;    // wrap setup code with function.    if (isTS) {        // for TS, make sure the exported type is still valid type with        // correct props information        // we have to use object spread for types to be merged properly        // user's TS setting should compile it down to proper targets        // export default defineComponent({ ...__default__, ... })        const def = defaultExport ? `\n  ...${DEFAULT_VAR},` : ``;        s.prependLeft(startOffset, `\nexport default /*#__PURE__*/${helper(`defineComponent`)}({${def}${runtimeOptions}\n  ${hasAwait ? `async ` : ``}setup(${args}) {\n${exposeCall}`);        s.appendRight(endOffset, `})`);    }    else {        if (defaultExport) {            // without TS, can't rely on rest spread, so we use Object.assign            // export default Object.assign(__default__, { ... })            s.prependLeft(startOffset, `\nexport default /*#__PURE__*/Object.assign(${DEFAULT_VAR}, {${runtimeOptions}\n  ` +                `${hasAwait ? `async ` : ``}setup(${args}) {\n${exposeCall}`);            s.appendRight(endOffset, `})`);        }        else {            s.prependLeft(startOffset, `\nexport default {${runtimeOptions}\n  ` +                `${hasAwait ? `async ` : ``}setup(${args}) {\n${exposeCall}`);            s.appendRight(endOffset, `}`);        }    }    // 12. finalize Vue helper imports    if (helperImports.size > 0) {        s.prepend(`import { ${[...helperImports]            .map(h => `${h} as _${h}`)            .join(', ')} } from 'vue'\n`);    }    s.trim();    return Object.assign(Object.assign({}, scriptSetup), { bindings: bindingMetadata, imports: userImports, content: s.toString(), map: genSourceMap            ? s.generateMap({                source: filename,                hires: true,                includeContent: true            })            : undefined, scriptAst: scriptAst === null || scriptAst === void 0 ? void 0 : scriptAst.body, scriptSetupAst: scriptSetupAst === null || scriptSetupAst === void 0 ? void 0 : scriptSetupAst.body });}function registerBinding(bindings, node, type) {    bindings[node.name] = type;}function walkDeclaration(node, bindings, userImportAliases) {    if (node.type === 'VariableDeclaration') {        const isConst = node.kind === 'const';        // export const foo = ...        for (const { id, init } of node.declarations) {            const isDefineCall = !!(isConst &&                isCallOf(init, c => c === DEFINE_PROPS || c === DEFINE_EMITS || c === WITH_DEFAULTS));            if (id.type === 'Identifier') {                let bindingType;                const userReactiveBinding = userImportAliases['reactive'];                if (isCallOf(init, userReactiveBinding)) {                    // treat reactive() calls as let since it's meant to be mutable                    bindingType = isConst                        ? "setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */                        : "setup-let" /* BindingTypes.SETUP_LET */;                }                else if (                // if a declaration is a const literal, we can mark it so that                // the generated render fn code doesn't need to unref() it                isDefineCall ||                    (isConst && canNeverBeRef(init, userReactiveBinding))) {                    bindingType = isCallOf(init, DEFINE_PROPS)                        ? "setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */                        : "setup-const" /* BindingTypes.SETUP_CONST */;                }                else if (isConst) {                    if (isCallOf(init, userImportAliases['ref'])) {                        bindingType = "setup-ref" /* BindingTypes.SETUP_REF */;                    }                    else {                        bindingType = "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */;                    }                }                else {                    bindingType = "setup-let" /* BindingTypes.SETUP_LET */;                }                registerBinding(bindings, id, bindingType);            }            else {                if (isCallOf(init, DEFINE_PROPS)) {                    // skip walking props destructure                    return;                }                if (id.type === 'ObjectPattern') {                    walkObjectPattern(id, bindings, isConst, isDefineCall);                }                else if (id.type === 'ArrayPattern') {                    walkArrayPattern(id, bindings, isConst, isDefineCall);                }            }        }    }    else if (node.type === 'TSEnumDeclaration' ||        node.type === 'FunctionDeclaration' ||        node.type === 'ClassDeclaration') {        // export function foo() {} / export class Foo {}        // export declarations must be named.        bindings[node.id.name] = "setup-const" /* BindingTypes.SETUP_CONST */;    }}function walkObjectPattern(node, bindings, isConst, isDefineCall = false) {    for (const p of node.properties) {        if (p.type === 'ObjectProperty') {            if (p.key.type === 'Identifier' && p.key === p.value) {                // shorthand: const { x } = ...                const type = isDefineCall                    ? "setup-const" /* BindingTypes.SETUP_CONST */                    : isConst                        ? "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */                        : "setup-let" /* BindingTypes.SETUP_LET */;                registerBinding(bindings, p.key, type);            }            else {                walkPattern(p.value, bindings, isConst, isDefineCall);            }        }        else {            // ...rest            // argument can only be identifier when destructuring            const type = isConst ? "setup-const" /* BindingTypes.SETUP_CONST */ : "setup-let" /* BindingTypes.SETUP_LET */;            registerBinding(bindings, p.argument, type);        }    }}function walkArrayPattern(node, bindings, isConst, isDefineCall = false) {    for (const e of node.elements) {        e && walkPattern(e, bindings, isConst, isDefineCall);    }}function walkPattern(node, bindings, isConst, isDefineCall = false) {    if (node.type === 'Identifier') {        const type = isDefineCall            ? "setup-const" /* BindingTypes.SETUP_CONST */            : isConst                ? "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */                : "setup-let" /* BindingTypes.SETUP_LET */;        registerBinding(bindings, node, type);    }    else if (node.type === 'RestElement') {        // argument can only be identifier when destructuring        const type = isConst ? "setup-const" /* BindingTypes.SETUP_CONST */ : "setup-let" /* BindingTypes.SETUP_LET */;        registerBinding(bindings, node.argument, type);    }    else if (node.type === 'ObjectPattern') {        walkObjectPattern(node, bindings, isConst);    }    else if (node.type === 'ArrayPattern') {        walkArrayPattern(node, bindings, isConst);    }    else if (node.type === 'AssignmentPattern') {        if (node.left.type === 'Identifier') {            const type = isDefineCall                ? "setup-const" /* BindingTypes.SETUP_CONST */                : isConst                    ? "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */                    : "setup-let" /* BindingTypes.SETUP_LET */;            registerBinding(bindings, node.left, type);        }        else {            walkPattern(node.left, bindings, isConst);        }    }}function recordType(node, declaredTypes) {    if (node.type === 'TSInterfaceDeclaration') {        declaredTypes[node.id.name] = [`Object`];    }    else if (node.type === 'TSTypeAliasDeclaration') {        declaredTypes[node.id.name] = inferRuntimeType(node.typeAnnotation, declaredTypes);    }    else if (node.type === 'ExportNamedDeclaration' && node.declaration) {        recordType(node.declaration, declaredTypes);    }}function extractRuntimeProps(node, props, declaredTypes, isProd) {    const members = node.type === 'TSTypeLiteral' ? node.members : node.body;    for (const m of members) {        if ((m.type === 'TSPropertySignature' || m.type === 'TSMethodSignature') &&            m.key.type === 'Identifier') {            let type;            if (m.type === 'TSMethodSignature') {                type = ['Function'];            }            else if (m.typeAnnotation) {                type = inferRuntimeType(m.typeAnnotation.typeAnnotation, declaredTypes);            }            props[m.key.name] = {                key: m.key.name,                required: !m.optional,                type: type || [`null`]            };        }    }}function inferRuntimeType(node, declaredTypes) {    switch (node.type) {        case 'TSStringKeyword':            return ['String'];        case 'TSNumberKeyword':            return ['Number'];        case 'TSBooleanKeyword':            return ['Boolean'];        case 'TSObjectKeyword':            return ['Object'];        case 'TSTypeLiteral':            // TODO (nice to have) generate runtime property validation            return ['Object'];        case 'TSFunctionType':            return ['Function'];        case 'TSArrayType':        case 'TSTupleType':            // TODO (nice to have) generate runtime element type/length checks            return ['Array'];        case 'TSLiteralType':            switch (node.literal.type) {                case 'StringLiteral':                    return ['String'];                case 'BooleanLiteral':                    return ['Boolean'];                case 'NumericLiteral':                case 'BigIntLiteral':                    return ['Number'];                default:                    return [`null`];            }        case 'TSTypeReference':            if (node.typeName.type === 'Identifier') {                if (declaredTypes[node.typeName.name]) {                    return declaredTypes[node.typeName.name];                }                switch (node.typeName.name) {                    case 'Array':                    case 'Function':                    case 'Object':                    case 'Set':                    case 'Map':                    case 'WeakSet':                    case 'WeakMap':                    case 'Date':                    case 'Promise':                        return [node.typeName.name];                    case 'Record':                    case 'Partial':                    case 'Readonly':                    case 'Pick':                    case 'Omit':                    case 'Exclude':                    case 'Extract':                    case 'Required':                    case 'InstanceType':                        return ['Object'];                }            }            return [`null`];        case 'TSParenthesizedType':            return inferRuntimeType(node.typeAnnotation, declaredTypes);        case 'TSUnionType':            return [                ...new Set([].concat(...node.types.map(t => inferRuntimeType(t, declaredTypes))))            ];        case 'TSIntersectionType':            return ['Object'];        case 'TSSymbolKeyword':            return ['Symbol'];        default:            return [`null`]; // no runtime check    }}function toRuntimeTypeString(types) {    return types.length > 1 ? `[${types.join(', ')}]` : types[0];}function extractRuntimeEmits(node, emits) {    if (node.type === 'TSTypeLiteral' || node.type === 'TSInterfaceBody') {        const members = node.type === 'TSTypeLiteral' ? node.members : node.body;        for (let t of members) {            if (t.type === 'TSCallSignatureDeclaration') {                extractEventNames(t.parameters[0], emits);            }        }        return;    }    else {        extractEventNames(node.parameters[0], emits);    }}function extractEventNames(eventName, emits) {    if (eventName.type === 'Identifier' &&        eventName.typeAnnotation &&        eventName.typeAnnotation.type === 'TSTypeAnnotation') {        const typeNode = eventName.typeAnnotation.typeAnnotation;        if (typeNode.type === 'TSLiteralType') {            if (typeNode.literal.type !== 'UnaryExpression') {                emits.add(String(typeNode.literal.value));            }        }        else if (typeNode.type === 'TSUnionType') {            for (const t of typeNode.types) {                if (t.type === 'TSLiteralType' &&                    t.literal.type !== 'UnaryExpression') {                    emits.add(String(t.literal.value));                }            }        }    }}function genRuntimeEmits(emits) {    return emits.size        ? `\n  emits: [${Array.from(emits)            .map(p => JSON.stringify(p))            .join(', ')}],`        : ``;}function isCallOf(node, test) {    return !!(node &&        test &&        node.type === 'CallExpression' &&        node.callee.type === 'Identifier' &&        (typeof test === 'string'            ? node.callee.name === test            : test(node.callee.name)));}function canNeverBeRef(node, userReactiveImport) {    if (isCallOf(node, userReactiveImport)) {        return true;    }    switch (node.type) {        case 'UnaryExpression':        case 'BinaryExpression':        case 'ArrayExpression':        case 'ObjectExpression':        case 'FunctionExpression':        case 'ArrowFunctionExpression':        case 'UpdateExpression':        case 'ClassExpression':        case 'TaggedTemplateExpression':            return true;        case 'SequenceExpression':            return canNeverBeRef(node.expressions[node.expressions.length - 1], userReactiveImport);        default:            if (node.type.endsWith('Literal')) {                return true;            }            return false;    }}/** * Analyze bindings in normal `<script>` * Note that `compileScriptSetup` already analyzes bindings as part of its * compilation process so this should only be used on single `<script>` SFCs. */function analyzeScriptBindings(ast) {    for (const node of ast) {        if (node.type === 'ExportDefaultDeclaration' &&            node.declaration.type === 'ObjectExpression') {            return analyzeBindingsFromOptions(node.declaration);        }    }    return {};}function analyzeBindingsFromOptions(node) {    const bindings = {};    // #3270, #3275    // mark non-script-setup so we don't resolve components/directives from these    Object.defineProperty(bindings, '__isScriptSetup', {        enumerable: false,        value: false    });    for (const property of node.properties) {        if (property.type === 'ObjectProperty' &&            !property.computed &&            property.key.type === 'Identifier') {            // props            if (property.key.name === 'props') {                // props: ['foo']                // props: { foo: ... }                for (const key of getObjectOrArrayExpressionKeys(property.value)) {                    bindings[key] = "props" /* BindingTypes.PROPS */;                }            }            // inject            else if (property.key.name === 'inject') {                // inject: ['foo']                // inject: { foo: {} }                for (const key of getObjectOrArrayExpressionKeys(property.value)) {                    bindings[key] = "options" /* BindingTypes.OPTIONS */;                }            }            // computed & methods            else if (property.value.type === 'ObjectExpression' &&                (property.key.name === 'computed' || property.key.name === 'methods')) {                // methods: { foo() {} }                // computed: { foo() {} }                for (const key of getObjectExpressionKeys(property.value)) {                    bindings[key] = "options" /* BindingTypes.OPTIONS */;                }            }        }        // setup & data        else if (property.type === 'ObjectMethod' &&            property.key.type === 'Identifier' &&            (property.key.name === 'setup' || property.key.name === 'data')) {            for (const bodyItem of property.body.body) {                // setup() {                //   return {                //     foo: null                //   }                // }                if (bodyItem.type === 'ReturnStatement' &&                    bodyItem.argument &&                    bodyItem.argument.type === 'ObjectExpression') {                    for (const key of getObjectExpressionKeys(bodyItem.argument)) {                        bindings[key] =                            property.key.name === 'setup'                                ? "setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */                                : "data" /* BindingTypes.DATA */;                    }                }            }        }    }    return bindings;}function getObjectExpressionKeys(node) {    const keys = [];    for (const prop of node.properties) {        if (prop.type === 'SpreadElement')            continue;        const key = resolveObjectKey(prop.key, prop.computed);        if (key)            keys.push(String(key));    }    return keys;}function getArrayExpressionKeys(node) {    const keys = [];    for (const element of node.elements) {        if (element && element.type === 'StringLiteral') {            keys.push(element.value);        }    }    return keys;}function getObjectOrArrayExpressionKeys(value) {    if (value.type === 'ArrayExpression') {        return getArrayExpressionKeys(value);    }    if (value.type === 'ObjectExpression') {        return getObjectExpressionKeys(value);    }    return [];}const templateUsageCheckCache = createCache();function resolveTemplateUsageCheckString(sfc) {    const { content, ast } = sfc.template;    const cached = templateUsageCheckCache.get(content);    if (cached) {        return cached;    }    let code = '';    transform(createRoot([ast]), {        nodeTransforms: [            node => {                if (node.type === 1 /* NodeTypes.ELEMENT */) {                    if (!parserOptions.isNativeTag(node.tag) &&                        !parserOptions.isBuiltInComponent(node.tag)) {                        code += `,${camelize(node.tag)},${capitalize(camelize(node.tag))}`;                    }                    for (let i = 0; i < node.props.length; i++) {                        const prop = node.props[i];                        if (prop.type === 7 /* NodeTypes.DIRECTIVE */) {                            if (!isBuiltInDir(prop.name)) {                                code += `,v${capitalize(camelize(prop.name))}`;                            }                            if (prop.exp) {                                code += `,${processExp(prop.exp.content, prop.name)}`;                            }                        }                    }                }                else if (node.type === 5 /* NodeTypes.INTERPOLATION */) {                    code += `,${processExp(node.content.content)}`;                }            }        ]    });    code += ';';    templateUsageCheckCache.set(content, code);    return code;}const forAliasRE$1 = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;function processExp(exp, dir) {    if (/ as\s+\w|<.*>|:/.test(exp)) {        if (dir === 'slot') {            exp = `(${exp})=>{}`;        }        else if (dir === 'on') {            exp = `()=>{return ${exp}}`;        }        else if (dir === 'for') {            const inMatch = exp.match(forAliasRE$1);            if (inMatch) {                const [, LHS, RHS] = inMatch;                return processExp(`(${LHS})=>{}`) + processExp(RHS);            }        }        let ret = '';        // has potential type cast or generic arguments that uses types        const ast = parseExpression_1(exp, { plugins: ['typescript'] });        walkIdentifiers(ast, node => {            ret += `,` + node.name;        });        return ret;    }    return stripStrings(exp);}function stripStrings(exp) {    return exp        .replace(/'[^']*'|"[^"]*"/g, '')        .replace(/`[^`]+`/g, stripTemplateString);}function stripTemplateString(str) {    const interpMatch = str.match(/\${[^}]+}/g);    if (interpMatch) {        return interpMatch.map(m => m.slice(2, -1)).join(',');    }    return '';}function isImportUsed(local, sfc) {    return new RegExp(    // #4274 escape $ since it's a special char in regex    // (and is the only regex special char that is valid in identifiers)    `[^\\w$_]${local.replace(/\$/g, '\\$')}[^\\w$_]`).test(resolveTemplateUsageCheckString(sfc));}/** * Note: this comparison assumes the prev/next script are already identical, * and only checks the special case where <script setup lang="ts"> unused import * pruning result changes due to template changes. */function hmrShouldReload(prevImports, next) {    if (!next.scriptSetup ||        (next.scriptSetup.lang !== 'ts' && next.scriptSetup.lang !== 'tsx')) {        return false;    }    // for each previous import, check if its used status remain the same based on    // the next descriptor's template    for (const key in prevImports) {        // if an import was previous unused, but now is used, we need to force        // reload so that the script now includes that import.        if (!prevImports[key].isUsedInTemplate && isImportUsed(key, next)) {            return true;        }    }    return false;}function resolveObjectKey(node, computed) {    switch (node.type) {        case 'StringLiteral':        case 'NumericLiteral':            return node.value;        case 'Identifier':            if (!computed)                return node.name;    }    return undefined;}const DEFAULT_FILENAME = 'anonymous.vue';const sourceToSFC = createCache();function parse$4(source, { sourceMap = true, filename = DEFAULT_FILENAME, sourceRoot = '', pad = false, ignoreEmpty = true, compiler = CompilerDOM } = {}) {    const sourceKey = source + sourceMap + filename + sourceRoot + pad + compiler.parse;    const cache = sourceToSFC.get(sourceKey);    if (cache) {        return cache;    }    const descriptor = {        filename,        source,        template: null,        script: null,        scriptSetup: null,        styles: [],        customBlocks: [],        cssVars: [],        slotted: false,        shouldForceReload: prevImports => hmrShouldReload(prevImports, descriptor)    };    const errors = [];    const ast = compiler.parse(source, {        // there are no components at SFC parsing level        isNativeTag: () => true,        // preserve all whitespaces        isPreTag: () => true,        getTextMode: ({ tag, props }, parent) => {            // all top level elements except <template> are parsed as raw text            // containers            if ((!parent && tag !== 'template') ||                // <template lang="xxx"> should also be treated as raw text                (tag === 'template' &&                    props.some(p => p.type === 6 /* NodeTypes.ATTRIBUTE */ &&                        p.name === 'lang' &&                        p.value &&                        p.value.content &&                        p.value.content !== 'html'))) {                return 2 /* TextModes.RAWTEXT */;            }            else {                return 0 /* TextModes.DATA */;            }        },        onError: e => {            errors.push(e);        }    });    ast.children.forEach(node => {        if (node.type !== 1 /* NodeTypes.ELEMENT */) {            return;        }        // we only want to keep the nodes that are not empty (when the tag is not a template)        if (ignoreEmpty &&            node.tag !== 'template' &&            isEmpty(node) &&            !hasSrc(node)) {            return;        }        switch (node.tag) {            case 'template':                if (!descriptor.template) {                    const templateBlock = (descriptor.template = createBlock(node, source, false));                    templateBlock.ast = node;                    // warn against 2.x <template functional>                    if (templateBlock.attrs.functional) {                        const err = new SyntaxError(`<template functional> is no longer supported in Vue 3, since ` +                            `functional components no longer have significant performance ` +                            `difference from stateful ones. Just use a normal <template> ` +                            `instead.`);                        err.loc = node.props.find(p => p.name === 'functional').loc;                        errors.push(err);                    }                }                else {                    errors.push(createDuplicateBlockError(node));                }                break;            case 'script':                const scriptBlock = createBlock(node, source, pad);                const isSetup = !!scriptBlock.attrs.setup;                if (isSetup && !descriptor.scriptSetup) {                    descriptor.scriptSetup = scriptBlock;                    break;                }                if (!isSetup && !descriptor.script) {                    descriptor.script = scriptBlock;                    break;                }                errors.push(createDuplicateBlockError(node, isSetup));                break;            case 'style':                const styleBlock = createBlock(node, source, pad);                if (styleBlock.attrs.vars) {                    errors.push(new SyntaxError(`<style vars> has been replaced by a new proposal: ` +                        `https://github.com/vuejs/rfcs/pull/231`));                }                descriptor.styles.push(styleBlock);                break;            default:                descriptor.customBlocks.push(createBlock(node, source, pad));                break;        }    });    if (!descriptor.template && !descriptor.script && !descriptor.scriptSetup) {        errors.push(new SyntaxError(`At least one <template> or <script> is required in a single file component.`));    }    if (descriptor.scriptSetup) {        if (descriptor.scriptSetup.src) {            errors.push(new SyntaxError(`<script setup> cannot use the "src" attribute because ` +                `its syntax will be ambiguous outside of the component.`));            descriptor.scriptSetup = null;        }        if (descriptor.script && descriptor.script.src) {            errors.push(new SyntaxError(`<script> cannot use the "src" attribute when <script setup> is ` +                `also present because they must be processed together.`));            descriptor.script = null;        }    }    if (sourceMap) {        const genMap = (block) => {            if (block && !block.src) {                block.map = generateSourceMap(filename, source, block.content, sourceRoot, !pad || block.type === 'template' ? block.loc.start.line - 1 : 0);            }        };        genMap(descriptor.template);        genMap(descriptor.script);        descriptor.styles.forEach(genMap);        descriptor.customBlocks.forEach(genMap);    }    // parse CSS vars    descriptor.cssVars = parseCssVars(descriptor);    // check if the SFC uses :slotted    const slottedRE = /(?:::v-|:)slotted\(/;    descriptor.slotted = descriptor.styles.some(s => s.scoped && slottedRE.test(s.content));    const result = {        descriptor,        errors    };    sourceToSFC.set(sourceKey, result);    return result;}function createDuplicateBlockError(node, isScriptSetup = false) {    const err = new SyntaxError(`Single file component can contain only one <${node.tag}${isScriptSetup ? ` setup` : ``}> element`);    err.loc = node.loc;    return err;}function createBlock(node, source, pad) {    const type = node.tag;    let { start, end } = node.loc;    let content = '';    if (node.children.length) {        start = node.children[0].loc.start;        end = node.children[node.children.length - 1].loc.end;        content = source.slice(start.offset, end.offset);    }    else {        const offset = node.loc.source.indexOf(`</`);        if (offset > -1) {            start = {                line: start.line,                column: start.column + offset,                offset: start.offset + offset            };        }        end = Object.assign({}, start);    }    const loc = {        source: content,        start,        end    };    const attrs = {};    const block = {        type,        content,        loc,        attrs    };    if (pad) {        block.content = padContent(source, block, pad) + block.content;    }    node.props.forEach(p => {        if (p.type === 6 /* NodeTypes.ATTRIBUTE */) {            attrs[p.name] = p.value ? p.value.content || true : true;            if (p.name === 'lang') {                block.lang = p.value && p.value.content;            }            else if (p.name === 'src') {                block.src = p.value && p.value.content;            }            else if (type === 'style') {                if (p.name === 'scoped') {                    block.scoped = true;                }                else if (p.name === 'module') {                    block.module = attrs[p.name];                }            }            else if (type === 'script' && p.name === 'setup') {                block.setup = attrs.setup;            }        }    });    return block;}const splitRE = /\r?\n/g;const emptyRE = /^(?:\/\/)?\s*$/;const replaceRE = /./g;function generateSourceMap(filename, source, generated, sourceRoot, lineOffset) {    const map = new SourceMapGenerator$2({        file: filename.replace(/\\/g, '/'),        sourceRoot: sourceRoot.replace(/\\/g, '/')    });    map.setSourceContent(filename, source);    generated.split(splitRE).forEach((line, index) => {        if (!emptyRE.test(line)) {            const originalLine = index + 1 + lineOffset;            const generatedLine = index + 1;            for (let i = 0; i < line.length; i++) {                if (!/\s/.test(line[i])) {                    map.addMapping({                        source: filename,                        original: {                            line: originalLine,                            column: i                        },                        generated: {                            line: generatedLine,                            column: i                        }                    });                }            }        }    });    return JSON.parse(map.toString());}function padContent(content, block, pad) {    content = content.slice(0, block.loc.start.offset);    if (pad === 'space') {        return content.replace(replaceRE, ' ');    }    else {        const offset = content.split(splitRE).length;        const padChar = block.type === 'script' && !block.lang ? '//\n' : '\n';        return Array(offset).join(padChar);    }}function hasSrc(node) {    return node.props.some(p => {        if (p.type !== 6 /* NodeTypes.ATTRIBUTE */) {            return false;        }        return p.name === 'src';    });}/** * Returns true if the node has no children * once the empty text nodes (trimmed content) have been filtered out. */function isEmpty(node) {    for (let i = 0; i < node.children.length; i++) {        const child = node.children[i];        if (child.type !== 2 /* NodeTypes.TEXT */ || child.content.trim() !== '') {            return false;        }    }    return true;}// MIT lisence// from https://github.com/substack/tty-browserify/blob/1ba769a6429d242f36226538835b4034bf6b7886/index.jsfunction isatty() {  return false;}function ReadStream() {  throw new Error('tty.ReadStream is not implemented');}function WriteStream() {  throw new Error('tty.ReadStream is not implemented');}var _polyfillNode_tty = {  isatty: isatty,  ReadStream: ReadStream,  WriteStream: WriteStream};var _polyfillNode_tty$1 = /*#__PURE__*/Object.freeze({  __proto__: null,  isatty: isatty,  ReadStream: ReadStream,  WriteStream: WriteStream,  'default': _polyfillNode_tty});var tty = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_tty$1);let isColorSupported =	!("NO_COLOR" in ({}) || browser$1.argv.includes("--no-color")) &&	("FORCE_COLOR" in ({}) ||		browser$1.argv.includes("--color") ||		"" === "win32" ||		(tty.isatty(1) && ({}).TERM !== "dumb") ||		"CI" in ({}));let formatter =	(open, close, replace = open) =>	input => {		let string = "" + input;		let index = string.indexOf(close, open.length);		return ~index			? open + replaceClose(string, close, replace, index) + close			: open + string + close	};let replaceClose = (string, close, replace, index) => {	let start = string.substring(0, index) + replace;	let end = string.substring(index + close.length);	let nextIndex = end.indexOf(close);	return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end};let createColors = (enabled = isColorSupported) => ({	isColorSupported: enabled,	reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,	bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,	dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,	italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,	underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,	inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,	hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,	strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,	black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,	red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,	green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,	yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,	blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,	magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,	cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,	white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,	gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,	bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,	bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,	bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,	bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,	bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,	bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,	bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,	bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,});var picocolors = createColors();var createColors_1 = createColors;picocolors.createColors = createColors_1;const SINGLE_QUOTE = "'".charCodeAt(0);const DOUBLE_QUOTE = '"'.charCodeAt(0);const BACKSLASH = '\\'.charCodeAt(0);const SLASH = '/'.charCodeAt(0);const NEWLINE = '\n'.charCodeAt(0);const SPACE = ' '.charCodeAt(0);const FEED = '\f'.charCodeAt(0);const TAB = '\t'.charCodeAt(0);const CR = '\r'.charCodeAt(0);const OPEN_SQUARE = '['.charCodeAt(0);const CLOSE_SQUARE = ']'.charCodeAt(0);const OPEN_PARENTHESES = '('.charCodeAt(0);const CLOSE_PARENTHESES = ')'.charCodeAt(0);const OPEN_CURLY = '{'.charCodeAt(0);const CLOSE_CURLY = '}'.charCodeAt(0);const SEMICOLON = ';'.charCodeAt(0);const ASTERISK = '*'.charCodeAt(0);const COLON = ':'.charCodeAt(0);const AT = '@'.charCodeAt(0);const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g;const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;const RE_BAD_BRACKET = /.[\n"'(/\\]/;const RE_HEX_ESCAPE = /[\da-f]/i;var tokenize = function tokenizer(input, options = {}) {  let css = input.css.valueOf();  let ignore = options.ignoreErrors;  let code, next, quote, content, escape;  let escaped, escapePos, prev, n, currentToken;  let length = css.length;  let pos = 0;  let buffer = [];  let returned = [];  function position() {    return pos  }  function unclosed(what) {    throw input.error('Unclosed ' + what, pos)  }  function endOfFile() {    return returned.length === 0 && pos >= length  }  function nextToken(opts) {    if (returned.length) return returned.pop()    if (pos >= length) return    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;    code = css.charCodeAt(pos);    switch (code) {      case NEWLINE:      case SPACE:      case TAB:      case CR:      case FEED: {        next = pos;        do {          next += 1;          code = css.charCodeAt(next);        } while (          code === SPACE ||          code === NEWLINE ||          code === TAB ||          code === CR ||          code === FEED        )        currentToken = ['space', css.slice(pos, next)];        pos = next - 1;        break      }      case OPEN_SQUARE:      case CLOSE_SQUARE:      case OPEN_CURLY:      case CLOSE_CURLY:      case COLON:      case SEMICOLON:      case CLOSE_PARENTHESES: {        let controlChar = String.fromCharCode(code);        currentToken = [controlChar, controlChar, pos];        break      }      case OPEN_PARENTHESES: {        prev = buffer.length ? buffer.pop()[1] : '';        n = css.charCodeAt(pos + 1);        if (          prev === 'url' &&          n !== SINGLE_QUOTE &&          n !== DOUBLE_QUOTE &&          n !== SPACE &&          n !== NEWLINE &&          n !== TAB &&          n !== FEED &&          n !== CR        ) {          next = pos;          do {            escaped = false;            next = css.indexOf(')', next + 1);            if (next === -1) {              if (ignore || ignoreUnclosed) {                next = pos;                break              } else {                unclosed('bracket');              }            }            escapePos = next;            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {              escapePos -= 1;              escaped = !escaped;            }          } while (escaped)          currentToken = ['brackets', css.slice(pos, next + 1), pos, next];          pos = next;        } else {          next = css.indexOf(')', pos + 1);          content = css.slice(pos, next + 1);          if (next === -1 || RE_BAD_BRACKET.test(content)) {            currentToken = ['(', '(', pos];          } else {            currentToken = ['brackets', content, pos, next];            pos = next;          }        }        break      }      case SINGLE_QUOTE:      case DOUBLE_QUOTE: {        quote = code === SINGLE_QUOTE ? "'" : '"';        next = pos;        do {          escaped = false;          next = css.indexOf(quote, next + 1);          if (next === -1) {            if (ignore || ignoreUnclosed) {              next = pos + 1;              break            } else {              unclosed('string');            }          }          escapePos = next;          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {            escapePos -= 1;            escaped = !escaped;          }        } while (escaped)        currentToken = ['string', css.slice(pos, next + 1), pos, next];        pos = next;        break      }      case AT: {        RE_AT_END.lastIndex = pos + 1;        RE_AT_END.test(css);        if (RE_AT_END.lastIndex === 0) {          next = css.length - 1;        } else {          next = RE_AT_END.lastIndex - 2;        }        currentToken = ['at-word', css.slice(pos, next + 1), pos, next];        pos = next;        break      }      case BACKSLASH: {        next = pos;        escape = true;        while (css.charCodeAt(next + 1) === BACKSLASH) {          next += 1;          escape = !escape;        }        code = css.charCodeAt(next + 1);        if (          escape &&          code !== SLASH &&          code !== SPACE &&          code !== NEWLINE &&          code !== TAB &&          code !== CR &&          code !== FEED        ) {          next += 1;          if (RE_HEX_ESCAPE.test(css.charAt(next))) {            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {              next += 1;            }            if (css.charCodeAt(next + 1) === SPACE) {              next += 1;            }          }        }        currentToken = ['word', css.slice(pos, next + 1), pos, next];        pos = next;        break      }      default: {        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {          next = css.indexOf('*/', pos + 2) + 1;          if (next === 0) {            if (ignore || ignoreUnclosed) {              next = css.length;            } else {              unclosed('comment');            }          }          currentToken = ['comment', css.slice(pos, next + 1), pos, next];          pos = next;        } else {          RE_WORD_END.lastIndex = pos + 1;          RE_WORD_END.test(css);          if (RE_WORD_END.lastIndex === 0) {            next = css.length - 1;          } else {            next = RE_WORD_END.lastIndex - 2;          }          currentToken = ['word', css.slice(pos, next + 1), pos, next];          buffer.push(currentToken);          pos = next;        }        break      }    }    pos++;    return currentToken  }  function back(token) {    returned.push(token);  }  return {    back,    nextToken,    endOfFile,    position  }};let Input;function registerInput(dependant) {  Input = dependant;}const HIGHLIGHT_THEME = {  'brackets': picocolors.cyan,  'at-word': picocolors.cyan,  'comment': picocolors.gray,  'string': picocolors.green,  'class': picocolors.yellow,  'hash': picocolors.magenta,  'call': picocolors.cyan,  '(': picocolors.cyan,  ')': picocolors.cyan,  '{': picocolors.yellow,  '}': picocolors.yellow,  '[': picocolors.yellow,  ']': picocolors.yellow,  ':': picocolors.yellow,  ';': picocolors.yellow};function getTokenType([type, value], processor) {  if (type === 'word') {    if (value[0] === '.') {      return 'class'    }    if (value[0] === '#') {      return 'hash'    }  }  if (!processor.endOfFile()) {    let next = processor.nextToken();    processor.back(next);    if (next[0] === 'brackets' || next[0] === '(') return 'call'  }  return type}function terminalHighlight(css) {  let processor = tokenize(new Input(css), { ignoreErrors: true });  let result = '';  while (!processor.endOfFile()) {    let token = processor.nextToken();    let color = HIGHLIGHT_THEME[getTokenType(token, processor)];    if (color) {      result += token[1]        .split(/\r?\n/)        .map(i => color(i))        .join('\n');    } else {      result += token[1];    }  }  return result}terminalHighlight.registerInput = registerInput;var terminalHighlight_1 = terminalHighlight;class CssSyntaxError extends Error {  constructor(message, line, column, source, file, plugin) {    super(message);    this.name = 'CssSyntaxError';    this.reason = message;    if (file) {      this.file = file;    }    if (source) {      this.source = source;    }    if (plugin) {      this.plugin = plugin;    }    if (typeof line !== 'undefined' && typeof column !== 'undefined') {      if (typeof line === 'number') {        this.line = line;        this.column = column;      } else {        this.line = line.line;        this.column = line.column;        this.endLine = column.line;        this.endColumn = column.column;      }    }    this.setMessage();    if (Error.captureStackTrace) {      Error.captureStackTrace(this, CssSyntaxError);    }  }  setMessage() {    this.message = this.plugin ? this.plugin + ': ' : '';    this.message += this.file ? this.file : '<css input>';    if (typeof this.line !== 'undefined') {      this.message += ':' + this.line + ':' + this.column;    }    this.message += ': ' + this.reason;  }  showSourceCode(color) {    if (!this.source) return ''    let css = this.source;    if (color == null) color = picocolors.isColorSupported;    if (terminalHighlight_1) {      if (color) css = terminalHighlight_1(css);    }    let lines = css.split(/\r?\n/);    let start = Math.max(this.line - 3, 0);    let end = Math.min(this.line + 2, lines.length);    let maxWidth = String(end).length;    let mark, aside;    if (color) {      let { bold, red, gray } = picocolors.createColors(true);      mark = text => bold(red(text));      aside = text => gray(text);    } else {      mark = aside = str => str;    }    return lines      .slice(start, end)      .map((line, index) => {        let number = start + 1 + index;        let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';        if (number === this.line) {          let spacing =            aside(gutter.replace(/\d/g, ' ')) +            line.slice(0, this.column - 1).replace(/[^\t]/g, ' ');          return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^')        }        return ' ' + aside(gutter) + line      })      .join('\n')  }  toString() {    let code = this.showSourceCode();    if (code) {      code = '\n\n' + code + '\n';    }    return this.name + ': ' + this.message + code  }}var cssSyntaxError = CssSyntaxError;CssSyntaxError.default = CssSyntaxError;var isClean = Symbol('isClean');var my = Symbol('my');var symbols = {	isClean: isClean,	my: my};const DEFAULT_RAW = {  colon: ': ',  indent: '    ',  beforeDecl: '\n',  beforeRule: '\n',  beforeOpen: ' ',  beforeClose: '\n',  beforeComment: '\n',  after: '\n',  emptyBody: '',  commentLeft: ' ',  commentRight: ' ',  semicolon: false};function capitalize$1(str) {  return str[0].toUpperCase() + str.slice(1)}class Stringifier {  constructor(builder) {    this.builder = builder;  }  stringify(node, semicolon) {    /* c8 ignore start */    if (!this[node.type]) {      throw new Error(        'Unknown AST node type ' +          node.type +          '. ' +          'Maybe you need to change PostCSS stringifier.'      )    }    /* c8 ignore stop */    this[node.type](node, semicolon);  }  document(node) {    this.body(node);  }  root(node) {    this.body(node);    if (node.raws.after) this.builder(node.raws.after);  }  comment(node) {    let left = this.raw(node, 'left', 'commentLeft');    let right = this.raw(node, 'right', 'commentRight');    this.builder('/*' + left + node.text + right + '*/', node);  }  decl(node, semicolon) {    let between = this.raw(node, 'between', 'colon');    let string = node.prop + between + this.rawValue(node, 'value');    if (node.important) {      string += node.raws.important || ' !important';    }    if (semicolon) string += ';';    this.builder(string, node);  }  rule(node) {    this.block(node, this.rawValue(node, 'selector'));    if (node.raws.ownSemicolon) {      this.builder(node.raws.ownSemicolon, node, 'end');    }  }  atrule(node, semicolon) {    let name = '@' + node.name;    let params = node.params ? this.rawValue(node, 'params') : '';    if (typeof node.raws.afterName !== 'undefined') {      name += node.raws.afterName;    } else if (params) {      name += ' ';    }    if (node.nodes) {      this.block(node, name + params);    } else {      let end = (node.raws.between || '') + (semicolon ? ';' : '');      this.builder(name + params + end, node);    }  }  body(node) {    let last = node.nodes.length - 1;    while (last > 0) {      if (node.nodes[last].type !== 'comment') break      last -= 1;    }    let semicolon = this.raw(node, 'semicolon');    for (let i = 0; i < node.nodes.length; i++) {      let child = node.nodes[i];      let before = this.raw(child, 'before');      if (before) this.builder(before);      this.stringify(child, last !== i || semicolon);    }  }  block(node, start) {    let between = this.raw(node, 'between', 'beforeOpen');    this.builder(start + between + '{', node, 'start');    let after;    if (node.nodes && node.nodes.length) {      this.body(node);      after = this.raw(node, 'after');    } else {      after = this.raw(node, 'after', 'emptyBody');    }    if (after) this.builder(after);    this.builder('}', node, 'end');  }  raw(node, own, detect) {    let value;    if (!detect) detect = own;    // Already had    if (own) {      value = node.raws[own];      if (typeof value !== 'undefined') return value    }    let parent = node.parent;    if (detect === 'before') {      // Hack for first rule in CSS      if (!parent || (parent.type === 'root' && parent.first === node)) {        return ''      }      // `root` nodes in `document` should use only their own raws      if (parent && parent.type === 'document') {        return ''      }    }    // Floating child without parent    if (!parent) return DEFAULT_RAW[detect]    // Detect style by other nodes    let root = node.root();    if (!root.rawCache) root.rawCache = {};    if (typeof root.rawCache[detect] !== 'undefined') {      return root.rawCache[detect]    }    if (detect === 'before' || detect === 'after') {      return this.beforeAfter(node, detect)    } else {      let method = 'raw' + capitalize$1(detect);      if (this[method]) {        value = this[method](root, node);      } else {        root.walk(i => {          value = i.raws[own];          if (typeof value !== 'undefined') return false        });      }    }    if (typeof value === 'undefined') value = DEFAULT_RAW[detect];    root.rawCache[detect] = value;    return value  }  rawSemicolon(root) {    let value;    root.walk(i => {      if (i.nodes && i.nodes.length && i.last.type === 'decl') {        value = i.raws.semicolon;        if (typeof value !== 'undefined') return false      }    });    return value  }  rawEmptyBody(root) {    let value;    root.walk(i => {      if (i.nodes && i.nodes.length === 0) {        value = i.raws.after;        if (typeof value !== 'undefined') return false      }    });    return value  }  rawIndent(root) {    if (root.raws.indent) return root.raws.indent    let value;    root.walk(i => {      let p = i.parent;      if (p && p !== root && p.parent && p.parent === root) {        if (typeof i.raws.before !== 'undefined') {          let parts = i.raws.before.split('\n');          value = parts[parts.length - 1];          value = value.replace(/\S/g, '');          return false        }      }    });    return value  }  rawBeforeComment(root, node) {    let value;    root.walkComments(i => {      if (typeof i.raws.before !== 'undefined') {        value = i.raws.before;        if (value.includes('\n')) {          value = value.replace(/[^\n]+$/, '');        }        return false      }    });    if (typeof value === 'undefined') {      value = this.raw(node, null, 'beforeDecl');    } else if (value) {      value = value.replace(/\S/g, '');    }    return value  }  rawBeforeDecl(root, node) {    let value;    root.walkDecls(i => {      if (typeof i.raws.before !== 'undefined') {        value = i.raws.before;        if (value.includes('\n')) {          value = value.replace(/[^\n]+$/, '');        }        return false      }    });    if (typeof value === 'undefined') {      value = this.raw(node, null, 'beforeRule');    } else if (value) {      value = value.replace(/\S/g, '');    }    return value  }  rawBeforeRule(root) {    let value;    root.walk(i => {      if (i.nodes && (i.parent !== root || root.first !== i)) {        if (typeof i.raws.before !== 'undefined') {          value = i.raws.before;          if (value.includes('\n')) {            value = value.replace(/[^\n]+$/, '');          }          return false        }      }    });    if (value) value = value.replace(/\S/g, '');    return value  }  rawBeforeClose(root) {    let value;    root.walk(i => {      if (i.nodes && i.nodes.length > 0) {        if (typeof i.raws.after !== 'undefined') {          value = i.raws.after;          if (value.includes('\n')) {            value = value.replace(/[^\n]+$/, '');          }          return false        }      }    });    if (value) value = value.replace(/\S/g, '');    return value  }  rawBeforeOpen(root) {    let value;    root.walk(i => {      if (i.type !== 'decl') {        value = i.raws.between;        if (typeof value !== 'undefined') return false      }    });    return value  }  rawColon(root) {    let value;    root.walkDecls(i => {      if (typeof i.raws.between !== 'undefined') {        value = i.raws.between.replace(/[^\s:]/g, '');        return false      }    });    return value  }  beforeAfter(node, detect) {    let value;    if (node.type === 'decl') {      value = this.raw(node, null, 'beforeDecl');    } else if (node.type === 'comment') {      value = this.raw(node, null, 'beforeComment');    } else if (detect === 'before') {      value = this.raw(node, null, 'beforeRule');    } else {      value = this.raw(node, null, 'beforeClose');    }    let buf = node.parent;    let depth = 0;    while (buf && buf.type !== 'root') {      depth += 1;      buf = buf.parent;    }    if (value.includes('\n')) {      let indent = this.raw(node, null, 'indent');      if (indent.length) {        for (let step = 0; step < depth; step++) value += indent;      }    }    return value  }  rawValue(node, prop) {    let value = node[prop];    let raw = node.raws[prop];    if (raw && raw.value === value) {      return raw.raw    }    return value  }}var stringifier = Stringifier;Stringifier.default = Stringifier;function stringify$1(node, builder) {  let str = new stringifier(builder);  str.stringify(node);}var stringify_1 = stringify$1;stringify$1.default = stringify$1;let { isClean: isClean$1, my: my$1 } = symbols;function cloneNode(obj, parent) {  let cloned = new obj.constructor();  for (let i in obj) {    if (!Object.prototype.hasOwnProperty.call(obj, i)) {      /* c8 ignore next 2 */      continue    }    if (i === 'proxyCache') continue    let value = obj[i];    let type = typeof value;    if (i === 'parent' && type === 'object') {      if (parent) cloned[i] = parent;    } else if (i === 'source') {      cloned[i] = value;    } else if (Array.isArray(value)) {      cloned[i] = value.map(j => cloneNode(j, cloned));    } else {      if (type === 'object' && value !== null) value = cloneNode(value);      cloned[i] = value;    }  }  return cloned}class Node$1 {  constructor(defaults = {}) {    this.raws = {};    this[isClean$1] = false;    this[my$1] = true;    for (let name in defaults) {      if (name === 'nodes') {        this.nodes = [];        for (let node of defaults[name]) {          if (typeof node.clone === 'function') {            this.append(node.clone());          } else {            this.append(node);          }        }      } else {        this[name] = defaults[name];      }    }  }  error(message, opts = {}) {    if (this.source) {      let { start, end } = this.rangeBy(opts);      return this.source.input.error(        message,        { line: start.line, column: start.column },        { line: end.line, column: end.column },        opts      )    }    return new cssSyntaxError(message)  }  warn(result, text, opts) {    let data = { node: this };    for (let i in opts) data[i] = opts[i];    return result.warn(text, data)  }  remove() {    if (this.parent) {      this.parent.removeChild(this);    }    this.parent = undefined;    return this  }  toString(stringifier = stringify_1) {    if (stringifier.stringify) stringifier = stringifier.stringify;    let result = '';    stringifier(this, i => {      result += i;    });    return result  }  assign(overrides = {}) {    for (let name in overrides) {      this[name] = overrides[name];    }    return this  }  clone(overrides = {}) {    let cloned = cloneNode(this);    for (let name in overrides) {      cloned[name] = overrides[name];    }    return cloned  }  cloneBefore(overrides = {}) {    let cloned = this.clone(overrides);    this.parent.insertBefore(this, cloned);    return cloned  }  cloneAfter(overrides = {}) {    let cloned = this.clone(overrides);    this.parent.insertAfter(this, cloned);    return cloned  }  replaceWith(...nodes) {    if (this.parent) {      let bookmark = this;      let foundSelf = false;      for (let node of nodes) {        if (node === this) {          foundSelf = true;        } else if (foundSelf) {          this.parent.insertAfter(bookmark, node);          bookmark = node;        } else {          this.parent.insertBefore(bookmark, node);        }      }      if (!foundSelf) {        this.remove();      }    }    return this  }  next() {    if (!this.parent) return undefined    let index = this.parent.index(this);    return this.parent.nodes[index + 1]  }  prev() {    if (!this.parent) return undefined    let index = this.parent.index(this);    return this.parent.nodes[index - 1]  }  before(add) {    this.parent.insertBefore(this, add);    return this  }  after(add) {    this.parent.insertAfter(this, add);    return this  }  root() {    let result = this;    while (result.parent && result.parent.type !== 'document') {      result = result.parent;    }    return result  }  raw(prop, defaultType) {    let str = new stringifier();    return str.raw(this, prop, defaultType)  }  cleanRaws(keepBetween) {    delete this.raws.before;    delete this.raws.after;    if (!keepBetween) delete this.raws.between;  }  toJSON(_, inputs) {    let fixed = {};    let emitInputs = inputs == null;    inputs = inputs || new Map();    let inputsNextIndex = 0;    for (let name in this) {      if (!Object.prototype.hasOwnProperty.call(this, name)) {        /* c8 ignore next 2 */        continue      }      if (name === 'parent' || name === 'proxyCache') continue      let value = this[name];      if (Array.isArray(value)) {        fixed[name] = value.map(i => {          if (typeof i === 'object' && i.toJSON) {            return i.toJSON(null, inputs)          } else {            return i          }        });      } else if (typeof value === 'object' && value.toJSON) {        fixed[name] = value.toJSON(null, inputs);      } else if (name === 'source') {        let inputId = inputs.get(value.input);        if (inputId == null) {          inputId = inputsNextIndex;          inputs.set(value.input, inputsNextIndex);          inputsNextIndex++;        }        fixed[name] = {          inputId,          start: value.start,          end: value.end        };      } else {        fixed[name] = value;      }    }    if (emitInputs) {      fixed.inputs = [...inputs.keys()].map(input => input.toJSON());    }    return fixed  }  positionInside(index) {    let string = this.toString();    let column = this.source.start.column;    let line = this.source.start.line;    for (let i = 0; i < index; i++) {      if (string[i] === '\n') {        column = 1;        line += 1;      } else {        column += 1;      }    }    return { line, column }  }  positionBy(opts) {    let pos = this.source.start;    if (opts.index) {      pos = this.positionInside(opts.index);    } else if (opts.word) {      let index = this.toString().indexOf(opts.word);      if (index !== -1) pos = this.positionInside(index);    }    return pos  }  rangeBy(opts) {    let start = {      line: this.source.start.line,      column: this.source.start.column    };    let end = this.source.end      ? {          line: this.source.end.line,          column: this.source.end.column + 1        }      : {          line: start.line,          column: start.column + 1        };    if (opts.word) {      let index = this.toString().indexOf(opts.word);      if (index !== -1) {        start = this.positionInside(index);        end = this.positionInside(index + opts.word.length);      }    } else {      if (opts.start) {        start = {          line: opts.start.line,          column: opts.start.column        };      } else if (opts.index) {        start = this.positionInside(opts.index);      }      if (opts.end) {        end = {          line: opts.end.line,          column: opts.end.column        };      } else if (opts.endIndex) {        end = this.positionInside(opts.endIndex);      } else if (opts.index) {        end = this.positionInside(opts.index + 1);      }    }    if (      end.line < start.line ||      (end.line === start.line && end.column <= start.column)    ) {      end = { line: start.line, column: start.column + 1 };    }    return { start, end }  }  getProxyProcessor() {    return {      set(node, prop, value) {        if (node[prop] === value) return true        node[prop] = value;        if (          prop === 'prop' ||          prop === 'value' ||          prop === 'name' ||          prop === 'params' ||          prop === 'important' ||          /* c8 ignore next */          prop === 'text'        ) {          node.markDirty();        }        return true      },      get(node, prop) {        if (prop === 'proxyOf') {          return node        } else if (prop === 'root') {          return () => node.root().toProxy()        } else {          return node[prop]        }      }    }  }  toProxy() {    if (!this.proxyCache) {      this.proxyCache = new Proxy(this, this.getProxyProcessor());    }    return this.proxyCache  }  addToError(error) {    error.postcssNode = this;    if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) {      let s = this.source;      error.stack = error.stack.replace(        /\n\s{4}at /,        `$&${s.input.from}:${s.start.line}:${s.start.column}$&`      );    }    return error  }  markDirty() {    if (this[isClean$1]) {      this[isClean$1] = false;      let next = this;      while ((next = next.parent)) {        next[isClean$1] = false;      }    }  }  get proxyOf() {    return this  }}var node_1 = Node$1;Node$1.default = Node$1;class Declaration extends node_1 {  constructor(defaults) {    if (      defaults &&      typeof defaults.value !== 'undefined' &&      typeof defaults.value !== 'string'    ) {      defaults = { ...defaults, value: String(defaults.value) };    }    super(defaults);    this.type = 'decl';  }  get variable() {    return this.prop.startsWith('--') || this.prop[0] === '$'  }}var declaration = Declaration;Declaration.default = Declaration;/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var intToCharMap$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');/** * Encode an integer in the range of 0 to 63 to a single base 64 digit. */var encode$4 = function (number) {  if (0 <= number && number < intToCharMap$1.length) {    return intToCharMap$1[number];  }  throw new TypeError("Must be between 0 and 63: " + number);};/** * Decode a single base 64 character code digit to an integer. Returns -1 on * failure. */var decode$2 = function (charCode) {  var bigA = 65;     // 'A'  var bigZ = 90;     // 'Z'  var littleA = 97;  // 'a'  var littleZ = 122; // 'z'  var zero = 48;     // '0'  var nine = 57;     // '9'  var plus = 43;     // '+'  var slash = 47;    // '/'  var littleOffset = 26;  var numberOffset = 52;  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ  if (bigA <= charCode && charCode <= bigZ) {    return (charCode - bigA);  }  // 26 - 51: abcdefghijklmnopqrstuvwxyz  if (littleA <= charCode && charCode <= littleZ) {    return (charCode - littleA + littleOffset);  }  // 52 - 61: 0123456789  if (zero <= charCode && charCode <= nine) {    return (charCode - zero + numberOffset);  }  // 62: +  if (charCode == plus) {    return 62;  }  // 63: /  if (charCode == slash) {    return 63;  }  // Invalid base64 digit.  return -1;};var base64$1 = {	encode: encode$4,	decode: decode$2};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause * * Based on the Base 64 VLQ implementation in Closure Compiler: * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java * * Copyright 2011 The Closure Compiler Authors. All rights reserved. * 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. *  * Neither the name of Google Inc. nor the names of its *    contributors may be used to endorse or promote products derived *    from this software without specific prior written permission. * * 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 THE COPYRIGHT * OWNER OR CONTRIBUTORS 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. */// A single base 64 digit can contain 6 bits of data. For the base 64 variable// length quantities we use in the source map spec, the first bit is the sign,// the next four bits are the actual value, and the 6th bit is the// continuation bit. The continuation bit tells us whether there are more// digits in this value following this digit.////   Continuation//   |    Sign//   |    |//   V    V//   101011var VLQ_BASE_SHIFT$1 = 5;// binary: 100000var VLQ_BASE$1 = 1 << VLQ_BASE_SHIFT$1;// binary: 011111var VLQ_BASE_MASK$1 = VLQ_BASE$1 - 1;// binary: 100000var VLQ_CONTINUATION_BIT$1 = VLQ_BASE$1;/** * Converts from a two-complement value to a value where the sign bit is * placed in the least significant bit.  For example, as decimals: *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary) *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary) */function toVLQSigned$1(aValue) {  return aValue < 0    ? ((-aValue) << 1) + 1    : (aValue << 1) + 0;}/** * Converts to a two-complement value from a value where the sign bit is * placed in the least significant bit.  For example, as decimals: *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1 *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2 */function fromVLQSigned$1(aValue) {  var isNegative = (aValue & 1) === 1;  var shifted = aValue >> 1;  return isNegative    ? -shifted    : shifted;}/** * Returns the base 64 VLQ encoded value. */var encode$5 = function base64VLQ_encode(aValue) {  var encoded = "";  var digit;  var vlq = toVLQSigned$1(aValue);  do {    digit = vlq & VLQ_BASE_MASK$1;    vlq >>>= VLQ_BASE_SHIFT$1;    if (vlq > 0) {      // There are still more digits in this value, so we must make sure the      // continuation bit is marked.      digit |= VLQ_CONTINUATION_BIT$1;    }    encoded += base64$1.encode(digit);  } while (vlq > 0);  return encoded;};/** * Decodes the next base 64 VLQ value from the given string and returns the * value and the rest of the string via the out parameter. */var decode$3 = function base64VLQ_decode(aStr, aIndex, aOutParam) {  var strLen = aStr.length;  var result = 0;  var shift = 0;  var continuation, digit;  do {    if (aIndex >= strLen) {      throw new Error("Expected more digits in base 64 VLQ value.");    }    digit = base64$1.decode(aStr.charCodeAt(aIndex++));    if (digit === -1) {      throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));    }    continuation = !!(digit & VLQ_CONTINUATION_BIT$1);    digit &= VLQ_BASE_MASK$1;    result = result + (digit << shift);    shift += VLQ_BASE_SHIFT$1;  } while (continuation);  aOutParam.value = fromVLQSigned$1(result);  aOutParam.rest = aIndex;};var base64Vlq$1 = {	encode: encode$5,	decode: decode$3};/* -*- Mode: js; js-indent-level: 2; -*- */var util$1 = createCommonjsModule(function (module, exports) {/* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause *//** * This is a helper function for getting values from parameter/options * objects. * * @param args The object we are extracting values from * @param name The name of the property we are getting. * @param defaultValue An optional value to return if the property is missing * from the object. If this is not specified and the property is missing, an * error will be thrown. */function getArg(aArgs, aName, aDefaultValue) {  if (aName in aArgs) {    return aArgs[aName];  } else if (arguments.length === 3) {    return aDefaultValue;  } else {    throw new Error('"' + aName + '" is a required argument.');  }}exports.getArg = getArg;var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;var dataUrlRegexp = /^data:.+\,.+$/;function urlParse(aUrl) {  var match = aUrl.match(urlRegexp);  if (!match) {    return null;  }  return {    scheme: match[1],    auth: match[2],    host: match[3],    port: match[4],    path: match[5]  };}exports.urlParse = urlParse;function urlGenerate(aParsedUrl) {  var url = '';  if (aParsedUrl.scheme) {    url += aParsedUrl.scheme + ':';  }  url += '//';  if (aParsedUrl.auth) {    url += aParsedUrl.auth + '@';  }  if (aParsedUrl.host) {    url += aParsedUrl.host;  }  if (aParsedUrl.port) {    url += ":" + aParsedUrl.port;  }  if (aParsedUrl.path) {    url += aParsedUrl.path;  }  return url;}exports.urlGenerate = urlGenerate;var MAX_CACHED_INPUTS = 32;/** * Takes some function `f(input) -> result` and returns a memoized version of * `f`. * * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The * memoization is a dumb-simple, linear least-recently-used cache. */function lruMemoize(f) {  var cache = [];  return function(input) {    for (var i = 0; i < cache.length; i++) {      if (cache[i].input === input) {        var temp = cache[0];        cache[0] = cache[i];        cache[i] = temp;        return cache[0].result;      }    }    var result = f(input);    cache.unshift({      input,      result,    });    if (cache.length > MAX_CACHED_INPUTS) {      cache.pop();    }    return result;  };}/** * Normalizes a path, or the path portion of a URL: * * - Replaces consecutive slashes with one slash. * - Removes unnecessary '.' parts. * - Removes unnecessary '<dir>/..' parts. * * Based on code in the Node.js 'path' core module. * * @param aPath The path or url to normalize. */var normalize = lruMemoize(function normalize(aPath) {  var path = aPath;  var url = urlParse(aPath);  if (url) {    if (!url.path) {      return aPath;    }    path = url.path;  }  var isAbsolute = exports.isAbsolute(path);  // Split the path into parts between `/` characters. This is much faster than  // using `.split(/\/+/g)`.  var parts = [];  var start = 0;  var i = 0;  while (true) {    start = i;    i = path.indexOf("/", start);    if (i === -1) {      parts.push(path.slice(start));      break;    } else {      parts.push(path.slice(start, i));      while (i < path.length && path[i] === "/") {        i++;      }    }  }  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {    part = parts[i];    if (part === '.') {      parts.splice(i, 1);    } else if (part === '..') {      up++;    } else if (up > 0) {      if (part === '') {        // The first part is blank if the path is absolute. Trying to go        // above the root is a no-op. Therefore we can remove all '..' parts        // directly after the root.        parts.splice(i + 1, up);        up = 0;      } else {        parts.splice(i, 2);        up--;      }    }  }  path = parts.join('/');  if (path === '') {    path = isAbsolute ? '/' : '.';  }  if (url) {    url.path = path;    return urlGenerate(url);  }  return path;});exports.normalize = normalize;/** * Joins two paths/URLs. * * @param aRoot The root path or URL. * @param aPath The path or URL to be joined with the root. * * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended *   first. * - Otherwise aPath is a path. If aRoot is a URL, then its path portion *   is updated with the result and aRoot is returned. Otherwise the result *   is returned. *   - If aPath is absolute, the result is aPath. *   - Otherwise the two paths are joined with a slash. * - Joining for example 'http://' and 'www.example.com' is also supported. */function join(aRoot, aPath) {  if (aRoot === "") {    aRoot = ".";  }  if (aPath === "") {    aPath = ".";  }  var aPathUrl = urlParse(aPath);  var aRootUrl = urlParse(aRoot);  if (aRootUrl) {    aRoot = aRootUrl.path || '/';  }  // `join(foo, '//www.example.org')`  if (aPathUrl && !aPathUrl.scheme) {    if (aRootUrl) {      aPathUrl.scheme = aRootUrl.scheme;    }    return urlGenerate(aPathUrl);  }  if (aPathUrl || aPath.match(dataUrlRegexp)) {    return aPath;  }  // `join('http://', 'www.example.com')`  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {    aRootUrl.host = aPath;    return urlGenerate(aRootUrl);  }  var joined = aPath.charAt(0) === '/'    ? aPath    : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);  if (aRootUrl) {    aRootUrl.path = joined;    return urlGenerate(aRootUrl);  }  return joined;}exports.join = join;exports.isAbsolute = function (aPath) {  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);};/** * Make a path relative to a URL or another path. * * @param aRoot The root path or URL. * @param aPath The path or URL to be made relative to aRoot. */function relative(aRoot, aPath) {  if (aRoot === "") {    aRoot = ".";  }  aRoot = aRoot.replace(/\/$/, '');  // It is possible for the path to be above the root. In this case, simply  // checking whether the root is a prefix of the path won't work. Instead, we  // need to remove components from the root one by one, until either we find  // a prefix that fits, or we run out of components to remove.  var level = 0;  while (aPath.indexOf(aRoot + '/') !== 0) {    var index = aRoot.lastIndexOf("/");    if (index < 0) {      return aPath;    }    // If the only part of the root that is left is the scheme (i.e. http://,    // file:///, etc.), one or more slashes (/), or simply nothing at all, we    // have exhausted all components, so the path is not relative to the root.    aRoot = aRoot.slice(0, index);    if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {      return aPath;    }    ++level;  }  // Make sure we add a "../" for each component we removed from the root.  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);}exports.relative = relative;var supportsNullProto = (function () {  var obj = Object.create(null);  return !('__proto__' in obj);}());function identity (s) {  return s;}/** * Because behavior goes wacky when you set `__proto__` on objects, we * have to prefix all the strings in our set with an arbitrary character. * * See https://github.com/mozilla/source-map/pull/31 and * https://github.com/mozilla/source-map/issues/30 * * @param String aStr */function toSetString(aStr) {  if (isProtoString(aStr)) {    return '$' + aStr;  }  return aStr;}exports.toSetString = supportsNullProto ? identity : toSetString;function fromSetString(aStr) {  if (isProtoString(aStr)) {    return aStr.slice(1);  }  return aStr;}exports.fromSetString = supportsNullProto ? identity : fromSetString;function isProtoString(s) {  if (!s) {    return false;  }  var length = s.length;  if (length < 9 /* "__proto__".length */) {    return false;  }  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||      s.charCodeAt(length - 2) !== 95  /* '_' */ ||      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||      s.charCodeAt(length - 4) !== 116 /* 't' */ ||      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||      s.charCodeAt(length - 8) !== 95  /* '_' */ ||      s.charCodeAt(length - 9) !== 95  /* '_' */) {    return false;  }  for (var i = length - 10; i >= 0; i--) {    if (s.charCodeAt(i) !== 36 /* '$' */) {      return false;    }  }  return true;}/** * Comparator between two mappings where the original positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same original source/line/column, but different generated * line and column the same. Useful when searching for a mapping with a * stubbed out mapping. */function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {  var cmp = strcmp(mappingA.source, mappingB.source);  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0 || onlyCompareOriginal) {    return cmp;  }  cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.generatedLine - mappingB.generatedLine;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByOriginalPositions = compareByOriginalPositions;function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {  var cmp;  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0 || onlyCompareOriginal) {    return cmp;  }  cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.generatedLine - mappingB.generatedLine;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;/** * Comparator between two mappings with deflated source and name indices where * the generated positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same generated line and column, but different * source/name/original line and column the same. Useful when searching for a * mapping with a stubbed out mapping. */function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {  var cmp = mappingA.generatedLine - mappingB.generatedLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0 || onlyCompareGenerated) {    return cmp;  }  cmp = strcmp(mappingA.source, mappingB.source);  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {  var cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0 || onlyCompareGenerated) {    return cmp;  }  cmp = strcmp(mappingA.source, mappingB.source);  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;function strcmp(aStr1, aStr2) {  if (aStr1 === aStr2) {    return 0;  }  if (aStr1 === null) {    return 1; // aStr2 !== null  }  if (aStr2 === null) {    return -1; // aStr1 !== null  }  if (aStr1 > aStr2) {    return 1;  }  return -1;}/** * Comparator between two mappings with inflated source and name strings where * the generated positions are compared. */function compareByGeneratedPositionsInflated(mappingA, mappingB) {  var cmp = mappingA.generatedLine - mappingB.generatedLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.generatedColumn - mappingB.generatedColumn;  if (cmp !== 0) {    return cmp;  }  cmp = strcmp(mappingA.source, mappingB.source);  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalLine - mappingB.originalLine;  if (cmp !== 0) {    return cmp;  }  cmp = mappingA.originalColumn - mappingB.originalColumn;  if (cmp !== 0) {    return cmp;  }  return strcmp(mappingA.name, mappingB.name);}exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;/** * Strip any JSON XSSI avoidance prefix from the string (as documented * in the source maps specification), and then parse the string as * JSON. */function parseSourceMapInput(str) {  return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));}exports.parseSourceMapInput = parseSourceMapInput;/** * Compute the URL of a source given the the source root, the source's * URL, and the source map's URL. */function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {  sourceURL = sourceURL || '';  if (sourceRoot) {    // This follows what Chrome does.    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {      sourceRoot += '/';    }    // The spec says:    //   Line 4: An optional source root, useful for relocating source    //   files on a server or removing repeated values in the    //   “sources” entry.  This value is prepended to the individual    //   entries in the “source” field.    sourceURL = sourceRoot + sourceURL;  }  // Historically, SourceMapConsumer did not take the sourceMapURL as  // a parameter.  This mode is still somewhat supported, which is why  // this code block is conditional.  However, it's preferable to pass  // the source map URL to SourceMapConsumer, so that this function  // can implement the source URL resolution algorithm as outlined in  // the spec.  This block is basically the equivalent of:  //    new URL(sourceURL, sourceMapURL).toString()  // ... except it avoids using URL, which wasn't available in the  // older releases of node still supported by this library.  //  // The spec says:  //   If the sources are not absolute URLs after prepending of the  //   “sourceRoot”, the sources are resolved relative to the  //   SourceMap (like resolving script src in a html document).  if (sourceMapURL) {    var parsed = urlParse(sourceMapURL);    if (!parsed) {      throw new Error("sourceMapURL could not be parsed");    }    if (parsed.path) {      // Strip the last path component, but keep the "/".      var index = parsed.path.lastIndexOf('/');      if (index >= 0) {        parsed.path = parsed.path.substring(0, index + 1);      }    }    sourceURL = join(urlGenerate(parsed), sourceURL);  }  return normalize(sourceURL);}exports.computeSourceURL = computeSourceURL;});/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var has$1 = Object.prototype.hasOwnProperty;var hasNativeMap$1 = typeof Map !== "undefined";/** * A data structure which is a combination of an array and a set. Adding a new * member is O(1), testing for membership is O(1), and finding the index of an * element is O(1). Removing elements from the set is not supported. Only * strings are supported for membership. */function ArraySet$3() {  this._array = [];  this._set = hasNativeMap$1 ? new Map() : Object.create(null);}/** * Static method for creating ArraySet instances from an existing array. */ArraySet$3.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {  var set = new ArraySet$3();  for (var i = 0, len = aArray.length; i < len; i++) {    set.add(aArray[i], aAllowDuplicates);  }  return set;};/** * Return how many unique items are in this ArraySet. If duplicates have been * added, than those do not count towards the size. * * @returns Number */ArraySet$3.prototype.size = function ArraySet_size() {  return hasNativeMap$1 ? this._set.size : Object.getOwnPropertyNames(this._set).length;};/** * Add the given string to this set. * * @param String aStr */ArraySet$3.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {  var sStr = hasNativeMap$1 ? aStr : util$1.toSetString(aStr);  var isDuplicate = hasNativeMap$1 ? this.has(aStr) : has$1.call(this._set, sStr);  var idx = this._array.length;  if (!isDuplicate || aAllowDuplicates) {    this._array.push(aStr);  }  if (!isDuplicate) {    if (hasNativeMap$1) {      this._set.set(aStr, idx);    } else {      this._set[sStr] = idx;    }  }};/** * Is the given string a member of this set? * * @param String aStr */ArraySet$3.prototype.has = function ArraySet_has(aStr) {  if (hasNativeMap$1) {    return this._set.has(aStr);  } else {    var sStr = util$1.toSetString(aStr);    return has$1.call(this._set, sStr);  }};/** * What is the index of the given string in the array? * * @param String aStr */ArraySet$3.prototype.indexOf = function ArraySet_indexOf(aStr) {  if (hasNativeMap$1) {    var idx = this._set.get(aStr);    if (idx >= 0) {        return idx;    }  } else {    var sStr = util$1.toSetString(aStr);    if (has$1.call(this._set, sStr)) {      return this._set[sStr];    }  }  throw new Error('"' + aStr + '" is not in the set.');};/** * What is the element at the given index? * * @param Number aIdx */ArraySet$3.prototype.at = function ArraySet_at(aIdx) {  if (aIdx >= 0 && aIdx < this._array.length) {    return this._array[aIdx];  }  throw new Error('No element indexed by ' + aIdx);};/** * Returns the array representation of this set (which has the proper indices * indicated by indexOf). Note that this is a copy of the internal array used * for storing the members so that no one can mess with internal state. */ArraySet$3.prototype.toArray = function ArraySet_toArray() {  return this._array.slice();};var ArraySet_1$1 = ArraySet$3;var arraySet$1 = {	ArraySet: ArraySet_1$1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2014 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause *//** * Determine whether mappingB is after mappingA with respect to generated * position. */function generatedPositionAfter$1(mappingA, mappingB) {  // Optimized for most common case  var lineA = mappingA.generatedLine;  var lineB = mappingB.generatedLine;  var columnA = mappingA.generatedColumn;  var columnB = mappingB.generatedColumn;  return lineB > lineA || lineB == lineA && columnB >= columnA ||         util$1.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;}/** * A data structure to provide a sorted view of accumulated mappings in a * performance conscious manner. It trades a neglibable overhead in general * case for a large speedup in case of mappings being added in order. */function MappingList$2() {  this._array = [];  this._sorted = true;  // Serves as infimum  this._last = {generatedLine: -1, generatedColumn: 0};}/** * Iterate through internal items. This method takes the same arguments that * `Array.prototype.forEach` takes. * * NOTE: The order of the mappings is NOT guaranteed. */MappingList$2.prototype.unsortedForEach =  function MappingList_forEach(aCallback, aThisArg) {    this._array.forEach(aCallback, aThisArg);  };/** * Add the given source mapping. * * @param Object aMapping */MappingList$2.prototype.add = function MappingList_add(aMapping) {  if (generatedPositionAfter$1(this._last, aMapping)) {    this._last = aMapping;    this._array.push(aMapping);  } else {    this._sorted = false;    this._array.push(aMapping);  }};/** * Returns the flat, sorted array of mappings. The mappings are sorted by * generated position. * * WARNING: This method returns internal data without copying, for * performance. The return value must NOT be mutated, and should be treated as * an immutable borrow. If you want to take ownership, you must make your own * copy. */MappingList$2.prototype.toArray = function MappingList_toArray() {  if (!this._sorted) {    this._array.sort(util$1.compareByGeneratedPositionsInflated);    this._sorted = true;  }  return this._array;};var MappingList_1$1 = MappingList$2;var mappingList$1 = {	MappingList: MappingList_1$1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var ArraySet$4 = arraySet$1.ArraySet;var MappingList$3 = mappingList$1.MappingList;/** * An instance of the SourceMapGenerator represents a source map which is * being built incrementally. You may pass an object with the following * properties: * *   - file: The filename of the generated source. *   - sourceRoot: A root for all relative URLs in this source map. */function SourceMapGenerator$3(aArgs) {  if (!aArgs) {    aArgs = {};  }  this._file = util$1.getArg(aArgs, 'file', null);  this._sourceRoot = util$1.getArg(aArgs, 'sourceRoot', null);  this._skipValidation = util$1.getArg(aArgs, 'skipValidation', false);  this._sources = new ArraySet$4();  this._names = new ArraySet$4();  this._mappings = new MappingList$3();  this._sourcesContents = null;}SourceMapGenerator$3.prototype._version = 3;/** * Creates a new SourceMapGenerator based on a SourceMapConsumer * * @param aSourceMapConsumer The SourceMap. */SourceMapGenerator$3.fromSourceMap =  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {    var sourceRoot = aSourceMapConsumer.sourceRoot;    var generator = new SourceMapGenerator$3({      file: aSourceMapConsumer.file,      sourceRoot: sourceRoot    });    aSourceMapConsumer.eachMapping(function (mapping) {      var newMapping = {        generated: {          line: mapping.generatedLine,          column: mapping.generatedColumn        }      };      if (mapping.source != null) {        newMapping.source = mapping.source;        if (sourceRoot != null) {          newMapping.source = util$1.relative(sourceRoot, newMapping.source);        }        newMapping.original = {          line: mapping.originalLine,          column: mapping.originalColumn        };        if (mapping.name != null) {          newMapping.name = mapping.name;        }      }      generator.addMapping(newMapping);    });    aSourceMapConsumer.sources.forEach(function (sourceFile) {      var sourceRelative = sourceFile;      if (sourceRoot !== null) {        sourceRelative = util$1.relative(sourceRoot, sourceFile);      }      if (!generator._sources.has(sourceRelative)) {        generator._sources.add(sourceRelative);      }      var content = aSourceMapConsumer.sourceContentFor(sourceFile);      if (content != null) {        generator.setSourceContent(sourceFile, content);      }    });    return generator;  };/** * Add a single mapping from original source line and column to the generated * source's line and column for this source map being created. The mapping * object should have the following properties: * *   - generated: An object with the generated line and column positions. *   - original: An object with the original line and column positions. *   - source: The original source file (relative to the sourceRoot). *   - name: An optional original token name for this mapping. */SourceMapGenerator$3.prototype.addMapping =  function SourceMapGenerator_addMapping(aArgs) {    var generated = util$1.getArg(aArgs, 'generated');    var original = util$1.getArg(aArgs, 'original', null);    var source = util$1.getArg(aArgs, 'source', null);    var name = util$1.getArg(aArgs, 'name', null);    if (!this._skipValidation) {      this._validateMapping(generated, original, source, name);    }    if (source != null) {      source = String(source);      if (!this._sources.has(source)) {        this._sources.add(source);      }    }    if (name != null) {      name = String(name);      if (!this._names.has(name)) {        this._names.add(name);      }    }    this._mappings.add({      generatedLine: generated.line,      generatedColumn: generated.column,      originalLine: original != null && original.line,      originalColumn: original != null && original.column,      source: source,      name: name    });  };/** * Set the source content for a source file. */SourceMapGenerator$3.prototype.setSourceContent =  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {    var source = aSourceFile;    if (this._sourceRoot != null) {      source = util$1.relative(this._sourceRoot, source);    }    if (aSourceContent != null) {      // Add the source content to the _sourcesContents map.      // Create a new _sourcesContents map if the property is null.      if (!this._sourcesContents) {        this._sourcesContents = Object.create(null);      }      this._sourcesContents[util$1.toSetString(source)] = aSourceContent;    } else if (this._sourcesContents) {      // Remove the source file from the _sourcesContents map.      // If the _sourcesContents map is empty, set the property to null.      delete this._sourcesContents[util$1.toSetString(source)];      if (Object.keys(this._sourcesContents).length === 0) {        this._sourcesContents = null;      }    }  };/** * Applies the mappings of a sub-source-map for a specific source file to the * source map being generated. Each mapping to the supplied source file is * rewritten using the supplied source map. Note: The resolution for the * resulting mappings is the minimium of this map and the supplied map. * * @param aSourceMapConsumer The source map to be applied. * @param aSourceFile Optional. The filename of the source file. *        If omitted, SourceMapConsumer's file property will be used. * @param aSourceMapPath Optional. The dirname of the path to the source map *        to be applied. If relative, it is relative to the SourceMapConsumer. *        This parameter is needed when the two source maps aren't in the same *        directory, and the source map to be applied contains relative source *        paths. If so, those relative source paths need to be rewritten *        relative to the SourceMapGenerator. */SourceMapGenerator$3.prototype.applySourceMap =  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {    var sourceFile = aSourceFile;    // If aSourceFile is omitted, we will use the file property of the SourceMap    if (aSourceFile == null) {      if (aSourceMapConsumer.file == null) {        throw new Error(          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +          'or the source map\'s "file" property. Both were omitted.'        );      }      sourceFile = aSourceMapConsumer.file;    }    var sourceRoot = this._sourceRoot;    // Make "sourceFile" relative if an absolute Url is passed.    if (sourceRoot != null) {      sourceFile = util$1.relative(sourceRoot, sourceFile);    }    // Applying the SourceMap can add and remove items from the sources and    // the names array.    var newSources = new ArraySet$4();    var newNames = new ArraySet$4();    // Find mappings for the "sourceFile"    this._mappings.unsortedForEach(function (mapping) {      if (mapping.source === sourceFile && mapping.originalLine != null) {        // Check if it can be mapped by the source map, then update the mapping.        var original = aSourceMapConsumer.originalPositionFor({          line: mapping.originalLine,          column: mapping.originalColumn        });        if (original.source != null) {          // Copy mapping          mapping.source = original.source;          if (aSourceMapPath != null) {            mapping.source = util$1.join(aSourceMapPath, mapping.source);          }          if (sourceRoot != null) {            mapping.source = util$1.relative(sourceRoot, mapping.source);          }          mapping.originalLine = original.line;          mapping.originalColumn = original.column;          if (original.name != null) {            mapping.name = original.name;          }        }      }      var source = mapping.source;      if (source != null && !newSources.has(source)) {        newSources.add(source);      }      var name = mapping.name;      if (name != null && !newNames.has(name)) {        newNames.add(name);      }    }, this);    this._sources = newSources;    this._names = newNames;    // Copy sourcesContents of applied map.    aSourceMapConsumer.sources.forEach(function (sourceFile) {      var content = aSourceMapConsumer.sourceContentFor(sourceFile);      if (content != null) {        if (aSourceMapPath != null) {          sourceFile = util$1.join(aSourceMapPath, sourceFile);        }        if (sourceRoot != null) {          sourceFile = util$1.relative(sourceRoot, sourceFile);        }        this.setSourceContent(sourceFile, content);      }    }, this);  };/** * A mapping can have one of the three levels of data: * *   1. Just the generated position. *   2. The Generated position, original position, and original source. *   3. Generated and original position, original source, as well as a name *      token. * * To maintain consistency, we validate that any new mapping being added falls * in to one of these categories. */SourceMapGenerator$3.prototype._validateMapping =  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,                                              aName) {    // When aOriginal is truthy but has empty values for .line and .column,    // it is most likely a programmer error. In this case we throw a very    // specific error message to try to guide them the right way.    // For example: https://github.com/Polymer/polymer-bundler/pull/519    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {        throw new Error(            'original.line and original.column are not numbers -- you probably meant to omit ' +            'the original mapping entirely and only map the generated position. If so, pass ' +            'null for the original mapping instead of an object with empty or null values.'        );    }    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated        && aGenerated.line > 0 && aGenerated.column >= 0        && !aOriginal && !aSource && !aName) {      // Case 1.      return;    }    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated             && aOriginal && 'line' in aOriginal && 'column' in aOriginal             && aGenerated.line > 0 && aGenerated.column >= 0             && aOriginal.line > 0 && aOriginal.column >= 0             && aSource) {      // Cases 2 and 3.      return;    }    else {      throw new Error('Invalid mapping: ' + JSON.stringify({        generated: aGenerated,        source: aSource,        original: aOriginal,        name: aName      }));    }  };/** * Serialize the accumulated mappings in to the stream of base 64 VLQs * specified by the source map format. */SourceMapGenerator$3.prototype._serializeMappings =  function SourceMapGenerator_serializeMappings() {    var previousGeneratedColumn = 0;    var previousGeneratedLine = 1;    var previousOriginalColumn = 0;    var previousOriginalLine = 0;    var previousName = 0;    var previousSource = 0;    var result = '';    var next;    var mapping;    var nameIdx;    var sourceIdx;    var mappings = this._mappings.toArray();    for (var i = 0, len = mappings.length; i < len; i++) {      mapping = mappings[i];      next = '';      if (mapping.generatedLine !== previousGeneratedLine) {        previousGeneratedColumn = 0;        while (mapping.generatedLine !== previousGeneratedLine) {          next += ';';          previousGeneratedLine++;        }      }      else {        if (i > 0) {          if (!util$1.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {            continue;          }          next += ',';        }      }      next += base64Vlq$1.encode(mapping.generatedColumn                                 - previousGeneratedColumn);      previousGeneratedColumn = mapping.generatedColumn;      if (mapping.source != null) {        sourceIdx = this._sources.indexOf(mapping.source);        next += base64Vlq$1.encode(sourceIdx - previousSource);        previousSource = sourceIdx;        // lines are stored 0-based in SourceMap spec version 3        next += base64Vlq$1.encode(mapping.originalLine - 1                                   - previousOriginalLine);        previousOriginalLine = mapping.originalLine - 1;        next += base64Vlq$1.encode(mapping.originalColumn                                   - previousOriginalColumn);        previousOriginalColumn = mapping.originalColumn;        if (mapping.name != null) {          nameIdx = this._names.indexOf(mapping.name);          next += base64Vlq$1.encode(nameIdx - previousName);          previousName = nameIdx;        }      }      result += next;    }    return result;  };SourceMapGenerator$3.prototype._generateSourcesContent =  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {    return aSources.map(function (source) {      if (!this._sourcesContents) {        return null;      }      if (aSourceRoot != null) {        source = util$1.relative(aSourceRoot, source);      }      var key = util$1.toSetString(source);      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)        ? this._sourcesContents[key]        : null;    }, this);  };/** * Externalize the source map. */SourceMapGenerator$3.prototype.toJSON =  function SourceMapGenerator_toJSON() {    var map = {      version: this._version,      sources: this._sources.toArray(),      names: this._names.toArray(),      mappings: this._serializeMappings()    };    if (this._file != null) {      map.file = this._file;    }    if (this._sourceRoot != null) {      map.sourceRoot = this._sourceRoot;    }    if (this._sourcesContents) {      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);    }    return map;  };/** * Render the source map being generated to a string. */SourceMapGenerator$3.prototype.toString =  function SourceMapGenerator_toString() {    return JSON.stringify(this.toJSON());  };var SourceMapGenerator_1$1 = SourceMapGenerator$3;var sourceMapGenerator$1 = {	SourceMapGenerator: SourceMapGenerator_1$1};/* -*- Mode: js; js-indent-level: 2; -*- */var binarySearch$1 = createCommonjsModule(function (module, exports) {/* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */exports.GREATEST_LOWER_BOUND = 1;exports.LEAST_UPPER_BOUND = 2;/** * Recursive implementation of binary search. * * @param aLow Indices here and lower do not contain the needle. * @param aHigh Indices here and higher do not contain the needle. * @param aNeedle The element being searched for. * @param aHaystack The non-empty array being searched. * @param aCompare Function which takes two elements and returns -1, 0, or 1. * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. */function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {  // This function terminates when one of the following is true:  //  //   1. We find the exact element we are looking for.  //  //   2. We did not find the exact element, but we can return the index of  //      the next-closest element.  //  //   3. We did not find the exact element, and there is no next-closest  //      element than the one we are searching for, so we return -1.  var mid = Math.floor((aHigh - aLow) / 2) + aLow;  var cmp = aCompare(aNeedle, aHaystack[mid], true);  if (cmp === 0) {    // Found the element we are looking for.    return mid;  }  else if (cmp > 0) {    // Our needle is greater than aHaystack[mid].    if (aHigh - mid > 1) {      // The element is in the upper half.      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);    }    // The exact needle element was not found in this haystack. Determine if    // we are in termination case (3) or (2) and return the appropriate thing.    if (aBias == exports.LEAST_UPPER_BOUND) {      return aHigh < aHaystack.length ? aHigh : -1;    } else {      return mid;    }  }  else {    // Our needle is less than aHaystack[mid].    if (mid - aLow > 1) {      // The element is in the lower half.      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);    }    // we are in termination case (3) or (2) and return the appropriate thing.    if (aBias == exports.LEAST_UPPER_BOUND) {      return mid;    } else {      return aLow < 0 ? -1 : aLow;    }  }}/** * This is an implementation of binary search which will always try and return * the index of the closest element if there is no exact hit. This is because * mappings between original and generated line/col pairs are single points, * and there is an implicit region between each of them, so a miss just means * that you aren't on the very start of a region. * * @param aNeedle The element you are looking for. * @param aHaystack The array that is being searched. * @param aCompare A function which takes the needle and an element in the *     array and returns -1, 0, or 1 depending on whether the needle is less *     than, equal to, or greater than the element, respectively. * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. */exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {  if (aHaystack.length === 0) {    return -1;  }  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);  if (index < 0) {    return -1;  }  // We have found either the exact element, or the next-closest element than  // the one we are searching for. However, there may be more than one such  // element. Make sure we always return the smallest of these.  while (index - 1 >= 0) {    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {      break;    }    --index;  }  return index;};});/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */// It turns out that some (most?) JavaScript engines don't self-host// `Array.prototype.sort`. This makes sense because C++ will likely remain// faster than JS when doing raw CPU-intensive sorting. However, when using a// custom comparator function, calling back and forth between the VM's C++ and// JIT'd JS is rather slow *and* loses JIT type information, resulting in// worse generated code for the comparator function than would be optimal. In// fact, when sorting with a comparator, these costs outweigh the benefits of// sorting in C++. By using our own JS-implemented Quick Sort (below), we get// a ~3500ms mean speed-up in `bench/bench.html`.function SortTemplate(comparator) {/** * Swap the elements indexed by `x` and `y` in the array `ary`. * * @param {Array} ary *        The array. * @param {Number} x *        The index of the first item. * @param {Number} y *        The index of the second item. */function swap(ary, x, y) {  var temp = ary[x];  ary[x] = ary[y];  ary[y] = temp;}/** * Returns a random integer within the range `low .. high` inclusive. * * @param {Number} low *        The lower bound on the range. * @param {Number} high *        The upper bound on the range. */function randomIntInRange(low, high) {  return Math.round(low + (Math.random() * (high - low)));}/** * The Quick Sort algorithm. * * @param {Array} ary *        An array to sort. * @param {function} comparator *        Function to use to compare two items. * @param {Number} p *        Start index of the array * @param {Number} r *        End index of the array */function doQuickSort(ary, comparator, p, r) {  // If our lower bound is less than our upper bound, we (1) partition the  // array into two pieces and (2) recurse on each half. If it is not, this is  // the empty array and our base case.  if (p < r) {    // (1) Partitioning.    //    // The partitioning chooses a pivot between `p` and `r` and moves all    // elements that are less than or equal to the pivot to the before it, and    // all the elements that are greater than it after it. The effect is that    // once partition is done, the pivot is in the exact place it will be when    // the array is put in sorted order, and it will not need to be moved    // again. This runs in O(n) time.    // Always choose a random pivot so that an input array which is reverse    // sorted does not cause O(n^2) running time.    var pivotIndex = randomIntInRange(p, r);    var i = p - 1;    swap(ary, pivotIndex, r);    var pivot = ary[r];    // Immediately after `j` is incremented in this loop, the following hold    // true:    //    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.    //    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.    for (var j = p; j < r; j++) {      if (comparator(ary[j], pivot, false) <= 0) {        i += 1;        swap(ary, i, j);      }    }    swap(ary, i + 1, j);    var q = i + 1;    // (2) Recurse on each half.    doQuickSort(ary, comparator, p, q - 1);    doQuickSort(ary, comparator, q + 1, r);  }}  return doQuickSort;}function cloneSort(comparator) {  let template = SortTemplate.toString();  let templateFn = new Function(`return ${template}`)();  return templateFn(comparator);}/** * Sort the given array in-place with the given comparator function. * * @param {Array} ary *        An array to sort. * @param {function} comparator *        Function to use to compare two items. */let sortCache = new WeakMap();var quickSort_1$1 = function (ary, comparator, start = 0) {  let doQuickSort = sortCache.get(comparator);  if (doQuickSort === void 0) {    doQuickSort = cloneSort(comparator);    sortCache.set(comparator, doQuickSort);  }  doQuickSort(ary, comparator, start, ary.length - 1);};var quickSort$2 = {	quickSort: quickSort_1$1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var ArraySet$5 = arraySet$1.ArraySet;var quickSort$3 = quickSort$2.quickSort;function SourceMapConsumer$2(aSourceMap, aSourceMapURL) {  var sourceMap = aSourceMap;  if (typeof aSourceMap === 'string') {    sourceMap = util$1.parseSourceMapInput(aSourceMap);  }  return sourceMap.sections != null    ? new IndexedSourceMapConsumer$1(sourceMap, aSourceMapURL)    : new BasicSourceMapConsumer$1(sourceMap, aSourceMapURL);}SourceMapConsumer$2.fromSourceMap = function(aSourceMap, aSourceMapURL) {  return BasicSourceMapConsumer$1.fromSourceMap(aSourceMap, aSourceMapURL);};/** * The version of the source mapping spec that we are consuming. */SourceMapConsumer$2.prototype._version = 3;// `__generatedMappings` and `__originalMappings` are arrays that hold the// parsed mapping coordinates from the source map's "mappings" attribute. They// are lazily instantiated, accessed via the `_generatedMappings` and// `_originalMappings` getters respectively, and we only parse the mappings// and create these arrays once queried for a source location. We jump through// these hoops because there can be many thousands of mappings, and parsing// them is expensive, so we only want to do it if we must.//// Each object in the arrays is of the form:////     {//       generatedLine: The line number in the generated code,//       generatedColumn: The column number in the generated code,//       source: The path to the original source file that generated this//               chunk of code,//       originalLine: The line number in the original source that//                     corresponds to this chunk of generated code,//       originalColumn: The column number in the original source that//                       corresponds to this chunk of generated code,//       name: The name of the original symbol which generated this chunk of//             code.//     }//// All properties except for `generatedLine` and `generatedColumn` can be// `null`.//// `_generatedMappings` is ordered by the generated positions.//// `_originalMappings` is ordered by the original positions.SourceMapConsumer$2.prototype.__generatedMappings = null;Object.defineProperty(SourceMapConsumer$2.prototype, '_generatedMappings', {  configurable: true,  enumerable: true,  get: function () {    if (!this.__generatedMappings) {      this._parseMappings(this._mappings, this.sourceRoot);    }    return this.__generatedMappings;  }});SourceMapConsumer$2.prototype.__originalMappings = null;Object.defineProperty(SourceMapConsumer$2.prototype, '_originalMappings', {  configurable: true,  enumerable: true,  get: function () {    if (!this.__originalMappings) {      this._parseMappings(this._mappings, this.sourceRoot);    }    return this.__originalMappings;  }});SourceMapConsumer$2.prototype._charIsMappingSeparator =  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {    var c = aStr.charAt(index);    return c === ";" || c === ",";  };/** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */SourceMapConsumer$2.prototype._parseMappings =  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {    throw new Error("Subclasses must implement _parseMappings");  };SourceMapConsumer$2.GENERATED_ORDER = 1;SourceMapConsumer$2.ORIGINAL_ORDER = 2;SourceMapConsumer$2.GREATEST_LOWER_BOUND = 1;SourceMapConsumer$2.LEAST_UPPER_BOUND = 2;/** * Iterate over each mapping between an original source/line/column and a * generated line/column in this source map. * * @param Function aCallback *        The function that is called with each mapping. * @param Object aContext *        Optional. If specified, this object will be the value of `this` every *        time that `aCallback` is called. * @param aOrder *        Either `SourceMapConsumer.GENERATED_ORDER` or *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to *        iterate over the mappings sorted by the generated file's line/column *        order or the original's source/line/column order, respectively. Defaults to *        `SourceMapConsumer.GENERATED_ORDER`. */SourceMapConsumer$2.prototype.eachMapping =  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {    var context = aContext || null;    var order = aOrder || SourceMapConsumer$2.GENERATED_ORDER;    var mappings;    switch (order) {    case SourceMapConsumer$2.GENERATED_ORDER:      mappings = this._generatedMappings;      break;    case SourceMapConsumer$2.ORIGINAL_ORDER:      mappings = this._originalMappings;      break;    default:      throw new Error("Unknown order of iteration.");    }    var sourceRoot = this.sourceRoot;    var boundCallback = aCallback.bind(context);    var names = this._names;    var sources = this._sources;    var sourceMapURL = this._sourceMapURL;    for (var i = 0, n = mappings.length; i < n; i++) {      var mapping = mappings[i];      var source = mapping.source === null ? null : sources.at(mapping.source);      source = util$1.computeSourceURL(sourceRoot, source, sourceMapURL);      boundCallback({        source: source,        generatedLine: mapping.generatedLine,        generatedColumn: mapping.generatedColumn,        originalLine: mapping.originalLine,        originalColumn: mapping.originalColumn,        name: mapping.name === null ? null : names.at(mapping.name)      });    }  };/** * Returns all generated line and column information for the original source, * line, and column provided. If no column is provided, returns all mappings * corresponding to a either the line we are searching for or the next * closest line that has any mappings. Otherwise, returns all mappings * corresponding to the given line and either the column we are searching for * or the next closest column that has any offsets. * * The only argument is an object with the following properties: * *   - source: The filename of the original source. *   - line: The line number in the original source.  The line number is 1-based. *   - column: Optional. the column number in the original source. *    The column number is 0-based. * * and an array of objects is returned, each with the following properties: * *   - line: The line number in the generated source, or null.  The *    line number is 1-based. *   - column: The column number in the generated source, or null. *    The column number is 0-based. */SourceMapConsumer$2.prototype.allGeneratedPositionsFor =  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {    var line = util$1.getArg(aArgs, 'line');    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping    // returns the index of the closest mapping less than the needle. By    // setting needle.originalColumn to 0, we thus find the last mapping for    // the given line, provided such a mapping exists.    var needle = {      source: util$1.getArg(aArgs, 'source'),      originalLine: line,      originalColumn: util$1.getArg(aArgs, 'column', 0)    };    needle.source = this._findSourceIndex(needle.source);    if (needle.source < 0) {      return [];    }    var mappings = [];    var index = this._findMapping(needle,                                  this._originalMappings,                                  "originalLine",                                  "originalColumn",                                  util$1.compareByOriginalPositions,                                  binarySearch$1.LEAST_UPPER_BOUND);    if (index >= 0) {      var mapping = this._originalMappings[index];      if (aArgs.column === undefined) {        var originalLine = mapping.originalLine;        // Iterate until either we run out of mappings, or we run into        // a mapping for a different line than the one we found. Since        // mappings are sorted, this is guaranteed to find all mappings for        // the line we found.        while (mapping && mapping.originalLine === originalLine) {          mappings.push({            line: util$1.getArg(mapping, 'generatedLine', null),            column: util$1.getArg(mapping, 'generatedColumn', null),            lastColumn: util$1.getArg(mapping, 'lastGeneratedColumn', null)          });          mapping = this._originalMappings[++index];        }      } else {        var originalColumn = mapping.originalColumn;        // Iterate until either we run out of mappings, or we run into        // a mapping for a different line than the one we were searching for.        // Since mappings are sorted, this is guaranteed to find all mappings for        // the line we are searching for.        while (mapping &&               mapping.originalLine === line &&               mapping.originalColumn == originalColumn) {          mappings.push({            line: util$1.getArg(mapping, 'generatedLine', null),            column: util$1.getArg(mapping, 'generatedColumn', null),            lastColumn: util$1.getArg(mapping, 'lastGeneratedColumn', null)          });          mapping = this._originalMappings[++index];        }      }    }    return mappings;  };var SourceMapConsumer_1$1 = SourceMapConsumer$2;/** * A BasicSourceMapConsumer instance represents a parsed source map which we can * query for information about the original file positions by giving it a file * position in the generated source. * * The first parameter is the raw source map (either as a JSON string, or * already parsed to an object). According to the spec, source maps have the * following attributes: * *   - version: Which version of the source map spec this map is following. *   - sources: An array of URLs to the original source files. *   - names: An array of identifiers which can be referrenced by individual mappings. *   - sourceRoot: Optional. The URL root from which all sources are relative. *   - sourcesContent: Optional. An array of contents of the original source files. *   - mappings: A string of base64 VLQs which contain the actual mappings. *   - file: Optional. The generated file this source map is associated with. * * Here is an example source map, taken from the source map spec[0]: * *     { *       version : 3, *       file: "out.js", *       sourceRoot : "", *       sources: ["foo.js", "bar.js"], *       names: ["src", "maps", "are", "fun"], *       mappings: "AA,AB;;ABCDE;" *     } * * The second parameter, if given, is a string whose value is the URL * at which the source map was found.  This URL is used to compute the * sources array. * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# */function BasicSourceMapConsumer$1(aSourceMap, aSourceMapURL) {  var sourceMap = aSourceMap;  if (typeof aSourceMap === 'string') {    sourceMap = util$1.parseSourceMapInput(aSourceMap);  }  var version = util$1.getArg(sourceMap, 'version');  var sources = util$1.getArg(sourceMap, 'sources');  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which  // requires the array) to play nice here.  var names = util$1.getArg(sourceMap, 'names', []);  var sourceRoot = util$1.getArg(sourceMap, 'sourceRoot', null);  var sourcesContent = util$1.getArg(sourceMap, 'sourcesContent', null);  var mappings = util$1.getArg(sourceMap, 'mappings');  var file = util$1.getArg(sourceMap, 'file', null);  // Once again, Sass deviates from the spec and supplies the version as a  // string rather than a number, so we use loose equality checking here.  if (version != this._version) {    throw new Error('Unsupported version: ' + version);  }  if (sourceRoot) {    sourceRoot = util$1.normalize(sourceRoot);  }  sources = sources    .map(String)    // Some source maps produce relative source paths like "./foo.js" instead of    // "foo.js".  Normalize these first so that future comparisons will succeed.    // See bugzil.la/1090768.    .map(util$1.normalize)    // Always ensure that absolute sources are internally stored relative to    // the source root, if the source root is absolute. Not doing this would    // be particularly problematic when the source root is a prefix of the    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.    .map(function (source) {      return sourceRoot && util$1.isAbsolute(sourceRoot) && util$1.isAbsolute(source)        ? util$1.relative(sourceRoot, source)        : source;    });  // Pass `true` below to allow duplicate names and sources. While source maps  // are intended to be compressed and deduplicated, the TypeScript compiler  // sometimes generates source maps with duplicates in them. See Github issue  // #72 and bugzil.la/889492.  this._names = ArraySet$5.fromArray(names.map(String), true);  this._sources = ArraySet$5.fromArray(sources, true);  this._absoluteSources = this._sources.toArray().map(function (s) {    return util$1.computeSourceURL(sourceRoot, s, aSourceMapURL);  });  this.sourceRoot = sourceRoot;  this.sourcesContent = sourcesContent;  this._mappings = mappings;  this._sourceMapURL = aSourceMapURL;  this.file = file;}BasicSourceMapConsumer$1.prototype = Object.create(SourceMapConsumer$2.prototype);BasicSourceMapConsumer$1.prototype.consumer = SourceMapConsumer$2;/** * Utility function to find the index of a source.  Returns -1 if not * found. */BasicSourceMapConsumer$1.prototype._findSourceIndex = function(aSource) {  var relativeSource = aSource;  if (this.sourceRoot != null) {    relativeSource = util$1.relative(this.sourceRoot, relativeSource);  }  if (this._sources.has(relativeSource)) {    return this._sources.indexOf(relativeSource);  }  // Maybe aSource is an absolute URL as returned by |sources|.  In  // this case we can't simply undo the transform.  var i;  for (i = 0; i < this._absoluteSources.length; ++i) {    if (this._absoluteSources[i] == aSource) {      return i;    }  }  return -1;};/** * Create a BasicSourceMapConsumer from a SourceMapGenerator. * * @param SourceMapGenerator aSourceMap *        The source map that will be consumed. * @param String aSourceMapURL *        The URL at which the source map can be found (optional) * @returns BasicSourceMapConsumer */BasicSourceMapConsumer$1.fromSourceMap =  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {    var smc = Object.create(BasicSourceMapConsumer$1.prototype);    var names = smc._names = ArraySet$5.fromArray(aSourceMap._names.toArray(), true);    var sources = smc._sources = ArraySet$5.fromArray(aSourceMap._sources.toArray(), true);    smc.sourceRoot = aSourceMap._sourceRoot;    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),                                                            smc.sourceRoot);    smc.file = aSourceMap._file;    smc._sourceMapURL = aSourceMapURL;    smc._absoluteSources = smc._sources.toArray().map(function (s) {      return util$1.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);    });    // Because we are modifying the entries (by converting string sources and    // names to indices into the sources and names ArraySets), we have to make    // a copy of the entry or else bad things happen. Shared mutable state    // strikes again! See github issue #191.    var generatedMappings = aSourceMap._mappings.toArray().slice();    var destGeneratedMappings = smc.__generatedMappings = [];    var destOriginalMappings = smc.__originalMappings = [];    for (var i = 0, length = generatedMappings.length; i < length; i++) {      var srcMapping = generatedMappings[i];      var destMapping = new Mapping$1;      destMapping.generatedLine = srcMapping.generatedLine;      destMapping.generatedColumn = srcMapping.generatedColumn;      if (srcMapping.source) {        destMapping.source = sources.indexOf(srcMapping.source);        destMapping.originalLine = srcMapping.originalLine;        destMapping.originalColumn = srcMapping.originalColumn;        if (srcMapping.name) {          destMapping.name = names.indexOf(srcMapping.name);        }        destOriginalMappings.push(destMapping);      }      destGeneratedMappings.push(destMapping);    }    quickSort$3(smc.__originalMappings, util$1.compareByOriginalPositions);    return smc;  };/** * The version of the source mapping spec that we are consuming. */BasicSourceMapConsumer$1.prototype._version = 3;/** * The list of original sources. */Object.defineProperty(BasicSourceMapConsumer$1.prototype, 'sources', {  get: function () {    return this._absoluteSources.slice();  }});/** * Provide the JIT with a nice shape / hidden class. */function Mapping$1() {  this.generatedLine = 0;  this.generatedColumn = 0;  this.source = null;  this.originalLine = null;  this.originalColumn = null;  this.name = null;}/** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */const compareGenerated = util$1.compareByGeneratedPositionsDeflatedNoLine;function sortGenerated(array, start) {  let l = array.length;  let n = array.length - start;  if (n <= 1) {    return;  } else if (n == 2) {    let a = array[start];    let b = array[start + 1];    if (compareGenerated(a, b) > 0) {      array[start] = b;      array[start + 1] = a;    }  } else if (n < 20) {    for (let i = start; i < l; i++) {      for (let j = i; j > start; j--) {        let a = array[j - 1];        let b = array[j];        if (compareGenerated(a, b) <= 0) {          break;        }        array[j - 1] = b;        array[j] = a;      }    }  } else {    quickSort$3(array, compareGenerated, start);  }}BasicSourceMapConsumer$1.prototype._parseMappings =  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {    var generatedLine = 1;    var previousGeneratedColumn = 0;    var previousOriginalLine = 0;    var previousOriginalColumn = 0;    var previousSource = 0;    var previousName = 0;    var length = aStr.length;    var index = 0;    var temp = {};    var originalMappings = [];    var generatedMappings = [];    var mapping, segment, end, value;    let subarrayStart = 0;    while (index < length) {      if (aStr.charAt(index) === ';') {        generatedLine++;        index++;        previousGeneratedColumn = 0;        sortGenerated(generatedMappings, subarrayStart);        subarrayStart = generatedMappings.length;      }      else if (aStr.charAt(index) === ',') {        index++;      }      else {        mapping = new Mapping$1();        mapping.generatedLine = generatedLine;        for (end = index; end < length; end++) {          if (this._charIsMappingSeparator(aStr, end)) {            break;          }        }        aStr.slice(index, end);        segment = [];        while (index < end) {          base64Vlq$1.decode(aStr, index, temp);          value = temp.value;          index = temp.rest;          segment.push(value);        }        if (segment.length === 2) {          throw new Error('Found a source, but no line and column');        }        if (segment.length === 3) {          throw new Error('Found a source and line, but no column');        }        // Generated column.        mapping.generatedColumn = previousGeneratedColumn + segment[0];        previousGeneratedColumn = mapping.generatedColumn;        if (segment.length > 1) {          // Original source.          mapping.source = previousSource + segment[1];          previousSource += segment[1];          // Original line.          mapping.originalLine = previousOriginalLine + segment[2];          previousOriginalLine = mapping.originalLine;          // Lines are stored 0-based          mapping.originalLine += 1;          // Original column.          mapping.originalColumn = previousOriginalColumn + segment[3];          previousOriginalColumn = mapping.originalColumn;          if (segment.length > 4) {            // Original name.            mapping.name = previousName + segment[4];            previousName += segment[4];          }        }        generatedMappings.push(mapping);        if (typeof mapping.originalLine === 'number') {          let currentSource = mapping.source;          while (originalMappings.length <= currentSource) {            originalMappings.push(null);          }          if (originalMappings[currentSource] === null) {            originalMappings[currentSource] = [];          }          originalMappings[currentSource].push(mapping);        }      }    }    sortGenerated(generatedMappings, subarrayStart);    this.__generatedMappings = generatedMappings;    for (var i = 0; i < originalMappings.length; i++) {      if (originalMappings[i] != null) {        quickSort$3(originalMappings[i], util$1.compareByOriginalPositionsNoSource);      }    }    this.__originalMappings = [].concat(...originalMappings);  };/** * Find the mapping that best matches the hypothetical "needle" mapping that * we are searching for in the given "haystack" of mappings. */BasicSourceMapConsumer$1.prototype._findMapping =  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,                                         aColumnName, aComparator, aBias) {    // To return the position we are searching for, we must first find the    // mapping for the given position and then return the opposite position it    // points to. Because the mappings are sorted, we can use binary search to    // find the best mapping.    if (aNeedle[aLineName] <= 0) {      throw new TypeError('Line must be greater than or equal to 1, got '                          + aNeedle[aLineName]);    }    if (aNeedle[aColumnName] < 0) {      throw new TypeError('Column must be greater than or equal to 0, got '                          + aNeedle[aColumnName]);    }    return binarySearch$1.search(aNeedle, aMappings, aComparator, aBias);  };/** * Compute the last column for each generated mapping. The last column is * inclusive. */BasicSourceMapConsumer$1.prototype.computeColumnSpans =  function SourceMapConsumer_computeColumnSpans() {    for (var index = 0; index < this._generatedMappings.length; ++index) {      var mapping = this._generatedMappings[index];      // Mappings do not contain a field for the last generated columnt. We      // can come up with an optimistic estimate, however, by assuming that      // mappings are contiguous (i.e. given two consecutive mappings, the      // first mapping ends where the second one starts).      if (index + 1 < this._generatedMappings.length) {        var nextMapping = this._generatedMappings[index + 1];        if (mapping.generatedLine === nextMapping.generatedLine) {          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;          continue;        }      }      // The last mapping for each line spans the entire line.      mapping.lastGeneratedColumn = Infinity;    }  };/** * Returns the original source, line, and column information for the generated * source's line and column positions provided. The only argument is an object * with the following properties: * *   - line: The line number in the generated source.  The line number *     is 1-based. *   - column: The column number in the generated source.  The column *     number is 0-based. *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * *   - source: The original source file, or null. *   - line: The line number in the original source, or null.  The *     line number is 1-based. *   - column: The column number in the original source, or null.  The *     column number is 0-based. *   - name: The original identifier, or null. */BasicSourceMapConsumer$1.prototype.originalPositionFor =  function SourceMapConsumer_originalPositionFor(aArgs) {    var needle = {      generatedLine: util$1.getArg(aArgs, 'line'),      generatedColumn: util$1.getArg(aArgs, 'column')    };    var index = this._findMapping(      needle,      this._generatedMappings,      "generatedLine",      "generatedColumn",      util$1.compareByGeneratedPositionsDeflated,      util$1.getArg(aArgs, 'bias', SourceMapConsumer$2.GREATEST_LOWER_BOUND)    );    if (index >= 0) {      var mapping = this._generatedMappings[index];      if (mapping.generatedLine === needle.generatedLine) {        var source = util$1.getArg(mapping, 'source', null);        if (source !== null) {          source = this._sources.at(source);          source = util$1.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);        }        var name = util$1.getArg(mapping, 'name', null);        if (name !== null) {          name = this._names.at(name);        }        return {          source: source,          line: util$1.getArg(mapping, 'originalLine', null),          column: util$1.getArg(mapping, 'originalColumn', null),          name: name        };      }    }    return {      source: null,      line: null,      column: null,      name: null    };  };/** * Return true if we have the source content for every source in the source * map, false otherwise. */BasicSourceMapConsumer$1.prototype.hasContentsOfAllSources =  function BasicSourceMapConsumer_hasContentsOfAllSources() {    if (!this.sourcesContent) {      return false;    }    return this.sourcesContent.length >= this._sources.size() &&      !this.sourcesContent.some(function (sc) { return sc == null; });  };/** * Returns the original source content. The only argument is the url of the * original source file. Returns null if no original source content is * available. */BasicSourceMapConsumer$1.prototype.sourceContentFor =  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {    if (!this.sourcesContent) {      return null;    }    var index = this._findSourceIndex(aSource);    if (index >= 0) {      return this.sourcesContent[index];    }    var relativeSource = aSource;    if (this.sourceRoot != null) {      relativeSource = util$1.relative(this.sourceRoot, relativeSource);    }    var url;    if (this.sourceRoot != null        && (url = util$1.urlParse(this.sourceRoot))) {      // XXX: file:// URIs and absolute paths lead to unexpected behavior for      // many users. We can help them out when they expect file:// URIs to      // behave like it would if they were running a local HTTP server. See      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.      var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");      if (url.scheme == "file"          && this._sources.has(fileUriAbsPath)) {        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]      }      if ((!url.path || url.path == "/")          && this._sources.has("/" + relativeSource)) {        return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];      }    }    // This function is used recursively from    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we    // don't want to throw if we can't find the source - we just want to    // return null, so we provide a flag to exit gracefully.    if (nullOnMissing) {      return null;    }    else {      throw new Error('"' + relativeSource + '" is not in the SourceMap.');    }  };/** * Returns the generated line and column information for the original source, * line, and column positions provided. The only argument is an object with * the following properties: * *   - source: The filename of the original source. *   - line: The line number in the original source.  The line number *     is 1-based. *   - column: The column number in the original source.  The column *     number is 0-based. *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the *     closest element that is smaller than or greater than the one we are *     searching for, respectively, if the exact element cannot be found. *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * *   - line: The line number in the generated source, or null.  The *     line number is 1-based. *   - column: The column number in the generated source, or null. *     The column number is 0-based. */BasicSourceMapConsumer$1.prototype.generatedPositionFor =  function SourceMapConsumer_generatedPositionFor(aArgs) {    var source = util$1.getArg(aArgs, 'source');    source = this._findSourceIndex(source);    if (source < 0) {      return {        line: null,        column: null,        lastColumn: null      };    }    var needle = {      source: source,      originalLine: util$1.getArg(aArgs, 'line'),      originalColumn: util$1.getArg(aArgs, 'column')    };    var index = this._findMapping(      needle,      this._originalMappings,      "originalLine",      "originalColumn",      util$1.compareByOriginalPositions,      util$1.getArg(aArgs, 'bias', SourceMapConsumer$2.GREATEST_LOWER_BOUND)    );    if (index >= 0) {      var mapping = this._originalMappings[index];      if (mapping.source === needle.source) {        return {          line: util$1.getArg(mapping, 'generatedLine', null),          column: util$1.getArg(mapping, 'generatedColumn', null),          lastColumn: util$1.getArg(mapping, 'lastGeneratedColumn', null)        };      }    }    return {      line: null,      column: null,      lastColumn: null    };  };var BasicSourceMapConsumer_1$1 = BasicSourceMapConsumer$1;/** * An IndexedSourceMapConsumer instance represents a parsed source map which * we can query for information. It differs from BasicSourceMapConsumer in * that it takes "indexed" source maps (i.e. ones with a "sections" field) as * input. * * The first parameter is a raw source map (either as a JSON string, or already * parsed to an object). According to the spec for indexed source maps, they * have the following attributes: * *   - version: Which version of the source map spec this map is following. *   - file: Optional. The generated file this source map is associated with. *   - sections: A list of section definitions. * * Each value under the "sections" field has two fields: *   - offset: The offset into the original specified at which this section *       begins to apply, defined as an object with a "line" and "column" *       field. *   - map: A source map definition. This source map could also be indexed, *       but doesn't have to be. * * Instead of the "map" field, it's also possible to have a "url" field * specifying a URL to retrieve a source map from, but that's currently * unsupported. * * Here's an example source map, taken from the source map spec[0], but * modified to omit a section which uses the "url" field. * *  { *    version : 3, *    file: "app.js", *    sections: [{ *      offset: {line:100, column:10}, *      map: { *        version : 3, *        file: "section.js", *        sources: ["foo.js", "bar.js"], *        names: ["src", "maps", "are", "fun"], *        mappings: "AAAA,E;;ABCDE;" *      } *    }], *  } * * The second parameter, if given, is a string whose value is the URL * at which the source map was found.  This URL is used to compute the * sources array. * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt */function IndexedSourceMapConsumer$1(aSourceMap, aSourceMapURL) {  var sourceMap = aSourceMap;  if (typeof aSourceMap === 'string') {    sourceMap = util$1.parseSourceMapInput(aSourceMap);  }  var version = util$1.getArg(sourceMap, 'version');  var sections = util$1.getArg(sourceMap, 'sections');  if (version != this._version) {    throw new Error('Unsupported version: ' + version);  }  this._sources = new ArraySet$5();  this._names = new ArraySet$5();  var lastOffset = {    line: -1,    column: 0  };  this._sections = sections.map(function (s) {    if (s.url) {      // The url field will require support for asynchronicity.      // See https://github.com/mozilla/source-map/issues/16      throw new Error('Support for url field in sections not implemented.');    }    var offset = util$1.getArg(s, 'offset');    var offsetLine = util$1.getArg(offset, 'line');    var offsetColumn = util$1.getArg(offset, 'column');    if (offsetLine < lastOffset.line ||        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {      throw new Error('Section offsets must be ordered and non-overlapping.');    }    lastOffset = offset;    return {      generatedOffset: {        // The offset fields are 0-based, but we use 1-based indices when        // encoding/decoding from VLQ.        generatedLine: offsetLine + 1,        generatedColumn: offsetColumn + 1      },      consumer: new SourceMapConsumer$2(util$1.getArg(s, 'map'), aSourceMapURL)    }  });}IndexedSourceMapConsumer$1.prototype = Object.create(SourceMapConsumer$2.prototype);IndexedSourceMapConsumer$1.prototype.constructor = SourceMapConsumer$2;/** * The version of the source mapping spec that we are consuming. */IndexedSourceMapConsumer$1.prototype._version = 3;/** * The list of original sources. */Object.defineProperty(IndexedSourceMapConsumer$1.prototype, 'sources', {  get: function () {    var sources = [];    for (var i = 0; i < this._sections.length; i++) {      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {        sources.push(this._sections[i].consumer.sources[j]);      }    }    return sources;  }});/** * Returns the original source, line, and column information for the generated * source's line and column positions provided. The only argument is an object * with the following properties: * *   - line: The line number in the generated source.  The line number *     is 1-based. *   - column: The column number in the generated source.  The column *     number is 0-based. * * and an object is returned with the following properties: * *   - source: The original source file, or null. *   - line: The line number in the original source, or null.  The *     line number is 1-based. *   - column: The column number in the original source, or null.  The *     column number is 0-based. *   - name: The original identifier, or null. */IndexedSourceMapConsumer$1.prototype.originalPositionFor =  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {    var needle = {      generatedLine: util$1.getArg(aArgs, 'line'),      generatedColumn: util$1.getArg(aArgs, 'column')    };    // Find the section containing the generated position we're trying to map    // to an original position.    var sectionIndex = binarySearch$1.search(needle, this._sections,      function(needle, section) {        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;        if (cmp) {          return cmp;        }        return (needle.generatedColumn -                section.generatedOffset.generatedColumn);      });    var section = this._sections[sectionIndex];    if (!section) {      return {        source: null,        line: null,        column: null,        name: null      };    }    return section.consumer.originalPositionFor({      line: needle.generatedLine -        (section.generatedOffset.generatedLine - 1),      column: needle.generatedColumn -        (section.generatedOffset.generatedLine === needle.generatedLine         ? section.generatedOffset.generatedColumn - 1         : 0),      bias: aArgs.bias    });  };/** * Return true if we have the source content for every source in the source * map, false otherwise. */IndexedSourceMapConsumer$1.prototype.hasContentsOfAllSources =  function IndexedSourceMapConsumer_hasContentsOfAllSources() {    return this._sections.every(function (s) {      return s.consumer.hasContentsOfAllSources();    });  };/** * Returns the original source content. The only argument is the url of the * original source file. Returns null if no original source content is * available. */IndexedSourceMapConsumer$1.prototype.sourceContentFor =  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {    for (var i = 0; i < this._sections.length; i++) {      var section = this._sections[i];      var content = section.consumer.sourceContentFor(aSource, true);      if (content) {        return content;      }    }    if (nullOnMissing) {      return null;    }    else {      throw new Error('"' + aSource + '" is not in the SourceMap.');    }  };/** * Returns the generated line and column information for the original source, * line, and column positions provided. The only argument is an object with * the following properties: * *   - source: The filename of the original source. *   - line: The line number in the original source.  The line number *     is 1-based. *   - column: The column number in the original source.  The column *     number is 0-based. * * and an object is returned with the following properties: * *   - line: The line number in the generated source, or null.  The *     line number is 1-based.  *   - column: The column number in the generated source, or null. *     The column number is 0-based. */IndexedSourceMapConsumer$1.prototype.generatedPositionFor =  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {    for (var i = 0; i < this._sections.length; i++) {      var section = this._sections[i];      // Only consider this section if the requested source is in the list of      // sources of the consumer.      if (section.consumer._findSourceIndex(util$1.getArg(aArgs, 'source')) === -1) {        continue;      }      var generatedPosition = section.consumer.generatedPositionFor(aArgs);      if (generatedPosition) {        var ret = {          line: generatedPosition.line +            (section.generatedOffset.generatedLine - 1),          column: generatedPosition.column +            (section.generatedOffset.generatedLine === generatedPosition.line             ? section.generatedOffset.generatedColumn - 1             : 0)        };        return ret;      }    }    return {      line: null,      column: null    };  };/** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */IndexedSourceMapConsumer$1.prototype._parseMappings =  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {    this.__generatedMappings = [];    this.__originalMappings = [];    for (var i = 0; i < this._sections.length; i++) {      var section = this._sections[i];      var sectionMappings = section.consumer._generatedMappings;      for (var j = 0; j < sectionMappings.length; j++) {        var mapping = sectionMappings[j];        var source = section.consumer._sources.at(mapping.source);        source = util$1.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);        this._sources.add(source);        source = this._sources.indexOf(source);        var name = null;        if (mapping.name) {          name = section.consumer._names.at(mapping.name);          this._names.add(name);          name = this._names.indexOf(name);        }        // The mappings coming from the consumer for the section have        // generated positions relative to the start of the section, so we        // need to offset them to be relative to the start of the concatenated        // generated file.        var adjustedMapping = {          source: source,          generatedLine: mapping.generatedLine +            (section.generatedOffset.generatedLine - 1),          generatedColumn: mapping.generatedColumn +            (section.generatedOffset.generatedLine === mapping.generatedLine            ? section.generatedOffset.generatedColumn - 1            : 0),          originalLine: mapping.originalLine,          originalColumn: mapping.originalColumn,          name: name        };        this.__generatedMappings.push(adjustedMapping);        if (typeof adjustedMapping.originalLine === 'number') {          this.__originalMappings.push(adjustedMapping);        }      }    }    quickSort$3(this.__generatedMappings, util$1.compareByGeneratedPositionsDeflated);    quickSort$3(this.__originalMappings, util$1.compareByOriginalPositions);  };var IndexedSourceMapConsumer_1$1 = IndexedSourceMapConsumer$1;var sourceMapConsumer$1 = {	SourceMapConsumer: SourceMapConsumer_1$1,	BasicSourceMapConsumer: BasicSourceMapConsumer_1$1,	IndexedSourceMapConsumer: IndexedSourceMapConsumer_1$1};/* -*- Mode: js; js-indent-level: 2; -*- *//* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */var SourceMapGenerator$4 = sourceMapGenerator$1.SourceMapGenerator;// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other// operating systems these days (capturing the result).var REGEX_NEWLINE$1 = /(\r?\n)/;// Newline character code for charCodeAt() comparisonsvar NEWLINE_CODE$1 = 10;// Private symbol for identifying `SourceNode`s when multiple versions of// the source-map library are loaded. This MUST NOT CHANGE across// versions!var isSourceNode$1 = "$$$isSourceNode$$$";/** * SourceNodes provide a way to abstract over interpolating/concatenating * snippets of generated JavaScript source code while maintaining the line and * column information associated with the original source code. * * @param aLine The original line number. * @param aColumn The original column number. * @param aSource The original source's filename. * @param aChunks Optional. An array of strings which are snippets of *        generated JS, or other SourceNodes. * @param aName The original identifier. */function SourceNode$2(aLine, aColumn, aSource, aChunks, aName) {  this.children = [];  this.sourceContents = {};  this.line = aLine == null ? null : aLine;  this.column = aColumn == null ? null : aColumn;  this.source = aSource == null ? null : aSource;  this.name = aName == null ? null : aName;  this[isSourceNode$1] = true;  if (aChunks != null) this.add(aChunks);}/** * Creates a SourceNode from generated code and a SourceMapConsumer. * * @param aGeneratedCode The generated code * @param aSourceMapConsumer The SourceMap for the generated code * @param aRelativePath Optional. The path that relative sources in the *        SourceMapConsumer should be relative to. */SourceNode$2.fromStringWithSourceMap =  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {    // The SourceNode we want to fill with the generated code    // and the SourceMap    var node = new SourceNode$2();    // All even indices of this array are one line of the generated code,    // while all odd indices are the newlines between two adjacent lines    // (since `REGEX_NEWLINE` captures its match).    // Processed fragments are accessed by calling `shiftNextLine`.    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE$1);    var remainingLinesIndex = 0;    var shiftNextLine = function() {      var lineContents = getNextLine();      // The last line of a file might not have a newline.      var newLine = getNextLine() || "";      return lineContents + newLine;      function getNextLine() {        return remainingLinesIndex < remainingLines.length ?            remainingLines[remainingLinesIndex++] : undefined;      }    };    // We need to remember the position of "remainingLines"    var lastGeneratedLine = 1, lastGeneratedColumn = 0;    // The generate SourceNodes we need a code range.    // To extract it current and last mapping is used.    // Here we store the last mapping.    var lastMapping = null;    aSourceMapConsumer.eachMapping(function (mapping) {      if (lastMapping !== null) {        // We add the code from "lastMapping" to "mapping":        // First check if there is a new line in between.        if (lastGeneratedLine < mapping.generatedLine) {          // Associate first line with "lastMapping"          addMappingWithCode(lastMapping, shiftNextLine());          lastGeneratedLine++;          lastGeneratedColumn = 0;          // The remaining code is added without mapping        } else {          // There is no new line in between.          // Associate the code between "lastGeneratedColumn" and          // "mapping.generatedColumn" with "lastMapping"          var nextLine = remainingLines[remainingLinesIndex] || '';          var code = nextLine.substr(0, mapping.generatedColumn -                                        lastGeneratedColumn);          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -                                              lastGeneratedColumn);          lastGeneratedColumn = mapping.generatedColumn;          addMappingWithCode(lastMapping, code);          // No more remaining code, continue          lastMapping = mapping;          return;        }      }      // We add the generated code until the first mapping      // to the SourceNode without any mapping.      // Each line is added as separate string.      while (lastGeneratedLine < mapping.generatedLine) {        node.add(shiftNextLine());        lastGeneratedLine++;      }      if (lastGeneratedColumn < mapping.generatedColumn) {        var nextLine = remainingLines[remainingLinesIndex] || '';        node.add(nextLine.substr(0, mapping.generatedColumn));        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);        lastGeneratedColumn = mapping.generatedColumn;      }      lastMapping = mapping;    }, this);    // We have processed all mappings.    if (remainingLinesIndex < remainingLines.length) {      if (lastMapping) {        // Associate the remaining code in the current line with "lastMapping"        addMappingWithCode(lastMapping, shiftNextLine());      }      // and add the remaining lines without any mapping      node.add(remainingLines.splice(remainingLinesIndex).join(""));    }    // Copy sourcesContent into SourceNode    aSourceMapConsumer.sources.forEach(function (sourceFile) {      var content = aSourceMapConsumer.sourceContentFor(sourceFile);      if (content != null) {        if (aRelativePath != null) {          sourceFile = util$1.join(aRelativePath, sourceFile);        }        node.setSourceContent(sourceFile, content);      }    });    return node;    function addMappingWithCode(mapping, code) {      if (mapping === null || mapping.source === undefined) {        node.add(code);      } else {        var source = aRelativePath          ? util$1.join(aRelativePath, mapping.source)          : mapping.source;        node.add(new SourceNode$2(mapping.originalLine,                                mapping.originalColumn,                                source,                                code,                                mapping.name));      }    }  };/** * Add a chunk of generated JS to this source node. * * @param aChunk A string snippet of generated JS code, another instance of *        SourceNode, or an array where each member is one of those things. */SourceNode$2.prototype.add = function SourceNode_add(aChunk) {  if (Array.isArray(aChunk)) {    aChunk.forEach(function (chunk) {      this.add(chunk);    }, this);  }  else if (aChunk[isSourceNode$1] || typeof aChunk === "string") {    if (aChunk) {      this.children.push(aChunk);    }  }  else {    throw new TypeError(      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk    );  }  return this;};/** * Add a chunk of generated JS to the beginning of this source node. * * @param aChunk A string snippet of generated JS code, another instance of *        SourceNode, or an array where each member is one of those things. */SourceNode$2.prototype.prepend = function SourceNode_prepend(aChunk) {  if (Array.isArray(aChunk)) {    for (var i = aChunk.length-1; i >= 0; i--) {      this.prepend(aChunk[i]);    }  }  else if (aChunk[isSourceNode$1] || typeof aChunk === "string") {    this.children.unshift(aChunk);  }  else {    throw new TypeError(      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk    );  }  return this;};/** * Walk over the tree of JS snippets in this node and its children. The * walking function is called once for each snippet of JS and is passed that * snippet and the its original associated source's line/column location. * * @param aFn The traversal function. */SourceNode$2.prototype.walk = function SourceNode_walk(aFn) {  var chunk;  for (var i = 0, len = this.children.length; i < len; i++) {    chunk = this.children[i];    if (chunk[isSourceNode$1]) {      chunk.walk(aFn);    }    else {      if (chunk !== '') {        aFn(chunk, { source: this.source,                     line: this.line,                     column: this.column,                     name: this.name });      }    }  }};/** * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between * each of `this.children`. * * @param aSep The separator. */SourceNode$2.prototype.join = function SourceNode_join(aSep) {  var newChildren;  var i;  var len = this.children.length;  if (len > 0) {    newChildren = [];    for (i = 0; i < len-1; i++) {      newChildren.push(this.children[i]);      newChildren.push(aSep);    }    newChildren.push(this.children[i]);    this.children = newChildren;  }  return this;};/** * Call String.prototype.replace on the very right-most source snippet. Useful * for trimming whitespace from the end of a source node, etc. * * @param aPattern The pattern to replace. * @param aReplacement The thing to replace the pattern with. */SourceNode$2.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {  var lastChild = this.children[this.children.length - 1];  if (lastChild[isSourceNode$1]) {    lastChild.replaceRight(aPattern, aReplacement);  }  else if (typeof lastChild === 'string') {    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);  }  else {    this.children.push(''.replace(aPattern, aReplacement));  }  return this;};/** * Set the source content for a source file. This will be added to the SourceMapGenerator * in the sourcesContent field. * * @param aSourceFile The filename of the source file * @param aSourceContent The content of the source file */SourceNode$2.prototype.setSourceContent =  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {    this.sourceContents[util$1.toSetString(aSourceFile)] = aSourceContent;  };/** * Walk over the tree of SourceNodes. The walking function is called for each * source file content and is passed the filename and source content. * * @param aFn The traversal function. */SourceNode$2.prototype.walkSourceContents =  function SourceNode_walkSourceContents(aFn) {    for (var i = 0, len = this.children.length; i < len; i++) {      if (this.children[i][isSourceNode$1]) {        this.children[i].walkSourceContents(aFn);      }    }    var sources = Object.keys(this.sourceContents);    for (var i = 0, len = sources.length; i < len; i++) {      aFn(util$1.fromSetString(sources[i]), this.sourceContents[sources[i]]);    }  };/** * Return the string representation of this source node. Walks over the tree * and concatenates all the various snippets together to one string. */SourceNode$2.prototype.toString = function SourceNode_toString() {  var str = "";  this.walk(function (chunk) {    str += chunk;  });  return str;};/** * Returns the string representation of this source node along with a source * map. */SourceNode$2.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {  var generated = {    code: "",    line: 1,    column: 0  };  var map = new SourceMapGenerator$4(aArgs);  var sourceMappingActive = false;  var lastOriginalSource = null;  var lastOriginalLine = null;  var lastOriginalColumn = null;  var lastOriginalName = null;  this.walk(function (chunk, original) {    generated.code += chunk;    if (original.source !== null        && original.line !== null        && original.column !== null) {      if(lastOriginalSource !== original.source         || lastOriginalLine !== original.line         || lastOriginalColumn !== original.column         || lastOriginalName !== original.name) {        map.addMapping({          source: original.source,          original: {            line: original.line,            column: original.column          },          generated: {            line: generated.line,            column: generated.column          },          name: original.name        });      }      lastOriginalSource = original.source;      lastOriginalLine = original.line;      lastOriginalColumn = original.column;      lastOriginalName = original.name;      sourceMappingActive = true;    } else if (sourceMappingActive) {      map.addMapping({        generated: {          line: generated.line,          column: generated.column        }      });      lastOriginalSource = null;      sourceMappingActive = false;    }    for (var idx = 0, length = chunk.length; idx < length; idx++) {      if (chunk.charCodeAt(idx) === NEWLINE_CODE$1) {        generated.line++;        generated.column = 0;        // Mappings end at eol        if (idx + 1 === length) {          lastOriginalSource = null;          sourceMappingActive = false;        } else if (sourceMappingActive) {          map.addMapping({            source: original.source,            original: {              line: original.line,              column: original.column            },            generated: {              line: generated.line,              column: generated.column            },            name: original.name          });        }      } else {        generated.column++;      }    }  });  this.walkSourceContents(function (sourceFile, sourceContent) {    map.setSourceContent(sourceFile, sourceContent);  });  return { code: generated.code, map: map };};var SourceNode_1$1 = SourceNode$2;var sourceNode$1 = {	SourceNode: SourceNode_1$1};/* * Copyright 2009-2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE.txt or: * http://opensource.org/licenses/BSD-3-Clause */var SourceMapGenerator$5 = sourceMapGenerator$1.SourceMapGenerator;var SourceMapConsumer$3 = sourceMapConsumer$1.SourceMapConsumer;var SourceNode$3 = sourceNode$1.SourceNode;var sourceMap$1 = {	SourceMapGenerator: SourceMapGenerator$5,	SourceMapConsumer: SourceMapConsumer$3,	SourceNode: SourceNode$3};let urlAlphabet =  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';let customAlphabet = (alphabet, size) => {  return () => {    let id = '';    let i = size;    while (i--) {      id += alphabet[(Math.random() * alphabet.length) | 0];    }    return id  }};let nanoid = (size = 21) => {  let id = '';  let i = size;  while (i--) {    id += urlAlphabet[(Math.random() * 64) | 0];  }  return id};var nonSecure = { nanoid, customAlphabet };let { SourceMapConsumer: SourceMapConsumer$4, SourceMapGenerator: SourceMapGenerator$6 } = sourceMap$1;let { existsSync, readFileSync } = _fs;let { dirname: dirname$1, join: join$1 } = _path;function fromBase64(str) {  if (Buffer) {    return Buffer.from(str, 'base64').toString()  } else {    /* c8 ignore next 2 */    return window.atob(str)  }}class PreviousMap {  constructor(css, opts) {    if (opts.map === false) return    this.loadAnnotation(css);    this.inline = this.startWith(this.annotation, 'data:');    let prev = opts.map ? opts.map.prev : undefined;    let text = this.loadMap(opts.from, prev);    if (!this.mapFile && opts.from) {      this.mapFile = opts.from;    }    if (this.mapFile) this.root = dirname$1(this.mapFile);    if (text) this.text = text;  }  consumer() {    if (!this.consumerCache) {      this.consumerCache = new SourceMapConsumer$4(this.text);    }    return this.consumerCache  }  withContent() {    return !!(      this.consumer().sourcesContent &&      this.consumer().sourcesContent.length > 0    )  }  startWith(string, start) {    if (!string) return false    return string.substr(0, start.length) === start  }  getAnnotationURL(sourceMapString) {    return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, '').trim()  }  loadAnnotation(css) {    let comments = css.match(/\/\*\s*# sourceMappingURL=/gm);    if (!comments) return    // sourceMappingURLs from comments, strings, etc.    let start = css.lastIndexOf(comments.pop());    let end = css.indexOf('*/', start);    if (start > -1 && end > -1) {      // Locate the last sourceMappingURL to avoid pickin      this.annotation = this.getAnnotationURL(css.substring(start, end));    }  }  decodeInline(text) {    let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/;    let baseUri = /^data:application\/json;base64,/;    let charsetUri = /^data:application\/json;charset=utf-?8,/;    let uri = /^data:application\/json,/;    if (charsetUri.test(text) || uri.test(text)) {      return decodeURIComponent(text.substr(RegExp.lastMatch.length))    }    if (baseCharsetUri.test(text) || baseUri.test(text)) {      return fromBase64(text.substr(RegExp.lastMatch.length))    }    let encoding = text.match(/data:application\/json;([^,]+),/)[1];    throw new Error('Unsupported source map encoding ' + encoding)  }  loadFile(path) {    this.root = dirname$1(path);    if (existsSync(path)) {      this.mapFile = path;      return readFileSync(path, 'utf-8').toString().trim()    }  }  loadMap(file, prev) {    if (prev === false) return false    if (prev) {      if (typeof prev === 'string') {        return prev      } else if (typeof prev === 'function') {        let prevPath = prev(file);        if (prevPath) {          let map = this.loadFile(prevPath);          if (!map) {            throw new Error(              'Unable to load previous source map: ' + prevPath.toString()            )          }          return map        }      } else if (prev instanceof SourceMapConsumer$4) {        return SourceMapGenerator$6.fromSourceMap(prev).toString()      } else if (prev instanceof SourceMapGenerator$6) {        return prev.toString()      } else if (this.isMap(prev)) {        return JSON.stringify(prev)      } else {        throw new Error(          'Unsupported previous source map format: ' + prev.toString()        )      }    } else if (this.inline) {      return this.decodeInline(this.annotation)    } else if (this.annotation) {      let map = this.annotation;      if (file) map = join$1(dirname$1(file), map);      return this.loadFile(map)    }  }  isMap(map) {    if (typeof map !== 'object') return false    return (      typeof map.mappings === 'string' ||      typeof map._mappings === 'string' ||      Array.isArray(map.sections)    )  }}var previousMap = PreviousMap;PreviousMap.default = PreviousMap;var require$$2 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_url$1);let { SourceMapConsumer: SourceMapConsumer$5, SourceMapGenerator: SourceMapGenerator$7 } = sourceMap$1;let { fileURLToPath, pathToFileURL } = require$$2;let { resolve: resolve$1, isAbsolute: isAbsolute$1 } = _path;let { nanoid: nanoid$1 } = nonSecure;let fromOffsetCache = Symbol('fromOffsetCache');let sourceMapAvailable = Boolean(SourceMapConsumer$5 && SourceMapGenerator$7);let pathAvailable = Boolean(resolve$1 && isAbsolute$1);class Input$1 {  constructor(css, opts = {}) {    if (      css === null ||      typeof css === 'undefined' ||      (typeof css === 'object' && !css.toString)    ) {      throw new Error(`PostCSS received ${css} instead of CSS string`)    }    this.css = css.toString();    if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') {      this.hasBOM = true;      this.css = this.css.slice(1);    } else {      this.hasBOM = false;    }    if (opts.from) {      if (        !pathAvailable ||        /^\w+:\/\//.test(opts.from) ||        isAbsolute$1(opts.from)      ) {        this.file = opts.from;      } else {        this.file = resolve$1(opts.from);      }    }    if (pathAvailable && sourceMapAvailable) {      let map = new previousMap(this.css, opts);      if (map.text) {        this.map = map;        let file = map.consumer().file;        if (!this.file && file) this.file = this.mapResolve(file);      }    }    if (!this.file) {      this.id = '<input css ' + nanoid$1(6) + '>';    }    if (this.map) this.map.file = this.from;  }  fromOffset(offset) {    let lastLine, lineToIndex;    if (!this[fromOffsetCache]) {      let lines = this.css.split('\n');      lineToIndex = new Array(lines.length);      let prevIndex = 0;      for (let i = 0, l = lines.length; i < l; i++) {        lineToIndex[i] = prevIndex;        prevIndex += lines[i].length + 1;      }      this[fromOffsetCache] = lineToIndex;    } else {      lineToIndex = this[fromOffsetCache];    }    lastLine = lineToIndex[lineToIndex.length - 1];    let min = 0;    if (offset >= lastLine) {      min = lineToIndex.length - 1;    } else {      let max = lineToIndex.length - 2;      let mid;      while (min < max) {        mid = min + ((max - min) >> 1);        if (offset < lineToIndex[mid]) {          max = mid - 1;        } else if (offset >= lineToIndex[mid + 1]) {          min = mid + 1;        } else {          min = mid;          break        }      }    }    return {      line: min + 1,      col: offset - lineToIndex[min] + 1    }  }  error(message, line, column, opts = {}) {    let result, endLine, endColumn;    if (line && typeof line === 'object') {      let start = line;      let end = column;      if (typeof line.offset === 'number') {        let pos = this.fromOffset(start.offset);        line = pos.line;        column = pos.col;      } else {        line = start.line;        column = start.column;      }      if (typeof end.offset === 'number') {        let pos = this.fromOffset(end.offset);        endLine = pos.line;        endColumn = pos.col;      } else {        endLine = end.line;        endColumn = end.column;      }    } else if (!column) {      let pos = this.fromOffset(line);      line = pos.line;      column = pos.col;    }    let origin = this.origin(line, column, endLine, endColumn);    if (origin) {      result = new cssSyntaxError(        message,        origin.endLine === undefined          ? origin.line          : { line: origin.line, column: origin.column },        origin.endLine === undefined          ? origin.column          : { line: origin.endLine, column: origin.endColumn },        origin.source,        origin.file,        opts.plugin      );    } else {      result = new cssSyntaxError(        message,        endLine === undefined ? line : { line, column },        endLine === undefined ? column : { line: endLine, column: endColumn },        this.css,        this.file,        opts.plugin      );    }    result.input = { line, column, endLine, endColumn, source: this.css };    if (this.file) {      if (pathToFileURL) {        result.input.url = pathToFileURL(this.file).toString();      }      result.input.file = this.file;    }    return result  }  origin(line, column, endLine, endColumn) {    if (!this.map) return false    let consumer = this.map.consumer();    let from = consumer.originalPositionFor({ line, column });    if (!from.source) return false    let to;    if (typeof endLine === 'number') {      to = consumer.originalPositionFor({ line: endLine, column: endColumn });    }    let fromUrl;    if (isAbsolute$1(from.source)) {      fromUrl = pathToFileURL(from.source);    } else {      fromUrl = new URL(        from.source,        this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)      );    }    let result = {      url: fromUrl.toString(),      line: from.line,      column: from.column,      endLine: to && to.line,      endColumn: to && to.column    };    if (fromUrl.protocol === 'file:') {      if (fileURLToPath) {        result.file = fileURLToPath(fromUrl);      } else {        /* c8 ignore next 2 */        throw new Error(`file: protocol is not available in this PostCSS build`)      }    }    let source = consumer.sourceContentFor(from.source);    if (source) result.source = source;    return result  }  mapResolve(file) {    if (/^\w+:\/\//.test(file)) {      return file    }    return resolve$1(this.map.consumer().sourceRoot || this.map.root || '.', file)  }  get from() {    return this.file || this.id  }  toJSON() {    let json = {};    for (let name of ['hasBOM', 'css', 'file', 'id']) {      if (this[name] != null) {        json[name] = this[name];      }    }    if (this.map) {      json.map = { ...this.map };      if (json.map.consumerCache) {        json.map.consumerCache = undefined;      }    }    return json  }}var input = Input$1;Input$1.default = Input$1;if (terminalHighlight_1 && terminalHighlight_1.registerInput) {  terminalHighlight_1.registerInput(Input$1);}let { SourceMapConsumer: SourceMapConsumer$6, SourceMapGenerator: SourceMapGenerator$8 } = sourceMap$1;let { dirname: dirname$2, resolve: resolve$2, relative: relative$1, sep: sep$1 } = _path;let { pathToFileURL: pathToFileURL$1 } = require$$2;let sourceMapAvailable$1 = Boolean(SourceMapConsumer$6 && SourceMapGenerator$8);let pathAvailable$1 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);class MapGenerator {  constructor(stringify, root, opts, cssString) {    this.stringify = stringify;    this.mapOpts = opts.map || {};    this.root = root;    this.opts = opts;    this.css = cssString;  }  isMap() {    if (typeof this.opts.map !== 'undefined') {      return !!this.opts.map    }    return this.previous().length > 0  }  previous() {    if (!this.previousMaps) {      this.previousMaps = [];      if (this.root) {        this.root.walk(node => {          if (node.source && node.source.input.map) {            let map = node.source.input.map;            if (!this.previousMaps.includes(map)) {              this.previousMaps.push(map);            }          }        });      } else {        let input$1 = new input(this.css, this.opts);        if (input$1.map) this.previousMaps.push(input$1.map);      }    }    return this.previousMaps  }  isInline() {    if (typeof this.mapOpts.inline !== 'undefined') {      return this.mapOpts.inline    }    let annotation = this.mapOpts.annotation;    if (typeof annotation !== 'undefined' && annotation !== true) {      return false    }    if (this.previous().length) {      return this.previous().some(i => i.inline)    }    return true  }  isSourcesContent() {    if (typeof this.mapOpts.sourcesContent !== 'undefined') {      return this.mapOpts.sourcesContent    }    if (this.previous().length) {      return this.previous().some(i => i.withContent())    }    return true  }  clearAnnotation() {    if (this.mapOpts.annotation === false) return    if (this.root) {      let node;      for (let i = this.root.nodes.length - 1; i >= 0; i--) {        node = this.root.nodes[i];        if (node.type !== 'comment') continue        if (node.text.indexOf('# sourceMappingURL=') === 0) {          this.root.removeChild(i);        }      }    } else if (this.css) {      this.css = this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm, '');    }  }  setSourcesContent() {    let already = {};    if (this.root) {      this.root.walk(node => {        if (node.source) {          let from = node.source.input.from;          if (from && !already[from]) {            already[from] = true;            this.map.setSourceContent(              this.toUrl(this.path(from)),              node.source.input.css            );          }        }      });    } else if (this.css) {      let from = this.opts.from        ? this.toUrl(this.path(this.opts.from))        : '<no source>';      this.map.setSourceContent(from, this.css);    }  }  applyPrevMaps() {    for (let prev of this.previous()) {      let from = this.toUrl(this.path(prev.file));      let root = prev.root || dirname$2(prev.file);      let map;      if (this.mapOpts.sourcesContent === false) {        map = new SourceMapConsumer$6(prev.text);        if (map.sourcesContent) {          map.sourcesContent = map.sourcesContent.map(() => null);        }      } else {        map = prev.consumer();      }      this.map.applySourceMap(map, from, this.toUrl(this.path(root)));    }  }  isAnnotation() {    if (this.isInline()) {      return true    }    if (typeof this.mapOpts.annotation !== 'undefined') {      return this.mapOpts.annotation    }    if (this.previous().length) {      return this.previous().some(i => i.annotation)    }    return true  }  toBase64(str) {    if (Buffer) {      return Buffer.from(str).toString('base64')    } else {      return window.btoa(unescape(encodeURIComponent(str)))    }  }  addAnnotation() {    let content;    if (this.isInline()) {      content =        'data:application/json;base64,' + this.toBase64(this.map.toString());    } else if (typeof this.mapOpts.annotation === 'string') {      content = this.mapOpts.annotation;    } else if (typeof this.mapOpts.annotation === 'function') {      content = this.mapOpts.annotation(this.opts.to, this.root);    } else {      content = this.outputFile() + '.map';    }    let eol = '\n';    if (this.css.includes('\r\n')) eol = '\r\n';    this.css += eol + '/*# sourceMappingURL=' + content + ' */';  }  outputFile() {    if (this.opts.to) {      return this.path(this.opts.to)    } else if (this.opts.from) {      return this.path(this.opts.from)    } else {      return 'to.css'    }  }  generateMap() {    if (this.root) {      this.generateString();    } else if (this.previous().length === 1) {      let prev = this.previous()[0].consumer();      prev.file = this.outputFile();      this.map = SourceMapGenerator$8.fromSourceMap(prev);    } else {      this.map = new SourceMapGenerator$8({ file: this.outputFile() });      this.map.addMapping({        source: this.opts.from          ? this.toUrl(this.path(this.opts.from))          : '<no source>',        generated: { line: 1, column: 0 },        original: { line: 1, column: 0 }      });    }    if (this.isSourcesContent()) this.setSourcesContent();    if (this.root && this.previous().length > 0) this.applyPrevMaps();    if (this.isAnnotation()) this.addAnnotation();    if (this.isInline()) {      return [this.css]    } else {      return [this.css, this.map]    }  }  path(file) {    if (file.indexOf('<') === 0) return file    if (/^\w+:\/\//.test(file)) return file    if (this.mapOpts.absolute) return file    let from = this.opts.to ? dirname$2(this.opts.to) : '.';    if (typeof this.mapOpts.annotation === 'string') {      from = dirname$2(resolve$2(from, this.mapOpts.annotation));    }    file = relative$1(from, file);    return file  }  toUrl(path) {    if (sep$1 === '\\') {      path = path.replace(/\\/g, '/');    }    return encodeURI(path).replace(/[#?]/g, encodeURIComponent)  }  sourcePath(node) {    if (this.mapOpts.from) {      return this.toUrl(this.mapOpts.from)    } else if (this.mapOpts.absolute) {      if (pathToFileURL$1) {        return pathToFileURL$1(node.source.input.from).toString()      } else {        throw new Error(          '`map.absolute` option is not available in this PostCSS build'        )      }    } else {      return this.toUrl(this.path(node.source.input.from))    }  }  generateString() {    this.css = '';    this.map = new SourceMapGenerator$8({ file: this.outputFile() });    let line = 1;    let column = 1;    let noSource = '<no source>';    let mapping = {      source: '',      generated: { line: 0, column: 0 },      original: { line: 0, column: 0 }    };    let lines, last;    this.stringify(this.root, (str, node, type) => {      this.css += str;      if (node && type !== 'end') {        mapping.generated.line = line;        mapping.generated.column = column - 1;        if (node.source && node.source.start) {          mapping.source = this.sourcePath(node);          mapping.original.line = node.source.start.line;          mapping.original.column = node.source.start.column - 1;          this.map.addMapping(mapping);        } else {          mapping.source = noSource;          mapping.original.line = 1;          mapping.original.column = 0;          this.map.addMapping(mapping);        }      }      lines = str.match(/\n/g);      if (lines) {        line += lines.length;        last = str.lastIndexOf('\n');        column = str.length - last;      } else {        column += str.length;      }      if (node && type !== 'start') {        let p = node.parent || { raws: {} };        if (node.type !== 'decl' || node !== p.last || p.raws.semicolon) {          if (node.source && node.source.end) {            mapping.source = this.sourcePath(node);            mapping.original.line = node.source.end.line;            mapping.original.column = node.source.end.column - 1;            mapping.generated.line = line;            mapping.generated.column = column - 2;            this.map.addMapping(mapping);          } else {            mapping.source = noSource;            mapping.original.line = 1;            mapping.original.column = 0;            mapping.generated.line = line;            mapping.generated.column = column - 1;            this.map.addMapping(mapping);          }        }      }    });  }  generate() {    this.clearAnnotation();    if (pathAvailable$1 && sourceMapAvailable$1 && this.isMap()) {      return this.generateMap()    } else {      let result = '';      this.stringify(this.root, i => {        result += i;      });      return [result]    }  }}var mapGenerator = MapGenerator;class Comment extends node_1 {  constructor(defaults) {    super(defaults);    this.type = 'comment';  }}var comment = Comment;Comment.default = Comment;let { isClean: isClean$2, my: my$2 } = symbols;let parse$5, Rule, AtRule;function cleanSource(nodes) {  return nodes.map(i => {    if (i.nodes) i.nodes = cleanSource(i.nodes);    delete i.source;    return i  })}function markDirtyUp(node) {  node[isClean$2] = false;  if (node.proxyOf.nodes) {    for (let i of node.proxyOf.nodes) {      markDirtyUp(i);    }  }}class Container extends node_1 {  push(child) {    child.parent = this;    this.proxyOf.nodes.push(child);    return this  }  each(callback) {    if (!this.proxyOf.nodes) return undefined    let iterator = this.getIterator();    let index, result;    while (this.indexes[iterator] < this.proxyOf.nodes.length) {      index = this.indexes[iterator];      result = callback(this.proxyOf.nodes[index], index);      if (result === false) break      this.indexes[iterator] += 1;    }    delete this.indexes[iterator];    return result  }  walk(callback) {    return this.each((child, i) => {      let result;      try {        result = callback(child, i);      } catch (e) {        throw child.addToError(e)      }      if (result !== false && child.walk) {        result = child.walk(callback);      }      return result    })  }  walkDecls(prop, callback) {    if (!callback) {      callback = prop;      return this.walk((child, i) => {        if (child.type === 'decl') {          return callback(child, i)        }      })    }    if (prop instanceof RegExp) {      return this.walk((child, i) => {        if (child.type === 'decl' && prop.test(child.prop)) {          return callback(child, i)        }      })    }    return this.walk((child, i) => {      if (child.type === 'decl' && child.prop === prop) {        return callback(child, i)      }    })  }  walkRules(selector, callback) {    if (!callback) {      callback = selector;      return this.walk((child, i) => {        if (child.type === 'rule') {          return callback(child, i)        }      })    }    if (selector instanceof RegExp) {      return this.walk((child, i) => {        if (child.type === 'rule' && selector.test(child.selector)) {          return callback(child, i)        }      })    }    return this.walk((child, i) => {      if (child.type === 'rule' && child.selector === selector) {        return callback(child, i)      }    })  }  walkAtRules(name, callback) {    if (!callback) {      callback = name;      return this.walk((child, i) => {        if (child.type === 'atrule') {          return callback(child, i)        }      })    }    if (name instanceof RegExp) {      return this.walk((child, i) => {        if (child.type === 'atrule' && name.test(child.name)) {          return callback(child, i)        }      })    }    return this.walk((child, i) => {      if (child.type === 'atrule' && child.name === name) {        return callback(child, i)      }    })  }  walkComments(callback) {    return this.walk((child, i) => {      if (child.type === 'comment') {        return callback(child, i)      }    })  }  append(...children) {    for (let child of children) {      let nodes = this.normalize(child, this.last);      for (let node of nodes) this.proxyOf.nodes.push(node);    }    this.markDirty();    return this  }  prepend(...children) {    children = children.reverse();    for (let child of children) {      let nodes = this.normalize(child, this.first, 'prepend').reverse();      for (let node of nodes) this.proxyOf.nodes.unshift(node);      for (let id in this.indexes) {        this.indexes[id] = this.indexes[id] + nodes.length;      }    }    this.markDirty();    return this  }  cleanRaws(keepBetween) {    super.cleanRaws(keepBetween);    if (this.nodes) {      for (let node of this.nodes) node.cleanRaws(keepBetween);    }  }  insertBefore(exist, add) {    exist = this.index(exist);    let type = exist === 0 ? 'prepend' : false;    let nodes = this.normalize(add, this.proxyOf.nodes[exist], type).reverse();    for (let node of nodes) this.proxyOf.nodes.splice(exist, 0, node);    let index;    for (let id in this.indexes) {      index = this.indexes[id];      if (exist <= index) {        this.indexes[id] = index + nodes.length;      }    }    this.markDirty();    return this  }  insertAfter(exist, add) {    exist = this.index(exist);    let nodes = this.normalize(add, this.proxyOf.nodes[exist]).reverse();    for (let node of nodes) this.proxyOf.nodes.splice(exist + 1, 0, node);    let index;    for (let id in this.indexes) {      index = this.indexes[id];      if (exist < index) {        this.indexes[id] = index + nodes.length;      }    }    this.markDirty();    return this  }  removeChild(child) {    child = this.index(child);    this.proxyOf.nodes[child].parent = undefined;    this.proxyOf.nodes.splice(child, 1);    let index;    for (let id in this.indexes) {      index = this.indexes[id];      if (index >= child) {        this.indexes[id] = index - 1;      }    }    this.markDirty();    return this  }  removeAll() {    for (let node of this.proxyOf.nodes) node.parent = undefined;    this.proxyOf.nodes = [];    this.markDirty();    return this  }  replaceValues(pattern, opts, callback) {    if (!callback) {      callback = opts;      opts = {};    }    this.walkDecls(decl => {      if (opts.props && !opts.props.includes(decl.prop)) return      if (opts.fast && !decl.value.includes(opts.fast)) return      decl.value = decl.value.replace(pattern, callback);    });    this.markDirty();    return this  }  every(condition) {    return this.nodes.every(condition)  }  some(condition) {    return this.nodes.some(condition)  }  index(child) {    if (typeof child === 'number') return child    if (child.proxyOf) child = child.proxyOf;    return this.proxyOf.nodes.indexOf(child)  }  get first() {    if (!this.proxyOf.nodes) return undefined    return this.proxyOf.nodes[0]  }  get last() {    if (!this.proxyOf.nodes) return undefined    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]  }  normalize(nodes, sample) {    if (typeof nodes === 'string') {      nodes = cleanSource(parse$5(nodes).nodes);    } else if (Array.isArray(nodes)) {      nodes = nodes.slice(0);      for (let i of nodes) {        if (i.parent) i.parent.removeChild(i, 'ignore');      }    } else if (nodes.type === 'root' && this.type !== 'document') {      nodes = nodes.nodes.slice(0);      for (let i of nodes) {        if (i.parent) i.parent.removeChild(i, 'ignore');      }    } else if (nodes.type) {      nodes = [nodes];    } else if (nodes.prop) {      if (typeof nodes.value === 'undefined') {        throw new Error('Value field is missed in node creation')      } else if (typeof nodes.value !== 'string') {        nodes.value = String(nodes.value);      }      nodes = [new declaration(nodes)];    } else if (nodes.selector) {      nodes = [new Rule(nodes)];    } else if (nodes.name) {      nodes = [new AtRule(nodes)];    } else if (nodes.text) {      nodes = [new comment(nodes)];    } else {      throw new Error('Unknown node type in node creation')    }    let processed = nodes.map(i => {      /* c8 ignore next */      if (!i[my$2]) Container.rebuild(i);      i = i.proxyOf;      if (i.parent) i.parent.removeChild(i);      if (i[isClean$2]) markDirtyUp(i);      if (typeof i.raws.before === 'undefined') {        if (sample && typeof sample.raws.before !== 'undefined') {          i.raws.before = sample.raws.before.replace(/\S/g, '');        }      }      i.parent = this;      return i    });    return processed  }  getProxyProcessor() {    return {      set(node, prop, value) {        if (node[prop] === value) return true        node[prop] = value;        if (prop === 'name' || prop === 'params' || prop === 'selector') {          node.markDirty();        }        return true      },      get(node, prop) {        if (prop === 'proxyOf') {          return node        } else if (!node[prop]) {          return node[prop]        } else if (          prop === 'each' ||          (typeof prop === 'string' && prop.startsWith('walk'))        ) {          return (...args) => {            return node[prop](              ...args.map(i => {                if (typeof i === 'function') {                  return (child, index) => i(child.toProxy(), index)                } else {                  return i                }              })            )          }        } else if (prop === 'every' || prop === 'some') {          return cb => {            return node[prop]((child, ...other) =>              cb(child.toProxy(), ...other)            )          }        } else if (prop === 'root') {          return () => node.root().toProxy()        } else if (prop === 'nodes') {          return node.nodes.map(i => i.toProxy())        } else if (prop === 'first' || prop === 'last') {          return node[prop].toProxy()        } else {          return node[prop]        }      }    }  }  getIterator() {    if (!this.lastEach) this.lastEach = 0;    if (!this.indexes) this.indexes = {};    this.lastEach += 1;    let iterator = this.lastEach;    this.indexes[iterator] = 0;    return iterator  }}Container.registerParse = dependant => {  parse$5 = dependant;};Container.registerRule = dependant => {  Rule = dependant;};Container.registerAtRule = dependant => {  AtRule = dependant;};var container = Container;Container.default = Container;/* c8 ignore start */Container.rebuild = node => {  if (node.type === 'atrule') {    Object.setPrototypeOf(node, AtRule.prototype);  } else if (node.type === 'rule') {    Object.setPrototypeOf(node, Rule.prototype);  } else if (node.type === 'decl') {    Object.setPrototypeOf(node, declaration.prototype);  } else if (node.type === 'comment') {    Object.setPrototypeOf(node, comment.prototype);  }  node[my$2] = true;  if (node.nodes) {    node.nodes.forEach(child => {      Container.rebuild(child);    });  }};let LazyResult, Processor;class Document extends container {  constructor(defaults) {    // type needs to be passed to super, otherwise child roots won't be normalized correctly    super({ type: 'document', ...defaults });    if (!this.nodes) {      this.nodes = [];    }  }  toResult(opts = {}) {    let lazy = new LazyResult(new Processor(), this, opts);    return lazy.stringify()  }}Document.registerLazyResult = dependant => {  LazyResult = dependant;};Document.registerProcessor = dependant => {  Processor = dependant;};var document = Document;Document.default = Document;/* eslint-disable no-console */let printed = {};var warnOnce$2 = function warnOnce(message) {  if (printed[message]) return  printed[message] = true;  if (typeof console !== 'undefined' && console.warn) {    console.warn(message);  }};class Warning {  constructor(text, opts = {}) {    this.type = 'warning';    this.text = text;    if (opts.node && opts.node.source) {      let range = opts.node.rangeBy(opts);      this.line = range.start.line;      this.column = range.start.column;      this.endLine = range.end.line;      this.endColumn = range.end.column;    }    for (let opt in opts) this[opt] = opts[opt];  }  toString() {    if (this.node) {      return this.node.error(this.text, {        plugin: this.plugin,        index: this.index,        word: this.word      }).message    }    if (this.plugin) {      return this.plugin + ': ' + this.text    }    return this.text  }}var warning = Warning;Warning.default = Warning;class Result {  constructor(processor, root, opts) {    this.processor = processor;    this.messages = [];    this.root = root;    this.opts = opts;    this.css = undefined;    this.map = undefined;  }  toString() {    return this.css  }  warn(text, opts = {}) {    if (!opts.plugin) {      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {        opts.plugin = this.lastPlugin.postcssPlugin;      }    }    let warning$1 = new warning(text, opts);    this.messages.push(warning$1);    return warning$1  }  warnings() {    return this.messages.filter(i => i.type === 'warning')  }  get content() {    return this.css  }}var result = Result;Result.default = Result;class AtRule$1 extends container {  constructor(defaults) {    super(defaults);    this.type = 'atrule';  }  append(...children) {    if (!this.proxyOf.nodes) this.nodes = [];    return super.append(...children)  }  prepend(...children) {    if (!this.proxyOf.nodes) this.nodes = [];    return super.prepend(...children)  }}var atRule = AtRule$1;AtRule$1.default = AtRule$1;container.registerAtRule(AtRule$1);let LazyResult$1, Processor$1;class Root extends container {  constructor(defaults) {    super(defaults);    this.type = 'root';    if (!this.nodes) this.nodes = [];  }  removeChild(child, ignore) {    let index = this.index(child);    if (!ignore && index === 0 && this.nodes.length > 1) {      this.nodes[1].raws.before = this.nodes[index].raws.before;    }    return super.removeChild(child)  }  normalize(child, sample, type) {    let nodes = super.normalize(child);    if (sample) {      if (type === 'prepend') {        if (this.nodes.length > 1) {          sample.raws.before = this.nodes[1].raws.before;        } else {          delete sample.raws.before;        }      } else if (this.first !== sample) {        for (let node of nodes) {          node.raws.before = sample.raws.before;        }      }    }    return nodes  }  toResult(opts = {}) {    let lazy = new LazyResult$1(new Processor$1(), this, opts);    return lazy.stringify()  }}Root.registerLazyResult = dependant => {  LazyResult$1 = dependant;};Root.registerProcessor = dependant => {  Processor$1 = dependant;};var root = Root;Root.default = Root;let list = {  split(string, separators, last) {    let array = [];    let current = '';    let split = false;    let func = 0;    let quote = false;    let escape = false;    for (let letter of string) {      if (escape) {        escape = false;      } else if (letter === '\\') {        escape = true;      } else if (quote) {        if (letter === quote) {          quote = false;        }      } else if (letter === '"' || letter === "'") {        quote = letter;      } else if (letter === '(') {        func += 1;      } else if (letter === ')') {        if (func > 0) func -= 1;      } else if (func === 0) {        if (separators.includes(letter)) split = true;      }      if (split) {        if (current !== '') array.push(current.trim());        current = '';        split = false;      } else {        current += letter;      }    }    if (last || current !== '') array.push(current.trim());    return array  },  space(string) {    let spaces = [' ', '\n', '\t'];    return list.split(string, spaces)  },  comma(string) {    return list.split(string, [','], true)  }};var list_1 = list;list.default = list;class Rule$1 extends container {  constructor(defaults) {    super(defaults);    this.type = 'rule';    if (!this.nodes) this.nodes = [];  }  get selectors() {    return list_1.comma(this.selector)  }  set selectors(values) {    let match = this.selector ? this.selector.match(/,\s*/) : null;    let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');    this.selector = values.join(sep);  }}var rule = Rule$1;Rule$1.default = Rule$1;container.registerRule(Rule$1);class Parser$1 {  constructor(input) {    this.input = input;    this.root = new root();    this.current = this.root;    this.spaces = '';    this.semicolon = false;    this.customProperty = false;    this.createTokenizer();    this.root.source = { input, start: { offset: 0, line: 1, column: 1 } };  }  createTokenizer() {    this.tokenizer = tokenize(this.input);  }  parse() {    let token;    while (!this.tokenizer.endOfFile()) {      token = this.tokenizer.nextToken();      switch (token[0]) {        case 'space':          this.spaces += token[1];          break        case ';':          this.freeSemicolon(token);          break        case '}':          this.end(token);          break        case 'comment':          this.comment(token);          break        case 'at-word':          this.atrule(token);          break        case '{':          this.emptyRule(token);          break        default:          this.other(token);          break      }    }    this.endFile();  }  comment(token) {    let node = new comment();    this.init(node, token[2]);    node.source.end = this.getPosition(token[3] || token[2]);    let text = token[1].slice(2, -2);    if (/^\s*$/.test(text)) {      node.text = '';      node.raws.left = text;      node.raws.right = '';    } else {      let match = text.match(/^(\s*)([^]*\S)(\s*)$/);      node.text = match[2];      node.raws.left = match[1];      node.raws.right = match[3];    }  }  emptyRule(token) {    let node = new rule();    this.init(node, token[2]);    node.selector = '';    node.raws.between = '';    this.current = node;  }  other(start) {    let end = false;    let type = null;    let colon = false;    let bracket = null;    let brackets = [];    let customProperty = start[1].startsWith('--');    let tokens = [];    let token = start;    while (token) {      type = token[0];      tokens.push(token);      if (type === '(' || type === '[') {        if (!bracket) bracket = token;        brackets.push(type === '(' ? ')' : ']');      } else if (customProperty && colon && type === '{') {        if (!bracket) bracket = token;        brackets.push('}');      } else if (brackets.length === 0) {        if (type === ';') {          if (colon) {            this.decl(tokens, customProperty);            return          } else {            break          }        } else if (type === '{') {          this.rule(tokens);          return        } else if (type === '}') {          this.tokenizer.back(tokens.pop());          end = true;          break        } else if (type === ':') {          colon = true;        }      } else if (type === brackets[brackets.length - 1]) {        brackets.pop();        if (brackets.length === 0) bracket = null;      }      token = this.tokenizer.nextToken();    }    if (this.tokenizer.endOfFile()) end = true;    if (brackets.length > 0) this.unclosedBracket(bracket);    if (end && colon) {      while (tokens.length) {        token = tokens[tokens.length - 1][0];        if (token !== 'space' && token !== 'comment') break        this.tokenizer.back(tokens.pop());      }      this.decl(tokens, customProperty);    } else {      this.unknownWord(tokens);    }  }  rule(tokens) {    tokens.pop();    let node = new rule();    this.init(node, tokens[0][2]);    node.raws.between = this.spacesAndCommentsFromEnd(tokens);    this.raw(node, 'selector', tokens);    this.current = node;  }  decl(tokens, customProperty) {    let node = new declaration();    this.init(node, tokens[0][2]);    let last = tokens[tokens.length - 1];    if (last[0] === ';') {      this.semicolon = true;      tokens.pop();    }    node.source.end = this.getPosition(last[3] || last[2]);    while (tokens[0][0] !== 'word') {      if (tokens.length === 1) this.unknownWord(tokens);      node.raws.before += tokens.shift()[1];    }    node.source.start = this.getPosition(tokens[0][2]);    node.prop = '';    while (tokens.length) {      let type = tokens[0][0];      if (type === ':' || type === 'space' || type === 'comment') {        break      }      node.prop += tokens.shift()[1];    }    node.raws.between = '';    let token;    while (tokens.length) {      token = tokens.shift();      if (token[0] === ':') {        node.raws.between += token[1];        break      } else {        if (token[0] === 'word' && /\w/.test(token[1])) {          this.unknownWord([token]);        }        node.raws.between += token[1];      }    }    if (node.prop[0] === '_' || node.prop[0] === '*') {      node.raws.before += node.prop[0];      node.prop = node.prop.slice(1);    }    let firstSpaces = this.spacesAndCommentsFromStart(tokens);    this.precheckMissedSemicolon(tokens);    for (let i = tokens.length - 1; i >= 0; i--) {      token = tokens[i];      if (token[1].toLowerCase() === '!important') {        node.important = true;        let string = this.stringFrom(tokens, i);        string = this.spacesFromEnd(tokens) + string;        if (string !== ' !important') node.raws.important = string;        break      } else if (token[1].toLowerCase() === 'important') {        let cache = tokens.slice(0);        let str = '';        for (let j = i; j > 0; j--) {          let type = cache[j][0];          if (str.trim().indexOf('!') === 0 && type !== 'space') {            break          }          str = cache.pop()[1] + str;        }        if (str.trim().indexOf('!') === 0) {          node.important = true;          node.raws.important = str;          tokens = cache;        }      }      if (token[0] !== 'space' && token[0] !== 'comment') {        break      }    }    let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment');    this.raw(node, 'value', tokens);    if (hasWord) {      node.raws.between += firstSpaces;    } else {      node.value = firstSpaces + node.value;    }    if (node.value.includes(':') && !customProperty) {      this.checkMissedSemicolon(tokens);    }  }  atrule(token) {    let node = new atRule();    node.name = token[1].slice(1);    if (node.name === '') {      this.unnamedAtrule(node, token);    }    this.init(node, token[2]);    let type;    let prev;    let shift;    let last = false;    let open = false;    let params = [];    let brackets = [];    while (!this.tokenizer.endOfFile()) {      token = this.tokenizer.nextToken();      type = token[0];      if (type === '(' || type === '[') {        brackets.push(type === '(' ? ')' : ']');      } else if (type === '{' && brackets.length > 0) {        brackets.push('}');      } else if (type === brackets[brackets.length - 1]) {        brackets.pop();      }      if (brackets.length === 0) {        if (type === ';') {          node.source.end = this.getPosition(token[2]);          this.semicolon = true;          break        } else if (type === '{') {          open = true;          break        } else if (type === '}') {          if (params.length > 0) {            shift = params.length - 1;            prev = params[shift];            while (prev && prev[0] === 'space') {              prev = params[--shift];            }            if (prev) {              node.source.end = this.getPosition(prev[3] || prev[2]);            }          }          this.end(token);          break        } else {          params.push(token);        }      } else {        params.push(token);      }      if (this.tokenizer.endOfFile()) {        last = true;        break      }    }    node.raws.between = this.spacesAndCommentsFromEnd(params);    if (params.length) {      node.raws.afterName = this.spacesAndCommentsFromStart(params);      this.raw(node, 'params', params);      if (last) {        token = params[params.length - 1];        node.source.end = this.getPosition(token[3] || token[2]);        this.spaces = node.raws.between;        node.raws.between = '';      }    } else {      node.raws.afterName = '';      node.params = '';    }    if (open) {      node.nodes = [];      this.current = node;    }  }  end(token) {    if (this.current.nodes && this.current.nodes.length) {      this.current.raws.semicolon = this.semicolon;    }    this.semicolon = false;    this.current.raws.after = (this.current.raws.after || '') + this.spaces;    this.spaces = '';    if (this.current.parent) {      this.current.source.end = this.getPosition(token[2]);      this.current = this.current.parent;    } else {      this.unexpectedClose(token);    }  }  endFile() {    if (this.current.parent) this.unclosedBlock();    if (this.current.nodes && this.current.nodes.length) {      this.current.raws.semicolon = this.semicolon;    }    this.current.raws.after = (this.current.raws.after || '') + this.spaces;  }  freeSemicolon(token) {    this.spaces += token[1];    if (this.current.nodes) {      let prev = this.current.nodes[this.current.nodes.length - 1];      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {        prev.raws.ownSemicolon = this.spaces;        this.spaces = '';      }    }  }  // Helpers  getPosition(offset) {    let pos = this.input.fromOffset(offset);    return {      offset,      line: pos.line,      column: pos.col    }  }  init(node, offset) {    this.current.push(node);    node.source = {      start: this.getPosition(offset),      input: this.input    };    node.raws.before = this.spaces;    this.spaces = '';    if (node.type !== 'comment') this.semicolon = false;  }  raw(node, prop, tokens) {    let token, type;    let length = tokens.length;    let value = '';    let clean = true;    let next, prev;    let pattern = /^([#.|])?(\w)+/i;    for (let i = 0; i < length; i += 1) {      token = tokens[i];      type = token[0];      if (type === 'comment' && node.type === 'rule') {        prev = tokens[i - 1];        next = tokens[i + 1];        if (          prev[0] !== 'space' &&          next[0] !== 'space' &&          pattern.test(prev[1]) &&          pattern.test(next[1])        ) {          value += token[1];        } else {          clean = false;        }        continue      }      if (type === 'comment' || (type === 'space' && i === length - 1)) {        clean = false;      } else {        value += token[1];      }    }    if (!clean) {      let raw = tokens.reduce((all, i) => all + i[1], '');      node.raws[prop] = { value, raw };    }    node[prop] = value;  }  spacesAndCommentsFromEnd(tokens) {    let lastTokenType;    let spaces = '';    while (tokens.length) {      lastTokenType = tokens[tokens.length - 1][0];      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break      spaces = tokens.pop()[1] + spaces;    }    return spaces  }  spacesAndCommentsFromStart(tokens) {    let next;    let spaces = '';    while (tokens.length) {      next = tokens[0][0];      if (next !== 'space' && next !== 'comment') break      spaces += tokens.shift()[1];    }    return spaces  }  spacesFromEnd(tokens) {    let lastTokenType;    let spaces = '';    while (tokens.length) {      lastTokenType = tokens[tokens.length - 1][0];      if (lastTokenType !== 'space') break      spaces = tokens.pop()[1] + spaces;    }    return spaces  }  stringFrom(tokens, from) {    let result = '';    for (let i = from; i < tokens.length; i++) {      result += tokens[i][1];    }    tokens.splice(from, tokens.length - from);    return result  }  colon(tokens) {    let brackets = 0;    let token, type, prev;    for (let [i, element] of tokens.entries()) {      token = element;      type = token[0];      if (type === '(') {        brackets += 1;      }      if (type === ')') {        brackets -= 1;      }      if (brackets === 0 && type === ':') {        if (!prev) {          this.doubleColon(token);        } else if (prev[0] === 'word' && prev[1] === 'progid') {          continue        } else {          return i        }      }      prev = token;    }    return false  }  // Errors  unclosedBracket(bracket) {    throw this.input.error(      'Unclosed bracket',      { offset: bracket[2] },      { offset: bracket[2] + 1 }    )  }  unknownWord(tokens) {    throw this.input.error(      'Unknown word',      { offset: tokens[0][2] },      { offset: tokens[0][2] + tokens[0][1].length }    )  }  unexpectedClose(token) {    throw this.input.error(      'Unexpected }',      { offset: token[2] },      { offset: token[2] + 1 }    )  }  unclosedBlock() {    let pos = this.current.source.start;    throw this.input.error('Unclosed block', pos.line, pos.column)  }  doubleColon(token) {    throw this.input.error(      'Double colon',      { offset: token[2] },      { offset: token[2] + token[1].length }    )  }  unnamedAtrule(node, token) {    throw this.input.error(      'At-rule without name',      { offset: token[2] },      { offset: token[2] + token[1].length }    )  }  precheckMissedSemicolon(/* tokens */) {    // Hook for Safe Parser  }  checkMissedSemicolon(tokens) {    let colon = this.colon(tokens);    if (colon === false) return    let founded = 0;    let token;    for (let j = colon - 1; j >= 0; j--) {      token = tokens[j];      if (token[0] !== 'space') {        founded += 1;        if (founded === 2) break      }    }    // If the token is a word, e.g. `!important`, `red` or any other valid property's value.    // Then we need to return the colon after that word token. [3] is the "end" colon of that word.    // And because we need it after that one we do +1 to get the next one.    throw this.input.error(      'Missed semicolon',      token[0] === 'word' ? token[3] + 1 : token[2]    )  }}var parser = Parser$1;function parse$6(css, opts) {  let input$1 = new input(css, opts);  let parser$1 = new parser(input$1);  try {    parser$1.parse();  } catch (e) {    {      if (e.name === 'CssSyntaxError' && opts && opts.from) {        if (/\.scss$/i.test(opts.from)) {          e.message +=            '\nYou tried to parse SCSS with ' +            'the standard CSS parser; ' +            'try again with the postcss-scss parser';        } else if (/\.sass/i.test(opts.from)) {          e.message +=            '\nYou tried to parse Sass with ' +            'the standard CSS parser; ' +            'try again with the postcss-sass parser';        } else if (/\.less$/i.test(opts.from)) {          e.message +=            '\nYou tried to parse Less with ' +            'the standard CSS parser; ' +            'try again with the postcss-less parser';        }      }    }    throw e  }  return parser$1.root}var parse_1$1 = parse$6;parse$6.default = parse$6;container.registerParse(parse$6);let { isClean: isClean$3, my: my$3 } = symbols;const TYPE_TO_CLASS_NAME = {  document: 'Document',  root: 'Root',  atrule: 'AtRule',  rule: 'Rule',  decl: 'Declaration',  comment: 'Comment'};const PLUGIN_PROPS = {  postcssPlugin: true,  prepare: true,  Once: true,  Document: true,  Root: true,  Declaration: true,  Rule: true,  AtRule: true,  Comment: true,  DeclarationExit: true,  RuleExit: true,  AtRuleExit: true,  CommentExit: true,  RootExit: true,  DocumentExit: true,  OnceExit: true};const NOT_VISITORS = {  postcssPlugin: true,  prepare: true,  Once: true};const CHILDREN = 0;function isPromise(obj) {  return typeof obj === 'object' && typeof obj.then === 'function'}function getEvents(node) {  let key = false;  let type = TYPE_TO_CLASS_NAME[node.type];  if (node.type === 'decl') {    key = node.prop.toLowerCase();  } else if (node.type === 'atrule') {    key = node.name.toLowerCase();  }  if (key && node.append) {    return [      type,      type + '-' + key,      CHILDREN,      type + 'Exit',      type + 'Exit-' + key    ]  } else if (key) {    return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]  } else if (node.append) {    return [type, CHILDREN, type + 'Exit']  } else {    return [type, type + 'Exit']  }}function toStack(node) {  let events;  if (node.type === 'document') {    events = ['Document', CHILDREN, 'DocumentExit'];  } else if (node.type === 'root') {    events = ['Root', CHILDREN, 'RootExit'];  } else {    events = getEvents(node);  }  return {    node,    events,    eventIndex: 0,    visitors: [],    visitorIndex: 0,    iterator: 0  }}function cleanMarks(node) {  node[isClean$3] = false;  if (node.nodes) node.nodes.forEach(i => cleanMarks(i));  return node}let postcss = {};class LazyResult$2 {  constructor(processor, css, opts) {    this.stringified = false;    this.processed = false;    let root;    if (      typeof css === 'object' &&      css !== null &&      (css.type === 'root' || css.type === 'document')    ) {      root = cleanMarks(css);    } else if (css instanceof LazyResult$2 || css instanceof result) {      root = cleanMarks(css.root);      if (css.map) {        if (typeof opts.map === 'undefined') opts.map = {};        if (!opts.map.inline) opts.map.inline = false;        opts.map.prev = css.map;      }    } else {      let parser = parse_1$1;      if (opts.syntax) parser = opts.syntax.parse;      if (opts.parser) parser = opts.parser;      if (parser.parse) parser = parser.parse;      try {        root = parser(css, opts);      } catch (error) {        this.processed = true;        this.error = error;      }      if (root && !root[my$3]) {        /* c8 ignore next 2 */        container.rebuild(root);      }    }    this.result = new result(processor, root, opts);    this.helpers = { ...postcss, result: this.result, postcss };    this.plugins = this.processor.plugins.map(plugin => {      if (typeof plugin === 'object' && plugin.prepare) {        return { ...plugin, ...plugin.prepare(this.result) }      } else {        return plugin      }    });  }  get [Symbol.toStringTag]() {    return 'LazyResult'  }  get processor() {    return this.result.processor  }  get opts() {    return this.result.opts  }  get css() {    return this.stringify().css  }  get content() {    return this.stringify().content  }  get map() {    return this.stringify().map  }  get root() {    return this.sync().root  }  get messages() {    return this.sync().messages  }  warnings() {    return this.sync().warnings()  }  toString() {    return this.css  }  then(onFulfilled, onRejected) {    {      if (!('from' in this.opts)) {        warnOnce$2(          'Without `from` option PostCSS could generate wrong source map ' +            'and will not find Browserslist config. Set it to CSS file path ' +            'or to `undefined` to prevent this warning.'        );      }    }    return this.async().then(onFulfilled, onRejected)  }  catch(onRejected) {    return this.async().catch(onRejected)  }  finally(onFinally) {    return this.async().then(onFinally, onFinally)  }  async() {    if (this.error) return Promise.reject(this.error)    if (this.processed) return Promise.resolve(this.result)    if (!this.processing) {      this.processing = this.runAsync();    }    return this.processing  }  sync() {    if (this.error) throw this.error    if (this.processed) return this.result    this.processed = true;    if (this.processing) {      throw this.getAsyncError()    }    for (let plugin of this.plugins) {      let promise = this.runOnRoot(plugin);      if (isPromise(promise)) {        throw this.getAsyncError()      }    }    this.prepareVisitors();    if (this.hasListener) {      let root = this.result.root;      while (!root[isClean$3]) {        root[isClean$3] = true;        this.walkSync(root);      }      if (this.listeners.OnceExit) {        if (root.type === 'document') {          for (let subRoot of root.nodes) {            this.visitSync(this.listeners.OnceExit, subRoot);          }        } else {          this.visitSync(this.listeners.OnceExit, root);        }      }    }    return this.result  }  stringify() {    if (this.error) throw this.error    if (this.stringified) return this.result    this.stringified = true;    this.sync();    let opts = this.result.opts;    let str = stringify_1;    if (opts.syntax) str = opts.syntax.stringify;    if (opts.stringifier) str = opts.stringifier;    if (str.stringify) str = str.stringify;    let map = new mapGenerator(str, this.result.root, this.result.opts);    let data = map.generate();    this.result.css = data[0];    this.result.map = data[1];    return this.result  }  walkSync(node) {    node[isClean$3] = true;    let events = getEvents(node);    for (let event of events) {      if (event === CHILDREN) {        if (node.nodes) {          node.each(child => {            if (!child[isClean$3]) this.walkSync(child);          });        }      } else {        let visitors = this.listeners[event];        if (visitors) {          if (this.visitSync(visitors, node.toProxy())) return        }      }    }  }  visitSync(visitors, node) {    for (let [plugin, visitor] of visitors) {      this.result.lastPlugin = plugin;      let promise;      try {        promise = visitor(node, this.helpers);      } catch (e) {        throw this.handleError(e, node.proxyOf)      }      if (node.type !== 'root' && node.type !== 'document' && !node.parent) {        return true      }      if (isPromise(promise)) {        throw this.getAsyncError()      }    }  }  runOnRoot(plugin) {    this.result.lastPlugin = plugin;    try {      if (typeof plugin === 'object' && plugin.Once) {        if (this.result.root.type === 'document') {          let roots = this.result.root.nodes.map(root =>            plugin.Once(root, this.helpers)          );          if (isPromise(roots[0])) {            return Promise.all(roots)          }          return roots        }        return plugin.Once(this.result.root, this.helpers)      } else if (typeof plugin === 'function') {        return plugin(this.result.root, this.result)      }    } catch (error) {      throw this.handleError(error)    }  }  getAsyncError() {    throw new Error('Use process(css).then(cb) to work with async plugins')  }  handleError(error, node) {    let plugin = this.result.lastPlugin;    try {      if (node) node.addToError(error);      this.error = error;      if (error.name === 'CssSyntaxError' && !error.plugin) {        error.plugin = plugin.postcssPlugin;        error.setMessage();      } else if (plugin.postcssVersion) {        if (({}).NODE_ENV !== 'production') {          let pluginName = plugin.postcssPlugin;          let pluginVer = plugin.postcssVersion;          let runtimeVer = this.result.processor.version;          let a = pluginVer.split('.');          let b = runtimeVer.split('.');          if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {            // eslint-disable-next-line no-console            console.error(              'Unknown error from PostCSS plugin. Your current PostCSS ' +                'version is ' +                runtimeVer +                ', but ' +                pluginName +                ' uses ' +                pluginVer +                '. Perhaps this is the source of the error below.'            );          }        }      }    } catch (err) {      /* c8 ignore next 3 */      // eslint-disable-next-line no-console      if (console && console.error) console.error(err);    }    return error  }  async runAsync() {    this.plugin = 0;    for (let i = 0; i < this.plugins.length; i++) {      let plugin = this.plugins[i];      let promise = this.runOnRoot(plugin);      if (isPromise(promise)) {        try {          await promise;        } catch (error) {          throw this.handleError(error)        }      }    }    this.prepareVisitors();    if (this.hasListener) {      let root = this.result.root;      while (!root[isClean$3]) {        root[isClean$3] = true;        let stack = [toStack(root)];        while (stack.length > 0) {          let promise = this.visitTick(stack);          if (isPromise(promise)) {            try {              await promise;            } catch (e) {              let node = stack[stack.length - 1].node;              throw this.handleError(e, node)            }          }        }      }      if (this.listeners.OnceExit) {        for (let [plugin, visitor] of this.listeners.OnceExit) {          this.result.lastPlugin = plugin;          try {            if (root.type === 'document') {              let roots = root.nodes.map(subRoot =>                visitor(subRoot, this.helpers)              );              await Promise.all(roots);            } else {              await visitor(root, this.helpers);            }          } catch (e) {            throw this.handleError(e)          }        }      }    }    this.processed = true;    return this.stringify()  }  prepareVisitors() {    this.listeners = {};    let add = (plugin, type, cb) => {      if (!this.listeners[type]) this.listeners[type] = [];      this.listeners[type].push([plugin, cb]);    };    for (let plugin of this.plugins) {      if (typeof plugin === 'object') {        for (let event in plugin) {          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {            throw new Error(              `Unknown event ${event} in ${plugin.postcssPlugin}. ` +                `Try to update PostCSS (${this.processor.version} now).`            )          }          if (!NOT_VISITORS[event]) {            if (typeof plugin[event] === 'object') {              for (let filter in plugin[event]) {                if (filter === '*') {                  add(plugin, event, plugin[event][filter]);                } else {                  add(                    plugin,                    event + '-' + filter.toLowerCase(),                    plugin[event][filter]                  );                }              }            } else if (typeof plugin[event] === 'function') {              add(plugin, event, plugin[event]);            }          }        }      }    }    this.hasListener = Object.keys(this.listeners).length > 0;  }  visitTick(stack) {    let visit = stack[stack.length - 1];    let { node, visitors } = visit;    if (node.type !== 'root' && node.type !== 'document' && !node.parent) {      stack.pop();      return    }    if (visitors.length > 0 && visit.visitorIndex < visitors.length) {      let [plugin, visitor] = visitors[visit.visitorIndex];      visit.visitorIndex += 1;      if (visit.visitorIndex === visitors.length) {        visit.visitors = [];        visit.visitorIndex = 0;      }      this.result.lastPlugin = plugin;      try {        return visitor(node.toProxy(), this.helpers)      } catch (e) {        throw this.handleError(e, node)      }    }    if (visit.iterator !== 0) {      let iterator = visit.iterator;      let child;      while ((child = node.nodes[node.indexes[iterator]])) {        node.indexes[iterator] += 1;        if (!child[isClean$3]) {          child[isClean$3] = true;          stack.push(toStack(child));          return        }      }      visit.iterator = 0;      delete node.indexes[iterator];    }    let events = visit.events;    while (visit.eventIndex < events.length) {      let event = events[visit.eventIndex];      visit.eventIndex += 1;      if (event === CHILDREN) {        if (node.nodes && node.nodes.length) {          node[isClean$3] = true;          visit.iterator = node.getIterator();        }        return      } else if (this.listeners[event]) {        visit.visitors = this.listeners[event];        return      }    }    stack.pop();  }}LazyResult$2.registerPostcss = dependant => {  postcss = dependant;};var lazyResult = LazyResult$2;LazyResult$2.default = LazyResult$2;root.registerLazyResult(LazyResult$2);document.registerLazyResult(LazyResult$2);class NoWorkResult {  constructor(processor, css, opts) {    css = css.toString();    this.stringified = false;    this._processor = processor;    this._css = css;    this._opts = opts;    this._map = undefined;    let root;    let str = stringify_1;    this.result = new result(this._processor, root, this._opts);    this.result.css = css;    let self = this;    Object.defineProperty(this.result, 'root', {      get() {        return self.root      }    });    let map = new mapGenerator(str, root, this._opts, css);    if (map.isMap()) {      let [generatedCSS, generatedMap] = map.generate();      if (generatedCSS) {        this.result.css = generatedCSS;      }      if (generatedMap) {        this.result.map = generatedMap;      }    }  }  get [Symbol.toStringTag]() {    return 'NoWorkResult'  }  get processor() {    return this.result.processor  }  get opts() {    return this.result.opts  }  get css() {    return this.result.css  }  get content() {    return this.result.css  }  get map() {    return this.result.map  }  get root() {    if (this._root) {      return this._root    }    let root;    let parser = parse_1$1;    try {      root = parser(this._css, this._opts);    } catch (error) {      this.error = error;    }    this._root = root;    return root  }  get messages() {    return []  }  warnings() {    return []  }  toString() {    return this._css  }  then(onFulfilled, onRejected) {    {      if (!('from' in this._opts)) {        warnOnce$2(          'Without `from` option PostCSS could generate wrong source map ' +            'and will not find Browserslist config. Set it to CSS file path ' +            'or to `undefined` to prevent this warning.'        );      }    }    return this.async().then(onFulfilled, onRejected)  }  catch(onRejected) {    return this.async().catch(onRejected)  }  finally(onFinally) {    return this.async().then(onFinally, onFinally)  }  async() {    if (this.error) return Promise.reject(this.error)    return Promise.resolve(this.result)  }  sync() {    if (this.error) throw this.error    return this.result  }}var noWorkResult = NoWorkResult;NoWorkResult.default = NoWorkResult;class Processor$2 {  constructor(plugins = []) {    this.version = '8.4.4';    this.plugins = this.normalize(plugins);  }  use(plugin) {    this.plugins = this.plugins.concat(this.normalize([plugin]));    return this  }  process(css, opts = {}) {    if (      this.plugins.length === 0 &&      typeof opts.parser === 'undefined' &&      typeof opts.stringifier === 'undefined' &&      typeof opts.syntax === 'undefined'    ) {      return new noWorkResult(this, css, opts)    } else {      return new lazyResult(this, css, opts)    }  }  normalize(plugins) {    let normalized = [];    for (let i of plugins) {      if (i.postcss === true) {        i = i();      } else if (i.postcss) {        i = i.postcss;      }      if (typeof i === 'object' && Array.isArray(i.plugins)) {        normalized = normalized.concat(i.plugins);      } else if (typeof i === 'object' && i.postcssPlugin) {        normalized.push(i);      } else if (typeof i === 'function') {        normalized.push(i);      } else if (typeof i === 'object' && (i.parse || i.stringify)) {        {          throw new Error(            'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +              'one of the syntax/parser/stringifier options as outlined ' +              'in your PostCSS runner documentation.'          )        }      } else {        throw new Error(i + ' is not a PostCSS plugin')      }    }    return normalized  }}var processor = Processor$2;Processor$2.default = Processor$2;root.registerProcessor(Processor$2);document.registerProcessor(Processor$2);function fromJSON(json, inputs) {  if (Array.isArray(json)) return json.map(n => fromJSON(n))  let { inputs: ownInputs, ...defaults } = json;  if (ownInputs) {    inputs = [];    for (let input$1 of ownInputs) {      let inputHydrated = { ...input$1, __proto__: input.prototype };      if (inputHydrated.map) {        inputHydrated.map = {          ...inputHydrated.map,          __proto__: previousMap.prototype        };      }      inputs.push(inputHydrated);    }  }  if (defaults.nodes) {    defaults.nodes = json.nodes.map(n => fromJSON(n, inputs));  }  if (defaults.source) {    let { inputId, ...source } = defaults.source;    defaults.source = source;    if (inputId != null) {      defaults.source.input = inputs[inputId];    }  }  if (defaults.type === 'root') {    return new root(defaults)  } else if (defaults.type === 'decl') {    return new declaration(defaults)  } else if (defaults.type === 'rule') {    return new rule(defaults)  } else if (defaults.type === 'comment') {    return new comment(defaults)  } else if (defaults.type === 'atrule') {    return new atRule(defaults)  } else {    throw new Error('Unknown node type: ' + json.type)  }}var fromJSON_1 = fromJSON;fromJSON.default = fromJSON;function postcss$1(...plugins) {  if (plugins.length === 1 && Array.isArray(plugins[0])) {    plugins = plugins[0];  }  return new processor(plugins)}postcss$1.plugin = function plugin(name, initializer) {  // eslint-disable-next-line no-console  if (console && console.warn) {    // eslint-disable-next-line no-console    console.warn(      name +        ': postcss.plugin was deprecated. Migration guide:\n' +        'https://evilmartians.com/chronicles/postcss-8-plugin-migration'    );  }  function creator(...args) {    let transformer = initializer(...args);    transformer.postcssPlugin = name;    transformer.postcssVersion = new processor().version;    return transformer  }  let cache;  Object.defineProperty(creator, 'postcss', {    get() {      if (!cache) cache = creator();      return cache    }  });  creator.process = function (css, processOpts, pluginOpts) {    return postcss$1([creator(pluginOpts)]).process(css, processOpts)  };  return creator};postcss$1.stringify = stringify_1;postcss$1.parse = parse_1$1;postcss$1.fromJSON = fromJSON_1;postcss$1.list = list_1;postcss$1.comment = defaults => new comment(defaults);postcss$1.atRule = defaults => new atRule(defaults);postcss$1.decl = defaults => new declaration(defaults);postcss$1.rule = defaults => new rule(defaults);postcss$1.root = defaults => new root(defaults);postcss$1.document = defaults => new document(defaults);postcss$1.CssSyntaxError = cssSyntaxError;postcss$1.Declaration = declaration;postcss$1.Container = container;postcss$1.Processor = processor;postcss$1.Document = document;postcss$1.Comment = comment;postcss$1.Warning = warning;postcss$1.AtRule = atRule;postcss$1.Result = result;postcss$1.Input = input;postcss$1.Rule = rule;postcss$1.Root = root;postcss$1.Node = node_1;lazyResult.registerPostcss(postcss$1);var postcss_1 = postcss$1;postcss$1.default = postcss$1;const trimPlugin = () => {    return {        postcssPlugin: 'vue-sfc-trim',        Once(root) {            root.walk(({ type, raws }) => {                if (type === 'rule' || type === 'atrule') {                    if (raws.before)                        raws.before = '\n';                    if ('after' in raws && raws.after)                        raws.after = '\n';                }            });        }    };};trimPlugin.postcss = true;var unesc_1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = unesc;// Many thanks for this post which made this migration much easier.// https://mathiasbynens.be/notes/css-escapes/** *  * @param {string} str  * @returns {[string, number]|undefined} */function gobbleHex(str) {  var lower = str.toLowerCase();  var hex = '';  var spaceTerminated = false;  for (var i = 0; i < 6 && lower[i] !== undefined; i++) {    var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]    var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point    spaceTerminated = code === 32;    if (!valid) {      break;    }    hex += lower[i];  }  if (hex.length === 0) {    return undefined;  }  var codePoint = parseInt(hex, 16);  var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for  // "If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point"  // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point  if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {    return ["\uFFFD", hex.length + (spaceTerminated ? 1 : 0)];  }  return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];}var CONTAINS_ESCAPE = /\\/;function unesc(str) {  var needToProcess = CONTAINS_ESCAPE.test(str);  if (!needToProcess) {    return str;  }  var ret = "";  for (var i = 0; i < str.length; i++) {    if (str[i] === "\\") {      var gobbled = gobbleHex(str.slice(i + 1, i + 7));      if (gobbled !== undefined) {        ret += gobbled[0];        i += gobbled[1];        continue;      } // Retain a pair of \\ if double escaped `\\\\`      // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e      if (str[i + 1] === "\\") {        ret += "\\";        i++;        continue;      } // if \\ is at the end of the string retain it      // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb      if (str.length === i + 1) {        ret += str[i];      }      continue;    }    ret += str[i];  }  return ret;}module.exports = exports.default;});var getProp_1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = getProp;function getProp(obj) {  for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {    props[_key - 1] = arguments[_key];  }  while (props.length > 0) {    var prop = props.shift();    if (!obj[prop]) {      return undefined;    }    obj = obj[prop];  }  return obj;}module.exports = exports.default;});var ensureObject_1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = ensureObject;function ensureObject(obj) {  for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {    props[_key - 1] = arguments[_key];  }  while (props.length > 0) {    var prop = props.shift();    if (!obj[prop]) {      obj[prop] = {};    }    obj = obj[prop];  }}module.exports = exports.default;});var stripComments_1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = stripComments;function stripComments(str) {  var s = "";  var commentStart = str.indexOf("/*");  var lastEnd = 0;  while (commentStart >= 0) {    s = s + str.slice(lastEnd, commentStart);    var commentEnd = str.indexOf("*/", commentStart + 2);    if (commentEnd < 0) {      return s;    }    lastEnd = commentEnd + 2;    commentStart = str.indexOf("/*", lastEnd);  }  s = s + str.slice(lastEnd);  return s;}module.exports = exports.default;});var util$2 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;var _unesc = _interopRequireDefault(unesc_1);exports.unesc = _unesc["default"];var _getProp = _interopRequireDefault(getProp_1);exports.getProp = _getProp["default"];var _ensureObject = _interopRequireDefault(ensureObject_1);exports.ensureObject = _ensureObject["default"];var _stripComments = _interopRequireDefault(stripComments_1);exports.stripComments = _stripComments["default"];function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }});var node = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }var cloneNode = function cloneNode(obj, parent) {  if (typeof obj !== 'object' || obj === null) {    return obj;  }  var cloned = new obj.constructor();  for (var i in obj) {    if (!obj.hasOwnProperty(i)) {      continue;    }    var value = obj[i];    var type = typeof value;    if (i === 'parent' && type === 'object') {      if (parent) {        cloned[i] = parent;      }    } else if (value instanceof Array) {      cloned[i] = value.map(function (j) {        return cloneNode(j, cloned);      });    } else {      cloned[i] = cloneNode(value, cloned);    }  }  return cloned;};var Node = /*#__PURE__*/function () {  function Node(opts) {    if (opts === void 0) {      opts = {};    }    Object.assign(this, opts);    this.spaces = this.spaces || {};    this.spaces.before = this.spaces.before || '';    this.spaces.after = this.spaces.after || '';  }  var _proto = Node.prototype;  _proto.remove = function remove() {    if (this.parent) {      this.parent.removeChild(this);    }    this.parent = undefined;    return this;  };  _proto.replaceWith = function replaceWith() {    if (this.parent) {      for (var index in arguments) {        this.parent.insertBefore(this, arguments[index]);      }      this.remove();    }    return this;  };  _proto.next = function next() {    return this.parent.at(this.parent.index(this) + 1);  };  _proto.prev = function prev() {    return this.parent.at(this.parent.index(this) - 1);  };  _proto.clone = function clone(overrides) {    if (overrides === void 0) {      overrides = {};    }    var cloned = cloneNode(this);    for (var name in overrides) {      cloned[name] = overrides[name];    }    return cloned;  }  /**   * Some non-standard syntax doesn't follow normal escaping rules for css.   * This allows non standard syntax to be appended to an existing property   * by specifying the escaped value. By specifying the escaped value,   * illegal characters are allowed to be directly inserted into css output.   * @param {string} name the property to set   * @param {any} value the unescaped value of the property   * @param {string} valueEscaped optional. the escaped value of the property.   */  ;  _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {    if (!this.raws) {      this.raws = {};    }    var originalValue = this[name];    var originalEscaped = this.raws[name];    this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.    if (originalEscaped || valueEscaped !== value) {      this.raws[name] = (originalEscaped || originalValue) + valueEscaped;    } else {      delete this.raws[name]; // delete any escaped value that was created by the setter.    }  }  /**   * Some non-standard syntax doesn't follow normal escaping rules for css.   * This allows the escaped value to be specified directly, allowing illegal   * characters to be directly inserted into css output.   * @param {string} name the property to set   * @param {any} value the unescaped value of the property   * @param {string} valueEscaped the escaped value of the property.   */  ;  _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {    if (!this.raws) {      this.raws = {};    }    this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.    this.raws[name] = valueEscaped;  }  /**   * When you want a value to passed through to CSS directly. This method   * deletes the corresponding raw value causing the stringifier to fallback   * to the unescaped value.   * @param {string} name the property to set.   * @param {any} value The value that is both escaped and unescaped.   */  ;  _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {    this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.    if (this.raws) {      delete this.raws[name];    }  }  /**   *   * @param {number} line The number (starting with 1)   * @param {number} column The column number (starting with 1)   */  ;  _proto.isAtPosition = function isAtPosition(line, column) {    if (this.source && this.source.start && this.source.end) {      if (this.source.start.line > line) {        return false;      }      if (this.source.end.line < line) {        return false;      }      if (this.source.start.line === line && this.source.start.column > column) {        return false;      }      if (this.source.end.line === line && this.source.end.column < column) {        return false;      }      return true;    }    return undefined;  };  _proto.stringifyProperty = function stringifyProperty(name) {    return this.raws && this.raws[name] || this[name];  };  _proto.valueToString = function valueToString() {    return String(this.stringifyProperty("value"));  };  _proto.toString = function toString() {    return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');  };  _createClass(Node, [{    key: "rawSpaceBefore",    get: function get() {      var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;      if (rawSpace === undefined) {        rawSpace = this.spaces && this.spaces.before;      }      return rawSpace || "";    },    set: function set(raw) {      (0, util$2.ensureObject)(this, "raws", "spaces");      this.raws.spaces.before = raw;    }  }, {    key: "rawSpaceAfter",    get: function get() {      var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;      if (rawSpace === undefined) {        rawSpace = this.spaces.after;      }      return rawSpace || "";    },    set: function set(raw) {      (0, util$2.ensureObject)(this, "raws", "spaces");      this.raws.spaces.after = raw;    }  }]);  return Node;}();exports["default"] = Node;module.exports = exports.default;});var types$1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;var TAG = 'tag';exports.TAG = TAG;var STRING = 'string';exports.STRING = STRING;var SELECTOR = 'selector';exports.SELECTOR = SELECTOR;var ROOT = 'root';exports.ROOT = ROOT;var PSEUDO = 'pseudo';exports.PSEUDO = PSEUDO;var NESTING = 'nesting';exports.NESTING = NESTING;var ID = 'id';exports.ID = ID;var COMMENT = 'comment';exports.COMMENT = COMMENT;var COMBINATOR = 'combinator';exports.COMBINATOR = COMBINATOR;var CLASS = 'class';exports.CLASS = CLASS;var ATTRIBUTE = 'attribute';exports.ATTRIBUTE = ATTRIBUTE;var UNIVERSAL = 'universal';exports.UNIVERSAL = UNIVERSAL;});var container$1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _node = _interopRequireDefault(node);var types = _interopRequireWildcard(types$1);function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); }function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Container = /*#__PURE__*/function (_Node) {  _inheritsLoose(Container, _Node);  function Container(opts) {    var _this;    _this = _Node.call(this, opts) || this;    if (!_this.nodes) {      _this.nodes = [];    }    return _this;  }  var _proto = Container.prototype;  _proto.append = function append(selector) {    selector.parent = this;    this.nodes.push(selector);    return this;  };  _proto.prepend = function prepend(selector) {    selector.parent = this;    this.nodes.unshift(selector);    return this;  };  _proto.at = function at(index) {    return this.nodes[index];  };  _proto.index = function index(child) {    if (typeof child === 'number') {      return child;    }    return this.nodes.indexOf(child);  };  _proto.removeChild = function removeChild(child) {    child = this.index(child);    this.at(child).parent = undefined;    this.nodes.splice(child, 1);    var index;    for (var id in this.indexes) {      index = this.indexes[id];      if (index >= child) {        this.indexes[id] = index - 1;      }    }    return this;  };  _proto.removeAll = function removeAll() {    for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {      var node = _step.value;      node.parent = undefined;    }    this.nodes = [];    return this;  };  _proto.empty = function empty() {    return this.removeAll();  };  _proto.insertAfter = function insertAfter(oldNode, newNode) {    newNode.parent = this;    var oldIndex = this.index(oldNode);    this.nodes.splice(oldIndex + 1, 0, newNode);    newNode.parent = this;    var index;    for (var id in this.indexes) {      index = this.indexes[id];      if (oldIndex <= index) {        this.indexes[id] = index + 1;      }    }    return this;  };  _proto.insertBefore = function insertBefore(oldNode, newNode) {    newNode.parent = this;    var oldIndex = this.index(oldNode);    this.nodes.splice(oldIndex, 0, newNode);    newNode.parent = this;    var index;    for (var id in this.indexes) {      index = this.indexes[id];      if (index <= oldIndex) {        this.indexes[id] = index + 1;      }    }    return this;  };  _proto._findChildAtPosition = function _findChildAtPosition(line, col) {    var found = undefined;    this.each(function (node) {      if (node.atPosition) {        var foundChild = node.atPosition(line, col);        if (foundChild) {          found = foundChild;          return false;        }      } else if (node.isAtPosition(line, col)) {        found = node;        return false;      }    });    return found;  }  /**   * Return the most specific node at the line and column number given.   * The source location is based on the original parsed location, locations aren't   * updated as selector nodes are mutated.   *    * Note that this location is relative to the location of the first character   * of the selector, and not the location of the selector in the overall document   * when used in conjunction with postcss.   *   * If not found, returns undefined.   * @param {number} line The line number of the node to find. (1-based index)   * @param {number} col  The column number of the node to find. (1-based index)   */  ;  _proto.atPosition = function atPosition(line, col) {    if (this.isAtPosition(line, col)) {      return this._findChildAtPosition(line, col) || this;    } else {      return undefined;    }  };  _proto._inferEndPosition = function _inferEndPosition() {    if (this.last && this.last.source && this.last.source.end) {      this.source = this.source || {};      this.source.end = this.source.end || {};      Object.assign(this.source.end, this.last.source.end);    }  };  _proto.each = function each(callback) {    if (!this.lastEach) {      this.lastEach = 0;    }    if (!this.indexes) {      this.indexes = {};    }    this.lastEach++;    var id = this.lastEach;    this.indexes[id] = 0;    if (!this.length) {      return undefined;    }    var index, result;    while (this.indexes[id] < this.length) {      index = this.indexes[id];      result = callback(this.at(index), index);      if (result === false) {        break;      }      this.indexes[id] += 1;    }    delete this.indexes[id];    if (result === false) {      return false;    }  };  _proto.walk = function walk(callback) {    return this.each(function (node, i) {      var result = callback(node, i);      if (result !== false && node.length) {        result = node.walk(callback);      }      if (result === false) {        return false;      }    });  };  _proto.walkAttributes = function walkAttributes(callback) {    var _this2 = this;    return this.walk(function (selector) {      if (selector.type === types.ATTRIBUTE) {        return callback.call(_this2, selector);      }    });  };  _proto.walkClasses = function walkClasses(callback) {    var _this3 = this;    return this.walk(function (selector) {      if (selector.type === types.CLASS) {        return callback.call(_this3, selector);      }    });  };  _proto.walkCombinators = function walkCombinators(callback) {    var _this4 = this;    return this.walk(function (selector) {      if (selector.type === types.COMBINATOR) {        return callback.call(_this4, selector);      }    });  };  _proto.walkComments = function walkComments(callback) {    var _this5 = this;    return this.walk(function (selector) {      if (selector.type === types.COMMENT) {        return callback.call(_this5, selector);      }    });  };  _proto.walkIds = function walkIds(callback) {    var _this6 = this;    return this.walk(function (selector) {      if (selector.type === types.ID) {        return callback.call(_this6, selector);      }    });  };  _proto.walkNesting = function walkNesting(callback) {    var _this7 = this;    return this.walk(function (selector) {      if (selector.type === types.NESTING) {        return callback.call(_this7, selector);      }    });  };  _proto.walkPseudos = function walkPseudos(callback) {    var _this8 = this;    return this.walk(function (selector) {      if (selector.type === types.PSEUDO) {        return callback.call(_this8, selector);      }    });  };  _proto.walkTags = function walkTags(callback) {    var _this9 = this;    return this.walk(function (selector) {      if (selector.type === types.TAG) {        return callback.call(_this9, selector);      }    });  };  _proto.walkUniversals = function walkUniversals(callback) {    var _this10 = this;    return this.walk(function (selector) {      if (selector.type === types.UNIVERSAL) {        return callback.call(_this10, selector);      }    });  };  _proto.split = function split(callback) {    var _this11 = this;    var current = [];    return this.reduce(function (memo, node, index) {      var split = callback.call(_this11, node);      current.push(node);      if (split) {        memo.push(current);        current = [];      } else if (index === _this11.length - 1) {        memo.push(current);      }      return memo;    }, []);  };  _proto.map = function map(callback) {    return this.nodes.map(callback);  };  _proto.reduce = function reduce(callback, memo) {    return this.nodes.reduce(callback, memo);  };  _proto.every = function every(callback) {    return this.nodes.every(callback);  };  _proto.some = function some(callback) {    return this.nodes.some(callback);  };  _proto.filter = function filter(callback) {    return this.nodes.filter(callback);  };  _proto.sort = function sort(callback) {    return this.nodes.sort(callback);  };  _proto.toString = function toString() {    return this.map(String).join('');  };  _createClass(Container, [{    key: "first",    get: function get() {      return this.at(0);    }  }, {    key: "last",    get: function get() {      return this.at(this.length - 1);    }  }, {    key: "length",    get: function get() {      return this.nodes.length;    }  }]);  return Container;}(_node["default"]);exports["default"] = Container;module.exports = exports.default;});var root$1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _container = _interopRequireDefault(container$1);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Root = /*#__PURE__*/function (_Container) {  _inheritsLoose(Root, _Container);  function Root(opts) {    var _this;    _this = _Container.call(this, opts) || this;    _this.type = types$1.ROOT;    return _this;  }  var _proto = Root.prototype;  _proto.toString = function toString() {    var str = this.reduce(function (memo, selector) {      memo.push(String(selector));      return memo;    }, []).join(',');    return this.trailingComma ? str + ',' : str;  };  _proto.error = function error(message, options) {    if (this._error) {      return this._error(message, options);    } else {      return new Error(message);    }  };  _createClass(Root, [{    key: "errorGenerator",    set: function set(handler) {      this._error = handler;    }  }]);  return Root;}(_container["default"]);exports["default"] = Root;module.exports = exports.default;});var selector = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _container = _interopRequireDefault(container$1);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Selector = /*#__PURE__*/function (_Container) {  _inheritsLoose(Selector, _Container);  function Selector(opts) {    var _this;    _this = _Container.call(this, opts) || this;    _this.type = types$1.SELECTOR;    return _this;  }  return Selector;}(_container["default"]);exports["default"] = Selector;module.exports = exports.default;});/*! https://mths.be/cssesc v3.0.0 by @mathias */var object = {};var hasOwnProperty$3 = object.hasOwnProperty;var merge = function merge(options, defaults) {	if (!options) {		return defaults;	}	var result = {};	for (var key in defaults) {		// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since		// only recognized option names are used.		result[key] = hasOwnProperty$3.call(options, key) ? options[key] : defaults[key];	}	return result;};var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/;var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/;var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g;// https://mathiasbynens.be/notes/css-escapes#cssvar cssesc = function cssesc(string, options) {	options = merge(options, cssesc.options);	if (options.quotes != 'single' && options.quotes != 'double') {		options.quotes = 'single';	}	var quote = options.quotes == 'double' ? '"' : '\'';	var isIdentifier = options.isIdentifier;	var firstChar = string.charAt(0);	var output = '';	var counter = 0;	var length = string.length;	while (counter < length) {		var character = string.charAt(counter++);		var codePoint = character.charCodeAt();		var value = void 0;		// If it’s not a printable ASCII character…		if (codePoint < 0x20 || codePoint > 0x7E) {			if (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {				// It’s a high surrogate, and there is a next character.				var extra = string.charCodeAt(counter++);				if ((extra & 0xFC00) == 0xDC00) {					// next character is low surrogate					codePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;				} else {					// It’s an unmatched surrogate; only append this code unit, in case					// the next code unit is the high surrogate of a surrogate pair.					counter--;				}			}			value = '\\' + codePoint.toString(16).toUpperCase() + ' ';		} else {			if (options.escapeEverything) {				if (regexAnySingleEscape.test(character)) {					value = '\\' + character;				} else {					value = '\\' + codePoint.toString(16).toUpperCase() + ' ';				}			} else if (/[\t\n\f\r\x0B]/.test(character)) {				value = '\\' + codePoint.toString(16).toUpperCase() + ' ';			} else if (character == '\\' || !isIdentifier && (character == '"' && quote == character || character == '\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {				value = '\\' + character;			} else {				value = character;			}		}		output += value;	}	if (isIdentifier) {		if (/^-[-\d]/.test(output)) {			output = '\\-' + output.slice(1);		} else if (/\d/.test(firstChar)) {			output = '\\3' + firstChar + ' ' + output.slice(1);		}	}	// Remove spaces after `\HEX` escapes that are not followed by a hex digit,	// since they’re redundant. Note that this is only possible if the escape	// sequence isn’t preceded by an odd number of backslashes.	output = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {		if ($1 && $1.length % 2) {			// It’s not safe to remove the space, so don’t.			return $0;		}		// Strip the space.		return ($1 || '') + $2;	});	if (!isIdentifier && options.wrap) {		return quote + output + quote;	}	return output;};// Expose default options (so they can be overridden globally).cssesc.options = {	'escapeEverything': false,	'isIdentifier': false,	'quotes': 'single',	'wrap': false};cssesc.version = '3.0.0';var cssesc_1 = cssesc;var className = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _cssesc = _interopRequireDefault(cssesc_1);var _node = _interopRequireDefault(node);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var ClassName = /*#__PURE__*/function (_Node) {  _inheritsLoose(ClassName, _Node);  function ClassName(opts) {    var _this;    _this = _Node.call(this, opts) || this;    _this.type = types$1.CLASS;    _this._constructed = true;    return _this;  }  var _proto = ClassName.prototype;  _proto.valueToString = function valueToString() {    return '.' + _Node.prototype.valueToString.call(this);  };  _createClass(ClassName, [{    key: "value",    get: function get() {      return this._value;    },    set: function set(v) {      if (this._constructed) {        var escaped = (0, _cssesc["default"])(v, {          isIdentifier: true        });        if (escaped !== v) {          (0, util$2.ensureObject)(this, "raws");          this.raws.value = escaped;        } else if (this.raws) {          delete this.raws.value;        }      }      this._value = v;    }  }]);  return ClassName;}(_node["default"]);exports["default"] = ClassName;module.exports = exports.default;});var comment$1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _node = _interopRequireDefault(node);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Comment = /*#__PURE__*/function (_Node) {  _inheritsLoose(Comment, _Node);  function Comment(opts) {    var _this;    _this = _Node.call(this, opts) || this;    _this.type = types$1.COMMENT;    return _this;  }  return Comment;}(_node["default"]);exports["default"] = Comment;module.exports = exports.default;});var id = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _node = _interopRequireDefault(node);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var ID = /*#__PURE__*/function (_Node) {  _inheritsLoose(ID, _Node);  function ID(opts) {    var _this;    _this = _Node.call(this, opts) || this;    _this.type = types$1.ID;    return _this;  }  var _proto = ID.prototype;  _proto.valueToString = function valueToString() {    return '#' + _Node.prototype.valueToString.call(this);  };  return ID;}(_node["default"]);exports["default"] = ID;module.exports = exports.default;});var namespace = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _cssesc = _interopRequireDefault(cssesc_1);var _node = _interopRequireDefault(node);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Namespace = /*#__PURE__*/function (_Node) {  _inheritsLoose(Namespace, _Node);  function Namespace() {    return _Node.apply(this, arguments) || this;  }  var _proto = Namespace.prototype;  _proto.qualifiedName = function qualifiedName(value) {    if (this.namespace) {      return this.namespaceString + "|" + value;    } else {      return value;    }  };  _proto.valueToString = function valueToString() {    return this.qualifiedName(_Node.prototype.valueToString.call(this));  };  _createClass(Namespace, [{    key: "namespace",    get: function get() {      return this._namespace;    },    set: function set(namespace) {      if (namespace === true || namespace === "*" || namespace === "&") {        this._namespace = namespace;        if (this.raws) {          delete this.raws.namespace;        }        return;      }      var escaped = (0, _cssesc["default"])(namespace, {        isIdentifier: true      });      this._namespace = namespace;      if (escaped !== namespace) {        (0, util$2.ensureObject)(this, "raws");        this.raws.namespace = escaped;      } else if (this.raws) {        delete this.raws.namespace;      }    }  }, {    key: "ns",    get: function get() {      return this._namespace;    },    set: function set(namespace) {      this.namespace = namespace;    }  }, {    key: "namespaceString",    get: function get() {      if (this.namespace) {        var ns = this.stringifyProperty("namespace");        if (ns === true) {          return '';        } else {          return ns;        }      } else {        return '';      }    }  }]);  return Namespace;}(_node["default"]);exports["default"] = Namespace;module.exports = exports.default;});var tag = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _namespace = _interopRequireDefault(namespace);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Tag = /*#__PURE__*/function (_Namespace) {  _inheritsLoose(Tag, _Namespace);  function Tag(opts) {    var _this;    _this = _Namespace.call(this, opts) || this;    _this.type = types$1.TAG;    return _this;  }  return Tag;}(_namespace["default"]);exports["default"] = Tag;module.exports = exports.default;});var string = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _node = _interopRequireDefault(node);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var String = /*#__PURE__*/function (_Node) {  _inheritsLoose(String, _Node);  function String(opts) {    var _this;    _this = _Node.call(this, opts) || this;    _this.type = types$1.STRING;    return _this;  }  return String;}(_node["default"]);exports["default"] = String;module.exports = exports.default;});var pseudo = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _container = _interopRequireDefault(container$1);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Pseudo = /*#__PURE__*/function (_Container) {  _inheritsLoose(Pseudo, _Container);  function Pseudo(opts) {    var _this;    _this = _Container.call(this, opts) || this;    _this.type = types$1.PSEUDO;    return _this;  }  var _proto = Pseudo.prototype;  _proto.toString = function toString() {    var params = this.length ? '(' + this.map(String).join(',') + ')' : '';    return [this.rawSpaceBefore, this.stringifyProperty("value"), params, this.rawSpaceAfter].join('');  };  return Pseudo;}(_container["default"]);exports["default"] = Pseudo;module.exports = exports.default;});/** * For Node.js, simply re-export the core `util.deprecate` function. */var node$1 = require$$0.deprecate;var attribute = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports.unescapeValue = unescapeValue;exports["default"] = void 0;var _cssesc = _interopRequireDefault(cssesc_1);var _unesc = _interopRequireDefault(unesc_1);var _namespace = _interopRequireDefault(namespace);var _CSSESC_QUOTE_OPTIONS;function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var WRAPPED_IN_QUOTES = /^('|")([^]*)\1$/;var warnOfDeprecatedValueAssignment = node$1(function () {}, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. " + "Call attribute.setValue() instead.");var warnOfDeprecatedQuotedAssignment = node$1(function () {}, "Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.");var warnOfDeprecatedConstructor = node$1(function () {}, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.");function unescapeValue(value) {  var deprecatedUsage = false;  var quoteMark = null;  var unescaped = value;  var m = unescaped.match(WRAPPED_IN_QUOTES);  if (m) {    quoteMark = m[1];    unescaped = m[2];  }  unescaped = (0, _unesc["default"])(unescaped);  if (unescaped !== value) {    deprecatedUsage = true;  }  return {    deprecatedUsage: deprecatedUsage,    unescaped: unescaped,    quoteMark: quoteMark  };}function handleDeprecatedContructorOpts(opts) {  if (opts.quoteMark !== undefined) {    return opts;  }  if (opts.value === undefined) {    return opts;  }  warnOfDeprecatedConstructor();  var _unescapeValue = unescapeValue(opts.value),      quoteMark = _unescapeValue.quoteMark,      unescaped = _unescapeValue.unescaped;  if (!opts.raws) {    opts.raws = {};  }  if (opts.raws.value === undefined) {    opts.raws.value = opts.value;  }  opts.value = unescaped;  opts.quoteMark = quoteMark;  return opts;}var Attribute = /*#__PURE__*/function (_Namespace) {  _inheritsLoose(Attribute, _Namespace);  function Attribute(opts) {    var _this;    if (opts === void 0) {      opts = {};    }    _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;    _this.type = types$1.ATTRIBUTE;    _this.raws = _this.raws || {};    Object.defineProperty(_this.raws, 'unquoted', {      get: node$1(function () {        return _this.value;      }, "attr.raws.unquoted is deprecated. Call attr.value instead."),      set: node$1(function () {        return _this.value;      }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.")    });    _this._constructed = true;    return _this;  }  /**   * Returns the Attribute's value quoted such that it would be legal to use   * in the value of a css file. The original value's quotation setting   * used for stringification is left unchanged. See `setValue(value, options)`   * if you want to control the quote settings of a new value for the attribute.   *   * You can also change the quotation used for the current value by setting quoteMark.   *   * Options:   *   * quoteMark {'"' | "'" | null} - Use this value to quote the value. If this   *     option is not set, the original value for quoteMark will be used. If   *     indeterminate, a double quote is used. The legal values are:   *     * `null` - the value will be unquoted and characters will be escaped as necessary.   *     * `'` - the value will be quoted with a single quote and single quotes are escaped.   *     * `"` - the value will be quoted with a double quote and double quotes are escaped.   *   * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark   *     over the quoteMark option value.   *   * smart {boolean} - if true, will select a quote mark based on the value   *     and the other options specified here. See the `smartQuoteMark()`   *     method.   **/  var _proto = Attribute.prototype;  _proto.getQuotedValue = function getQuotedValue(options) {    if (options === void 0) {      options = {};    }    var quoteMark = this._determineQuoteMark(options);    var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];    var escaped = (0, _cssesc["default"])(this._value, cssescopts);    return escaped;  };  _proto._determineQuoteMark = function _determineQuoteMark(options) {    return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);  }  /**   * Set the unescaped value with the specified quotation options. The value   * provided must not include any wrapping quote marks -- those quotes will   * be interpreted as part of the value and escaped accordingly.   */  ;  _proto.setValue = function setValue(value, options) {    if (options === void 0) {      options = {};    }    this._value = value;    this._quoteMark = this._determineQuoteMark(options);    this._syncRawValue();  }  /**   * Intelligently select a quoteMark value based on the value's contents. If   * the value is a legal CSS ident, it will not be quoted. Otherwise a quote   * mark will be picked that minimizes the number of escapes.   *   * If there's no clear winner, the quote mark from these options is used,   * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is   * true). If the quoteMark is unspecified, a double quote is used.   *   * @param options This takes the quoteMark and preferCurrentQuoteMark options   * from the quoteValue method.   */  ;  _proto.smartQuoteMark = function smartQuoteMark(options) {    var v = this.value;    var numSingleQuotes = v.replace(/[^']/g, '').length;    var numDoubleQuotes = v.replace(/[^"]/g, '').length;    if (numSingleQuotes + numDoubleQuotes === 0) {      var escaped = (0, _cssesc["default"])(v, {        isIdentifier: true      });      if (escaped === v) {        return Attribute.NO_QUOTE;      } else {        var pref = this.preferredQuoteMark(options);        if (pref === Attribute.NO_QUOTE) {          // pick a quote mark that isn't none and see if it's smaller          var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;          var opts = CSSESC_QUOTE_OPTIONS[quote];          var quoteValue = (0, _cssesc["default"])(v, opts);          if (quoteValue.length < escaped.length) {            return quote;          }        }        return pref;      }    } else if (numDoubleQuotes === numSingleQuotes) {      return this.preferredQuoteMark(options);    } else if (numDoubleQuotes < numSingleQuotes) {      return Attribute.DOUBLE_QUOTE;    } else {      return Attribute.SINGLE_QUOTE;    }  }  /**   * Selects the preferred quote mark based on the options and the current quote mark value.   * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`   * instead.   */  ;  _proto.preferredQuoteMark = function preferredQuoteMark(options) {    var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;    if (quoteMark === undefined) {      quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;    }    if (quoteMark === undefined) {      quoteMark = Attribute.DOUBLE_QUOTE;    }    return quoteMark;  };  _proto._syncRawValue = function _syncRawValue() {    var rawValue = (0, _cssesc["default"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);    if (rawValue === this._value) {      if (this.raws) {        delete this.raws.value;      }    } else {      this.raws.value = rawValue;    }  };  _proto._handleEscapes = function _handleEscapes(prop, value) {    if (this._constructed) {      var escaped = (0, _cssesc["default"])(value, {        isIdentifier: true      });      if (escaped !== value) {        this.raws[prop] = escaped;      } else {        delete this.raws[prop];      }    }  };  _proto._spacesFor = function _spacesFor(name) {    var attrSpaces = {      before: '',      after: ''    };    var spaces = this.spaces[name] || {};    var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};    return Object.assign(attrSpaces, spaces, rawSpaces);  };  _proto._stringFor = function _stringFor(name, spaceName, concat) {    if (spaceName === void 0) {      spaceName = name;    }    if (concat === void 0) {      concat = defaultAttrConcat;    }    var attrSpaces = this._spacesFor(spaceName);    return concat(this.stringifyProperty(name), attrSpaces);  }  /**   * returns the offset of the attribute part specified relative to the   * start of the node of the output string.   *   * * "ns" - alias for "namespace"   * * "namespace" - the namespace if it exists.   * * "attribute" - the attribute name   * * "attributeNS" - the start of the attribute or its namespace   * * "operator" - the match operator of the attribute   * * "value" - The value (string or identifier)   * * "insensitive" - the case insensitivity flag;   * @param part One of the possible values inside an attribute.   * @returns -1 if the name is invalid or the value doesn't exist in this attribute.   */  ;  _proto.offsetOf = function offsetOf(name) {    var count = 1;    var attributeSpaces = this._spacesFor("attribute");    count += attributeSpaces.before.length;    if (name === "namespace" || name === "ns") {      return this.namespace ? count : -1;    }    if (name === "attributeNS") {      return count;    }    count += this.namespaceString.length;    if (this.namespace) {      count += 1;    }    if (name === "attribute") {      return count;    }    count += this.stringifyProperty("attribute").length;    count += attributeSpaces.after.length;    var operatorSpaces = this._spacesFor("operator");    count += operatorSpaces.before.length;    var operator = this.stringifyProperty("operator");    if (name === "operator") {      return operator ? count : -1;    }    count += operator.length;    count += operatorSpaces.after.length;    var valueSpaces = this._spacesFor("value");    count += valueSpaces.before.length;    var value = this.stringifyProperty("value");    if (name === "value") {      return value ? count : -1;    }    count += value.length;    count += valueSpaces.after.length;    var insensitiveSpaces = this._spacesFor("insensitive");    count += insensitiveSpaces.before.length;    if (name === "insensitive") {      return this.insensitive ? count : -1;    }    return -1;  };  _proto.toString = function toString() {    var _this2 = this;    var selector = [this.rawSpaceBefore, '['];    selector.push(this._stringFor('qualifiedAttribute', 'attribute'));    if (this.operator && (this.value || this.value === '')) {      selector.push(this._stringFor('operator'));      selector.push(this._stringFor('value'));      selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {        if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {          attrSpaces.before = " ";        }        return defaultAttrConcat(attrValue, attrSpaces);      }));    }    selector.push(']');    selector.push(this.rawSpaceAfter);    return selector.join('');  };  _createClass(Attribute, [{    key: "quoted",    get: function get() {      var qm = this.quoteMark;      return qm === "'" || qm === '"';    },    set: function set(value) {      warnOfDeprecatedQuotedAssignment();    }    /**     * returns a single (`'`) or double (`"`) quote character if the value is quoted.     * returns `null` if the value is not quoted.     * returns `undefined` if the quotation state is unknown (this can happen when     * the attribute is constructed without specifying a quote mark.)     */  }, {    key: "quoteMark",    get: function get() {      return this._quoteMark;    }    /**     * Set the quote mark to be used by this attribute's value.     * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute     * value is updated accordingly.     *     * @param {"'" | '"' | null} quoteMark The quote mark or `null` if the value should be unquoted.     */    ,    set: function set(quoteMark) {      if (!this._constructed) {        this._quoteMark = quoteMark;        return;      }      if (this._quoteMark !== quoteMark) {        this._quoteMark = quoteMark;        this._syncRawValue();      }    }  }, {    key: "qualifiedAttribute",    get: function get() {      return this.qualifiedName(this.raws.attribute || this.attribute);    }  }, {    key: "insensitiveFlag",    get: function get() {      return this.insensitive ? 'i' : '';    }  }, {    key: "value",    get: function get() {      return this._value;    }    /**     * Before 3.0, the value had to be set to an escaped value including any wrapped     * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value     * is unescaped during parsing and any quote marks are removed.     *     * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,     * a deprecation warning is raised when the new value contains any characters that would     * require escaping (including if it contains wrapped quotes).     *     * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe     * how the new value is quoted.     */    ,    set: function set(v) {      if (this._constructed) {        var _unescapeValue2 = unescapeValue(v),            deprecatedUsage = _unescapeValue2.deprecatedUsage,            unescaped = _unescapeValue2.unescaped,            quoteMark = _unescapeValue2.quoteMark;        if (deprecatedUsage) {          warnOfDeprecatedValueAssignment();        }        if (unescaped === this._value && quoteMark === this._quoteMark) {          return;        }        this._value = unescaped;        this._quoteMark = quoteMark;        this._syncRawValue();      } else {        this._value = v;      }    }  }, {    key: "attribute",    get: function get() {      return this._attribute;    },    set: function set(name) {      this._handleEscapes("attribute", name);      this._attribute = name;    }  }]);  return Attribute;}(_namespace["default"]);exports["default"] = Attribute;Attribute.NO_QUOTE = null;Attribute.SINGLE_QUOTE = "'";Attribute.DOUBLE_QUOTE = '"';var CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {  "'": {    quotes: 'single',    wrap: true  },  '"': {    quotes: 'double',    wrap: true  }}, _CSSESC_QUOTE_OPTIONS[null] = {  isIdentifier: true}, _CSSESC_QUOTE_OPTIONS);function defaultAttrConcat(attrValue, attrSpaces) {  return "" + attrSpaces.before + attrValue + attrSpaces.after;}});var universal = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _namespace = _interopRequireDefault(namespace);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Universal = /*#__PURE__*/function (_Namespace) {  _inheritsLoose(Universal, _Namespace);  function Universal(opts) {    var _this;    _this = _Namespace.call(this, opts) || this;    _this.type = types$1.UNIVERSAL;    _this.value = '*';    return _this;  }  return Universal;}(_namespace["default"]);exports["default"] = Universal;module.exports = exports.default;});var combinator = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _node = _interopRequireDefault(node);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Combinator = /*#__PURE__*/function (_Node) {  _inheritsLoose(Combinator, _Node);  function Combinator(opts) {    var _this;    _this = _Node.call(this, opts) || this;    _this.type = types$1.COMBINATOR;    return _this;  }  return Combinator;}(_node["default"]);exports["default"] = Combinator;module.exports = exports.default;});var nesting = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _node = _interopRequireDefault(node);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }var Nesting = /*#__PURE__*/function (_Node) {  _inheritsLoose(Nesting, _Node);  function Nesting(opts) {    var _this;    _this = _Node.call(this, opts) || this;    _this.type = types$1.NESTING;    _this.value = '&';    return _this;  }  return Nesting;}(_node["default"]);exports["default"] = Nesting;module.exports = exports.default;});var sortAscending_1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = sortAscending;function sortAscending(list) {  return list.sort(function (a, b) {    return a - b;  });}module.exports = exports.default;});var tokenTypes$1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;var ampersand = 38; // `&`.charCodeAt(0);exports.ampersand = ampersand;var asterisk = 42; // `*`.charCodeAt(0);exports.asterisk = asterisk;var at = 64; // `@`.charCodeAt(0);exports.at = at;var comma = 44; // `,`.charCodeAt(0);exports.comma = comma;var colon = 58; // `:`.charCodeAt(0);exports.colon = colon;var semicolon = 59; // `;`.charCodeAt(0);exports.semicolon = semicolon;var openParenthesis = 40; // `(`.charCodeAt(0);exports.openParenthesis = openParenthesis;var closeParenthesis = 41; // `)`.charCodeAt(0);exports.closeParenthesis = closeParenthesis;var openSquare = 91; // `[`.charCodeAt(0);exports.openSquare = openSquare;var closeSquare = 93; // `]`.charCodeAt(0);exports.closeSquare = closeSquare;var dollar = 36; // `$`.charCodeAt(0);exports.dollar = dollar;var tilde = 126; // `~`.charCodeAt(0);exports.tilde = tilde;var caret = 94; // `^`.charCodeAt(0);exports.caret = caret;var plus = 43; // `+`.charCodeAt(0);exports.plus = plus;var equals = 61; // `=`.charCodeAt(0);exports.equals = equals;var pipe = 124; // `|`.charCodeAt(0);exports.pipe = pipe;var greaterThan = 62; // `>`.charCodeAt(0);exports.greaterThan = greaterThan;var space = 32; // ` `.charCodeAt(0);exports.space = space;var singleQuote = 39; // `'`.charCodeAt(0);exports.singleQuote = singleQuote;var doubleQuote = 34; // `"`.charCodeAt(0);exports.doubleQuote = doubleQuote;var slash = 47; // `/`.charCodeAt(0);exports.slash = slash;var bang = 33; // `!`.charCodeAt(0);exports.bang = bang;var backslash = 92; // '\\'.charCodeAt(0);exports.backslash = backslash;var cr = 13; // '\r'.charCodeAt(0);exports.cr = cr;var feed = 12; // '\f'.charCodeAt(0);exports.feed = feed;var newline = 10; // '\n'.charCodeAt(0);exports.newline = newline;var tab = 9; // '\t'.charCodeAt(0);// Expose aliases primarily for readability.exports.tab = tab;var str = singleQuote; // No good single character representation!exports.str = str;var comment = -1;exports.comment = comment;var word = -2;exports.word = word;var combinator = -3;exports.combinator = combinator;});var tokenize_1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = tokenize;exports.FIELDS = void 0;var t = _interopRequireWildcard(tokenTypes$1);var _unescapable, _wordDelimiters;function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);var hex = {};var hexChars = "0123456789abcdefABCDEF";for (var i = 0; i < hexChars.length; i++) {  hex[hexChars.charCodeAt(i)] = true;}/** *  Returns the last index of the bar css word * @param {string} css The string in which the word begins * @param {number} start The index into the string where word's first letter occurs */function consumeWord(css, start) {  var next = start;  var code;  do {    code = css.charCodeAt(next);    if (wordDelimiters[code]) {      return next - 1;    } else if (code === t.backslash) {      next = consumeEscape(css, next) + 1;    } else {      // All other characters are part of the word      next++;    }  } while (next < css.length);  return next - 1;}/** *  Returns the last index of the escape sequence * @param {string} css The string in which the sequence begins * @param {number} start The index into the string where escape character (`\`) occurs. */function consumeEscape(css, start) {  var next = start;  var code = css.charCodeAt(next + 1);  if (unescapable[code]) ; else if (hex[code]) {    var hexDigits = 0; // consume up to 6 hex chars    do {      next++;      hexDigits++;      code = css.charCodeAt(next + 1);    } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape    if (hexDigits < 6 && code === t.space) {      next++;    }  } else {    // the next char is part of the current word    next++;  }  return next;}var FIELDS = {  TYPE: 0,  START_LINE: 1,  START_COL: 2,  END_LINE: 3,  END_COL: 4,  START_POS: 5,  END_POS: 6};exports.FIELDS = FIELDS;function tokenize(input) {  var tokens = [];  var css = input.css.valueOf();  var _css = css,      length = _css.length;  var offset = -1;  var line = 1;  var start = 0;  var end = 0;  var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;  function unclosed(what, fix) {    if (input.safe) {      // fyi: this is never set to true.      css += fix;      next = css.length - 1;    } else {      throw input.error('Unclosed ' + what, line, start - offset, start);    }  }  while (start < length) {    code = css.charCodeAt(start);    if (code === t.newline) {      offset = start;      line += 1;    }    switch (code) {      case t.space:      case t.tab:      case t.newline:      case t.cr:      case t.feed:        next = start;        do {          next += 1;          code = css.charCodeAt(next);          if (code === t.newline) {            offset = next;            line += 1;          }        } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);        tokenType = t.space;        endLine = line;        endColumn = next - offset - 1;        end = next;        break;      case t.plus:      case t.greaterThan:      case t.tilde:      case t.pipe:        next = start;        do {          next += 1;          code = css.charCodeAt(next);        } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);        tokenType = t.combinator;        endLine = line;        endColumn = start - offset;        end = next;        break;      // Consume these characters as single tokens.      case t.asterisk:      case t.ampersand:      case t.bang:      case t.comma:      case t.equals:      case t.dollar:      case t.caret:      case t.openSquare:      case t.closeSquare:      case t.colon:      case t.semicolon:      case t.openParenthesis:      case t.closeParenthesis:        next = start;        tokenType = code;        endLine = line;        endColumn = start - offset;        end = next + 1;        break;      case t.singleQuote:      case t.doubleQuote:        quote = code === t.singleQuote ? "'" : '"';        next = start;        do {          escaped = false;          next = css.indexOf(quote, next + 1);          if (next === -1) {            unclosed('quote', quote);          }          escapePos = next;          while (css.charCodeAt(escapePos - 1) === t.backslash) {            escapePos -= 1;            escaped = !escaped;          }        } while (escaped);        tokenType = t.str;        endLine = line;        endColumn = start - offset;        end = next + 1;        break;      default:        if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {          next = css.indexOf('*/', start + 2) + 1;          if (next === 0) {            unclosed('comment', '*/');          }          content = css.slice(start, next + 1);          lines = content.split('\n');          last = lines.length - 1;          if (last > 0) {            nextLine = line + last;            nextOffset = next - lines[last].length;          } else {            nextLine = line;            nextOffset = offset;          }          tokenType = t.comment;          line = nextLine;          endLine = nextLine;          endColumn = next - nextOffset;        } else if (code === t.slash) {          next = start;          tokenType = code;          endLine = line;          endColumn = start - offset;          end = next + 1;        } else {          next = consumeWord(css, start);          tokenType = t.word;          endLine = line;          endColumn = next - offset;        }        end = next + 1;        break;    } // Ensure that the token structure remains consistent    tokens.push([tokenType, // [0] Token type    line, // [1] Starting line    start - offset, // [2] Starting column    endLine, // [3] Ending line    endColumn, // [4] Ending column    start, // [5] Start position / Source index    end // [6] End position    ]); // Reset offset for the next token    if (nextOffset) {      offset = nextOffset;      nextOffset = null;    }    start = end;  }  return tokens;}});var parser$1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _root = _interopRequireDefault(root$1);var _selector = _interopRequireDefault(selector);var _className = _interopRequireDefault(className);var _comment = _interopRequireDefault(comment$1);var _id = _interopRequireDefault(id);var _tag = _interopRequireDefault(tag);var _string = _interopRequireDefault(string);var _pseudo = _interopRequireDefault(pseudo);var _attribute = _interopRequireWildcard(attribute);var _universal = _interopRequireDefault(universal);var _combinator = _interopRequireDefault(combinator);var _nesting = _interopRequireDefault(nesting);var _sortAscending = _interopRequireDefault(sortAscending_1);var _tokenize = _interopRequireWildcard(tokenize_1);var tokens = _interopRequireWildcard(tokenTypes$1);var types = _interopRequireWildcard(types$1);var _WHITESPACE_TOKENS, _Object$assign;function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }var WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);var WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));function tokenStart(token) {  return {    line: token[_tokenize.FIELDS.START_LINE],    column: token[_tokenize.FIELDS.START_COL]  };}function tokenEnd(token) {  return {    line: token[_tokenize.FIELDS.END_LINE],    column: token[_tokenize.FIELDS.END_COL]  };}function getSource(startLine, startColumn, endLine, endColumn) {  return {    start: {      line: startLine,      column: startColumn    },    end: {      line: endLine,      column: endColumn    }  };}function getTokenSource(token) {  return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);}function getTokenSourceSpan(startToken, endToken) {  if (!startToken) {    return undefined;  }  return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);}function unescapeProp(node, prop) {  var value = node[prop];  if (typeof value !== "string") {    return;  }  if (value.indexOf("\\") !== -1) {    (0, util$2.ensureObject)(node, 'raws');    node[prop] = (0, util$2.unesc)(value);    if (node.raws[prop] === undefined) {      node.raws[prop] = value;    }  }  return node;}function indexesOf(array, item) {  var i = -1;  var indexes = [];  while ((i = array.indexOf(item, i + 1)) !== -1) {    indexes.push(i);  }  return indexes;}function uniqs() {  var list = Array.prototype.concat.apply([], arguments);  return list.filter(function (item, i) {    return i === list.indexOf(item);  });}var Parser = /*#__PURE__*/function () {  function Parser(rule, options) {    if (options === void 0) {      options = {};    }    this.rule = rule;    this.options = Object.assign({      lossy: false,      safe: false    }, options);    this.position = 0;    this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;    this.tokens = (0, _tokenize["default"])({      css: this.css,      error: this._errorGenerator(),      safe: this.options.safe    });    var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);    this.root = new _root["default"]({      source: rootSource    });    this.root.errorGenerator = this._errorGenerator();    var selector = new _selector["default"]({      source: {        start: {          line: 1,          column: 1        }      }    });    this.root.append(selector);    this.current = selector;    this.loop();  }  var _proto = Parser.prototype;  _proto._errorGenerator = function _errorGenerator() {    var _this = this;    return function (message, errorOptions) {      if (typeof _this.rule === 'string') {        return new Error(message);      }      return _this.rule.error(message, errorOptions);    };  };  _proto.attribute = function attribute() {    var attr = [];    var startingToken = this.currToken;    this.position++;    while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {      attr.push(this.currToken);      this.position++;    }    if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {      return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);    }    var len = attr.length;    var node = {      source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),      sourceIndex: startingToken[_tokenize.FIELDS.START_POS]    };    if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {      return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);    }    var pos = 0;    var spaceBefore = '';    var commentBefore = '';    var lastAdded = null;    var spaceAfterMeaningfulToken = false;    while (pos < len) {      var token = attr[pos];      var content = this.content(token);      var next = attr[pos + 1];      switch (token[_tokenize.FIELDS.TYPE]) {        case tokens.space:          // if (          //     len === 1 ||          //     pos === 0 && this.content(next) === '|'          // ) {          //     return this.expected('attribute', token[TOKEN.START_POS], content);          // }          spaceAfterMeaningfulToken = true;          if (this.options.lossy) {            break;          }          if (lastAdded) {            (0, util$2.ensureObject)(node, 'spaces', lastAdded);            var prevContent = node.spaces[lastAdded].after || '';            node.spaces[lastAdded].after = prevContent + content;            var existingComment = (0, util$2.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;            if (existingComment) {              node.raws.spaces[lastAdded].after = existingComment + content;            }          } else {            spaceBefore = spaceBefore + content;            commentBefore = commentBefore + content;          }          break;        case tokens.asterisk:          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {            node.operator = content;            lastAdded = 'operator';          } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) {            if (spaceBefore) {              (0, util$2.ensureObject)(node, 'spaces', 'attribute');              node.spaces.attribute.before = spaceBefore;              spaceBefore = '';            }            if (commentBefore) {              (0, util$2.ensureObject)(node, 'raws', 'spaces', 'attribute');              node.raws.spaces.attribute.before = spaceBefore;              commentBefore = '';            }            node.namespace = (node.namespace || "") + content;            var rawValue = (0, util$2.getProp)(node, 'raws', 'namespace') || null;            if (rawValue) {              node.raws.namespace += content;            }            lastAdded = 'namespace';          }          spaceAfterMeaningfulToken = false;          break;        case tokens.dollar:          if (lastAdded === "value") {            var oldRawValue = (0, util$2.getProp)(node, 'raws', 'value');            node.value += "$";            if (oldRawValue) {              node.raws.value = oldRawValue + "$";            }            break;          }        // Falls through        case tokens.caret:          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {            node.operator = content;            lastAdded = 'operator';          }          spaceAfterMeaningfulToken = false;          break;        case tokens.combinator:          if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {            node.operator = content;            lastAdded = 'operator';          }          if (content !== '|') {            spaceAfterMeaningfulToken = false;            break;          }          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {            node.operator = content;            lastAdded = 'operator';          } else if (!node.namespace && !node.attribute) {            node.namespace = true;          }          spaceAfterMeaningfulToken = false;          break;        case tokens.word:          if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.          !node.operator && !node.namespace) {            node.namespace = content;            lastAdded = 'namespace';          } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) {            if (spaceBefore) {              (0, util$2.ensureObject)(node, 'spaces', 'attribute');              node.spaces.attribute.before = spaceBefore;              spaceBefore = '';            }            if (commentBefore) {              (0, util$2.ensureObject)(node, 'raws', 'spaces', 'attribute');              node.raws.spaces.attribute.before = commentBefore;              commentBefore = '';            }            node.attribute = (node.attribute || "") + content;            var _rawValue = (0, util$2.getProp)(node, 'raws', 'attribute') || null;            if (_rawValue) {              node.raws.attribute += content;            }            lastAdded = 'attribute';          } else if (!node.value && node.value !== "" || lastAdded === "value" && !spaceAfterMeaningfulToken) {            var _unescaped = (0, util$2.unesc)(content);            var _oldRawValue = (0, util$2.getProp)(node, 'raws', 'value') || '';            var oldValue = node.value || '';            node.value = oldValue + _unescaped;            node.quoteMark = null;            if (_unescaped !== content || _oldRawValue) {              (0, util$2.ensureObject)(node, 'raws');              node.raws.value = (_oldRawValue || oldValue) + content;            }            lastAdded = 'value';          } else {            var insensitive = content === 'i' || content === "I";            if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {              node.insensitive = insensitive;              if (!insensitive || content === "I") {                (0, util$2.ensureObject)(node, 'raws');                node.raws.insensitiveFlag = content;              }              lastAdded = 'insensitive';              if (spaceBefore) {                (0, util$2.ensureObject)(node, 'spaces', 'insensitive');                node.spaces.insensitive.before = spaceBefore;                spaceBefore = '';              }              if (commentBefore) {                (0, util$2.ensureObject)(node, 'raws', 'spaces', 'insensitive');                node.raws.spaces.insensitive.before = commentBefore;                commentBefore = '';              }            } else if (node.value || node.value === '') {              lastAdded = 'value';              node.value += content;              if (node.raws.value) {                node.raws.value += content;              }            }          }          spaceAfterMeaningfulToken = false;          break;        case tokens.str:          if (!node.attribute || !node.operator) {            return this.error("Expected an attribute followed by an operator preceding the string.", {              index: token[_tokenize.FIELDS.START_POS]            });          }          var _unescapeValue = (0, _attribute.unescapeValue)(content),              unescaped = _unescapeValue.unescaped,              quoteMark = _unescapeValue.quoteMark;          node.value = unescaped;          node.quoteMark = quoteMark;          lastAdded = 'value';          (0, util$2.ensureObject)(node, 'raws');          node.raws.value = content;          spaceAfterMeaningfulToken = false;          break;        case tokens.equals:          if (!node.attribute) {            return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);          }          if (node.value) {            return this.error('Unexpected "=" found; an operator was already defined.', {              index: token[_tokenize.FIELDS.START_POS]            });          }          node.operator = node.operator ? node.operator + content : content;          lastAdded = 'operator';          spaceAfterMeaningfulToken = false;          break;        case tokens.comment:          if (lastAdded) {            if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {              var lastComment = (0, util$2.getProp)(node, 'spaces', lastAdded, 'after') || '';              var rawLastComment = (0, util$2.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;              (0, util$2.ensureObject)(node, 'raws', 'spaces', lastAdded);              node.raws.spaces[lastAdded].after = rawLastComment + content;            } else {              var lastValue = node[lastAdded] || '';              var rawLastValue = (0, util$2.getProp)(node, 'raws', lastAdded) || lastValue;              (0, util$2.ensureObject)(node, 'raws');              node.raws[lastAdded] = rawLastValue + content;            }          } else {            commentBefore = commentBefore + content;          }          break;        default:          return this.error("Unexpected \"" + content + "\" found.", {            index: token[_tokenize.FIELDS.START_POS]          });      }      pos++;    }    unescapeProp(node, "attribute");    unescapeProp(node, "namespace");    this.newNode(new _attribute["default"](node));    this.position++;  }  /**   * return a node containing meaningless garbage up to (but not including) the specified token position.   * if the token position is negative, all remaining tokens are consumed.   *   * This returns an array containing a single string node if all whitespace,   * otherwise an array of comment nodes with space before and after.   *   * These tokens are not added to the current selector, the caller can add them or use them to amend   * a previous node's space metadata.   *   * In lossy mode, this returns only comments.   */  ;  _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {    if (stopPosition < 0) {      stopPosition = this.tokens.length;    }    var startPosition = this.position;    var nodes = [];    var space = "";    var lastComment = undefined;    do {      if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {        if (!this.options.lossy) {          space += this.content();        }      } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {        var spaces = {};        if (space) {          spaces.before = space;          space = "";        }        lastComment = new _comment["default"]({          value: this.content(),          source: getTokenSource(this.currToken),          sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],          spaces: spaces        });        nodes.push(lastComment);      }    } while (++this.position < stopPosition);    if (space) {      if (lastComment) {        lastComment.spaces.after = space;      } else if (!this.options.lossy) {        var firstToken = this.tokens[startPosition];        var lastToken = this.tokens[this.position - 1];        nodes.push(new _string["default"]({          value: '',          source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),          sourceIndex: firstToken[_tokenize.FIELDS.START_POS],          spaces: {            before: space,            after: ''          }        }));      }    }    return nodes;  }  /**   *    * @param {*} nodes    */  ;  _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {    var _this2 = this;    if (requiredSpace === void 0) {      requiredSpace = false;    }    var space = "";    var rawSpace = "";    nodes.forEach(function (n) {      var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);      var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);      space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);      rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);    });    if (rawSpace === space) {      rawSpace = undefined;    }    var result = {      space: space,      rawSpace: rawSpace    };    return result;  };  _proto.isNamedCombinator = function isNamedCombinator(position) {    if (position === void 0) {      position = this.position;    }    return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;  };  _proto.namedCombinator = function namedCombinator() {    if (this.isNamedCombinator()) {      var nameRaw = this.content(this.tokens[this.position + 1]);      var name = (0, util$2.unesc)(nameRaw).toLowerCase();      var raws = {};      if (name !== nameRaw) {        raws.value = "/" + nameRaw + "/";      }      var node = new _combinator["default"]({        value: "/" + name + "/",        source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),        sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],        raws: raws      });      this.position = this.position + 3;      return node;    } else {      this.unexpected();    }  };  _proto.combinator = function combinator() {    var _this3 = this;    if (this.content() === '|') {      return this.namespace();    } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.    var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);    if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {      var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);      if (nodes.length > 0) {        var last = this.current.last;        if (last) {          var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),              space = _this$convertWhitespa.space,              rawSpace = _this$convertWhitespa.rawSpace;          if (rawSpace !== undefined) {            last.rawSpaceAfter += rawSpace;          }          last.spaces.after += space;        } else {          nodes.forEach(function (n) {            return _this3.newNode(n);          });        }      }      return;    }    var firstToken = this.currToken;    var spaceOrDescendantSelectorNodes = undefined;    if (nextSigTokenPos > this.position) {      spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);    }    var node;    if (this.isNamedCombinator()) {      node = this.namedCombinator();    } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {      node = new _combinator["default"]({        value: this.content(),        source: getTokenSource(this.currToken),        sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]      });      this.position++;    } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) ; else if (!spaceOrDescendantSelectorNodes) {      this.unexpected();    }    if (node) {      if (spaceOrDescendantSelectorNodes) {        var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),            _space = _this$convertWhitespa2.space,            _rawSpace = _this$convertWhitespa2.rawSpace;        node.spaces.before = _space;        node.rawSpaceBefore = _rawSpace;      }    } else {      // descendant combinator      var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),          _space2 = _this$convertWhitespa3.space,          _rawSpace2 = _this$convertWhitespa3.rawSpace;      if (!_rawSpace2) {        _rawSpace2 = _space2;      }      var spaces = {};      var raws = {        spaces: {}      };      if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {        spaces.before = _space2.slice(0, _space2.length - 1);        raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);      } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {        spaces.after = _space2.slice(1);        raws.spaces.after = _rawSpace2.slice(1);      } else {        raws.value = _rawSpace2;      }      node = new _combinator["default"]({        value: ' ',        source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),        sourceIndex: firstToken[_tokenize.FIELDS.START_POS],        spaces: spaces,        raws: raws      });    }    if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {      node.spaces.after = this.optionalSpace(this.content());      this.position++;    }    return this.newNode(node);  };  _proto.comma = function comma() {    if (this.position === this.tokens.length - 1) {      this.root.trailingComma = true;      this.position++;      return;    }    this.current._inferEndPosition();    var selector = new _selector["default"]({      source: {        start: tokenStart(this.tokens[this.position + 1])      }    });    this.current.parent.append(selector);    this.current = selector;    this.position++;  };  _proto.comment = function comment() {    var current = this.currToken;    this.newNode(new _comment["default"]({      value: this.content(),      source: getTokenSource(current),      sourceIndex: current[_tokenize.FIELDS.START_POS]    }));    this.position++;  };  _proto.error = function error(message, opts) {    throw this.root.error(message, opts);  };  _proto.missingBackslash = function missingBackslash() {    return this.error('Expected a backslash preceding the semicolon.', {      index: this.currToken[_tokenize.FIELDS.START_POS]    });  };  _proto.missingParenthesis = function missingParenthesis() {    return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);  };  _proto.missingSquareBracket = function missingSquareBracket() {    return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);  };  _proto.unexpected = function unexpected() {    return this.error("Unexpected '" + this.content() + "'. Escaping special characters with \\ may help.", this.currToken[_tokenize.FIELDS.START_POS]);  };  _proto.namespace = function namespace() {    var before = this.prevToken && this.content(this.prevToken) || true;    if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {      this.position++;      return this.word(before);    } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {      this.position++;      return this.universal(before);    }  };  _proto.nesting = function nesting() {    if (this.nextToken) {      var nextContent = this.content(this.nextToken);      if (nextContent === "|") {        this.position++;        return;      }    }    var current = this.currToken;    this.newNode(new _nesting["default"]({      value: this.content(),      source: getTokenSource(current),      sourceIndex: current[_tokenize.FIELDS.START_POS]    }));    this.position++;  };  _proto.parentheses = function parentheses() {    var last = this.current.last;    var unbalanced = 1;    this.position++;    if (last && last.type === types.PSEUDO) {      var selector = new _selector["default"]({        source: {          start: tokenStart(this.tokens[this.position - 1])        }      });      var cache = this.current;      last.append(selector);      this.current = selector;      while (this.position < this.tokens.length && unbalanced) {        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {          unbalanced++;        }        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {          unbalanced--;        }        if (unbalanced) {          this.parse();        } else {          this.current.source.end = tokenEnd(this.currToken);          this.current.parent.source.end = tokenEnd(this.currToken);          this.position++;        }      }      this.current = cache;    } else {      // I think this case should be an error. It's used to implement a basic parse of media queries      // but I don't think it's a good idea.      var parenStart = this.currToken;      var parenValue = "(";      var parenEnd;      while (this.position < this.tokens.length && unbalanced) {        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {          unbalanced++;        }        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {          unbalanced--;        }        parenEnd = this.currToken;        parenValue += this.parseParenthesisToken(this.currToken);        this.position++;      }      if (last) {        last.appendToPropertyAndEscape("value", parenValue, parenValue);      } else {        this.newNode(new _string["default"]({          value: parenValue,          source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),          sourceIndex: parenStart[_tokenize.FIELDS.START_POS]        }));      }    }    if (unbalanced) {      return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);    }  };  _proto.pseudo = function pseudo() {    var _this4 = this;    var pseudoStr = '';    var startingToken = this.currToken;    while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {      pseudoStr += this.content();      this.position++;    }    if (!this.currToken) {      return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);    }    if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {      this.splitWord(false, function (first, length) {        pseudoStr += first;        _this4.newNode(new _pseudo["default"]({          value: pseudoStr,          source: getTokenSourceSpan(startingToken, _this4.currToken),          sourceIndex: startingToken[_tokenize.FIELDS.START_POS]        }));        if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {          _this4.error('Misplaced parenthesis.', {            index: _this4.nextToken[_tokenize.FIELDS.START_POS]          });        }      });    } else {      return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);    }  };  _proto.space = function space() {    var content = this.content(); // Handle space before and after the selector    if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {      return node.type === 'comment';    })) {      this.spaces = this.optionalSpace(content);      this.position++;    } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {      this.current.last.spaces.after = this.optionalSpace(content);      this.position++;    } else {      this.combinator();    }  };  _proto.string = function string() {    var current = this.currToken;    this.newNode(new _string["default"]({      value: this.content(),      source: getTokenSource(current),      sourceIndex: current[_tokenize.FIELDS.START_POS]    }));    this.position++;  };  _proto.universal = function universal(namespace) {    var nextToken = this.nextToken;    if (nextToken && this.content(nextToken) === '|') {      this.position++;      return this.namespace();    }    var current = this.currToken;    this.newNode(new _universal["default"]({      value: this.content(),      source: getTokenSource(current),      sourceIndex: current[_tokenize.FIELDS.START_POS]    }), namespace);    this.position++;  };  _proto.splitWord = function splitWord(namespace, firstCallback) {    var _this5 = this;    var nextToken = this.nextToken;    var word = this.content();    while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {      this.position++;      var current = this.content();      word += current;      if (current.lastIndexOf('\\') === current.length - 1) {        var next = this.nextToken;        if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {          word += this.requiredSpace(this.content(next));          this.position++;        }      }      nextToken = this.nextToken;    }    var hasClass = indexesOf(word, '.').filter(function (i) {      // Allow escaped dot within class name      var escapedDot = word[i - 1] === '\\'; // Allow decimal numbers percent in @keyframes      var isKeyframesPercent = /^\d+\.\d+%$/.test(word);      return !escapedDot && !isKeyframesPercent;    });    var hasId = indexesOf(word, '#').filter(function (i) {      return word[i - 1] !== '\\';    }); // Eliminate Sass interpolations from the list of id indexes    var interpolations = indexesOf(word, '#{');    if (interpolations.length) {      hasId = hasId.filter(function (hashIndex) {        return !~interpolations.indexOf(hashIndex);      });    }    var indices = (0, _sortAscending["default"])(uniqs([0].concat(hasClass, hasId)));    indices.forEach(function (ind, i) {      var index = indices[i + 1] || word.length;      var value = word.slice(ind, index);      if (i === 0 && firstCallback) {        return firstCallback.call(_this5, value, indices.length);      }      var node;      var current = _this5.currToken;      var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];      var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));      if (~hasClass.indexOf(ind)) {        var classNameOpts = {          value: value.slice(1),          source: source,          sourceIndex: sourceIndex        };        node = new _className["default"](unescapeProp(classNameOpts, "value"));      } else if (~hasId.indexOf(ind)) {        var idOpts = {          value: value.slice(1),          source: source,          sourceIndex: sourceIndex        };        node = new _id["default"](unescapeProp(idOpts, "value"));      } else {        var tagOpts = {          value: value,          source: source,          sourceIndex: sourceIndex        };        unescapeProp(tagOpts, "value");        node = new _tag["default"](tagOpts);      }      _this5.newNode(node, namespace); // Ensure that the namespace is used only once      namespace = null;    });    this.position++;  };  _proto.word = function word(namespace) {    var nextToken = this.nextToken;    if (nextToken && this.content(nextToken) === '|') {      this.position++;      return this.namespace();    }    return this.splitWord(namespace);  };  _proto.loop = function loop() {    while (this.position < this.tokens.length) {      this.parse(true);    }    this.current._inferEndPosition();    return this.root;  };  _proto.parse = function parse(throwOnParenthesis) {    switch (this.currToken[_tokenize.FIELDS.TYPE]) {      case tokens.space:        this.space();        break;      case tokens.comment:        this.comment();        break;      case tokens.openParenthesis:        this.parentheses();        break;      case tokens.closeParenthesis:        if (throwOnParenthesis) {          this.missingParenthesis();        }        break;      case tokens.openSquare:        this.attribute();        break;      case tokens.dollar:      case tokens.caret:      case tokens.equals:      case tokens.word:        this.word();        break;      case tokens.colon:        this.pseudo();        break;      case tokens.comma:        this.comma();        break;      case tokens.asterisk:        this.universal();        break;      case tokens.ampersand:        this.nesting();        break;      case tokens.slash:      case tokens.combinator:        this.combinator();        break;      case tokens.str:        this.string();        break;      // These cases throw; no break needed.      case tokens.closeSquare:        this.missingSquareBracket();      case tokens.semicolon:        this.missingBackslash();      default:        this.unexpected();    }  }  /**   * Helpers   */  ;  _proto.expected = function expected(description, index, found) {    if (Array.isArray(description)) {      var last = description.pop();      description = description.join(', ') + " or " + last;    }    var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';    if (!found) {      return this.error("Expected " + an + " " + description + ".", {        index: index      });    }    return this.error("Expected " + an + " " + description + ", found \"" + found + "\" instead.", {      index: index    });  };  _proto.requiredSpace = function requiredSpace(space) {    return this.options.lossy ? ' ' : space;  };  _proto.optionalSpace = function optionalSpace(space) {    return this.options.lossy ? '' : space;  };  _proto.lossySpace = function lossySpace(space, required) {    if (this.options.lossy) {      return required ? ' ' : '';    } else {      return space;    }  };  _proto.parseParenthesisToken = function parseParenthesisToken(token) {    var content = this.content(token);    if (token[_tokenize.FIELDS.TYPE] === tokens.space) {      return this.requiredSpace(content);    } else {      return content;    }  };  _proto.newNode = function newNode(node, namespace) {    if (namespace) {      if (/^ +$/.test(namespace)) {        if (!this.options.lossy) {          this.spaces = (this.spaces || '') + namespace;        }        namespace = true;      }      node.namespace = namespace;      unescapeProp(node, "namespace");    }    if (this.spaces) {      node.spaces.before = this.spaces;      this.spaces = '';    }    return this.current.append(node);  };  _proto.content = function content(token) {    if (token === void 0) {      token = this.currToken;    }    return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);  };  /**   * returns the index of the next non-whitespace, non-comment token.   * returns -1 if no meaningful token is found.   */  _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {    if (startPosition === void 0) {      startPosition = this.position + 1;    }    var searchPosition = startPosition;    while (searchPosition < this.tokens.length) {      if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {        searchPosition++;        continue;      } else {        return searchPosition;      }    }    return -1;  };  _createClass(Parser, [{    key: "currToken",    get: function get() {      return this.tokens[this.position];    }  }, {    key: "nextToken",    get: function get() {      return this.tokens[this.position + 1];    }  }, {    key: "prevToken",    get: function get() {      return this.tokens[this.position - 1];    }  }]);  return Parser;}();exports["default"] = Parser;module.exports = exports.default;});var processor$1 = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _parser = _interopRequireDefault(parser$1);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }var Processor = /*#__PURE__*/function () {  function Processor(func, options) {    this.func = func || function noop() {};    this.funcRes = null;    this.options = options;  }  var _proto = Processor.prototype;  _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {    if (options === void 0) {      options = {};    }    var merged = Object.assign({}, this.options, options);    if (merged.updateSelector === false) {      return false;    } else {      return typeof rule !== "string";    }  };  _proto._isLossy = function _isLossy(options) {    if (options === void 0) {      options = {};    }    var merged = Object.assign({}, this.options, options);    if (merged.lossless === false) {      return true;    } else {      return false;    }  };  _proto._root = function _root(rule, options) {    if (options === void 0) {      options = {};    }    var parser = new _parser["default"](rule, this._parseOptions(options));    return parser.root;  };  _proto._parseOptions = function _parseOptions(options) {    return {      lossy: this._isLossy(options)    };  };  _proto._run = function _run(rule, options) {    var _this = this;    if (options === void 0) {      options = {};    }    return new Promise(function (resolve, reject) {      try {        var root = _this._root(rule, options);        Promise.resolve(_this.func(root)).then(function (transform) {          var string = undefined;          if (_this._shouldUpdateSelector(rule, options)) {            string = root.toString();            rule.selector = string;          }          return {            transform: transform,            root: root,            string: string          };        }).then(resolve, reject);      } catch (e) {        reject(e);        return;      }    });  };  _proto._runSync = function _runSync(rule, options) {    if (options === void 0) {      options = {};    }    var root = this._root(rule, options);    var transform = this.func(root);    if (transform && typeof transform.then === "function") {      throw new Error("Selector processor returned a promise to a synchronous call.");    }    var string = undefined;    if (options.updateSelector && typeof rule !== "string") {      string = root.toString();      rule.selector = string;    }    return {      transform: transform,      root: root,      string: string    };  }  /**   * Process rule into a selector AST.   *   * @param rule {postcss.Rule | string} The css selector to be processed   * @param options The options for processing   * @returns {Promise<parser.Root>} The AST of the selector after processing it.   */  ;  _proto.ast = function ast(rule, options) {    return this._run(rule, options).then(function (result) {      return result.root;    });  }  /**   * Process rule into a selector AST synchronously.   *   * @param rule {postcss.Rule | string} The css selector to be processed   * @param options The options for processing   * @returns {parser.Root} The AST of the selector after processing it.   */  ;  _proto.astSync = function astSync(rule, options) {    return this._runSync(rule, options).root;  }  /**   * Process a selector into a transformed value asynchronously   *   * @param rule {postcss.Rule | string} The css selector to be processed   * @param options The options for processing   * @returns {Promise<any>} The value returned by the processor.   */  ;  _proto.transform = function transform(rule, options) {    return this._run(rule, options).then(function (result) {      return result.transform;    });  }  /**   * Process a selector into a transformed value synchronously.   *   * @param rule {postcss.Rule | string} The css selector to be processed   * @param options The options for processing   * @returns {any} The value returned by the processor.   */  ;  _proto.transformSync = function transformSync(rule, options) {    return this._runSync(rule, options).transform;  }  /**   * Process a selector into a new selector string asynchronously.   *   * @param rule {postcss.Rule | string} The css selector to be processed   * @param options The options for processing   * @returns {string} the selector after processing.   */  ;  _proto.process = function process(rule, options) {    return this._run(rule, options).then(function (result) {      return result.string || result.root.toString();    });  }  /**   * Process a selector into a new selector string synchronously.   *   * @param rule {postcss.Rule | string} The css selector to be processed   * @param options The options for processing   * @returns {string} the selector after processing.   */  ;  _proto.processSync = function processSync(rule, options) {    var result = this._runSync(rule, options);    return result.string || result.root.toString();  };  return Processor;}();exports["default"] = Processor;module.exports = exports.default;});/*@__PURE__*/getDefaultExportFromCjs(processor$1);var constructors = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;var _attribute = _interopRequireDefault(attribute);var _className = _interopRequireDefault(className);var _combinator = _interopRequireDefault(combinator);var _comment = _interopRequireDefault(comment$1);var _id = _interopRequireDefault(id);var _nesting = _interopRequireDefault(nesting);var _pseudo = _interopRequireDefault(pseudo);var _root = _interopRequireDefault(root$1);var _selector = _interopRequireDefault(selector);var _string = _interopRequireDefault(string);var _tag = _interopRequireDefault(tag);var _universal = _interopRequireDefault(universal);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }var attribute$1 = function attribute(opts) {  return new _attribute["default"](opts);};exports.attribute = attribute$1;var className$1 = function className(opts) {  return new _className["default"](opts);};exports.className = className$1;var combinator$1 = function combinator(opts) {  return new _combinator["default"](opts);};exports.combinator = combinator$1;var comment = function comment(opts) {  return new _comment["default"](opts);};exports.comment = comment;var id$1 = function id(opts) {  return new _id["default"](opts);};exports.id = id$1;var nesting$1 = function nesting(opts) {  return new _nesting["default"](opts);};exports.nesting = nesting$1;var pseudo$1 = function pseudo(opts) {  return new _pseudo["default"](opts);};exports.pseudo = pseudo$1;var root = function root(opts) {  return new _root["default"](opts);};exports.root = root;var selector$1 = function selector(opts) {  return new _selector["default"](opts);};exports.selector = selector$1;var string$1 = function string(opts) {  return new _string["default"](opts);};exports.string = string$1;var tag$1 = function tag(opts) {  return new _tag["default"](opts);};exports.tag = tag$1;var universal$1 = function universal(opts) {  return new _universal["default"](opts);};exports.universal = universal$1;});var guards = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports.isNode = isNode;exports.isPseudoElement = isPseudoElement;exports.isPseudoClass = isPseudoClass;exports.isContainer = isContainer;exports.isNamespace = isNamespace;exports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;var _IS_TYPE;var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[types$1.ATTRIBUTE] = true, _IS_TYPE[types$1.CLASS] = true, _IS_TYPE[types$1.COMBINATOR] = true, _IS_TYPE[types$1.COMMENT] = true, _IS_TYPE[types$1.ID] = true, _IS_TYPE[types$1.NESTING] = true, _IS_TYPE[types$1.PSEUDO] = true, _IS_TYPE[types$1.ROOT] = true, _IS_TYPE[types$1.SELECTOR] = true, _IS_TYPE[types$1.STRING] = true, _IS_TYPE[types$1.TAG] = true, _IS_TYPE[types$1.UNIVERSAL] = true, _IS_TYPE);function isNode(node) {  return typeof node === "object" && IS_TYPE[node.type];}function isNodeType(type, node) {  return isNode(node) && node.type === type;}var isAttribute = isNodeType.bind(null, types$1.ATTRIBUTE);exports.isAttribute = isAttribute;var isClassName = isNodeType.bind(null, types$1.CLASS);exports.isClassName = isClassName;var isCombinator = isNodeType.bind(null, types$1.COMBINATOR);exports.isCombinator = isCombinator;var isComment = isNodeType.bind(null, types$1.COMMENT);exports.isComment = isComment;var isIdentifier = isNodeType.bind(null, types$1.ID);exports.isIdentifier = isIdentifier;var isNesting = isNodeType.bind(null, types$1.NESTING);exports.isNesting = isNesting;var isPseudo = isNodeType.bind(null, types$1.PSEUDO);exports.isPseudo = isPseudo;var isRoot = isNodeType.bind(null, types$1.ROOT);exports.isRoot = isRoot;var isSelector = isNodeType.bind(null, types$1.SELECTOR);exports.isSelector = isSelector;var isString = isNodeType.bind(null, types$1.STRING);exports.isString = isString;var isTag = isNodeType.bind(null, types$1.TAG);exports.isTag = isTag;var isUniversal = isNodeType.bind(null, types$1.UNIVERSAL);exports.isUniversal = isUniversal;function isPseudoElement(node) {  return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value.toLowerCase() === ":before" || node.value.toLowerCase() === ":after");}function isPseudoClass(node) {  return isPseudo(node) && !isPseudoElement(node);}function isContainer(node) {  return !!(isNode(node) && node.walk);}function isNamespace(node) {  return isAttribute(node) || isTag(node);}});var selectors = createCommonjsModule(function (module, exports) {exports.__esModule = true;Object.keys(types$1).forEach(function (key) {  if (key === "default" || key === "__esModule") return;  if (key in exports && exports[key] === types$1[key]) return;  exports[key] = types$1[key];});Object.keys(constructors).forEach(function (key) {  if (key === "default" || key === "__esModule") return;  if (key in exports && exports[key] === constructors[key]) return;  exports[key] = constructors[key];});Object.keys(guards).forEach(function (key) {  if (key === "default" || key === "__esModule") return;  if (key in exports && exports[key] === guards[key]) return;  exports[key] = guards[key];});});var dist = createCommonjsModule(function (module, exports) {exports.__esModule = true;exports["default"] = void 0;var _processor = _interopRequireDefault(processor$1);var selectors$1 = _interopRequireWildcard(selectors);function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }var parser = function parser(processor) {  return new _processor["default"](processor);};Object.assign(parser, selectors$1);delete parser.__esModule;var _default = parser;exports["default"] = _default;module.exports = exports.default;});var selectorParser = /*@__PURE__*/getDefaultExportFromCjs(dist);const animationNameRE = /^(-\w+-)?animation-name$/;const animationRE = /^(-\w+-)?animation$/;const scopedPlugin = (id = '') => {    const keyframes = Object.create(null);    const shortId = id.replace(/^data-v-/, '');    return {        postcssPlugin: 'vue-sfc-scoped',        Rule(rule) {            processRule(id, rule);        },        AtRule(node) {            if (/-?keyframes$/.test(node.name) &&                !node.params.endsWith(`-${shortId}`)) {                // register keyframes                keyframes[node.params] = node.params = node.params + '-' + shortId;            }        },        OnceExit(root) {            if (Object.keys(keyframes).length) {                // If keyframes are found in this <style>, find and rewrite animation names                // in declarations.                // Caveat: this only works for keyframes and animation rules in the same                // <style> element.                // individual animation-name declaration                root.walkDecls(decl => {                    if (animationNameRE.test(decl.prop)) {                        decl.value = decl.value                            .split(',')                            .map(v => keyframes[v.trim()] || v.trim())                            .join(',');                    }                    // shorthand                    if (animationRE.test(decl.prop)) {                        decl.value = decl.value                            .split(',')                            .map(v => {                            const vals = v.trim().split(/\s+/);                            const i = vals.findIndex(val => keyframes[val]);                            if (i !== -1) {                                vals.splice(i, 1, keyframes[vals[i]]);                                return vals.join(' ');                            }                            else {                                return v;                            }                        })                            .join(',');                    }                });            }        }    };};const processedRules = new WeakSet();function processRule(id, rule) {    if (processedRules.has(rule) ||        (rule.parent &&            rule.parent.type === 'atrule' &&            /-?keyframes$/.test(rule.parent.name))) {        return;    }    processedRules.add(rule);    rule.selector = selectorParser(selectorRoot => {        selectorRoot.each(selector => {            rewriteSelector(id, selector, selectorRoot);        });    }).processSync(rule.selector);}function rewriteSelector(id, selector, selectorRoot, slotted = false) {    let node = null;    let shouldInject = true;    // find the last child node to insert attribute selector    selector.each(n => {        // DEPRECATED ">>>" and "/deep/" combinator        if (n.type === 'combinator' &&            (n.value === '>>>' || n.value === '/deep/')) {            n.value = ' ';            n.spaces.before = n.spaces.after = '';            warn(`the >>> and /deep/ combinators have been deprecated. ` +                `Use :deep() instead.`);            return false;        }        if (n.type === 'pseudo') {            const { value } = n;            // deep: inject [id] attribute at the node before the ::v-deep            // combinator.            if (value === ':deep' || value === '::v-deep') {                if (n.nodes.length) {                    // .foo ::v-deep(.bar) -> .foo[xxxxxxx] .bar                    // replace the current node with ::v-deep's inner selector                    let last = n;                    n.nodes[0].each(ss => {                        selector.insertAfter(last, ss);                        last = ss;                    });                    // insert a space combinator before if it doesn't already have one                    const prev = selector.at(selector.index(n) - 1);                    if (!prev || !isSpaceCombinator(prev)) {                        selector.insertAfter(n, selectorParser.combinator({                            value: ' '                        }));                    }                    selector.removeChild(n);                }                else {                    // DEPRECATED usage                    // .foo ::v-deep .bar -> .foo[xxxxxxx] .bar                    warn(`::v-deep usage as a combinator has ` +                        `been deprecated. Use :deep(<inner-selector>) instead.`);                    const prev = selector.at(selector.index(n) - 1);                    if (prev && isSpaceCombinator(prev)) {                        selector.removeChild(prev);                    }                    selector.removeChild(n);                }                return false;            }            // slot: use selector inside `::v-slotted` and inject [id + '-s']            // instead.            // ::v-slotted(.foo) -> .foo[xxxxxxx-s]            if (value === ':slotted' || value === '::v-slotted') {                rewriteSelector(id, n.nodes[0], selectorRoot, true /* slotted */);                let last = n;                n.nodes[0].each(ss => {                    selector.insertAfter(last, ss);                    last = ss;                });                // selector.insertAfter(n, n.nodes[0])                selector.removeChild(n);                // since slotted attribute already scopes the selector there's no                // need for the non-slot attribute.                shouldInject = false;                return false;            }            // global: replace with inner selector and do not inject [id].            // ::v-global(.foo) -> .foo            if (value === ':global' || value === '::v-global') {                selectorRoot.insertAfter(selector, n.nodes[0]);                selectorRoot.removeChild(selector);                return false;            }        }        if (n.type !== 'pseudo' && n.type !== 'combinator') {            node = n;        }    });    if (node) {        node.spaces.after = '';    }    else {        // For deep selectors & standalone pseudo selectors,        // the attribute selectors are prepended rather than appended.        // So all leading spaces must be eliminated to avoid problems.        selector.first.spaces.before = '';    }    if (shouldInject) {        const idToAdd = slotted ? id + '-s' : id;        selector.insertAfter(        // If node is null it means we need to inject [id] at the start        // insertAfter can handle `null` here        node, selectorParser.attribute({            attribute: idToAdd,            value: idToAdd,            raws: {},            quoteMark: `"`        }));    }}function isSpaceCombinator(node) {    return node.type === 'combinator' && /^\s+$/.test(node.value);}scopedPlugin.postcss = true;var SourceMapConsumer$7 = sourceMap.SourceMapConsumer;var SourceMapGenerator$9 = sourceMap.SourceMapGenerator;var mergeSourceMap = merge$1;/** * Merge old source map and new source map and return merged. * If old or new source map value is falsy, return another one as it is. * * @param {object|string} [oldMap] old source map object * @param {object|string} [newmap] new source map object * @return {object|undefined} merged source map object, or undefined when both old and new source map are undefined */function merge$1(oldMap, newMap) {  if (!oldMap) return newMap  if (!newMap) return oldMap  var oldMapConsumer = new SourceMapConsumer$7(oldMap);  var newMapConsumer = new SourceMapConsumer$7(newMap);  var mergedMapGenerator = new SourceMapGenerator$9();  // iterate on new map and overwrite original position of new map with one of old map  newMapConsumer.eachMapping(function(m) {    // pass when `originalLine` is null.    // It occurs in case that the node does not have origin in original code.    if (m.originalLine == null) return    var origPosInOldMap = oldMapConsumer.originalPositionFor({      line: m.originalLine,      column: m.originalColumn    });    if (origPosInOldMap.source == null) return    mergedMapGenerator.addMapping({      original: {        line: origPosInOldMap.line,        column: origPosInOldMap.column      },      generated: {        line: m.generatedLine,        column: m.generatedColumn      },      source: origPosInOldMap.source,      name: origPosInOldMap.name    });  });  var consumers = [oldMapConsumer, newMapConsumer];  consumers.forEach(function(consumer) {    consumer.sources.forEach(function(sourceFile) {      mergedMapGenerator._sources.add(sourceFile);      var sourceContent = consumer.sourceContentFor(sourceFile);      if (sourceContent != null) {        mergedMapGenerator.setSourceContent(sourceFile, sourceContent);      }    });  });  mergedMapGenerator._sourceRoot = oldMap.sourceRoot;  mergedMapGenerator._file = oldMap.file;  return JSON.parse(mergedMapGenerator.toString())}// .scss/.sass processorconst scss = (source, map, options, load = require) => {    const nodeSass = load('sass');    const finalOptions = Object.assign(Object.assign({}, options), { data: getSource(source, options.filename, options.additionalData), file: options.filename, outFile: options.filename, sourceMap: !!map });    try {        const result = nodeSass.renderSync(finalOptions);        const dependencies = result.stats.includedFiles;        if (map) {            return {                code: result.css.toString(),                map: mergeSourceMap(map, JSON.parse(result.map.toString())),                errors: [],                dependencies            };        }        return { code: result.css.toString(), errors: [], dependencies };    }    catch (e) {        return { code: '', errors: [e], dependencies: [] };    }};const sass = (source, map, options, load) => scss(source, map, Object.assign(Object.assign({}, options), { indentedSyntax: true }), load);// .lessconst less = (source, map, options, load = require) => {    const nodeLess = load('less');    let result;    let error = null;    nodeLess.render(getSource(source, options.filename, options.additionalData), Object.assign(Object.assign({}, options), { syncImport: true }), (err, output) => {        error = err;        result = output;    });    if (error)        return { code: '', errors: [error], dependencies: [] };    const dependencies = result.imports;    if (map) {        return {            code: result.css.toString(),            map: mergeSourceMap(map, result.map),            errors: [],            dependencies: dependencies        };    }    return {        code: result.css.toString(),        errors: [],        dependencies: dependencies    };};// .stylconst styl = (source, map, options, load = require) => {    const nodeStylus = load('stylus');    try {        const ref = nodeStylus(source);        Object.keys(options).forEach(key => ref.set(key, options[key]));        if (map)            ref.set('sourcemap', { inline: false, comment: false });        const result = ref.render();        const dependencies = ref.deps();        if (map) {            return {                code: result,                map: mergeSourceMap(map, ref.sourcemap),                errors: [],                dependencies            };        }        return { code: result, errors: [], dependencies };    }    catch (e) {        return { code: '', errors: [e], dependencies: [] };    }};function getSource(source, filename, additionalData) {    if (!additionalData)        return source;    if (isFunction(additionalData)) {        return additionalData(source, filename);    }    return additionalData + source;}const processors = {    less,    sass,    scss,    styl,    stylus: styl};function compileStyle(options) {    return doCompileStyle(Object.assign(Object.assign({}, options), { isAsync: false }));}function compileStyleAsync(options) {    return doCompileStyle(Object.assign(Object.assign({}, options), { isAsync: true }));}function doCompileStyle(options) {    const { filename, id, scoped = false, trim = true, isProd = false, modules = false, modulesOptions = {}, preprocessLang, postcssOptions, postcssPlugins } = options;    const preprocessor = preprocessLang && processors[preprocessLang];    const preProcessedSource = preprocessor && preprocess$1(options, preprocessor);    const map = preProcessedSource        ? preProcessedSource.map        : options.inMap || options.map;    const source = preProcessedSource ? preProcessedSource.code : options.source;    const shortId = id.replace(/^data-v-/, '');    const longId = `data-v-${shortId}`;    const plugins = (postcssPlugins || []).slice();    plugins.unshift(cssVarsPlugin({ id: shortId, isProd }));    if (trim) {        plugins.push(trimPlugin());    }    if (scoped) {        plugins.push(scopedPlugin(longId));    }    let cssModules;    if (modules) {        {            throw new Error('[@vue/compiler-sfc] `modules` option is not supported in the browser build.');        }    }    const postCSSOptions = Object.assign(Object.assign({}, postcssOptions), { to: filename, from: filename });    if (map) {        postCSSOptions.map = {            inline: false,            annotation: false,            prev: map        };    }    let result;    let code;    let outMap;    // stylus output include plain css. so need remove the repeat item    const dependencies = new Set(preProcessedSource ? preProcessedSource.dependencies : []);    // sass has filename self when provided filename option    dependencies.delete(filename);    const errors = [];    if (preProcessedSource && preProcessedSource.errors.length) {        errors.push(...preProcessedSource.errors);    }    const recordPlainCssDependencies = (messages) => {        messages.forEach(msg => {            if (msg.type === 'dependency') {                // postcss output path is absolute position path                dependencies.add(msg.file);            }        });        return dependencies;    };    try {        result = postcss_1(plugins).process(source, postCSSOptions);        // In async mode, return a promise.        if (options.isAsync) {            return result                .then(result => ({                code: result.css || '',                map: result.map && result.map.toJSON(),                errors,                modules: cssModules,                rawResult: result,                dependencies: recordPlainCssDependencies(result.messages)            }))                .catch(error => ({                code: '',                map: undefined,                errors: [...errors, error],                rawResult: undefined,                dependencies            }));        }        recordPlainCssDependencies(result.messages);        // force synchronous transform (we know we only have sync plugins)        code = result.css;        outMap = result.map;    }    catch (e) {        errors.push(e);    }    return {        code: code || ``,        map: outMap && outMap.toJSON(),        errors,        rawResult: result,        dependencies    };}function preprocess$1(options, preprocessor) {    if (!options.preprocessCustomRequire) {        throw new Error(`[@vue/compiler-sfc] Style preprocessing in the browser build must ` +            `provide the \`preprocessCustomRequire\` option to return the in-browser ` +            `version of the preprocessor.`);    }    return preprocessor(options.source, options.inMap || options.map, Object.assign({ filename: options.filename }, options.preprocessOptions), options.preprocessCustomRequire);}// APIconst walk$2 = walk$1;export { MagicString, parse_1 as babelParse, compileScript, compileStyle, compileStyleAsync, compileTemplate, extractIdentifiers, generateCodeFrame, isInDestructureAssignment, isStaticProperty, parse$4 as parse, rewriteDefault, shouldTransform as shouldTransformRef, transform$1 as transformRef, transformAST as transformRefAST, walk$2 as walk, walkIdentifiers };
 |